{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/pages/event-registration/EventRegistrationPage.vue?dd68","webpack:///./src/common/services/RandomGenerator.ts","webpack:///./src/common/types/event/DtoAttendee.ts","webpack:///./src/common/types/ecommerce/DtoProduct.ts","webpack:///./src/common/types/event/DtoTicketsAndAddons.ts","webpack:///./src/common/repositories/EventRepo.ts","webpack:///./src/components/event/EventRegistrationTickets.vue?dc7d","webpack:///./src/components/addons/AddonItem.vue?8c93","webpack:///./src/components/directives/triggerPopover-directive.ts","webpack:///./src/components/addons/AddonItemVue.ts","webpack:///./src/common/types/event/TicketType.ts","webpack:///./src/components/addons/AddonItemVue.ts?4cdd","webpack:///./src/components/addons/AddonItem.vue","webpack:///./src/common/types/event/DtoTicket.ts","webpack:///./src/common/types/event/DtoAddon.ts","webpack:///./src/common/types/event/TicketQuantity.ts","webpack:///./src/components/event/EventRegistrationTicketsVue.ts","webpack:///./src/components/event/EventRegistrationTicketsVue.ts?a7b7","webpack:///./src/components/event/EventRegistrationTickets.vue","webpack:///./src/components/event/AttendeeSelector.vue?d5a1","webpack:///./src/components/directives/selectOnTab-directive.ts","webpack:///./src/components/event/AttendeeSelectorVue.ts","webpack:///./src/common/types/event/TicketMemberField.ts","webpack:///./src/components/event/AttendeeSelectorVue.ts?e85f","webpack:///./src/components/event/AttendeeSelector.vue","webpack:///./src/components/event/EventAttendeeForm.vue?72a2","webpack:///./src/common/types/event/DtoTicketFieldItem.ts","webpack:///./src/components/errors/InfoAlert.vue?1933","webpack:///./src/components/errors/InfoAlertVue.ts","webpack:///./src/components/errors/InfoAlertVue.ts?398d","webpack:///./src/components/errors/InfoAlert.vue","webpack:///./src/components/event/EventAttendeeFormVue.ts","webpack:///./src/components/event/EventAttendeeFormVue.ts?653c","webpack:///./src/components/event/EventAttendeeForm.vue","webpack:///./src/common/types/event/DtoEventRegistration.ts","webpack:///./src/components/event/EventCheckout.vue?e4b6","webpack:///./src/components/inputs/email/EmailsInput.vue?1823","webpack:///./src/components/directives/noAutoComplete-directive.ts","webpack:///./src/components/inputs/email/EmailsInputVue.ts","webpack:///./src/components/inputs/email/EmailsInputVue.ts?b689","webpack:///./src/components/inputs/email/EmailsInput.vue","webpack:///./src/components/inputs/promo/PromoCodeInput.vue?0911","webpack:///./src/components/inputs/promo/PromoCodeInputVue.ts","webpack:///./src/components/inputs/promo/PromoCodeInputVue.ts?8aea","webpack:///./src/components/inputs/promo/PromoCodeInput.vue","webpack:///./src/components/inputs/terms/TermsAndConditionsInput.vue?3ddd","webpack:///./src/components/inputs/terms/TermsAndConditionsInputVue.ts","webpack:///./src/components/inputs/terms/TermsAndConditionsInputVue.ts?9791","webpack:///./src/components/inputs/terms/TermsAndConditionsInput.vue","webpack:///./src/components/inputs/consent/ConsentInput.vue?b82e","webpack:///./src/components/inputs/consent/ConsentInputVue.ts","webpack:///./src/components/inputs/consent/ConsentInputVue.ts?eb73","webpack:///./src/components/inputs/consent/ConsentInput.vue","webpack:///./src/components/event/EventCheckoutVue.ts","webpack:///./src/components/event/EventCheckoutVue.ts?7637","webpack:///./src/components/event/EventCheckout.vue","webpack:///./src/common/types/user/DtoCurrentUser.ts","webpack:///./src/components/inputs/tinymce/NoviTinyMce.vue?46a4","webpack:///./src/components/inputs/tinymce/NoviTinyMceVue.ts","webpack:///./src/components/inputs/tinymce/NoviTinyMceVue.ts?25fe","webpack:///./src/components/inputs/tinymce/NoviTinyMce.vue","webpack:///./src/pages/event-registration/EventRegistrationPageVue.ts","webpack:///./src/pages/event-registration/EventRegistrationPageVue.ts?cb1c","webpack:///./src/pages/event-registration/EventRegistrationPage.vue","webpack:///./src/pages/event-registration/event-registration.ts"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","call","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","eventRegistration","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","render","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","role","aria-live","aria-atomic","_m","_e","ref","tabindex","steps","currentStep","allowStepClicks","on","update:currentStep","$event","update:current-step","update:noviStepperEntered","noviStepperEntered","slot","_v","regionName","component","componentId","event","id","model","callback","$$v","$set","expression","attendeeBased","currentUser","isLoggedIn","hideGuestLoginAlert","allItemsRestrictedForGuestPurchase","data-test","click","login","keyup","type","indexOf","keyCode","hideGuestAlert","_s","registrationModel","attendees","_l","item","customerId","src","image","alt","aria-hidden","domProps","innerHTML","customerInitial","email","href","removeAttendee","message","guestNotAllowedMessage","eligibleAttendees","selectedAttendees","allowGuests","allowTbd","update:attendee","onAttendeeUpdated","attendee","index","ticketName","ticketNumber","toString","shippingAddressInstructions","professionalEmailInstructions","parentMemberInstructions","currentAttendee","currentAttendeeIndex","currentTicketKey","registration","ticketsAndAddons","attendeeIndex","isAttendeeCentered","isMember","isLoading","check-unique-email","validateUniqueEmail","update-email-to-validate","updateEmailToValidate","eventId","invoiceFee","parentLabel","parentMemberLabel","parentRequired","parentMemberRequired","backToFirstStep","showAttendee","showAddon","details","globalErrorMessage","errors","count","errorList","all","errorMessage","staticStyle","color","disabled","disableBack","back","previousStepText","text-align","disableNext","saveAndNext","isSaving","nextStepText","staticRenderFns","RandomGenerator","[object Object]","Math","random","substring","Attendee","dtoAttendee","assign","isGuest","subTotal","subtotal","selectedTickets","forEach","ticket","price","selectedAddons","addon","taxableSubTotal","taxable","charAt","isTbd","noviNs","tbdEventName","ticketID","ineligibleTickets","includes","alreadyPurchasedTickets","some","other","companyName","uniqueId","createAttendee","obj","phone","mobilePhone","jobTitle","shippingAddress","DtoAddress","credentials","attendeeCustomFieldValues","customerCustomFieldValues","generateRandomString","createAttendeeFromSelectListItemWithSubText","text","subtext","DtoProduct_Product","dtoProduct","isWithinPurchaseWindow","isBeforePurchaseWindow","isAfterPurchaseWindow","hasPurchaseWindow","now","dayjs_min_default","purchaseWindowStart","isBefore","purchaseWindowEnd","isAfter","isSoldOut","hasLimitedQuantity","maxAvailable","memberPrice","nonMemberPrice","getProductPrice","toFixed","isLocked","restrictionMessage","createProduct","description","minimumPrice","active","requiresFulfillment","weight","displayOrder","chargeByDefault","productType","ProductType","Paid","isSubscription","quantityAvailable","productsSold","fileNameWithPrefix","customFields","restrictionTitle","TicketsAndAddons","dtoTicketsAndAddons","productId","products","product","find","createTicketsAndAddons","seatsAvailable","ticketCategories","allItemsAreFree","hasCeus","map","EventRepo_EventRepo","BaseNoviApiRepo","super","then","getNoviApiDataHandler","catch","getNoviApiErrorHandler","res","post","productIds","purchaserId","promoCode","ticketIds","encodeURIComponent","eventRepo","EventRegistrationTicketsvue_type_template_id_c59080a8_render","hasVisibleTickets","showAddons","class","c-registration__wrapper--header-attendee","showQuantityField","c-registration__wrapper--header-rsvp","showPrice","c-registration__wrapper--header-ceu","showCeu","ticketOptionsTitle","attendeeTicketsCategory","c-registration__ticket-category","collapsed","isCollapsed","data-toggle","aria-expanded","aria-controls","generateCategoryCollapseId","data-target","handleHeaderToggleAccessibility","category","collapse","in","ticketQuantity","ticket-locked","locked","c-registration__wrapper--tickets-checkbox","c-registration__wrapper--tickets","c-registration__wrapper--tickets-rsvp","c-registration__wrapper--tickets-ceu","c-registration__col-no-qty","showTicketSelectionField","c-registration__col-qty","c-registration__item","directives","rawName","aria-label","checked","Array","isArray","_i","change","$$a","$$el","target","$$c","$$i","concat","updateAttendeeTicketSelected","quantity","max","numberLeft","maxMessage","data-trigger","data-placement","data-html","data-content","data-title","getTicketCeu","ticketType","seatsPerTicket","getSeatsRemaining","getTicketPriceString","getCurrentAttendeeOrEmptyAttendee","ticketPrice","getTicketPriceTierHtml","showProductPrice","showCustomFields","subTotalFormated","EventRegistrationTicketsvue_type_template_id_c59080a8_staticRenderFns","AddonItemvue_type_template_id_aa1fa38a_render","data-modal-width","Donation","productPrice","_f","autoRenew","field","field-config","isRequired","requiredFrontend","customFieldValues","AddonItemvue_type_template_id_aa1fa38a_staticRenderFns","triggerPopover","el","binding","$","popover","triggerPopover_directive","AddonItemVuevue_type_script_lang_ts_AddonItem","vue_property_decorator","showAddOnItem","isOnlyVisibleInPurchaseWindow","tslib_es6","required","default","immediate","components","CustomFieldEditor","DonationInput","QuantityInput","regexPattern","regexPattern_directive","TicketType","AddonItemVuevue_type_script_lang_ts_","addons_AddonItemVuevue_type_script_lang_ts_","componentNormalizer","addons_AddonItem","Ticket","dtoTicket","quantityPurchased","actualPrice","tieredPricing","ticketPricingTiers","ticketTier","minimum","maximum","calculatePrice","DtoAddon_Addon","dtoAddon","addonSubTotal","createAddon","TicketQuantity","ticketSubtotal","calculateSubtotal","EventRegistrationTicketsVuevue_type_script_lang_ts_EventRegistrationTickets","attendeeTicketsCategories","attendeeAddons","initAttendeeData","every","a","allTicketQuantities","tq","ticketQuantities","purchasedTicketIDs","filter","addonSubtotal","currencyIcon","ticketTotal","self","ticketValue","getTicketPrice","addonTotal","showCategoryHeader","x","getCurrency","ceuTypes","continuingEducationUnits","tier","$emit","$validator","allowGuestAttendee","isEmpty","getTicketCount","hasSelectedTicket","unlockable","dependentTicketTypes","existingAttendees","isTicketLocked","lockTicket","unlockTicket","existingAttendeesForTicket","attendeeTicket","pq","getAttendeeCount","seatsTaken","seatsRemaining","collapseByDefault","tickets","foundTicket","donationTicket","flatMap","existing","DtoProductQuantity","array","setTimeout","deep","ErrorAlert","ValidationErrors","AddonItem","EventRegistrationTicketsVuevue_type_script_lang_ts_","event_EventRegistrationTicketsVuevue_type_script_lang_ts_","EventRegistrationTickets_component","event_EventRegistrationTickets","AttendeeSelectorvue_type_template_id_373b89f3_render","for","options","option-height","track-by","label","loading","limit","data-vv-scope","validationScope","data-vv-as","taggable","tag-placeholder","placeholder","show-no-results","clear-on-select","aria-multiselectable","search-change","debouncedOnSearch","input","tag","onAttendeeAdded","close","selectHighlightedOption","scopedSlots","_u","fn","props","option","getCustomerInitial","hasAttended","isEligible","subText","selectedAttendee","collect","AttendeeSelectorvue_type_template_id_373b89f3_staticRenderFns","selectOnTab","inserted","keydown","which","val","e","Event","parent","siblings","trigger","preventDefault","selectOnTab_directive","AttendeeSelectorVuevue_type_script_lang_ts_AttendeeSelector","initSelectedAttendee","$root","$on","isClear","AllTypesExports","matches","unshift","newValue","_a","_b","split","eligibleAttendee","customFieldID","customerCustomField","address1","address2","city","zipCode","stateProvince","country","textEntered","$el","isEnterEvent","isOptionSelectionEvent","currentTarget","className","attendeeName","addedAttendee","customerName","guestName","Multiselect","vue_multiselect_min","FieldValidationErrors","TicketMemberField","AttendeeSelectorVuevue_type_script_lang_ts_","event_AttendeeSelectorVuevue_type_script_lang_ts_","AttendeeSelector_component","event_AttendeeSelector","EventAttendeeFormvue_type_template_id_612fa090_render","isFieldVisible","allowGuest","control-label","isTbdChecked","tbdCheckChanged","validateRequired","maxlength","composing","maxCount","validateEmailRequired","onEmailChange","_k","phoneLabel","includeParens","allowExtensions","delimiterText","validatorScope","address","enableAddressSettings","parentAddress","useParent","instructions","isCustomFieldVisible","customField","getCustomFieldValue","hideDisabledMessage","EventAttendeeFormvue_type_template_id_612fa090_staticRenderFns","createDtoTicketFieldItem","dtoTicketFieldItem","memberField","Name","InfoAlertvue_type_template_id_5a05eb9a_render","InfoAlertvue_type_template_id_5a05eb9a_staticRenderFns","InfoAlertVuevue_type_script_lang_ts_InfoAlert","InfoAlertVuevue_type_script_lang_ts_","errors_InfoAlertVuevue_type_script_lang_ts_","InfoAlert_component","errors_InfoAlert","EventAttendeeFormVuevue_type_script_lang_ts_EventAttendeeForm","visibleFields","fields","sort","b","categoryDisplayOrder","ticketFieldConfig","fieldItem","existingField","Email","requireUniqueEmailPerAttendee","isAttendeeDefaultNameField","isDonation","showHeader","showMemberCompassLink","customerID","fieldName","fieldVal","fieldId","checkValue","newFieldValue","customFieldId","rules","uniqueEmail","setAsTbd","reset","newEmail","PhoneInput","AttendeeSelector","AddressInfo","InfoAlert","Credentials","EventAttendeeFormVuevue_type_script_lang_ts_","event_EventAttendeeFormVuevue_type_script_lang_ts_","EventAttendeeForm_component","event_EventAttendeeForm","EventRegistration","dtoRegistration","purchasedTickets","uniquePurchasedTickets","findIndex","purchasedAddons","addons","ticketAmounts","amounts","ceil","selectedTicketsTotals","taxableTicketTotal","taxExempt","total","taxableAddonTotal","taxableDiscount","discount","subTotalFormatted","taxTotal","round","taxRate","taxTotalFormatted","getTicketsSubtotals","processedTickets","Set","has","add","attendeesForTicket","totalTicketPrice","basePricePerSeat","floor","priceAccumulated","attendeeTicketCounter","at","priceForThisAttendee","getAttendeeSubtotal","attendeeSubtotal","seatNumber","createEventRegistration","confirmationEmails","summaryEmails","paymentToken","guestPhone","guestEmail","guestCompany","guestCompanyId","recaptchaToken","isDonatingTransactionFee","EventCheckoutvue_type_template_id_4e17f30a_render","g-registration__checkout-single-column","g-registration__checkout-two-columns","aria-level","getAttendeeName","u-hide","getAttendeeSubtotalFormated","seat","formatedPrice","visibleAddons","getAddonName","update:discount","update:taxableDiscount","update:discountCode","update:discountError","updateDiscountError","update:isPromoInFocus","updatePromoFocus","donateTransactionFeeAmount","paymentProcessorOptions","donateTransactionFeeLabel","donateTransactionFeeAmountFormatted","convenienceFee","convenienceFeeFormatted","totalFormatted","guestOnlyAttendee","trim","allAttendeesHavePurchaserEmail","emails","subtitle","update:emails","onGuestEmailChanged","isPromoInFocus","initialErrorMessage","undefined","processorOptions","proposedDonateTransactionFeeAmount","payment-token-ready","onPaymentTokenReady","update-is-donating-transaction-fee","handleIsDonatingTransactionFeeUpdated","update:convenience-fee","onConvenienceFeeUpdated","update:billable-party-taxable","onBillablePartyTaxableUpdated","update:payment-type","onPaymentTypeUpdated","update:credit-card-billing-state","updateTaxRate","update:recaptcha-token","eventPolicyUsage","policyName","eventPolicyPageName","policyUrl","EventCheckoutvue_type_template_id_4e17f30a_staticRenderFns","EmailsInputvue_type_template_id_22003a3f_render","ariaUpdateMessage","multiple","closeOnSelect","aria-describedby","open","dropdownOpened","onEmailAdded","remove","onEmailRemoved","inputChanged","margin-top","EmailsInputvue_type_template_id_22003a3f_staticRenderFns","float","noAutoComplete","attr","noAutoComplete_directive","EmailsInputVuevue_type_script_lang_ts_EmailsInput","showInvalidEmail","element","title","setAccessibilityAttributes","test","removedEmail","EmailsInputVuevue_type_script_lang_ts_","email_EmailsInputVuevue_type_script_lang_ts_","EmailsInput_component","email_EmailsInput","PromoCodeInputvue_type_template_id_774c9ba3_render","validatedDiscountCode","applyingDiscount","aria-invalid","blur","applyCoupon","focus","focusPromoInput","discountCodeInput","clearCoupon","coupon","error","PromoCodeInputvue_type_template_id_774c9ba3_staticRenderFns","PromoCodeInputVuevue_type_script_lang_ts_PromoCodeInput","CouponValidationResult","discountableTickets","discountTickets","discountableProducts","discountProducts","discountType","discounts","processDiscountableTickets","availableUses","reduce","acc","discountPercent","discountMethod","min","discountAmount","Price","Taxable","discountAction","multiSeatTracker","Map","set","validateCoupon","axiosResponse","finally","PromoCodeInputVuevue_type_script_lang_ts_","promo_PromoCodeInputVuevue_type_script_lang_ts_","PromoCodeInput_component","promo_PromoCodeInput","TermsAndConditionsInputvue_type_template_id_d529e330_render","agreesToTerms","TermsAndConditionsInputvue_type_template_id_d529e330_staticRenderFns","TermsAndConditionsInputVuevue_type_script_lang_ts_TermsAndConditionsInput","extend","getMessage","validate","validatesRequired","TermsAndConditionsInputVuevue_type_script_lang_ts_","terms_TermsAndConditionsInputVuevue_type_script_lang_ts_","TermsAndConditionsInput_component","terms_TermsAndConditionsInput","ConsentInputvue_type_template_id_6e64119a_render","inputFieldName","consentToPolicy","customLabel","ConsentInputvue_type_template_id_6e64119a_staticRenderFns","ConsentInputVuevue_type_script_lang_ts_ConsentInput","ReplaceTokens","str","html","replace","getInvalidMessage","toLowerCase","ConsentInputVuevue_type_script_lang_ts_","consent_ConsentInputVuevue_type_script_lang_ts_","ConsentInput_component","consent_ConsentInput","EventCheckoutVuevue_type_script_lang_ts_EventCheckout","donateTransactionFeeChargeType","paymentType","creditCard","emailForConfirmation","guest","initialTotal","enableSaveCreditCard","enableAutoPay","enableInvoice","enableACH","enableSaveAch","savedAchs","donateTransactionFeeDescription","donateTransactionFeePercentage","hasItemWithDisabledInvoicing","invoiceWarningMessage","getInvoiceWarningMessage","alternatePaymentStripeId","alternatePaymentCurrency","enableCreditCard","disableInvoicing","ticketsWithDisabledInvoicing","join","defaultBillablePartyID","billablePartyId","savedCards","onTotalChanged","professionalEmail","showTermsAndRecaptcha","invoice","validationPassed","validateAll","valid","any","paymentWidget","$refs","payment","onErrorToggle","register","location","registrationId","status","ApiPaymentErrorResponse","contactUsUrl","paymentProcessingStatus","PaymentProcessingStatus","Error","recaptchaInput","recaptcha","handleApiPaymentError","ttl","showPromoCode","hasPromos","newTotal","onTotalUpdated","paymentContainer","onProposedDonateTransactionFeeAmountUpdated","remainingSeats","currentCount","ticketId","remaining","priceForThisSeat","updateConfirmationEmails","newInvoiceFee","discountError","msg","enteredAddress","addressType","addr","billingState","PaymentsRepo","getTaxRate","firstNonNullEmail","isCheckoutDisabled","PaymentContainer","EmailsInput","PromoCodeInput","RecaptchaInput","TermsAndConditionsInput","ConsentInput","CustomerSelector","EventCheckoutVuevue_type_script_lang_ts_","event_EventCheckoutVuevue_type_script_lang_ts_","EventCheckout_component","event_EventCheckout","createDtoCurrentUser","userContext","firstAndLastName","hasSomeAdminAccess","NoviTinyMcevue_type_template_id_00b3541e_render","data-region","parsedRegionName","data-component","data-component-id","hiddenHtmlInputName","hiddenOriginalHtmlInputName","simpleEditor","contenteditable","editableRegionName","empty","staticHtml","isEditable","NoviTinyMcevue_type_template_id_00b3541e_staticRenderFns","NoviTinyMceVuevue_type_script_lang_ts_NoviTinyMce","document","addEventListener","evt","content","detail","getContent","emitInput","contentRegionsLoadedEvent","CustomEvent","noviCmsNamespace","bubbles","cancelable","readyState","dispatchEvent","tinyMCEInitTimeout","clearTimeout","tinymce","execCommand","NoviTinyMceVuevue_type_script_lang_ts_","tinymce_NoviTinyMceVuevue_type_script_lang_ts_","NoviTinyMce_component","tinymce_NoviTinyMce","EventRegistrationPageVuevue_type_script_lang_ts_EventRegistrationPage","attendeeEmailsTicketsMap","Step","hasErrorOnContinue","isLoadingEvent","isLoadingEligibleAttendees","isLoadingTicketsAndAddons","emailToCheck","whoIsGoingStep","iconClass","completed","ticketsStep","checkoutStep","debouncedCheckUniqueEmail","debounce_default","checkUniqueEmail","alternatePaymentCurrencyIcon","loadEvent","loadEligibleAttendees","loadTicketsAndAddons","loadCurrentUser","resetFocus","showNext","showBack","groupedAttendees","foundAttendee","cloneDeep_default","moveNextStep","keys","parseInt","duplicates","scrollToTop","scrollTo","top","container","offsetTop","containerEl","getEvent","dtoEvent","loadAttendeeEmailsTicketsMap","getLoadingErrorHandler","loadSteps","getEligibleAttendees","dtoEligibleAttendees","selectCurrentUserAsAttendee","getTicketsAndAddons","CustomerRepo","getCurrentUser","user","alreadyAttending","comp","moveToNextStep","ValidationService","scrollToFirstInvalidField","EventBus","purchaserHasManagementAccess","allowUsersToRegisterOtherStaffForEvents","memberCompassUrl","pathname","form","getElementById","scrollIntoView","behavior","block","inline","validator","hasDuplicate","checkImmediateUniqueEmails","checkAllUniqueEmails","normalizeEmail","thisEmail","hasDuplicateTickets","seen","newAttendeesWithTickets","existingAttendeesWithTickets","checkAttendeeDuplicateEmails","IsDuplicateEmail","console","NoviStepper","EventRegistrationTickets","EventAttendeeForm","EventCheckout","NoviTinyMce","EventRegistrationPageVuevue_type_script_lang_ts_","event_registration_EventRegistrationPageVuevue_type_script_lang_ts_","EventRegistrationPage_component","event_registration_EventRegistrationPage","vue_runtime_esm","h","$mount"],"mappings":"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","file":"js/eventRegistration.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"eventRegistration\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/client-apps/vue-apps/dist/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([5,\"chunk-vendors\",\"chunk-common\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.isLoading)?_c('div',{staticClass:\"loading\",attrs:{\"role\":\"alert\",\"aria-live\":\"polite\",\"aria-atomic\":\"true\"}},[_vm._m(0)]):_vm._e(),_c('div',{ref:\"container\",staticClass:\"outline-none\",attrs:{\"tabindex\":\"0\"}},[_c('NoviStepper',{attrs:{\"steps\":_vm.steps,\"currentStep\":_vm.currentStep,\"allowStepClicks\":true},on:{\"update:currentStep\":function($event){_vm.currentStep=$event},\"update:current-step\":function($event){_vm.currentStep=$event},\"update:noviStepperEntered\":_vm.noviStepperEntered}},[_c('template',{attrs:{\"role\":\"list\"},slot:\"who-is-going\"},[_c('div',{staticClass:\"c-registration__wrapper\",attrs:{\"role\":\"list\"}},[_c('h2',{staticClass:\"c-registration__title c-registration__text--center\"},[_vm._v(\"\\n Who would you like to register?\\n \")]),_c('div',{staticClass:\"c-registration__text c-registration__text--block\"},[_c('NoviTinyMce',{attrs:{\"regionName\":\"AttendeeInstructions\",\"component\":\"Event\",\"componentId\":_vm.event.id},model:{value:(_vm.event.attendeeInstructions),callback:function ($$v) {_vm.$set(_vm.event, \"attendeeInstructions\", $$v)},expression:\"event.attendeeInstructions\"}})],1),_c('div',{staticClass:\"c-registration__wrapper\",attrs:{\"role\":\"listitem\"}},[(_vm.event.attendeeBased)?[(_vm.event.alreadyAttending)?_c('div',{staticClass:\"c-registration__wrapper c-registration__alert\",attrs:{\"tabindex\":\"0\"}},[_vm._v(\"\\n You are already scheduled to attend this event.\\n \")]):_vm._e(),(_vm.event.attendeeBased && !_vm.currentUser.isLoggedIn && !_vm.hideGuestLoginAlert)?_c('div',{staticClass:\"c-registration__wrapper c-registration__alert\"},[(_vm.allItemsRestrictedForGuestPurchase)?_c('p',{attrs:{\"tabindex\":\"0\"}},[_vm._v(\"Please login to register.\")]):_vm._e(),(!_vm.allItemsRestrictedForGuestPurchase)?_c('p',{attrs:{\"tabindex\":\"0\"}},[_vm._v(\"For best pricing & availability we recommend logging in to register.\")]):_vm._e(),_c('button',{staticClass:\"btn btn-primary c-registration__alert--btn\",attrs:{\"tabindex\":\"0\",\"data-test\":\"login-button\"},on:{\"click\":function($event){return _vm.login()},\"keyup\":function($event){if(!$event.type.indexOf('key')&&$event.keyCode!==13){ return null; }return _vm.login()}}},[_vm._v(\"\\n Login Now\\n \")]),(!_vm.allItemsRestrictedForGuestPurchase)?_c('a',{staticClass:\"c-registration__alert--link\",attrs:{\"id\":\"hideGuestLink\",\"tabindex\":\"0\"},on:{\"click\":function($event){return _vm.hideGuestAlert()},\"keyup\":function($event){if(!$event.type.indexOf('key')&&$event.keyCode!==13){ return null; }return _vm.hideGuestAlert()}}},[_vm._v(\"Continue registering as a guest\")]):_vm._e()]):_vm._e(),_c('span',{staticClass:\"sr-only\",attrs:{\"role\":\"alert\",\"aria-live\":\"polite\"}},[_vm._v(\"List Updated with \"+_vm._s(_vm.registrationModel.attendees.length)+\" suggestions.\")]),_vm._l((_vm.registrationModel.attendees),function(item){return _c('div',[_c('div',{staticClass:\"c-registration__attendee\"},[(item.customerId > 0)?_c('img',{staticClass:\"c-registration__attendee-image\",attrs:{\"src\":item.image,\"alt\":item.name}}):_vm._e(),(item.customerId == 0)?_c('div',{staticClass:\"c-registration__attendee-initial\",attrs:{\"aria-hidden\":\"true\"},domProps:{\"innerHTML\":_vm._s(item.customerInitial)}}):_vm._e(),_c('div',{staticClass:\"c-registration__attendee-info\"},[_c('h3',{staticClass:\"c-registration__attendee-name\",attrs:{\"tabindex\":\"0\"}},[_vm._v(\"\\n \"+_vm._s(item.name)+\"\\n \")]),_c('p',{staticClass:\"c-registration__attendee-email\",attrs:{\"tabindex\":\"0\"}},[_vm._v(\"\\n \"+_vm._s(item.email)+\"\\n \")])]),_c('div',{staticClass:\"c-registration__attendee-price-close\"},[_c('div',{staticClass:\"c-registration__attendee-price\"},[_c('a',{staticClass:\"c-registration__attendee-price--x\",attrs:{\"href\":\"javascript:void(0);\",\"data-test\":\"remove-attendee-button\",\"tabindex\":\"0\"},on:{\"click\":function($event){return _vm.removeAttendee(item)},\"keyup\":function($event){if(!$event.type.indexOf('key')&&$event.keyCode!==13){ return null; }return _vm.removeAttendee(item)}}},[_vm._v(\"X\")])])])])])}),(_vm.registrationModel.attendees.length > 0)?_c('div',{staticClass:\"c-registration__text c-registration__text--right\"},[_c('span',{staticClass:\"c-registration__text--bold\",attrs:{\"tabindex\":\"0\"}},[_vm._v(_vm._s(_vm.registrationModel.attendees.length))]),_vm._v(\" attendees selected\\n \")]):_vm._e(),(_vm.currentUser.isLoggedIn || !_vm.allItemsRestrictedForGuestPurchase)?_c('h3',{staticClass:\"c-registration__sub-title\",attrs:{\"tabindex\":\"0\"}},[_vm._v(\"Add Attendee\")]):_vm._e(),(_vm.event.purchaserHasManagementAccess)?_c('InfoAlert',{attrs:{\"message\":_vm.guestNotAllowedMessage}}):_vm._e(),(_vm.currentUser.isLoggedIn || !_vm.allItemsRestrictedForGuestPurchase)?_c('AttendeeSelector',{ref:\"attendeeSelector\",attrs:{\"eligibleAttendees\":_vm.eligibleAttendees,\"selectedAttendees\":_vm.registrationModel.attendees,\"attendeeBased\":_vm.event.attendeeBased,\"allowGuests\":true,\"allowTbd\":true},on:{\"update:attendee\":_vm.onAttendeeUpdated}}):_vm._e()]:_vm._e()],2),_c('div',{staticClass:\"c-registration__wrapper\",attrs:{\"role\":\"listitem\"}},[_vm._l((_vm.registrationModel.attendees),function(attendee,index){return (!_vm.event.attendeeBased)?[_c('div',{attrs:{\"role\":\"listitem\"}},[_c('h3',{staticClass:\"c-registration__ticket-title\",attrs:{\"role\":\"presentation\"}},[_vm._v(\"\\n \"+_vm._s(attendee.ticketName)+\"\\n \"),(_vm.registrationModel.attendees.length > 1)?[_c('span',{staticClass:\"c-registration__attendee-stepper\",attrs:{\"role\":\"listitem\"}},[_vm._v(\"(\"+_vm._s((index + 1))+\" of \"+_vm._s(_vm.registrationModel.attendees.length)+\")\")])]:_vm._e()],2),_c('EventAttendeeForm',{attrs:{\"attendee\":attendee,\"event\":_vm.event,\"registrationModel\":_vm.registrationModel,\"eligibleAttendees\":_vm.eligibleAttendees,\"ticketNumber\":index.toString(),\"guestNotAllowedMessage\":_vm.guestNotAllowedMessage,\"shippingAddressInstructions\":_vm.shippingAddressInstructions,\"professionalEmailInstructions\":_vm.professionalEmailInstructions,\"parentMemberInstructions\":_vm.parentMemberInstructions},on:{\"update:attendee\":_vm.onAttendeeUpdated}})],1)]:_vm._e()})],2)])]),_c('template',{slot:\"tickets\"},[_c('div',{staticClass:\"c-registration__wrapper\",attrs:{\"role\":\"listitem\"}},[(!_vm.event.attendeeBased)?_c('div',[(_vm.event.alreadyAttending)?_c('div',{staticClass:\"c-registration__wrapper c-registration__alert\"},[_vm._v(\"\\n You are already scheduled to attend this event.\\n \")]):_vm._e()]):_vm._e(),(!_vm.event.attendeeBased && !_vm.currentUser.isLoggedIn && !_vm.hideGuestLoginAlert)?_c('div',{staticClass:\"c-registration__wrapper c-registration__alert\"},[(_vm.allItemsRestrictedForGuestPurchase)?_c('p',[_vm._v(\"Please login to register.\")]):_vm._e(),(!_vm.allItemsRestrictedForGuestPurchase)?_c('p',[_vm._v(\"For best pricing & availability we recommend logging in to register.\")]):_vm._e(),_c('button',{staticClass:\"btn btn-primary c-registration__alert--btn\",on:{\"click\":function($event){return _vm.login()}}},[_vm._v(\"\\n Login Now\\n \")]),(!_vm.allItemsRestrictedForGuestPurchase)?_c('a',{staticClass:\"c-registration__alert--link\",attrs:{\"tabindex\":\"0\"},on:{\"click\":function($event){return _vm.hideGuestAlert()},\"keyup\":function($event){if(!$event.type.indexOf('key')&&$event.keyCode!==13){ return null; }return _vm.hideGuestAlert()}}},[_vm._v(\"Continue registering as a guest\")]):_vm._e()]):_vm._e(),(_vm.event.attendeeBased)?_c('div',[_c('div',{staticClass:\"c-registration__attendee c-registration__attendee--no-container\"},[(_vm.currentAttendee.customerId > 0)?_c('img',{staticClass:\"c-registration__attendee-image c-registration__attendee-image--featured\",attrs:{\"src\":_vm.currentAttendee.image,\"alt\":_vm.currentAttendee.name}}):_vm._e(),(!_vm.currentAttendee.customerId)?_c('div',{staticClass:\"c-registration__attendee-initial c-registration__attendee-initial--featured\",attrs:{\"aria-hidden\":\"true\"},domProps:{\"innerHTML\":_vm._s(_vm.currentAttendee.customerInitial)}}):_vm._e(),_c('div',{staticClass:\"c-registration__attendee-info\"},[_c('h3',{staticClass:\"c-registration__attendee-name c-registration__attendee-name--featured\"},[_vm._v(\"\\n \"+_vm._s(_vm.currentAttendee.name)+\"\\n \")]),_c('p',{staticClass:\"c-registration__attendee-email\"},[_vm._v(\"\\n \"+_vm._s(_vm.currentAttendee.email)+\"\\n \")])]),(_vm.event.attendeeBased && _vm.registrationModel.attendees.length > 1)?_c('div',{staticClass:\"c-registration__attendee-number\"},[_vm._v(\"\\n (\"),_c('span',{staticClass:\"c-registration__attendee-wording\"},[_vm._v(\"Attendee \")]),_vm._v(_vm._s(_vm.currentAttendeeIndex + 1)+\" of \"+_vm._s(_vm.registrationModel.attendees.length)+\")\\n \")]):_vm._e(),_c('div',{staticClass:\"c-registration__attendee-btn-close\"},[_c('button',{staticClass:\"btn c-registration__attendee-btn-remove\",attrs:{\"data-test\":\"remove-attendee-button\"},on:{\"click\":function($event){return _vm.removeAttendee(_vm.currentAttendee)}}},[_c('span',[_vm._v(\"Remove\")])])])])]):_vm._e(),_c('div',{staticClass:\"c-registration__text c-registration__text--block\"},[_c('NoviTinyMce',{attrs:{\"regionName\":\"TicketsInstructions\",\"component\":\"Event\",\"componentId\":_vm.event.id},model:{value:(_vm.event.ticketsInstructions),callback:function ($$v) {_vm.$set(_vm.event, \"ticketsInstructions\", $$v)},expression:\"event.ticketsInstructions\"}})],1),_c('EventRegistrationTickets',{key:_vm.currentTicketKey,ref:\"ticketsComponent\",attrs:{\"event\":_vm.event,\"registration\":_vm.registrationModel,\"ticketsAndAddons\":_vm.ticketsAndAddons,\"attendeeIndex\":_vm.currentAttendeeIndex,\"isAttendeeCentered\":_vm.event.attendeeBased,\"isMember\":_vm.isMember,\"isLoading\":_vm.isLoading},on:{\"check-unique-email\":_vm.validateUniqueEmail}}),(_vm.event.attendeeBased)?_c('EventAttendeeForm',{key:_vm.currentAttendeeIndex,attrs:{\"event\":_vm.event,\"registrationModel\":_vm.registrationModel,\"ticketNumber\":_vm.currentAttendeeIndex.toString(),\"attendee\":_vm.registrationModel.attendees[_vm.currentAttendeeIndex],\"shippingAddressInstructions\":_vm.shippingAddressInstructions},on:{\"update-email-to-validate\":_vm.updateEmailToValidate,\"check-unique-email\":_vm.validateUniqueEmail}}):_vm._e()],1)]),_c('template',{slot:\"checkout\"},[_c('EventCheckout',{ref:\"eventCheckout\",attrs:{\"eventId\":_vm.event.id,\"attendeeBased\":_vm.event.attendeeBased,\"invoiceFee\":_vm.event.invoiceFee,\"parentLabel\":_vm.parentMemberLabel,\"parentRequired\":_vm.parentMemberRequired},on:{\"backToFirstStep\":_vm.backToFirstStep,\"showAttendee\":_vm.showAttendee,\"showAddon\":_vm.showAddon}})],1)],2),[(_vm.globalErrorMessage)?_c('ErrorAlert',{attrs:{\"message\":'There was an error and we\\'re unable to continue with your event registration. If the problem continues, please contact us.',\"details\":_vm.globalErrorMessage}}):_vm._e(),_c('hr'),_c('div',{staticClass:\"long-form\"},[(_vm.errors && _vm.errors.count() > 0)?_c('ValidationErrors',{attrs:{\"errorList\":_vm.errors.all()}}):_vm._e(),(_vm.hasErrorOnContinue)?_c('ErrorAlert',{attrs:{\"details\":_vm.errorMessage}}):_vm._e(),_c('div',{staticClass:\"c-action-buttons\"},[_c('div',{staticClass:\"c-action-buttons__left\"},[(_vm.showBack)?_c('button',{staticClass:\"btn\",staticStyle:{\"color\":\"#2B4C6C\"},attrs:{\"tabindex\":\"0\",\"disabled\":_vm.disableBack},on:{\"click\":function($event){return _vm.back()}}},[_c('span',{staticClass:\"fas fa-arrow-left\"}),_vm._v(\" \"+_vm._s(_vm.previousStepText)+\"\\n \")]):_vm._e()]),_c('div',{staticClass:\"c-action-buttons__right\",staticStyle:{\"text-align\":\"right\"}},[(_vm.showNext)?_c('button',{staticClass:\"btn btn-success\",attrs:{\"tabindex\":\"0\",\"disabled\":_vm.disableNext,\"data-test\":\"event-registration-continue\"},on:{\"click\":function($event){return _vm.saveAndNext()}}},[(!_vm.isSaving)?_c('span',[_vm._v(_vm._s(_vm.nextStepText)+\" \"),_c('span',{staticClass:\"fas fa-arrow-right\"})]):_vm._e(),(_vm.isSaving)?_c('span',[_c('i',{staticClass:\"fa fa-spinner fa-spin\"}),_vm._v(\" Saving...\")]):_vm._e()]):_vm._e()])])],1)]],2)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"loading-indicator\"},[_c('span',{staticClass:\"novicon novicon-spinner novicon-spin\"}),_vm._v(\"\\n Loading...\\n \")])}]\n\nexport { render, staticRenderFns }","export abstract class RandomGenerator {\r\n static generateRandomString() : string {\r\n return (Math.random() + 1).toString(36).substring(7)\r\n }\r\n}","import { SelectListItemWithSubtext } from '../AllTypesExports';\r\nimport { CustomFieldValue } from '../CustomField/CustomFieldValue';\r\nimport { DtoTicket, Ticket } from './DtoTicket';\r\nimport { ProductQuantity } from '../ecommerce/DtoProductQuantity';\r\nimport { DtoAddress, createDtoAddress } from '../membership/DtoAddress';\r\nimport { RandomGenerator } from '../../services/RandomGenerator';\r\nimport { IEventRegistrationGlobals } from '../../../pages/event-registration/EventRegistrationGlobals';\r\n\r\ndeclare let noviNs: IEventRegistrationGlobals;\r\n\r\nexport interface DtoAttendee {\r\n customerId: number | null;\r\n name: string;\r\n email: string | null;\r\n phone: string | null;\r\n jobTitle: string | null;\r\n mobilePhone: string | null;\r\n companyName: string;\r\n shippingAddress: DtoAddress | null;\r\n credentials: string | null;\r\n ineligibleTickets: number[];\r\n alreadyPurchasedTickets: number[];\r\n selectedTickets: Ticket[];\r\n selectedAddons: ProductQuantity[];\r\n image: string | null;\r\n attendeeCustomFieldValues: { [key: string]: CustomFieldValue };\r\n customerCustomFieldValues: { [key: string]: CustomFieldValue };\r\n uniqueId: string | null;\r\n}\r\n\r\nexport class Attendee implements DtoAttendee {\r\n customerId!: number | null;\r\n name!: string;\r\n email!: string | null;\r\n phone!: string | null;\r\n jobTitle!: string | null;\r\n mobilePhone!: string | null;\r\n companyName!: string;\r\n shippingAddress!: DtoAddress | null;\r\n credentials!: string | null;\r\n ineligibleTickets!: number[];\r\n alreadyPurchasedTickets!: number[];\r\n selectedTickets!: Ticket[];\r\n selectedAddons!: ProductQuantity[];\r\n image!: string | null;\r\n attendeeCustomFieldValues!: { [key: string]: CustomFieldValue; };\r\n customerCustomFieldValues!: { [key: string]: CustomFieldValue; };\r\n uniqueId!: string | null;\r\n\r\n constructor(dtoAttendee: DtoAttendee) {\r\n Object.assign(this, dtoAttendee);\r\n }\r\n\r\n get isGuest() {\r\n return this.customerId ? false : true;\r\n }\r\n\r\n get subTotal() {\r\n var subtotal = 0;\r\n this.selectedTickets.forEach(ticket => subtotal += ticket.price);\r\n this.selectedAddons.forEach(addon => subtotal += addon.subTotal);\r\n return subtotal;\r\n }\r\n\r\n get taxableSubTotal() { \r\n var taxableSubTotal = 0;\r\n this.selectedTickets.forEach(ticket => {\r\n if (ticket.taxable) {\r\n taxableSubTotal += ticket.price;\r\n }\r\n });\r\n this.selectedAddons.forEach(addon => {\r\n if (addon.taxable) {\r\n taxableSubTotal += addon.subTotal;\r\n }\r\n });\r\n return taxableSubTotal;\r\n }\r\n\r\n get ticketName() {\r\n if (this.selectedTickets && this.selectedTickets[0]) {\r\n return this.selectedTickets[0].name;\r\n }\r\n }\r\n\r\n get customerInitial() {\r\n if (this.name && this.name.length > 0) {\r\n return this.name.charAt(0);\r\n }\r\n return '';\r\n }\r\n\r\n get isTbd() {\r\n return this.name == noviNs.tbdEventName;\r\n }\r\n\r\n isEligibleFor(ticketID: number) {\r\n return !this.ineligibleTickets || !this.ineligibleTickets.includes(ticketID);\r\n }\r\n\r\n hasAlreadyPurchased(ticketID: number) {\r\n return this.alreadyPurchasedTickets && this.alreadyPurchasedTickets.includes(ticketID);\r\n }\r\n \r\n hasSelectedTicket(ticketID: number) {\r\n return this.selectedTickets.some(t => t.id == ticketID);\r\n }\r\n\r\n matches(other: Attendee) {\r\n if (this.customerId && this.customerId === other.customerId) {\r\n return true;\r\n }\r\n\r\n if (this.name && this.name != noviNs.tbdEventName && this.name === other.name && this.companyName === other.companyName) {\r\n return true;\r\n }\r\n\r\n if (this.uniqueId && this.uniqueId === other.uniqueId) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n setAsTbd() {\r\n Object.assign(this, createAttendee({\r\n name: noviNs.tbdEventName,\r\n uniqueId: this.uniqueId,\r\n selectedTickets: this.selectedTickets,\r\n selectedAddons: this.selectedAddons\r\n }));\r\n }\r\n}\r\n\r\n// Ticket based \r\n// - one DtoAttendee for each ticket purchased\r\n// - one selectedTicket per attendee\r\n// - selectedAddons will be empty, addons are global in Ticket based so they're attached to the DtoRegistraion\r\n// - customFields only apply to the lone selected ticket\r\n\r\n// Attendee based \r\n// - one DtoAttendee for each customer \r\n// - selectedTickets contains the tickets for this customer\r\n// - selectedAddons contains the add ons for this customer\r\n// - customFields apply to all tickets and addons for this customer, each customFieldId should only appear once \r\n\r\nexport function createAttendee(dtoAttendee?: DtoAttendee | any) {\r\n let obj = {\r\n customerId: null,\r\n name: '',\r\n image: '',\r\n email: '',\r\n phone: '',\r\n mobilePhone: '',\r\n jobTitle: '',\r\n companyName: '',\r\n shippingAddress: createDtoAddress(null),\r\n credentials: '',\r\n ineligibleTickets: [],\r\n alreadyPurchasedTickets: [],\r\n selectedTickets: [],\r\n selectedAddons: [],\r\n attendeeCustomFieldValues: {},\r\n customerCustomFieldValues: {},\r\n uniqueId: RandomGenerator.generateRandomString()\r\n }; \r\n\r\n if (dtoAttendee) {\r\n\r\n if (dtoAttendee.image) {\r\n obj.image = dtoAttendee.image;\r\n }\r\n else {\r\n obj.image = '/img/missing-individual.jpg';\r\n }\r\n\r\n Object.assign(obj, dtoAttendee);\r\n }\r\n\r\n return new Attendee(obj);\r\n}\r\n\r\nexport function createAttendeeFromSelectListItemWithSubText(dtoAttendee?: SelectListItemWithSubtext | any) {\r\n let obj = {\r\n customerId: null,\r\n name: '',\r\n image: '',\r\n email: '',\r\n phone: '',\r\n mobilePhone: '',\r\n jobTitle: '',\r\n companyName: '',\r\n shippingAddress: createDtoAddress(null),\r\n credentials: '',\r\n ineligibleTickets: [],\r\n alreadyPurchasedTickets: [],\r\n selectedTickets: [],\r\n selectedAddons: [],\r\n attendeeCustomFieldValues: {},\r\n customerCustomFieldValues: {},\r\n uniqueId: RandomGenerator.generateRandomString()\r\n };\r\n\r\n obj.customerId = dtoAttendee.id;\r\n obj.name = dtoAttendee.text;\r\n obj.email = dtoAttendee.subtext;\r\n\r\n if (dtoAttendee.image) {\r\n obj.image = dtoAttendee.image;\r\n }\r\n else {\r\n obj.image = '/img/missing-individual.jpg';\r\n }\r\n\r\n return new Attendee(obj);\r\n}","import { ProductType } from './ProductType';\r\nimport { CustomField } from '../CustomField/CustomField';\r\nimport dayjs from 'dayjs';\r\n\r\nexport interface DtoProduct {\r\n id: number;\r\n name: string;\r\n description: string;\r\n image: string;\r\n nonMemberPrice : number;\r\n memberPrice: number;\r\n minimumPrice: number;\r\n active: boolean;\r\n taxable: boolean;\r\n requiresFulfillment: boolean;\r\n weight: number;\r\n displayOrder: number;\r\n chargeByDefault: boolean;\r\n productType: ProductType;\r\n isSubscription: boolean;\r\n hasLimitedQuantity: boolean;\r\n quantityAvailable: number;\r\n hasPurchaseWindow: boolean;\r\n purchaseWindowStart: string;\r\n purchaseWindowEnd: string;\r\n productsSold: number;\r\n maxAvailable: number;\r\n fileNameWithPrefix: string;\r\n customFields: CustomField[];\r\n restrictionMessage: string | null;\r\n restrictionTitle: string | null;\r\n}\r\n\r\nexport class Product implements DtoProduct {\r\n id!: number;\r\n name!: string;\r\n description!: string;\r\n image!: string;\r\n nonMemberPrice!: number;\r\n memberPrice!: number;\r\n minimumPrice!: number;\r\n active!: boolean;\r\n taxable!: boolean;\r\n requiresFulfillment!: boolean;\r\n weight!: number;\r\n displayOrder!: number;\r\n chargeByDefault!: boolean;\r\n productType!: ProductType;\r\n isSubscription!: boolean;\r\n hasLimitedQuantity!: boolean;\r\n quantityAvailable!: number;\r\n hasPurchaseWindow!: boolean;\r\n purchaseWindowStart!: string;\r\n purchaseWindowEnd!: string;\r\n productsSold!: number;\r\n maxAvailable!: number;\r\n fileNameWithPrefix!: string;\r\n customFields!: CustomField[];\r\n restrictionMessage!: string | null;\r\n restrictionTitle!: string | null;\r\n isOnlyVisibleInPurchaseWindow!: boolean;\r\n\r\n constructor(dtoProduct: DtoProduct) {\r\n Object.assign(this, dtoProduct);\r\n }\r\n \r\n get isWithinPurchaseWindow() {\r\n return !this.isBeforePurchaseWindow && !this.isAfterPurchaseWindow;\r\n }\r\n\r\n get isBeforePurchaseWindow() {\r\n if (!this.hasPurchaseWindow) {\r\n return false;\r\n }\r\n\r\n const now = dayjs();\r\n return this.purchaseWindowStart && now.isBefore(this.purchaseWindowStart);\r\n }\r\n\r\n get isAfterPurchaseWindow() {\r\n if (!this.hasPurchaseWindow) {\r\n return false;\r\n }\r\n\r\n const now = dayjs();\r\n return this.purchaseWindowEnd && now.isAfter(this.purchaseWindowEnd);\r\n }\r\n\r\n get isSoldOut() {\r\n if (!this.hasLimitedQuantity) {\r\n return false;\r\n }\r\n\r\n return this.maxAvailable < 1;\r\n }\r\n\r\n getProductPrice(isMember: boolean): number {\r\n return (isMember ? this.memberPrice : this.nonMemberPrice) || 0;\r\n }\r\n\r\n getProductPriceString(isMember: boolean): string {\r\n var price = this.getProductPrice(isMember);\r\n return price ? price.toFixed(2) : \"\";\r\n }\r\n\r\n get isLocked() {\r\n if (this.restrictionMessage) {\r\n return true;\r\n }\r\n\r\n return false; \r\n }\r\n}\r\n\r\n\r\nexport function createProduct(dtoProduct?: DtoProduct | any) {\r\n const result = {\r\n id: 0,\r\n name: '',\r\n description: '',\r\n image: '',\r\n nonMemberPrice: 0,\r\n memberPrice: 0,\r\n minimumPrice: 0,\r\n active: false,\r\n taxable: false,\r\n requiresFulfillment: false,\r\n weight: 0,\r\n displayOrder: 0,\r\n chargeByDefault: false,\r\n productType: ProductType.Paid,\r\n isSubscription: false,\r\n hasLimitedQuantity: false,\r\n quantityAvailable: -1,\r\n hasPurchaseWindow: false,\r\n purchaseWindowStart: '',\r\n purchaseWindowEnd: '',\r\n productsSold: 0,\r\n maxAvailable: -1,\r\n fileNameWithPrefix: '',\r\n customFields: [],\r\n restrictionMessage: null,\r\n restrictionTitle: null\r\n };\r\n if (dtoProduct) {\r\n Object.assign(result, dtoProduct);\r\n }\r\n return new Product(result);\r\n}\r\n","import { Product, createProduct, DtoProduct } from '../ecommerce/DtoProduct';\r\nimport { DtoTicketCategory } from './DtoTicketCategory';\r\n\r\nexport interface DtoTicketsAndAddons {\r\n seatsAvailable: number | null;\r\n ticketCategories: DtoTicketCategory[];\r\n products: Product[];\r\n allItemsAreFree: boolean;\r\n hasCeus: boolean;\r\n}\r\n\r\nexport class TicketsAndAddons implements DtoTicketsAndAddons {\r\n seatsAvailable!: number | null;\r\n ticketCategories!: DtoTicketCategory[];\r\n products!: Product[];\r\n allItemsAreFree!: boolean;\r\n hasCeus!: boolean;\r\n\r\n constructor(dtoTicketsAndAddons: DtoTicketsAndAddons) {\r\n Object.assign(this, dtoTicketsAndAddons);\r\n }\r\n\r\n getAddonName(productId: number) {\r\n if (this.products) {\r\n var product = this.products.find(product => product.id == productId);\r\n if (product != null) {\r\n return product.name;\r\n }\r\n }\r\n return \"\";\r\n }\r\n}\r\n\r\nexport function createTicketsAndAddons(dtoTicketsAndAddons?: DtoTicketsAndAddons | any) {\r\n let obj = {\r\n seatsAvailable: 0,\r\n products: [],\r\n ticketCategories: [],\r\n allItemsAreFree: false,\r\n hasCeus: false\r\n };\r\n\r\n if (dtoTicketsAndAddons && dtoTicketsAndAddons.products) {\r\n dtoTicketsAndAddons.products = dtoTicketsAndAddons.products.map((product: DtoProduct) => createProduct(product));\r\n }\r\n\r\n if (dtoTicketsAndAddons) {\r\n Object.assign(obj, dtoTicketsAndAddons);\r\n }\r\n\r\n return new TicketsAndAddons(obj);\r\n}\r\n","import BaseNoviApiRepo from './BaseNoviApiRepo';\r\nimport { DtoEvent } from '../types/event/DtoEvent';\r\nimport { DtoAttendee, createAttendee, Attendee } from '../types/event/DtoAttendee';\r\nimport { DtoTicketsAndAddons, createTicketsAndAddons } from '../types/event/DtoTicketsAndAddons';\r\nimport { DtoEventRegistration } from '../types/event/DtoEventRegistration';\r\nimport { CouponValidationResult } from '../types/membership/CouponValidationResult';\r\nimport { DtoRegistrationResponse } from '../types/event/DtoRegistrationResponse';\r\nimport { AxiosResponse } from 'axios';\r\n\r\n/**\r\n * @description Handles API interaction for events\r\n */\r\nclass EventRepo extends BaseNoviApiRepo { \r\n getEvent(id: number) {\r\n return super.get(`/novi-api/event/get-event?eventId=${id}`)\r\n .then(super.getNoviApiDataHandler())\r\n .catch(super.getNoviApiErrorHandler());\r\n }\r\n\r\n loadAttendeeEmailsTicketsMap(id: number): Promise> {\r\n return super.get>(`/novi-api/event/get-attendee-emails-tickets-map?eventId=${id}`)\r\n .then(super.getNoviApiDataHandler>())\r\n .catch(super.getNoviApiErrorHandler>());\r\n }\r\n\r\n getEligibleAttendees(eventId: number) {\r\n return super.get(`/novi-api/event/get-eligible-attendees?eventId=${eventId}`)\r\n .then((res: AxiosResponse) => res.data.map(attendee => createAttendee(attendee)))\r\n .catch(super.getNoviApiErrorHandler());\r\n }\r\n\r\n getTicketsAndAddons(eventId: number) {\r\n return super.get(`/novi-api/event/get-tickets-and-addons?eventId=${eventId}`)\r\n .then((res: AxiosResponse) => createTicketsAndAddons(res.data))\r\n .catch(super.getNoviApiErrorHandler());\r\n }\r\n\r\n register(registrationModel: DtoEventRegistration) {\r\n return super.post('/novi-api/event/process-event-checkout', registrationModel)\r\n .then(super.getNoviApiDataHandler())\r\n .catch(super.getNoviApiErrorHandler());\r\n }\r\n\r\n validateCoupon(eventId: number, productIds: number[], purchaserId: number, promoCode: string) {\r\n return super.post('/novi-api/event/validate-coupon-code', {\r\n eventId,\r\n productIds,\r\n purchaserId,\r\n promoCode\r\n })\r\n .then(super.getNoviApiDataHandler())\r\n .catch(super.getNoviApiErrorHandler());\r\n }\r\n\r\n checkAttendeeDuplicateEmails(eventId: number, email: string, ticketIds: number[]): Promise {\r\n return super.post(`/novi-api/event/check-attendee-duplicate-emails?eventId=${eventId}&email=${encodeURIComponent(email)}&ticketIds=${ticketIds}`)\r\n .then(super.getNoviApiDataHandler())\r\n .catch(super.getNoviApiErrorHandler());\r\n }\r\n\r\n}\r\n\r\nexport const eventRepo = new EventRepo();","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"c-registration\"},[(_vm.hasVisibleTickets || _vm.showAddons)?_c('div',{staticClass:\"c-registration__wrapper event-register-container\",attrs:{\"role\":\"table\"}},[(_vm.hasVisibleTickets)?_c('div',{staticClass:\"c-registration__wrapper--header\",class:{'c-registration__wrapper--header-attendee' : !_vm.showQuantityField, 'c-registration__wrapper--header-rsvp' : !_vm.showPrice, 'c-registration__wrapper--header-ceu' : _vm.showCeu && !_vm.showPrice},attrs:{\"role\":\"rowgroup\"}},[(!_vm.showQuantityField)?_c('span',{staticClass:\"c-registration__col-no-qty u-hide--small\",attrs:{\"role\":\"columnheader\"}}):_vm._e(),_c('span',{staticClass:\"c-registration__col-description--header c-registration__item c-registration__item-title\",attrs:{\"role\":\"columnheader\"}},[_vm._v(\"\\n \"+_vm._s(_vm.ticketOptionsTitle)+\"\\n \")]),(_vm.showCeu)?_c('span',{staticClass:\"c-registration__col-ceu--header u-hide--small c-registration__item\"},[_vm._v(\"\\n Credits\\n \")]):_vm._e(),(_vm.showQuantityField)?_c('span',{staticClass:\"c-registration__col-qty--header u-hide--small c-registration__item\",attrs:{\"role\":\"columnheader\"}},[_vm._v(\"\\n Quantity\\n \")]):_vm._e(),(_vm.showPrice)?_c('span',{staticClass:\"c-registration__col-price--header u-hide--small c-registration__item\",attrs:{\"role\":\"columnheader\"}},[_vm._v(\"\\n Price\\n \")]):_vm._e()]):_vm._e(),_vm._l((_vm.attendeeTicketsCategories),function(attendeeTicketsCategory){return [(_vm.showCategoryHeader)?_c('div',{class:{ 'c-registration__ticket-category': true, 'collapsed': attendeeTicketsCategory.isCollapsed },attrs:{\"data-toggle\":\"collapse\",\"aria-expanded\":attendeeTicketsCategory.isCollapsed ? 'false' : 'true',\"aria-controls\":_vm.generateCategoryCollapseId(attendeeTicketsCategory.id),\"data-target\":'#' + _vm.generateCategoryCollapseId(attendeeTicketsCategory.id)},on:{\"click\":function($event){return _vm.handleHeaderToggleAccessibility(attendeeTicketsCategory)}}},[_c('i',{staticClass:\"fas fa-minus-circle\"}),_c('i',{staticClass:\"fas fa-plus-circle\"}),_vm._v(\"\\n \"+_vm._s(attendeeTicketsCategory.category || \"Other Registration Options\")+\"\\n \"),_c('p',[_vm._v(_vm._s(attendeeTicketsCategory.description || \"\"))])]):_vm._e(),_c('div',{class:{ 'collapse' : true, 'in': !attendeeTicketsCategory.isCollapsed },attrs:{\"id\":_vm.generateCategoryCollapseId(attendeeTicketsCategory.id),\"role\":\"rowgroup\"}},[_vm._l((attendeeTicketsCategory.ticketQuantities),function(ticketQuantity){return [_c('div',{class:{\n 'ticket-locked': ticketQuantity.locked,\n 'c-registration__wrapper--tickets-checkbox': !_vm.showQuantityField,\n 'c-registration__wrapper--tickets': _vm.showQuantityField,\n 'c-registration__wrapper--tickets-rsvp' : !_vm.showPrice,\n 'c-registration__wrapper--tickets-ceu' : _vm.showCeu && !_vm.showPrice\n },attrs:{\"data-test\":'event-ticket-row-name-' + ticketQuantity.ticket.name,\"role\":\"row\"}},[_c('div',{class:{\n 'c-registration__col-no-qty': _vm.showTicketSelectionField,\n 'c-registration__col-qty': _vm.showQuantityField,\n 'c-registration__item': _vm.showQuantityField\n },attrs:{\"role\":\"cell\"}},[(_vm.showTicketSelectionField && !ticketQuantity.locked)?_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(ticketQuantity.checked),expression:\"ticketQuantity.checked\"}],attrs:{\"type\":\"checkbox\",\"data-test\":'ticket-select-checkbox',\"aria-label\":ticketQuantity.ticket.name},domProps:{\"checked\":Array.isArray(ticketQuantity.checked)?_vm._i(ticketQuantity.checked,null)>-1:(ticketQuantity.checked)},on:{\"change\":[function($event){var $$a=ticketQuantity.checked,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(ticketQuantity, \"checked\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(ticketQuantity, \"checked\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(ticketQuantity, \"checked\", $$c)}},function($event){return _vm.updateAttendeeTicketSelected(ticketQuantity)}]}}):_vm._e(),_c('span',{staticClass:\"sr-only\",attrs:{\"role\":\"status\",\"aria-live\":\"polite\"}},[_vm._v(_vm._s(ticketQuantity.ticket.name)+\" has a quantity of \"+_vm._s(ticketQuantity.quantity)+\" \")]),(_vm.showQuantityField && !ticketQuantity.locked)?_c('QuantityInput',{attrs:{\"max\":ticketQuantity.ticket.numberLeft,\"maxMessage\":'No more tickets available.',\"id\":ticketQuantity.ticket.id + '_quantity',\"name\":ticketQuantity.ticket.name},model:{value:(ticketQuantity.quantity),callback:function ($$v) {_vm.$set(ticketQuantity, \"quantity\", $$v)},expression:\"ticketQuantity.quantity\"}}):_vm._e(),(ticketQuantity.locked)?_c('i',{directives:[{name:\"triggerPopover\",rawName:\"v-triggerPopover\"}],staticClass:\"fas fa-lock c-registration__lock\",attrs:{\"data-toggle\":\"popover\",\"data-trigger\":\"hover click\",\"data-placement\":\"right\",\"data-html\":\"true\",\"data-content\":ticketQuantity.ticket.restrictionMessage,\"data-title\":ticketQuantity.ticket.restrictionTitle}}):_vm._e()],1),_c('span',{staticClass:\"c-registration__col-description c-registration__item\",attrs:{\"role\":\"cell\"}},[_vm._v(\"\\n \"+_vm._s(ticketQuantity.ticket.name)+\"\\n \")]),_c('div',{staticClass:\"c-registration__col-details c-registration__item\",attrs:{\"role\":\"cell\"}},[(ticketQuantity.ticket.details)?_c('span',{staticClass:\"c-registration__col-description--details\",domProps:{\"innerHTML\":_vm._s(ticketQuantity.ticket.details)}}):_vm._e()]),(_vm.showCeu)?_c('span',{staticClass:\"c-registration__col-ceu c-registration__item\",attrs:{\"role\":\"cell\"}},[_vm._v(\"\\n \"+_vm._s(_vm.getTicketCeu(ticketQuantity.ticket))+\"\\n \")]):_vm._e(),(_vm.showPrice)?_c('span',{staticClass:\"c-registration__col-price c-registration__item\",attrs:{\"role\":\"cell\"}},[(ticketQuantity.ticket.ticketType == 0)?[(ticketQuantity.ticket.seatsPerTicket > 1)?[(_vm.getSeatsRemaining(ticketQuantity) == ticketQuantity.ticket.seatsPerTicket)?_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.registration.getTicketPriceString(ticketQuantity.ticket, _vm.getCurrentAttendeeOrEmptyAttendee()))}}):_c('span',[_vm._v(\" \"+_vm._s(_vm.getSeatsRemaining(ticketQuantity))+\" of \"+_vm._s(ticketQuantity.ticket.seatsPerTicket)+\" seats remaining\")])]:[(ticketQuantity.ticketPrice > 0)?_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.registration.getTicketPriceString(ticketQuantity.ticket, _vm.getCurrentAttendeeOrEmptyAttendee()))}}):_c('span',[_vm._v(\"Free\")])],(ticketQuantity.ticket.tieredPricing)?_c('span',{directives:[{name:\"triggerPopover\",rawName:\"v-triggerPopover\"}],staticClass:\"c-registration__tiered\",attrs:{\"data-toggle\":\"popover\",\"data-trigger\":\"click\",\"data-placement\":\"left\",\"data-html\":\"true\",\"data-title\":\"Ticket Quantity Discounts\",\"data-content\":_vm.getTicketPriceTierHtml(ticketQuantity.ticket)}},[_vm._v(\"\\n See QTY Discounts\\n \")]):_vm._e()]:_vm._e(),(ticketQuantity.ticket.ticketType == 1)?[_vm._v(\"\\n Free\\n \")]:_vm._e(),(ticketQuantity.ticket.ticketType == 2)?[_c('DonationInput',{attrs:{\"id\":ticketQuantity.ticket.id,\"name\":ticketQuantity.ticket.name},model:{value:(ticketQuantity.ticket.price),callback:function ($$v) {_vm.$set(ticketQuantity.ticket, \"price\", $$v)},expression:\"ticketQuantity.ticket.price\"}})]:_vm._e()],2):_vm._e()])]})],2)]}),(_vm.showAddons)?_c('div',{staticClass:\"c-registration__wrapper-add-ons\",attrs:{\"role\":\"row\"}},[_c('div',{staticClass:\"c-registration__wrapper--header\"},[_c('div',{staticClass:\"c-registration__col-no-qty u-hide--small\"}),_c('span',{staticClass:\"c-registration__col-description--header c-registration__item c-registration__item-title\",attrs:{\"role\":\"columnheader\"}},[_vm._v(\"\\n Add-ons\\n \")]),(_vm.showQuantityField)?_c('span',{staticClass:\"c-registration__col-qty--header u-hide--small c-registration__item\",attrs:{\"role\":\"columnheader\"}},[_vm._v(\"\\n Quantity\\n \")]):_vm._e(),(_vm.showPrice)?_c('span',{staticClass:\"c-registration__col-price--header u-hide--small c-registration__item\",attrs:{\"role\":\"columnheader\"}},[_vm._v(\"\\n Price\\n \")]):_vm._e()]),_vm._l((_vm.attendeeAddons),function(addon){return _c('AddonItem',{key:addon.product.id + '-' + _vm.attendeeIndex,attrs:{\"addon\":addon,\"showProductPrice\":_vm.showPrice,\"showCustomFields\":!_vm.isAttendeeCentered}})})],2):_vm._e(),_c('div',{staticClass:\"c-registration__totals c-registration__totals-wrapper\",attrs:{\"role\":\"row\"}},[(_vm.showPrice)?_c('span',{staticClass:\"c-registration__totals-label\",attrs:{\"role\":\"cell\"}},[_vm._v(\"\\n Subtotal\\n \")]):_vm._e(),(_vm.showPrice)?_c('span',{staticClass:\"c-registration__totals-price\",attrs:{\"data-test\":\"registration-total-price\",\"role\":\"cell\"},domProps:{\"innerHTML\":_vm._s(_vm.subTotalFormated)}}):_vm._e()])],2):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.showAddOnItem)?_c('div',{staticClass:\"c-registration__wrapper-addons-item\",attrs:{\"role\":\"rowgroup\"}},[_c('div',{staticClass:\"c-registration__wrapper--tickets\",attrs:{\"role\":\"row\"}},[_c('div',{staticClass:\"c-registration__col-description c-registration__item\",attrs:{\"role\":\"cell\"}},[_vm._v(\"\\n \"+_vm._s(_vm.addon.product.name)+\" \"),_c('br'),_c('a',{staticClass:\"view-product modal-iframe\",attrs:{\"href\":'/' + _vm.addon.product.fileNameWithPrefix + '?add=0',\"data-modal-width\":\"995\"}},[_c('span',{staticClass:\"novicon novicon-eye\"}),_vm._v(\"View Product\")])]),(!_vm.addon.product.isLocked)?_c('div',{staticClass:\"c-registration__col-qty c-registration__item\",attrs:{\"role\":\"cell\"}},[(_vm.addon.product.productType != _vm.ProductType.Donation && !_vm.addon.product.isSoldOut && _vm.addon.product.isWithinPurchaseWindow)?_c('QuantityInput',{attrs:{\"id\":_vm.addon.product.id + '_quantity',\"max\":_vm.addon.product.maxAvailable},model:{value:(_vm.addon.quantity.quantity),callback:function ($$v) {_vm.$set(_vm.addon.quantity, \"quantity\", $$v)},expression:\"addon.quantity.quantity\"}}):_vm._e(),(_vm.addon.product.isSoldOut)?_c('span',{staticClass:\"text-danger\"},[_c('i',[_vm._v(\"Sold Out\")])]):_vm._e(),(!_vm.addon.product.isSoldOut && _vm.addon.product.isBeforePurchaseWindow)?_c('span',{staticClass:\"text-danger\"},[_vm._v(\"Not yet available\")]):_vm._e(),(!_vm.addon.product.isSoldOut && _vm.addon.product.isAfterPurchaseWindow)?_c('span',{staticClass:\"text-danger\"},[_vm._v(\"No longer available\")]):_vm._e()],1):_vm._e(),(_vm.addon.product.productType != _vm.ProductType.Donation && _vm.showProductPrice)?_c('div',{staticClass:\"c-registration__col-price c-registration__item\",attrs:{\"role\":\"cell\"}},[(_vm.addon.productPrice && _vm.addon.productPrice !== 0)?_c('span',[_vm._v(\"\\n \"+_vm._s(_vm._f(\"currency\")(_vm.addon.productPrice,'$'))+\"\\n \")]):(_vm.addon.product.isLocked)?_c('span',[_c('i',{directives:[{name:\"triggerPopover\",rawName:\"v-triggerPopover\"}],staticClass:\"fas fa-lock c-registration__lock\",attrs:{\"data-toggle\":\"popover\",\"data-trigger\":\"hover click\",\"data-placement\":\"top\",\"data-html\":\"true\",\"data-content\":_vm.addon.product.restrictionMessage,\"data-title\":_vm.addon.product.restrictionTitle}})]):_c('span',[_vm._v(\"\\n Free\\n \")]),(_vm.addon.product.isSubscription)?_c('span',{staticClass:\"checkbox-custom\"},[_c('label',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.addon.quantity.autoRenew),expression:\"addon.quantity.autoRenew\"}],staticClass:\"auto-renew\",attrs:{\"type\":\"checkbox\",\"checked\":\"checked\"},domProps:{\"checked\":Array.isArray(_vm.addon.quantity.autoRenew)?_vm._i(_vm.addon.quantity.autoRenew,null)>-1:(_vm.addon.quantity.autoRenew)},on:{\"change\":function($event){var $$a=_vm.addon.quantity.autoRenew,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(_vm.addon.quantity, \"autoRenew\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(_vm.addon.quantity, \"autoRenew\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(_vm.addon.quantity, \"autoRenew\", $$c)}}}}),_vm._v(\"Auto-Renew\")])]):_vm._e()]):_vm._e(),(_vm.addon.product.productType == _vm.ProductType.Donation && !_vm.addon.product.isLocked && !_vm.addon.product.isSoldOut && _vm.addon.product.isWithinPurchaseWindow)?_c('div',{staticClass:\"c-registration__col-price c-registration__item\",attrs:{\"role\":\"cell\"}},[_c('DonationInput',{attrs:{\"id\":_vm.addon.product.id,\"name\":_vm.addon.product.name,\"minimumPrice\":_vm.addon.product.minimumPrice},model:{value:(_vm.addon.quantity.price),callback:function ($$v) {_vm.$set(_vm.addon.quantity, \"price\", $$v)},expression:\"addon.quantity.price\"}})],1):_vm._e(),_c('div',{staticClass:\"c-registration__col-qty c-registration__item\",attrs:{\"role\":\"cell\"}},[(_vm.addon.product.isLocked)?_c('i',{directives:[{name:\"triggerPopover\",rawName:\"v-triggerPopover\"}],staticClass:\"fas fa-lock c-registration__lock\",attrs:{\"data-toggle\":\"popover\",\"data-trigger\":\"hover click\",\"data-placement\":\"top\",\"data-html\":\"true\",\"data-content\":_vm.addon.product.restrictionMessage,\"data-title\":_vm.addon.product.restrictionTitle}}):_vm._e()])]),(_vm.showCustomFields)?[_vm._l((_vm.addon.product.customFields),function(field){return [_c('div',{staticClass:\"c-registration__wrapper-addons\",attrs:{\"role\":\"row\"}},[(_vm.addon.quantity.quantity > 0)?_c('div',{staticClass:\"form-group long-form\"},[_c('div',{attrs:{\"role\":\"cell\"}},[_c('CustomFieldEditor',{key:field.id,attrs:{\"field-config\":field,\"isRequired\":field.requiredFrontend},model:{value:(_vm.addon.quantity.customFieldValues[field.id.toString()]),callback:function ($$v) {_vm.$set(_vm.addon.quantity.customFieldValues, field.id.toString(), $$v)},expression:\"addon.quantity.customFieldValues[field.id.toString()]\"}})],1)]):_vm._e()])]})]:_vm._e()],2):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { DirectiveOptions } from 'vue';\r\n\r\nconst triggerPopover: DirectiveOptions = {\r\n bind(el, binding) {\r\n $(el).popover();\r\n }\r\n};\r\n\r\nexport default triggerPopover;","import { Component, Vue, Prop, Inject, Watch } from 'vue-property-decorator';\r\nimport { ProductType } from '@/common/types/ecommerce/ProductType';\r\nimport CustomFieldEditor from '../../components/custom-field/CustomFieldEditor.vue';\r\nimport DonationInput from '../../components/inputs/donation/DonationInput.vue';\r\nimport regexPattern from '@/components/directives/regexPattern-directive';\r\nimport { Addon } from '@/common/types/event/DtoAddon';\r\nimport { DtoCurrentUser } from '@/common/types/user/DtoCurrentUser';\r\nimport QuantityInput from '@/components/inputs/quantity/QuantityInput.vue';\r\nimport triggerPopover from '../directives/triggerPopover-directive';\r\n\r\n@Component({\r\n name: 'Addon',\r\n components: {\r\n CustomFieldEditor,\r\n DonationInput,\r\n QuantityInput\r\n },\r\n directives: {\r\n regexPattern,\r\n triggerPopover\r\n }\r\n})\r\n\r\nexport default class AddonItem extends Vue {\r\n\r\n @Prop({ required: true })\r\n addon!: Addon;\r\n\r\n @Prop({ required: false, default: false })\r\n showCustomFields!: boolean;\r\n\r\n @Prop({ required: true, default: true })\r\n showProductPrice!: boolean;\r\n\r\n @Inject('user')\r\n currentUser!: DtoCurrentUser;\r\n\r\n ProductType: any = ProductType; // Allows reference to this enum in template\r\n\r\n @Watch(\"addon.productPrice\", { immediate: true })\r\n updatePricePaid() {\r\n if (this.addon.product.productType != ProductType.Donation) {\r\n this.addon.quantity.price = this.addon.productPrice; // Stores the actual price paid by the user\r\n }\r\n }\r\n\r\n get showAddOnItem() {\r\n var product = this.addon.product;\r\n if (product.hasPurchaseWindow && product.isOnlyVisibleInPurchaseWindow && !product.isWithinPurchaseWindow) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n mounted() {\r\n if (this.addon.product.productType == ProductType.Donation) {\r\n this.addon.quantity.quantity = 1;\r\n }\r\n }\r\n}","export enum TicketType {\r\n Paid = 0,\r\n Free = 1,\r\n Donation = 2\r\n}","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!./AddonItemVue.ts?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!./AddonItemVue.ts?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AddonItem.vue?vue&type=template&id=aa1fa38a&\"\nimport script from \"./AddonItemVue.ts?vue&type=script&lang=ts&\"\nexport * from \"./AddonItemVue.ts?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { TicketType } from './TicketType';\r\nimport { DtoTicketPricingTier } from './DtoTicketPricingTier';\r\nimport { DtoTicketFieldItem } from './DtoTicketFieldItem';\r\n\r\nexport interface DtoTicket {\r\n id: number;\r\n name: string;\r\n price: number;\r\n tieredPricing: boolean;\r\n ticketPricingTiers: DtoTicketPricingTier[];\r\n numberAvailable: number;\r\n ticketType: TicketType;\r\n restrictionMessage: string | null;\r\n restrictionTitle: string | null;\r\n allowGuestAttendee: boolean;\r\n ticketFieldConfig: DtoTicketFieldItem[];\r\n displayOrder: number;\r\n categoryDisplayOrder: number;\r\n dependentTicketTypes: number[];\r\n unlockable: boolean;\r\n taxable: boolean;\r\n continuingEducationUnits: number | null;\r\n ceuTypes: string | null;\r\n seatsPerTicket: number;\r\n numberLeft: number;\r\n disableInvoicing: boolean;\r\n}\r\n\r\nexport class Ticket implements DtoTicket {\r\n id!: number;\r\n name!: string;\r\n price!: number;\r\n tieredPricing!: boolean;\r\n ticketPricingTiers!: DtoTicketPricingTier[];\r\n numberAvailable!: number;\r\n ticketType!: TicketType;\r\n restrictionMessage!: string | null;\r\n restrictionTitle!: string | null;\r\n allowGuestAttendee!: boolean;\r\n ticketFieldConfig!: DtoTicketFieldItem[];\r\n displayOrder!: number;\r\n categoryDisplayOrder!: number;\r\n dependentTicketTypes!: number[];\r\n unlockable!: boolean;\r\n taxable!: boolean;\r\n continuingEducationUnits!: number;\r\n ceuTypes!: string | null;\r\n seatsPerTicket!: number;\r\n numberLeft!: number;\r\n disableInvoicing!: boolean;\r\n\r\n constructor(dtoTicket: DtoTicket) {\r\n Object.assign(this, dtoTicket);\r\n }\r\n\r\n calculatePrice(quantityPurchased: number) {\r\n var actualPrice = this.price;\r\n\r\n if (this.tieredPricing && this.ticketPricingTiers) {\r\n this.ticketPricingTiers.forEach(ticketTier => {\r\n if (ticketTier.minimum <= quantityPurchased && (ticketTier.maximum == null || ticketTier.maximum >= quantityPurchased)) {\r\n actualPrice = ticketTier.price;\r\n }\r\n });\r\n }\r\n\r\n return actualPrice;\r\n }\r\n\r\n calculateSubtotal(quantity: number) {\r\n return quantity * this.calculatePrice(quantity);\r\n }\r\n}\r\n\r\nexport function createDtoTicket(dtoTicket?: DtoTicket | any) {\r\n let obj = {\r\n id: 0,\r\n name: '',\r\n numberAvailable: 0,\r\n tieredPricing: false,\r\n price: 0,\r\n ticketType: TicketType.Paid,\r\n ticketPricingTiers: [],\r\n restrictionMessage: null,\r\n restrictionTitle: null,\r\n allowGuestAttendee: true,\r\n ticketFieldConfig: [],\r\n displayOrder: 0,\r\n categoryDisplayOrder: 0,\r\n dependentTicketTypes: [],\r\n unlockable: false,\r\n taxable: false,\r\n continuingEducationUnits: 0,\r\n ceuTypes: '',\r\n seatsPerTicket: 1,\r\n numberLeft: 0,\r\n disableInvoicing: false\r\n };\r\n\r\n if (dtoTicket) {\r\n Object.assign(obj, dtoTicket);\r\n }\r\n\r\n return new Ticket(obj);\r\n}\r\n","import { Product } from '../ecommerce/DtoProduct';\r\nimport { ProductQuantity } from '../ecommerce/DtoProductQuantity';\r\nimport { ProductType } from '../ecommerce/ProductType';\r\n\r\nexport interface DtoAddon {\r\n product: Product;\r\n quantity: ProductQuantity;\r\n}\r\n\r\nexport class Addon implements DtoAddon {\r\n product!: Product;\r\n quantity!: ProductQuantity;\r\n isMember!: boolean;\r\n\r\n constructor(dtoAddon: DtoAddon, isMember?: boolean) {\r\n this.product = dtoAddon.product;\r\n this.quantity = dtoAddon.quantity;\r\n this.isMember = isMember || false;\r\n }\r\n\r\n get productPrice() {\r\n return this.product.getProductPrice(this.isMember);\r\n }\r\n\r\n get addonSubTotal() {\r\n if (this.product.productType == ProductType.Donation) {\r\n return this.quantity.price;\r\n }\r\n else {\r\n return this.productPrice * this.quantity.quantity;\r\n } \r\n }\r\n}\r\n\r\nexport function createAddon(dtoAddon: DtoAddon, isMember?: boolean) {\r\n return new Addon(dtoAddon, isMember);\r\n}\r\n","import { Ticket } from './DtoTicket';\r\n\r\nexport interface ITicketQuantity {\r\n ticket: Ticket;\r\n quantity: number;\r\n checked: boolean;\r\n locked: boolean;\r\n}\r\n\r\nexport class TicketQuantity implements ITicketQuantity {\r\n ticket!: Ticket;\r\n quantity!: number;\r\n checked!: boolean;\r\n locked!: boolean;\r\n\r\n constructor(ticketQuantity: ITicketQuantity) {\r\n this.ticket = ticketQuantity.ticket;\r\n this.quantity = ticketQuantity.quantity;\r\n this.checked = ticketQuantity.checked;\r\n this.locked = ticketQuantity.locked;\r\n }\r\n\r\n get ticketPrice() {\r\n return this.ticket.calculatePrice(this.quantity > 1 ? this.quantity : 1);\r\n }\r\n\r\n get ticketSubtotal() {\r\n return this.ticket.calculateSubtotal(this.quantity);\r\n }\r\n\r\n unlockTicket() {\r\n if (this.locked) {\r\n this.locked = false;\r\n this.quantity = 0;\r\n this.checked = false;\r\n }\r\n }\r\n\r\n lockTicket() {\r\n if (!this.locked) {\r\n this.locked = true;\r\n this.quantity = 0;\r\n this.checked = false;\r\n }\r\n }\r\n}\r\n","import { Component, Vue, Prop, Watch, Inject } from 'vue-property-decorator';\r\nimport ErrorAlert from '@/components/errors/ErrorAlert.vue';\r\nimport AddonItem from '@/components/addons/AddonItem.vue';\r\nimport DonationInput from '@/components/inputs/donation/DonationInput.vue';\r\nimport QuantityInput from '@/components/inputs/quantity/QuantityInput.vue';\r\nimport ValidationErrors from '@/components/errors/ValidationErrors.vue';\r\nimport { DtoTicket, Ticket } from '@/common/types/event/DtoTicket';\r\nimport { createAttendee } from '@/common/types/event/DtoAttendee';\r\nimport '@/common/filters/AllFiltersExport';\r\nimport { TicketsAndAddons } from '../../common/types/event/DtoTicketsAndAddons';\r\nimport { EventRegistration } from '../../common/types/event/DtoEventRegistration';\r\nimport { Addon, createAddon } from '@/common/types/event/DtoAddon';\r\nimport { DtoCurrentUser } from '@/common/types/user/DtoCurrentUser';\r\nimport { createProductQuantity, createProductQuantityFromProduct } from '@/common/types/ecommerce/DtoProductQuantity';\r\nimport triggerPopover from '../directives/triggerPopover-directive';\r\nimport { TicketQuantity } from '@/common/types/event/TicketQuantity';\r\nimport { TicketType } from '../../common/types/event/TicketType';\r\n\r\n\r\n@Component({\r\n name: 'EventRegistrationTickets',\r\n components: {\r\n ErrorAlert,\r\n ValidationErrors,\r\n AddonItem,\r\n DonationInput,\r\n QuantityInput\r\n },\r\n directives: {\r\n triggerPopover\r\n }\r\n})\r\nexport default class EventRegistrationTickets extends Vue {\r\n @Prop({ required: false })\r\n attendeeIndex!: number;\r\n\r\n @Prop({ required: true })\r\n isAttendeeCentered!: boolean;\r\n\r\n @Prop({ required: true })\r\n isLoading!: boolean;\r\n\r\n @Inject('registration')\r\n registration!: EventRegistration;\r\n\r\n @Inject('ticketsAndAddons')\r\n ticketsAndAddons!: TicketsAndAddons;\r\n\r\n @Inject('user')\r\n currentUser!: DtoCurrentUser;\r\n\r\n @Inject('validator')\r\n $validator: any;\r\n\r\n attendeeTicketsCategories: { id: number, category: string, description: string, isCollapsed: boolean, ticketQuantities: TicketQuantity[] }[] = [];\r\n attendeeAddons: Addon[] = [];\r\n\r\n created() {\r\n if (this.isAttendeeCentered) {\r\n this.initAttendeeData()\r\n }\r\n }\r\n\r\n get showCeu() {\r\n return this.ticketsAndAddons.hasCeus;\r\n }\r\n\r\n get showQuantityField() {\r\n return !this.isAttendeeCentered;\r\n }\r\n\r\n get showPrice() {\r\n return !this.ticketsAndAddons.allItemsAreFree;\r\n }\r\n\r\n get showTicketSelectionField() {\r\n return this.isAttendeeCentered;\r\n }\r\n\r\n get ticketOptionsTitle() {\r\n return this.isAttendeeCentered ? \"Tickets\" : \"Registration Options\";\r\n }\r\n\r\n get showAddons() {\r\n if (!this.attendeeAddons || this.attendeeAddons.length === 0) {\r\n return false;\r\n }\r\n return !(this.attendeeAddons.every(a => a.product.hasPurchaseWindow && (a.product.isOnlyVisibleInPurchaseWindow && !a.product.isWithinPurchaseWindow)));\r\n }\r\n\r\n get allTicketQuantities() {\r\n let tq: TicketQuantity[] = [];\r\n\r\n this.attendeeTicketsCategories.forEach(function (category) {\r\n tq = tq.concat(category.ticketQuantities);\r\n });\r\n\r\n return tq;\r\n }\r\n\r\n get purchasedTicketIDs() {\r\n return this.allTicketQuantities.filter(tq => tq.quantity > 0).map(tq => tq.ticket.id);\r\n }\r\n\r\n get subTotal() {\r\n return this.ticketSubtotal + this.addonSubtotal;\r\n }\r\n\r\n get subTotalFormated() {\r\n return this.registration.currencyIcon + (this.subTotal).toFixed(2);\r\n }\r\n\r\n get ticketSubtotal() {\r\n var ticketTotal = 0;\r\n var self = this;\r\n\r\n this.allTicketQuantities\r\n .filter(tq => tq.quantity > 0)\r\n .forEach(function (ticketValue) {\r\n var price = self.registration.getTicketPrice(ticketValue.ticket, self.getCurrentAttendeeOrEmptyAttendee());\r\n var quantity = ticketValue.quantity || 0;\r\n ticketTotal += price * quantity;\r\n });\r\n\r\n return ticketTotal;\r\n }\r\n\r\n get addonSubtotal() {\r\n var addonTotal = 0;\r\n this.attendeeAddons.forEach(function (addon) {\r\n addonTotal += addon.addonSubTotal;\r\n });\r\n return addonTotal;\r\n }\r\n\r\n get showCategoryHeader() {\r\n return this.ticketsAndAddons.ticketCategories.length > 1\r\n || this.ticketsAndAddons.ticketCategories.some(x => x.name != \"\");\r\n }\r\n\r\n get hasVisibleTickets() {\r\n return this.ticketsAndAddons.ticketCategories.length > 0;\r\n }\r\n\r\n get getCurrency() {\r\n return \"\";\r\n }\r\n\r\n getCurrentAttendeeOrEmptyAttendee() {\r\n if (this.registration && this.registration.attendees && this.registration.attendees.length > 0) {\r\n return this.registration.attendees[this.attendeeIndex];\r\n }\r\n return createAttendee();\r\n }\r\n\r\n getTicketCeu(ticket: DtoTicket) {\r\n const ceuTypes = ticket.ceuTypes ? ' (' + ticket.ceuTypes + ')' : '';\r\n return (ticket.continuingEducationUnits || 0).toFixed(2) + ceuTypes;\r\n }\r\n\r\n getTicketPriceTierHtml(ticket: DtoTicket) {\r\n var result = \"\";\r\n var currencyIcon = this.registration.currencyIcon;\r\n ticket.ticketPricingTiers.forEach(function (tier) {\r\n var max = tier.maximum || \"No Limit\";\r\n result += \"\";\r\n });\r\n\r\n result += \"
Min QtyMax QtyPrice Per Ticket
\" + tier.minimum + \"\" + max + \"\" + currencyIcon + tier.price.toFixed(2) + \"
\";\r\n return result;\r\n }\r\n\r\n updateAttendeeTicketSelected(ticketQuantity: TicketQuantity) {\r\n ticketQuantity.quantity = ticketQuantity.checked ? 1 : 0;\r\n this.$emit('check-unique-email', this.$validator);\r\n }\r\n\r\n isTicketLocked(ticket: DtoTicket) {\r\n\r\n if (this.isAttendeeCentered) {\r\n\r\n let attendee = this.getCurrentAttendeeOrEmptyAttendee();\r\n\r\n // Ineligible for ticket\r\n if (attendee.ineligibleTickets.includes(ticket.id) || (attendee.isGuest && !ticket.allowGuestAttendee)) {\r\n ticket.restrictionTitle = \"Restricted\";\r\n ticket.restrictionMessage = attendee.name + \" is not eligible to purchase this ticket.\";\r\n return true;\r\n }\r\n\r\n // Already purchased ticket\r\n if (!this.isEmpty(attendee.alreadyPurchasedTickets)) {\r\n if (attendee.alreadyPurchasedTickets.includes(ticket.id)) {\r\n ticket.restrictionTitle = \"Restricted\";\r\n ticket.restrictionMessage = attendee.name + \" has already purchased this ticket.\";\r\n return true;\r\n }\r\n }\r\n\r\n if (ticket.numberLeft <= this.registration.getTicketCount(ticket) && !attendee.hasSelectedTicket(ticket.id)) {\r\n ticket.restrictionTitle = \"Sold Out\";\r\n ticket.restrictionMessage = \"There are no more tickets available for purchase.\";\r\n return true;\r\n }\r\n }\r\n\r\n if (ticket.restrictionMessage) {\r\n if (ticket.unlockable && ticket.dependentTicketTypes && ticket.dependentTicketTypes.length) {\r\n // Ticket is unlocked if at least one of the dependent tickets have been purchased\r\n return !this.purchasedTicketIDs.some(ticketID => ticket.dependentTicketTypes.includes(ticketID));\r\n }\r\n\r\n // Ticket is not unlockable\r\n return true;\r\n }\r\n\r\n // No restrictions\r\n return false;\r\n }\r\n\r\n @Watch(\"attendeeTicketsCategories\", { deep: true })\r\n @Watch(\"attendeeAddons\", { deep: true })\r\n updateTicketCenteredRegistration() {\r\n if (this.isAttendeeCentered) {\r\n return;\r\n }\r\n\r\n var self = this;\r\n var existingAttendees = self.registration.attendees;\r\n self.registration.attendees = [];\r\n\r\n\r\n this.allTicketQuantities.forEach(function (ticketQuantity) {\r\n if (!self.isTicketLocked(ticketQuantity.ticket)) {\r\n ticketQuantity.unlockTicket();\r\n\r\n var existingAttendeesForTicket = existingAttendees.filter(attendee => attendee.hasSelectedTicket(ticketQuantity.ticket.id));\r\n\r\n for (var i = 0; i < ticketQuantity.quantity * ticketQuantity.ticket.seatsPerTicket; i++) {\r\n var attendee = existingAttendeesForTicket[i] || createAttendee({ selectedTickets: [ticketQuantity.ticket] });\r\n var attendeeTicket = attendee.selectedTickets[0];\r\n\r\n // We need to set price for donations manually\r\n if (attendeeTicket.ticketType == TicketType.Donation) {\r\n attendeeTicket.price = ticketQuantity.ticket.price;\r\n }\r\n self.registration.attendees.push(attendee);\r\n }\r\n }\r\n else {\r\n ticketQuantity.lockTicket();\r\n }\r\n });\r\n\r\n this.registration.selectedAddons = this.attendeeAddons\r\n .filter(pq => pq.quantity.quantity > 0)\r\n .map(pq => pq.quantity);\r\n }\r\n\r\n @Watch(\"attendeeTicketsCategories\", { deep: true })\r\n @Watch(\"attendeeAddons\", { deep: true })\r\n updateAttendeeCenteredRegistration() {\r\n if (!this.isAttendeeCentered) {\r\n return;\r\n }\r\n\r\n var self = this;\r\n var attendee = this.getCurrentAttendeeOrEmptyAttendee();\r\n\r\n attendee.selectedTickets = [];\r\n\r\n this.allTicketQuantities.forEach(function (ticketQuantity) {\r\n if (!self.isTicketLocked(ticketQuantity.ticket)) {\r\n ticketQuantity.unlockTicket();\r\n\r\n if (ticketQuantity.quantity > 0) {\r\n attendee.selectedTickets.push(new Ticket(ticketQuantity.ticket));\r\n }\r\n }\r\n else {\r\n ticketQuantity.lockTicket();\r\n }\r\n });\r\n\r\n attendee.selectedAddons = this.attendeeAddons\r\n .filter(pq => pq.quantity.quantity > 0)\r\n .map(pq => pq.quantity);\r\n }\r\n\r\n getSeatsRemaining(ticketQuantity: TicketQuantity) {\r\n // Ticket centered events never have partially filled tables\r\n if (!this.isAttendeeCentered) {\r\n return ticketQuantity.ticket.seatsPerTicket;\r\n }\r\n\r\n var quantity = this.registration.getAttendeeCount(ticketQuantity.ticket.id);\r\n var seatsAvailable = ticketQuantity.ticket.seatsPerTicket;\r\n var seatsTaken = quantity % seatsAvailable;\r\n var seatsRemaining = seatsAvailable - seatsTaken;\r\n\r\n if (seatsRemaining == seatsAvailable) {\r\n seatsRemaining = ticketQuantity.checked ? 0 : seatsAvailable;\r\n }\r\n\r\n return seatsRemaining;\r\n }\r\n\r\n @Watch(\"attendeeIndex\", { immediate: true })\r\n @Watch(\"isLoading\", { immediate: true })\r\n initAttendeeData() {\r\n var self = this;\r\n this.attendeeTicketsCategories = [];\r\n this.attendeeAddons = [];\r\n var currentAttendee = this.getCurrentAttendeeOrEmptyAttendee();\r\n\r\n this.ticketsAndAddons.ticketCategories.forEach(category => {\r\n self.attendeeTicketsCategories.push({\r\n id: category.id,\r\n category: category.name,\r\n description: category.description,\r\n isCollapsed: category.collapseByDefault,\r\n ticketQuantities: category.tickets.map(function (dtoTicket: DtoTicket) {\r\n\r\n // Attendee Centric\r\n if (self.isAttendeeCentered) {\r\n var foundTicket = currentAttendee.selectedTickets.find(x => x.id == dtoTicket.id);\r\n if (foundTicket) {\r\n return new TicketQuantity({ ticket: foundTicket, quantity: 1, checked: true, locked: false });\r\n }\r\n\r\n // We need to delink the ticket when doing this mapping in case its a donation.\r\n return new TicketQuantity({ ticket: new Ticket(dtoTicket), quantity: 0, checked: false, locked: false });\r\n }\r\n\r\n var ticket = new Ticket(dtoTicket);\r\n\r\n if (dtoTicket.ticketType == TicketType.Donation) {\r\n // We need to find any attendee with this ticket because all of them will have the same amount\r\n var attendee = self.registration.attendees.find(attendee => attendee.hasSelectedTicket(ticket.id));\r\n if (attendee) {\r\n // Find donation ticket price\r\n var donationTicket = attendee.selectedTickets.find(attendeeTicket => attendeeTicket.id == ticket.id);\r\n if (donationTicket) {\r\n ticket.price = donationTicket.price;\r\n }\r\n }\r\n }\r\n\r\n // Ticket Centric\r\n var quantity = self.registration.getTicketCount(dtoTicket);\r\n return new TicketQuantity({ ticket: ticket, quantity: quantity, checked: false, locked: false });\r\n })\r\n });\r\n });\r\n\r\n // If there is only 1 ticket not locked then auto select it. \r\n if (this.allTicketQuantities.filter(x => !this.isTicketLocked(x.ticket)).length == 1) {\r\n self.attendeeTicketsCategories\r\n .flatMap(category => category.ticketQuantities)\r\n .filter(x => !this.isTicketLocked(x.ticket))\r\n .forEach(ticket => {\r\n ticket.quantity = 1;\r\n ticket.checked = true\r\n });\r\n }\r\n\r\n // Populate attendeeAddons - it gets mapped to registration.selectedAddons (ticket based) or registration.attendees[this.attendeeIndex].selectedAddons (attendee based) \r\n if (this.ticketsAndAddons.products && this.ticketsAndAddons.products.length > 0) {\r\n\r\n // If the user navigates back to this page, then this attendee may already have some selections\r\n self.attendeeAddons = this.ticketsAndAddons.products.map(function (product) {\r\n var existing = self.isAttendeeCentered ?\r\n currentAttendee.selectedAddons.find(pq => pq.id == product.id) : // attendee based - addons live on the attendee\r\n self.registration.selectedAddons.find(pq => pq.id == product.id); // ticket based - addons live on the registration\r\n\r\n return createAddon({\r\n product: product,\r\n quantity: existing ? createProductQuantity(existing) : createProductQuantityFromProduct(product, self.currentUser.isMember)\r\n }, self.currentUser.isMember);\r\n });\r\n }\r\n }\r\n\r\n generateCategoryCollapseId(id: number) {\r\n if (!id) {\r\n return \"nonecat\";\r\n }\r\n return id + \"-category-container\";\r\n }\r\n\r\n private isEmpty(array: any[]) {\r\n return !array || !array.length;\r\n }\r\n\r\n // Manually adjust the collapse value timeout to avoid conflict with UI framework handling collapse state\r\n private handleHeaderToggleAccessibility(category: { isCollapsed: boolean }): void {\r\n setTimeout(() => {\r\n category.isCollapsed = !category.isCollapsed;\r\n }, 200);\r\n }\r\n}","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!./EventRegistrationTicketsVue.ts?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!./EventRegistrationTicketsVue.ts?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./EventRegistrationTickets.vue?vue&type=template&id=c59080a8&\"\nimport script from \"./EventRegistrationTicketsVue.ts?vue&type=script&lang=ts&\"\nexport * from \"./EventRegistrationTicketsVue.ts?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"c-registration__attendee-multiselect\"},[_c('label',{staticClass:\"sr-only\",attrs:{\"for\":\"attendeeSelector\"}},[_vm._v(\"Search for Attendees\")]),_c('multiselect',{directives:[{name:\"validate\",rawName:\"v-validate\",value:(_vm.required ? 'required' : ''),expression:\"required ? 'required' : ''\"},{name:\"selectOnTab\",rawName:\"v-selectOnTab\"}],attrs:{\"options\":_vm.options,\"option-height\":72,\"name\":\"attendeeSelector\",\"track-by\":\"id\",\"label\":\"text\",\"loading\":_vm.loading,\"limit\":10,\"data-vv-scope\":_vm.validationScope,\"data-vv-as\":'Attendee Name',\"taggable\":_vm.allowGuests,\"tag-placeholder\":'Press enter to add an Attendee',\"placeholder\":'Begin typing the name of your Attendee',\"show-no-results\":true,\"clear-on-select\":_vm.attendeeBased,\"disabled\":_vm.disabled,\"data-test\":\"attendee-selector\",\"aria-multiselectable\":\"true\",\"aria-label\":\"Attendee name required field\",\"role\":\"listbox\",\"id\":\"attendeeSelector\",\"aria-live\":\"polite\"},on:{\"search-change\":_vm.debouncedOnSearch,\"input\":_vm.onAttendeeUpdated,\"tag\":_vm.onAttendeeAdded,\"close\":_vm.selectHighlightedOption},scopedSlots:_vm._u([{key:\"option\",fn:function(props){return [_c('div',{staticClass:\"c-registration__attendee\",attrs:{\"tabindex\":\"0\"}},[(props.option.id)?_c('img',{staticClass:\"c-registration__attendee-image\",attrs:{\"src\":props.option.image,\"alt\":props.option.text,\"tabindex\":\"0\"}}):_vm._e(),(!props.option.id)?_c('div',{staticClass:\"c-registration__attendee-initial\",attrs:{\"tabindex\":\"0\",\"aria-hidden\":\"true\"},domProps:{\"innerHTML\":_vm._s(_vm.getCustomerInitial(props.option.text, props.option.label))}}):_vm._e(),_c('div',{staticClass:\"c-registration__attendee-info\"},[_c('h3',{staticClass:\"c-registration__attendee-name\",attrs:{\"tabindex\":\"0\"}},[_vm._v(\"\\n \"+_vm._s(props.option.text || props.option.label)+\" \"+_vm._s(!props.option.id ? '' : props.option.hasAttended ? '(Already Attending)' : !props.option.isEligible ? '(Not Eligible)' : '')+\"\\n \")]),_c('p',{staticClass:\"c-registration__attendee-email\",attrs:{\"tabindex\":\"0\"}},[_vm._v(\"\\n \"+_vm._s(props.option.subText)+\"\\n \")])])])]}}]),model:{value:(_vm.selectedAttendee),callback:function ($$v) {_vm.selectedAttendee=$$v},expression:\"selectedAttendee\"}},[_c('template',{slot:\"noOptions\"},[_c('span',[_vm._v(\"No members found\")])])],2),_c('FieldValidationErrors',{attrs:{\"errorList\":_vm.errors.collect('attendeeSelector', _vm.validationScope)}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { DirectiveOptions } from 'vue';\r\n\r\nconst selectOnTab: DirectiveOptions = {\r\n\r\n inserted: function (el) {\r\n \r\n // Workaround to force 'tab' keypress to behave like 'enter'\r\n // We have to hunt for the actual input element and listen for key presses on that\r\n $(el).find(\".multiselect__input\").keydown(function (event) {\r\n if (event.which === 9 && $(event.target).val()) { // if event is tab and some text was entered\r\n var e = $.Event('click'); // create click event\r\n $(event.target).parent().siblings().find('.multiselect__option--highlight:not(.multiselect__option--selected)').trigger(e); // trigger click event to select the focused option\r\n event.preventDefault(); // prevent tab default action, this keeps the cursor in the input\r\n }\r\n });\r\n\r\n }\r\n};\r\n\r\nexport default selectOnTab;","import { Component, Vue, Prop, Inject } from 'vue-property-decorator';\r\nimport { Multiselect } from 'vue-multiselect';\r\nimport { SelectListItemWithSubtext, createSelectListItemWithSubtext, createSelectListItemWithSubtextFromAttendee, AttendeeSelectListItem, DtoAddress } from '@/common/types/AllTypesExports';\r\nimport FieldValidationErrors from '../../components/errors/FieldValidationErrors.vue';\r\nimport { Attendee, createAttendeeFromSelectListItemWithSubText } from '../../common/types/event/DtoAttendee';\r\nimport selectOnTab from '@/components/directives/selectOnTab-directive';\r\n\r\n@Component({\r\n name: 'AttendeeSelector',\r\n components: {\r\n Multiselect,\r\n FieldValidationErrors\r\n },\r\n directives: {\r\n selectOnTab\r\n }\r\n})\r\nexport default class AttendeeSelector extends Vue {\r\n\r\n // These are all attendees that may appear in the dropdown\r\n @Prop({ required: false, default: () => [] })\r\n eligibleAttendees!: Attendee[];\r\n\r\n // These are the attendees selected in the first step of attendee centric events\r\n @Prop({ required: false, default: () => [] })\r\n selectedAttendees!: Attendee[];\r\n\r\n // This is the current attendee in ticket based events - why do we need access to them?\r\n @Prop({ required: false, default: () => { } })\r\n currentAttendee!: Attendee;\r\n\r\n @Prop({ required: false, default: () => null })\r\n attendeeBased!: boolean;\r\n\r\n @Prop({ required: false, default: false })\r\n allowGuests!: boolean;\r\n\r\n @Prop({ required: false, default: false })\r\n required!: boolean;\r\n\r\n @Prop({ required: false, default: () => null })\r\n validationScope!: string;\r\n\r\n @Prop({ required: false, default: () => false })\r\n disabled!: boolean;\r\n\r\n // Internal\r\n selectedAttendee: SelectListItemWithSubtext | null = null;\r\n loading = false;\r\n\r\n @Inject('validator')\r\n $validator: any;\r\n\r\n mounted() {\r\n var self = this;\r\n self.initSelectedAttendee();\r\n\r\n self.$root.$on('reset:attendee', (isClear: boolean) => {\r\n if (isClear) {\r\n this.selectedAttendee = null;\r\n } else {\r\n this.selectedAttendee = createSelectListItemWithSubtextFromAttendee(this.currentAttendee);\r\n }\r\n });\r\n }\r\n\r\n get options() {\r\n var ticketID = !this.attendeeBased && this.currentAttendee && this.currentAttendee.selectedTickets.length ? this.currentAttendee.selectedTickets[0].id : null;\r\n var result = this.eligibleAttendees\r\n .filter(option => {\r\n // Exclude attendees from the dropdown that are already selected (in first step of attendee centric)\r\n return !this.attendeeBased || !this.selectedAttendees.some(selectedAttendee => selectedAttendee.matches(option));\r\n })\r\n .map(option => {\r\n // Map attendees to a model that our Multiselector understands\r\n return new AttendeeSelectListItem(option, ticketID);\r\n });\r\n\r\n // Prepend the list with the selected attendee if it's a guest\r\n if (this.selectedAttendee && !this.selectedAttendee.id) {\r\n result.unshift(new AttendeeSelectListItem(createAttendeeFromSelectListItemWithSubText(this.selectedAttendee), ticketID));\r\n }\r\n \r\n return result;\r\n }\r\n\r\n onAttendeeUpdated(newValue: SelectListItemWithSubtext | null) {\r\n\r\n if (this.attendeeBased) {\r\n\r\n // Attendee selected\r\n if (newValue) {\r\n this.selectedAttendee = null; // Clear the dropdown after selection - the selected member's badge will appear above the dropdown\r\n }\r\n }\r\n else {\r\n\r\n if (newValue != null) {\r\n\r\n // An attendee has just been selected and we're on the attendee form - populate the attendee's information\r\n this.currentAttendee.customerId = newValue.id;\r\n this.currentAttendee.name = newValue.text;\r\n this.currentAttendee.email = newValue.subText?.includes(',') ? newValue.subText?.split(',')[0] : newValue.subText;\r\n this.currentAttendee.image = newValue.image;\r\n\r\n // If an existing customer was selected, then fetch their details so we can populate their information on the attendee form\r\n var eligibleAttendee = newValue.id ? this.eligibleAttendees.find(a => a.customerId == this.currentAttendee.customerId) : null;\r\n if (eligibleAttendee) {\r\n\r\n // Populate member fields\r\n this.currentAttendee.companyName = eligibleAttendee.companyName;\r\n this.currentAttendee.jobTitle = eligibleAttendee.jobTitle;\r\n this.currentAttendee.phone = eligibleAttendee.phone;\r\n this.currentAttendee.mobilePhone = eligibleAttendee.mobilePhone;\r\n this.currentAttendee.credentials = eligibleAttendee.credentials;\r\n Object.assign(this.currentAttendee.shippingAddress, eligibleAttendee.shippingAddress);\r\n this.currentAttendee.customerCustomFieldValues = { ...eligibleAttendee.customerCustomFieldValues };\r\n\r\n // Populate custom fields\r\n for (const customFieldID in this.currentAttendee.attendeeCustomFieldValues) {\r\n const customerCustomField = this.currentAttendee.customerCustomFieldValues[customFieldID];\r\n this.currentAttendee.attendeeCustomFieldValues[customFieldID].value = customerCustomField?.value;\r\n }\r\n }\r\n else {\r\n this.selectedAttendee = newValue;\r\n }\r\n }\r\n else {\r\n // Attendee removed\r\n this.currentAttendee.customerId = null;\r\n this.currentAttendee.name = \"\";\r\n this.currentAttendee.email = \"\";\r\n this.currentAttendee.image = \"\";\r\n this.currentAttendee.companyName = \"\";\r\n this.currentAttendee.jobTitle = \"\";\r\n this.currentAttendee.phone = \"\";\r\n this.currentAttendee.mobilePhone = \"\";\r\n this.currentAttendee.credentials = \"\";\r\n this.currentAttendee.shippingAddress = {\r\n id: 0,\r\n address1: null,\r\n address2: null,\r\n city: null,\r\n zipCode: null,\r\n stateProvince: null,\r\n country: null\r\n };\r\n\r\n for (const key in this.currentAttendee.attendeeCustomFieldValues) {\r\n this.currentAttendee.attendeeCustomFieldValues[key].value = \"\";\r\n }\r\n\r\n this.currentAttendee.customerCustomFieldValues = {};\r\n\r\n this.selectedAttendee = null;\r\n }\r\n }\r\n\r\n this.$emit(\"update:attendee\", newValue);\r\n }\r\n\r\n selectHighlightedOption() {\r\n var textEntered = $(this.$el).find(\".multiselect__input\").val();\r\n //@ts-ignore\r\n var isEnterEvent = event.which === 13;\r\n //@ts-ignore\r\n var isOptionSelectionEvent = event.currentTarget.className === 'multiselect__option multiselect__option--highlight';\r\n if (textEntered && !isEnterEvent && !isOptionSelectionEvent) {\r\n $(this.$el).find('.multiselect__option--highlight:not(.multiselect__option--selected)').trigger($.Event('click'));\r\n }\r\n }\r\n\r\n onAttendeeAdded(attendeeName: string) {\r\n var addedAttendee = createSelectListItemWithSubtext({ text: attendeeName, image: '/img/missing-individual.jpg' });\r\n this.onAttendeeUpdated(addedAttendee);\r\n }\r\n\r\n initSelectedAttendee() {\r\n if (!this.attendeeBased && this.currentAttendee && this.currentAttendee.name && !this.currentAttendee.isTbd) {\r\n this.selectedAttendee = createSelectListItemWithSubtextFromAttendee(this.currentAttendee);\r\n }\r\n }\r\n\r\n getCustomerInitial(customerName: string | undefined, guestName: string | undefined) {\r\n if (customerName && customerName.length > 0) {\r\n return customerName.charAt(0);\r\n }\r\n if (guestName && guestName.length > 0) {\r\n return guestName.charAt(0);\r\n }\r\n\r\n return '';\r\n }\r\n}","export enum TicketMemberField {\r\n\tName = 0,\r\n\tCompany = 1,\r\n\tEmail = 2,\r\n\tPhone = 3,\r\n\tJobTitle = 4,\r\n\tMobilePhone = 5,\r\n\tShippingAddress = 6,\r\n\tCredentials = 7\r\n}","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!./AttendeeSelectorVue.ts?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!./AttendeeSelectorVue.ts?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AttendeeSelector.vue?vue&type=template&id=373b89f3&\"\nimport script from \"./AttendeeSelectorVue.ts?vue&type=script&lang=ts&\"\nexport * from \"./AttendeeSelectorVue.ts?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":'attendee-form-' + _vm.attendee.uniqueId}},[(_vm.showHeader)?_c('div',{staticClass:\"c-registration__wrapper-more-info\"},[_c('h3',{staticClass:\"c-registration__sub-title c-registration__sub-title--centered\"},[_vm._v(\"\\n Let’s get some additional information for \"+_vm._s(_vm.attendee.name)+\"...\\n \")])]):_vm._e(),_c('div',{staticClass:\"long-form c-registration__attendee-form-wrapper\",attrs:{\"data-test\":\"attendee-ticket-form\"}},[_vm._l((_vm.visibleFields),function(field){return [(_vm.isFieldVisible(field, 'Name'))?[(!_vm.allowGuest)?_c('InfoAlert',{attrs:{\"message\":_vm.guestNotAllowedMessage}}):_vm._e(),_c('div',{staticClass:\"c-registration__attendee-label-wrapper\"},[_c('label',{class:{ 'control-label': true, required: field.isRequired },attrs:{\"for\":\"attendeeSelector\"}},[_vm._v(\"Attendee Name\")]),(_vm.allowTbd)?_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.isTbdChecked),expression:\"isTbdChecked\"}],attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.isTbdChecked)?_vm._i(_vm.isTbdChecked,null)>-1:(_vm.isTbdChecked)},on:{\"change\":[function($event){var $$a=_vm.isTbdChecked,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.isTbdChecked=$$a.concat([$$v]))}else{$$i>-1&&(_vm.isTbdChecked=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.isTbdChecked=$$c}},function($event){return _vm.tbdCheckChanged()}]}}),_vm._v(\" I'm not sure who is coming yet\\n \")]):_vm._e()]),_c('AttendeeSelector',{attrs:{\"eligibleAttendees\":_vm.eligibleAttendees,\"currentAttendee\":_vm.attendee,\"attendeeBased\":_vm.event.attendeeBased,\"allowGuests\":_vm.allowGuest,\"required\":field.isRequired,\"validationScope\":_vm.ticketNumber,\"disabled\":_vm.isTbd},on:{\"update:attendee\":_vm.onAttendeeUpdated}})]:_vm._e(),(_vm.isFieldVisible(field,'Company'))?_c('div',{staticClass:\"form-group\"},[_c('label',{class:{ 'control-label': true, required: field.isRequired },attrs:{\"for\":\"display_name\"}},[_vm._v(\" \"+_vm._s(_vm.parentLabel)+\" \")]),_c('span',{staticClass:\"restrictions\",domProps:{\"innerHTML\":_vm._s(_vm.parentMemberInstructions)}}),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.attendee.companyName),expression:\"attendee.companyName\"},{name:\"validate\",rawName:\"v-validate\",value:(_vm.validateRequired(field.isRequired)),expression:\"validateRequired(field.isRequired)\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"company_name\",\"id\":\"company_name\",\"maxlength\":100,\"data-vv-as\":_vm.parentLabel,\"disabled\":_vm.isTbd,\"data-vv-scope\":_vm.ticketNumber},domProps:{\"value\":(_vm.attendee.companyName)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.attendee, \"companyName\", $event.target.value)}}}),_c('CharacterCount',{attrs:{\"maxCount\":100,\"text\":_vm.attendee.companyName}}),_c('FieldValidationErrors',{attrs:{\"errorList\":_vm.errors.collect('company_name', _vm.ticketNumber)}})],1):_vm._e(),(_vm.isFieldVisible(field,'Email'))?_c('div',{staticClass:\"form-group\"},[_c('label',{class:{ 'control-label': true, required: field.isRequired },attrs:{\"for\":\"email\"}},[_vm._v(\"Email\")]),_c('span',{staticClass:\"restrictions\",domProps:{\"innerHTML\":_vm._s(_vm.professionalEmailInstructions)}}),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.attendee.email),expression:\"attendee.email\"},{name:\"validate\",rawName:\"v-validate\",value:(_vm.validateEmailRequired(field.isRequired)),expression:\"validateEmailRequired(field.isRequired)\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"email\",\"id\":\"email\",\"maxlength\":100,\"data-vv-as\":\"Email\",\"data-vv-scope\":_vm.ticketNumber,\"disabled\":_vm.isTbd},domProps:{\"value\":(_vm.attendee.email)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.$set(_vm.attendee, \"email\", $event.target.value)},function($event){return _vm.onEmailChange($event.target.value)}],\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"space\",32,$event.key,[\" \",\"Spacebar\"])){ return null; }$event.preventDefault();}}}),_c('CharacterCount',{attrs:{\"maxCount\":100,\"text\":_vm.attendee.email}}),_c('FieldValidationErrors',{attrs:{\"errorList\":_vm.errors.collect('email', _vm.ticketNumber)}})],1):_vm._e(),(_vm.isFieldVisible(field,'Phone'))?_c('div',{staticClass:\"form-group\"},[_c('PhoneInput',{attrs:{\"id\":'phone',\"isRequired\":field.isRequired,\"phoneLabel\":'Phone',\"includeParens\":true,\"allowExtensions\":true,\"delimiterText\":'-',\"validatorScope\":_vm.ticketNumber,\"disabled\":_vm.isTbd},model:{value:(_vm.attendee.phone),callback:function ($$v) {_vm.$set(_vm.attendee, \"phone\", $$v)},expression:\"attendee.phone\"}}),_c('FieldValidationErrors',{attrs:{\"errorList\":_vm.errors.collect('phone', _vm.ticketNumber)}})],1):_vm._e(),(_vm.isFieldVisible(field,'JobTitle'))?_c('div',{staticClass:\"form-group\"},[_c('label',{class:{ 'control-label': true, required: field.isRequired },attrs:{\"for\":\"email\"}},[_vm._v(\"Job Title\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.attendee.jobTitle),expression:\"attendee.jobTitle\"},{name:\"validate\",rawName:\"v-validate\",value:(_vm.validateRequired(field.isRequired)),expression:\"validateRequired(field.isRequired)\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"jobTitle\",\"id\":\"jobTitle\",\"maxlength\":250,\"data-vv-as\":\"Job Title\",\"data-vv-scope\":_vm.ticketNumber,\"disabled\":_vm.isTbd},domProps:{\"value\":(_vm.attendee.jobTitle)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.attendee, \"jobTitle\", $event.target.value)}}}),_c('CharacterCount',{attrs:{\"maxCount\":250,\"text\":_vm.attendee.jobTitle}}),_c('FieldValidationErrors',{attrs:{\"errorList\":_vm.errors.collect('jobTitle', _vm.ticketNumber)}})],1):_vm._e(),(_vm.isFieldVisible(field,'MobilePhone'))?_c('div',{staticClass:\"form-group\"},[_c('PhoneInput',{attrs:{\"id\":'mobilephone',\"isRequired\":field.isRequired,\"phoneLabel\":'Mobile Phone',\"includeParens\":true,\"allowExtensions\":false,\"delimiterText\":'-',\"validatorScope\":_vm.ticketNumber,\"disabled\":_vm.isTbd},model:{value:(_vm.attendee.mobilePhone),callback:function ($$v) {_vm.$set(_vm.attendee, \"mobilePhone\", $$v)},expression:\"attendee.mobilePhone\"}}),_c('FieldValidationErrors',{attrs:{\"errorList\":_vm.errors.collect('mobilephone', _vm.ticketNumber)}})],1):_vm._e(),(_vm.isFieldVisible(field,'ShippingAddress'))?_c('div',{staticClass:\"form-group\"},[_c('AddressInfo',{attrs:{\"address\":_vm.attendee.shippingAddress,\"id\":_vm.shippingAddress,\"enableAddressSettings\":true,\"parentAddress\":false,\"useParent\":false,\"required\":field.isRequired,\"label\":'Shipping Address',\"validationScope\":_vm.ticketNumber,\"disabled\":_vm.isTbd,\"instructions\":_vm.shippingAddressInstructions}})],1):_vm._e(),(_vm.isFieldVisible(field,'Credentials'))?_c('div',{staticClass:\"form-group\"},[_c('Credentials',{attrs:{\"required\":field.isRequired,\"validatorScope\":_vm.ticketNumber,\"disabled\":_vm.isTbd},model:{value:(_vm.attendee.credentials),callback:function ($$v) {_vm.$set(_vm.attendee, \"credentials\", $$v)},expression:\"attendee.credentials\"}})],1):_vm._e(),(_vm.isCustomFieldVisible(field,field.customField))?_c('div',{staticClass:\"form-group\"},[_c('CustomFieldEditor',{attrs:{\"field-config\":field.customField,\"value\":_vm.getCustomFieldValue(field.customField.id),\"validatorScope\":_vm.ticketNumber,\"disabled\":_vm.isTbd,\"hideDisabledMessage\":true,\"isRequired\":field.isRequired},on:{\"input\":function($event){_vm.attendee.attendeeCustomFieldValues[field.customField.id.toString()] = $event}}})],1):_vm._e()]})],2),(_vm.showMemberCompassLink)?_c('div',{staticClass:\"row\"},[_vm._m(0)]):_vm._e()])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"col-xs-12\"},[_c('div',{staticClass:\"c-alert alert alert-info\"},[_c('span',{staticClass:\"fas fa-2x fa-info-circle c-alert__icon\"}),_c('span',[_vm._v(\"If you'd like to update these values on your member profile, please visit your \"),_c('a',{attrs:{\"href\":\"/member-compass#profile\",\"target\":\"_blank\"}},[_c('strong',[_vm._v(\"Member Compass\")])]),_vm._v(\".\")])])])}]\n\nexport { render, staticRenderFns }","import { TicketMemberField } from './TicketMemberField';\r\nimport { CustomField } from '../AllTypesExports';\r\n\r\nexport interface DtoTicketFieldItem {\r\n memberField: TicketMemberField;\r\n customField: CustomField | null;\r\n isRequired: boolean;\r\n}\r\n\r\nexport function createDtoTicketFieldItem(dtoTicketFieldItem?: DtoTicketFieldItem | any) {\r\n let obj = {\r\n memberField: TicketMemberField.Name,\r\n customField: null,\r\n isRequired: false\r\n };\r\n\r\n if (dtoTicketFieldItem) {\r\n Object.assign(obj, dtoTicketFieldItem);\r\n }\r\n\r\n return obj;\r\n}","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"alert alert-info\",attrs:{\"role\":\"alert\",\"aria-live\":\"polite\"}},[_c('span',{staticClass:\"fas fa-2x fa-info-circle c-alert__icon\"}),_c('div',{staticClass:\"c-alert__content\",domProps:{\"innerHTML\":_vm._s(_vm.message)}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { Component, Vue, Prop } from 'vue-property-decorator';\r\n\r\n@Component({\r\n name: 'InfoAlert'\r\n})\r\nexport default class InfoAlert extends Vue {\r\n @Prop({ required: true })\r\n message!: string;\r\n}","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!./InfoAlertVue.ts?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!./InfoAlertVue.ts?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./InfoAlert.vue?vue&type=template&id=5a05eb9a&\"\nimport script from \"./InfoAlertVue.ts?vue&type=script&lang=ts&\"\nexport * from \"./InfoAlertVue.ts?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { Component, Vue, Prop, Inject } from 'vue-property-decorator';\r\nimport { Attendee, createAttendeeFromSelectListItemWithSubText, DtoAttendee } from '../../common/types/event/DtoAttendee';\r\nimport { TicketsAndAddons } from '../../common/types/event/DtoTicketsAndAddons';\r\nimport PhoneInput from '../../components/inputs/phone/PhoneInput.vue';\r\nimport CustomFieldEditor from '../../components/custom-field/CustomFieldEditor.vue';\r\nimport { DtoEvent } from '../../common/types/event/DtoEvent';\r\nimport AttendeeSelector from './AttendeeSelector.vue';\r\nimport { AttendeeSelectListItem, createSelectListItemWithSubtextFromAttendee, SelectListItemWithSubtext } from '../../common/types/SelectListItemWithSubtext';\r\nimport { CustomField } from '../../common/types/CustomField/CustomField';\r\nimport { TicketMemberField } from '../../common/types/event/TicketMemberField';\r\nimport AddressInfo from '../membership/AddressInfo.vue';\r\nimport { DtoTicketFieldItem, createDtoTicketFieldItem } from '../../common/types/event/DtoTicketFieldItem';\r\nimport FieldValidationErrors from '@/components/errors/FieldValidationErrors.vue';\r\nimport InfoAlert from '../../components/errors/InfoAlert.vue';\r\nimport { IEventRegistrationGlobals } from '../../pages/event-registration/EventRegistrationGlobals';\r\nimport { DtoCurrentUser } from '../../common/types/user/DtoCurrentUser';\r\nimport Credentials from '../../components/membership/Credentials.vue';\r\nimport { CustomFieldValue } from '../../common/types/CustomField/CustomFieldValue';\r\nimport { DtoEventRegistration } from '../../common/types/event/DtoEventRegistration';\r\nimport { eventRepo } from '../../common/repositories/EventRepo';\r\n\r\ndeclare let noviNs: IEventRegistrationGlobals;\r\n\r\n@Component({\r\n name: 'AttendeeForm',\r\n components: {\r\n PhoneInput,\r\n CustomFieldEditor,\r\n AttendeeSelector,\r\n AddressInfo,\r\n FieldValidationErrors,\r\n InfoAlert,\r\n Credentials\r\n }\r\n})\r\nexport default class EventAttendeeForm extends Vue {\r\n @Prop({ required: true })\r\n attendee!: Attendee;\r\n\r\n @Prop({ required: false, default: null })\r\n ticketNumber!: Number;\r\n\r\n @Prop({ required: false })\r\n event!: DtoEvent;\r\n\r\n @Prop({ required: true })\r\n registrationModel!: DtoEventRegistration;\r\n\r\n @Prop({ required: true, default: () => [] })\r\n eligibleAttendees!: Attendee[];\r\n\r\n @Prop({ required: false })\r\n guestNotAllowedMessage!: string;\r\n\r\n @Prop({ required: false, default: () => '' })\r\n shippingAddressInstructions!: string;\r\n\r\n @Prop({ required: false, default: () => '' })\r\n parentMemberInstructions!: string;\r\n\r\n @Prop({ required: false, default: () => '' })\r\n professionalEmailInstructions!: string;\r\n\r\n @Inject('ticketsAndAddons')\r\n ticketsAndAddons!: TicketsAndAddons;\r\n\r\n @Inject('validator')\r\n $validator: any;\r\n\r\n @Inject('user')\r\n currentUser!: DtoCurrentUser;\r\n\r\n isTbdChecked: boolean = this.attendee.isTbd;\r\n\r\n parentLabel: string = noviNs.parentLabel;\r\n\r\n get visibleFields() {\r\n let fields: DtoTicketFieldItem[] = [];\r\n var self = this;\r\n\r\n this.attendee.selectedTickets\r\n .sort((a, b) => a.categoryDisplayOrder - b.categoryDisplayOrder || a.displayOrder - b.displayOrder)\r\n .forEach((ticket) => {\r\n ticket.ticketFieldConfig.forEach((fieldItem) => {\r\n var existingField = fields.find(x => fieldItem.customField != null\r\n ? x.customField != null && x.customField.id == fieldItem.customField.id\r\n : x.memberField == fieldItem.memberField);\r\n\r\n // Enforce 'Requires Unique Emails' setting if applied\r\n if (fieldItem.memberField == TicketMemberField.Email && this.event.attendeeBased && this.event.requireUniqueEmailPerAttendee) {\r\n fieldItem.isRequired = true;\r\n }\r\n\r\n // Check if we are dealing with the name field on an attendee-centered ticket.\r\n var isAttendeeDefaultNameField = this.event.attendeeBased\r\n && fieldItem.memberField == TicketMemberField.Name\r\n && fieldItem.customField == null;\r\n\r\n if (existingField && !isAttendeeDefaultNameField) {\r\n existingField.isRequired = existingField.isRequired || fieldItem.isRequired;\r\n } else if (!isAttendeeDefaultNameField) {\r\n fields.push(createDtoTicketFieldItem(fieldItem));\r\n }\r\n });\r\n });\r\n\r\n this.attendee.selectedAddons\r\n .filter(a => a.isDonation == false || a.price > 0) // exclude donations with 0 price\r\n .forEach(function (addon) {\r\n var product = self.ticketsAndAddons.products.find(p => p.id === addon.id);\r\n if (product) {\r\n product.customFields.forEach(function (customField) {\r\n var existingField = fields.find(field => field.customField != null && field.customField.id == customField.id);\r\n if (existingField) {\r\n existingField.isRequired = existingField.isRequired || customField.requiredFrontend;\r\n }\r\n else {\r\n fields.push(createDtoTicketFieldItem({ customField: customField, isRequired: customField.requiredFrontend }));\r\n }\r\n });\r\n }\r\n });\r\n\r\n return fields;\r\n }\r\n\r\n get allowGuest() {\r\n return this.attendee && this.attendee.selectedTickets && this.attendee.selectedTickets.length && this.attendee.selectedTickets[0].allowGuestAttendee;\r\n }\r\n\r\n get allowTbd() {\r\n return this.attendee && this.attendee.selectedTickets[0].ticketFieldConfig.some(x => x.memberField == TicketMemberField.Name && x.customField == null && x.isRequired == false);\r\n }\r\n\r\n get showHeader() {\r\n return this.event.attendeeBased && this.visibleFields.length > 0;\r\n }\r\n\r\n get showMemberCompassLink() {\r\n return this.currentUser && this.currentUser.customerID && this.currentUser.customerID > 0 && this.currentUser.customerID == this.attendee.customerId && this.visibleFields.length > 0;\r\n }\r\n\r\n get isTbd() {\r\n return this.allowTbd && ((this.attendee.name == noviNs.tbdEventName && this.event.attendeeBased) || (this.isTbdChecked && !this.event.attendeeBased));\r\n }\r\n\r\n isFieldVisible(field: DtoTicketFieldItem, fieldName: string) {\r\n if (field.customField != null) {\r\n return false;\r\n }\r\n\r\n var fieldVal = (TicketMemberField)[fieldName];\r\n\r\n // never show name field on attendee based \r\n if (fieldVal == TicketMemberField.Name && this.event.attendeeBased) {\r\n return false;\r\n }\r\n\r\n return field.memberField == fieldVal;\r\n }\r\n\r\n isCustomFieldVisible(field: DtoTicketFieldItem, customField: CustomField) {\r\n if (field.customField == null || customField == null) {\r\n return false;\r\n }\r\n\r\n return field.customField.id == customField.id;\r\n }\r\n\r\n getCustomFieldValue(fieldId: number) {\r\n let checkValue = this.attendee.attendeeCustomFieldValues[fieldId.toString()] ||\r\n this.attendee.customerCustomFieldValues[fieldId.toString()];\r\n if (typeof (checkValue) == 'undefined') {\r\n let newFieldValue = {};\r\n newFieldValue.customFieldId = fieldId;\r\n this.attendee.attendeeCustomFieldValues[fieldId.toString()] = newFieldValue;\r\n return newFieldValue;\r\n }\r\n return checkValue;\r\n }\r\n\r\n onAttendeeUpdated(attendee: SelectListItemWithSubtext) {\r\n this.$emit(\"update:attendee\", attendee);\r\n }\r\n\r\n validateRequired(isRequired: boolean) {\r\n return isRequired ? \"required\" : \"\";\r\n }\r\n\r\n validateEmailRequired(isRequired: boolean) {\r\n const rules: any = { email: true };\r\n\r\n if (isRequired || this.event.requireUniqueEmailPerAttendee) {\r\n rules.required = true;\r\n }\r\n\r\n // Add the 'uniqueEmail' rule if the event setting is enabled\r\n if (this.event.requireUniqueEmailPerAttendee) {\r\n rules.uniqueEmail = { attendees: this.registrationModel.attendees };\r\n }\r\n\r\n return rules;\r\n }\r\n\r\n tbdCheckChanged() {\r\n if (this.isTbd) {\r\n this.attendee.setAsTbd();\r\n this.$validator.reset();\r\n this.$root.$emit('reset:attendee', false);\r\n } else {\r\n this.attendee.name = \"\";\r\n this.$root.$emit('reset:attendee', true);\r\n }\r\n }\r\n\r\n private onEmailChange(newEmail: string): void {\r\n this.$emit('update-email-to-validate', newEmail);\r\n this.$emit('check-unique-email', this.$validator);\r\n }\r\n}","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!./EventAttendeeFormVue.ts?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!./EventAttendeeFormVue.ts?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./EventAttendeeForm.vue?vue&type=template&id=612fa090&\"\nimport script from \"./EventAttendeeFormVue.ts?vue&type=script&lang=ts&\"\nexport * from \"./EventAttendeeFormVue.ts?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { Attendee } from './DtoAttendee';\r\nimport { PaymentContainerToken } from '../AllTypesExports';\r\nimport { ProductQuantity } from '../ecommerce/DtoProductQuantity';\r\nimport { Ticket, DtoTicket } from './DtoTicket';\r\n\r\nexport interface DtoEventRegistration {\r\n eventId: number;\r\n attendees: Attendee[];\r\n selectedAddons: ProductQuantity[];\r\n promoCode: string | null;\r\n confirmationEmails: string[];\r\n summaryEmails: string[];\r\n paymentToken: PaymentContainerToken | null;\r\n taxRate: number;\r\n guestName: string | null;\r\n guestPhone: string | null;\r\n guestEmail: string | null;\r\n guestCompany: string | null;\r\n guestCompanyId: number | null;\r\n discount: number | 0;\r\n taxableDiscount: number | 0;\r\n recaptchaToken: string | null;\r\n taxExempt: boolean;\r\n isDonatingTransactionFee: boolean;\r\n purchaserId: number;\r\n}\r\n\r\nexport class EventRegistration implements DtoEventRegistration {\r\n eventId!: number;\r\n attendees!: Attendee[];\r\n selectedAddons!: ProductQuantity[];\r\n promoCode!: string | null;\r\n confirmationEmails!: string[];\r\n summaryEmails!: string[];\r\n paymentToken!: PaymentContainerToken | null;\r\n taxRate!: number;\r\n guestName!: string | null;\r\n guestPhone!: string | null;\r\n guestEmail!: string | null;\r\n guestCompany!: string | null;\r\n guestCompanyId!: number | null;\r\n discount!: number | 0;\r\n taxableDiscount!: number | 0;\r\n recaptchaToken!: string | null;\r\n taxExempt!: boolean;\r\n isDonatingTransactionFee!: boolean;\r\n purchaserId!: number;\r\n currencyIcon!: string | \"$\";\r\n\r\n constructor(dtoRegistration: DtoEventRegistration) {\r\n Object.assign(this, dtoRegistration);\r\n }\r\n\r\n get purchasedTickets() {\r\n var tickets: Ticket[] = [];\r\n\r\n this.attendees.forEach(attendee => {\r\n tickets = tickets.concat(attendee.selectedTickets);\r\n });\r\n\r\n return tickets;\r\n }\r\n\r\n get uniquePurchasedTickets() {\r\n return this.purchasedTickets\r\n .filter(function (value, index, self) { return self.findIndex(x => x.id == value.id) === index; });\r\n }\r\n\r\n get purchasedAddons() {\r\n var addons: ProductQuantity[] = [];\r\n\r\n if (this.selectedAddons && this.selectedAddons.length) {\r\n addons = addons.concat(this.selectedAddons);\r\n }\r\n\r\n this.attendees.forEach(attendee => {\r\n if (attendee.selectedAddons && attendee.selectedAddons.length) {\r\n addons = addons.concat(attendee.selectedAddons);\r\n }\r\n });\r\n\r\n return addons;\r\n }\r\n\r\n get ticketAmounts() {\r\n var amounts: { [id: number]: number } = {};\r\n this.purchasedTickets.forEach(ticket => amounts[ticket.id] = (amounts[ticket.id] || 0) + 1);\r\n return amounts;\r\n }\r\n\r\n getTicketCount(ticket: DtoTicket) {\r\n return Math.ceil(this.getAttendeeCount(ticket.id) / ticket.seatsPerTicket);\r\n }\r\n\r\n getAttendeeCount(ticketID: number) {\r\n return this.ticketAmounts[ticketID] || 0;\r\n }\r\n\r\n get ticketTotal() {\r\n return this.selectedTicketsTotals.subTotal;\r\n }\r\n\r\n get taxableTicketTotal() {\r\n return this.taxExempt ? 0 : this.selectedTicketsTotals.taxableSubTotal;\r\n }\r\n\r\n get addonTotal() {\r\n var total = 0;\r\n this.purchasedAddons.forEach(addon => total += addon.subTotal);\r\n return total;\r\n }\r\n\r\n get taxableAddonTotal() {\r\n if (this.taxExempt) {\r\n return 0;\r\n }\r\n\r\n var total = 0;\r\n this.purchasedAddons.forEach(addon => total += addon.taxableSubTotal);\r\n return total;\r\n }\r\n\r\n get taxableSubTotal() {\r\n return this.taxExempt ? 0 : this.taxableTicketTotal + this.taxableAddonTotal - this.taxableDiscount;\r\n }\r\n\r\n get subTotal() {\r\n return this.ticketTotal + this.addonTotal - this.discount;\r\n }\r\n\r\n get subTotalFormatted() {\r\n return this.currencyIcon + this.subTotal.toFixed(2);\r\n }\r\n\r\n get taxTotal() {\r\n return Math.round(this.taxableSubTotal * (this.taxRate * 100)) / 100;\r\n }\r\n\r\n get taxTotalFormatted() {\r\n return this.currencyIcon + this.taxTotal.toFixed(2);\r\n }\r\n\r\n get selectedTicketsTotals() {\r\n return this.getTicketsSubtotals(this.uniquePurchasedTickets);\r\n }\r\n\r\n getTicketsSubtotals(tickets: Ticket[]) {\r\n var subTotal = 0;\r\n var taxableSubTotal = 0;\r\n\r\n tickets.forEach(ticket => {\r\n var quantity = this.getTicketCount(ticket);\r\n var ticketPrice = ticket.calculateSubtotal(quantity);\r\n subTotal += ticketPrice;\r\n taxableSubTotal += ticket.taxable ? ticketPrice : 0;\r\n });\r\n\r\n return { subTotal, taxableSubTotal };\r\n }\r\n\r\n getAttendeeSubtotal(attendee: Attendee) {\r\n let total = 0;\r\n\r\n // Track which tickets have been processed to avoid duplication\r\n const processedTickets = new Set();\r\n\r\n attendee.selectedTickets.forEach((ticket, index) => {\r\n if (!processedTickets.has(ticket.id)) {\r\n // Mark this ticket type as processed\r\n processedTickets.add(ticket.id);\r\n\r\n // Get all attendees for this specific ticket type\r\n const attendeesForTicket = this.attendees.filter(a => a.selectedTickets.some(t => t.id === ticket.id));\r\n\r\n // Calculate how many seats per ticket and the number of such tickets this attendee has\r\n const seatsPerTicket = ticket.seatsPerTicket;\r\n const totalTicketPrice = this.getTicketPrice(ticket, attendee, true);\r\n \r\n // Calculate the base price per seat\r\n const basePricePerSeat = Math.floor((totalTicketPrice / seatsPerTicket) * 100) / 100;\r\n let priceAccumulated = 0;\r\n\r\n let attendeeTicketCounter = 1; // Track attendees based on ticket instance relative to seatsPerTicket\r\n attendeesForTicket.forEach((at, i) => {\r\n let priceForThisAttendee = basePricePerSeat;\r\n\r\n // Check if this is the last attendee for this ticket\r\n if (attendeeTicketCounter === ticket.seatsPerTicket) {\r\n // Adjust the price for the last attendee to include any remainder\r\n priceForThisAttendee = totalTicketPrice - priceAccumulated;\r\n\r\n attendeeTicketCounter = 0; // Reset for next ticket instance of same type (back to 1 by end of loop)\r\n priceAccumulated = 0;\r\n } else {\r\n priceAccumulated += priceForThisAttendee;\r\n }\r\n\r\n // Only add to the total if the current attendee being processed matches the original attendee being calculated\r\n if (at.uniqueId === attendee.uniqueId) {\r\n total += priceForThisAttendee;\r\n }\r\n\r\n attendeeTicketCounter++;\r\n });\r\n }\r\n });\r\n\r\n // Add the price of any selected add-ons\r\n attendee.selectedAddons.forEach(addon => total += addon.subTotal);\r\n\r\n return total;\r\n }\r\n\r\n getAttendeeSubtotalFormated(attendee: Attendee) {\r\n var total = this.getAttendeeSubtotal(attendee);\r\n\r\n return this.currencyIcon + total.toFixed(2);\r\n }\r\n\r\n getTicketPrice(ticket: Ticket, attendee?: Attendee, attendeeSubtotal: boolean = false) {\r\n // First look out for multi seat tickets - We only want to charge one attendee per table rather than everyone\r\n // If it is method used for calculation of attendee subtotal this is not required because we have detailed logic there\r\n if (attendee && ticket.seatsPerTicket > 1 && !attendeeSubtotal) {\r\n var attendeeIndex = this.attendees\r\n .filter(a => a.hasSelectedTicket(ticket.id)) // of the attendees that selected this ticket\r\n .findIndex(a => a.matches(attendee)); // where does this attendee fall?\r\n\r\n var seatNumber = attendeeIndex % ticket.seatsPerTicket; // which seat does this attendee occupy at the table?\r\n\r\n // We only charge the head of the table\r\n if (seatNumber > 0) {\r\n return 0;\r\n }\r\n }\r\n\r\n // Standard case\r\n var quantity = this.getTicketCount(ticket);\r\n return ticket.calculatePrice(quantity);\r\n }\r\n\r\n getTicketPriceString(ticket: Ticket, attendee?: Attendee, attendeeSubtotal: boolean = false) {\r\n var price = this.getTicketPrice(ticket, attendee, attendeeSubtotal);\r\n\r\n return this.currencyIcon + price.toFixed(2);\r\n }\r\n}\r\n\r\nexport function createEventRegistration(dtoRegistration?: DtoEventRegistration | any) {\r\n let obj = {\r\n eventId: 0,\r\n attendees: [],\r\n selectedAddons: [],\r\n promoCode: null,\r\n confirmationEmails: [],\r\n summaryEmails: [],\r\n paymentToken: null,\r\n taxRate: 0,\r\n guestName: '',\r\n guestPhone: null,\r\n guestEmail: null,\r\n guestCompany: null,\r\n guestCompanyId: null,\r\n discount: 0,\r\n taxableDiscount: 0,\r\n recaptchaToken: '',\r\n taxExempt: false,\r\n isDonatingTransactionFee: false,\r\n purchaserId: 0\r\n };\r\n\r\n if (dtoRegistration) {\r\n Object.assign(obj, dtoRegistration);\r\n }\r\n\r\n return new EventRegistration(obj);\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row c-registration__checkout-wrapper--container\"},[_c('div',{staticClass:\"c-registration__checkout-wrapper--left\",class:{'g-registration__checkout-single-column' : _vm.ticketsAndAddons.allItemsAreFree, 'g-registration__checkout-two-columns' : !_vm.ticketsAndAddons.allItemsAreFree}},[_c('div',{staticClass:\"c-registration__checkout-wrapper\"},[_c('h3',{staticClass:\"c-registration__title c-registration__title-checkout\",attrs:{\"role\":\"heading\",\"aria-level\":\"2\"}},[_vm._v(\"\\n Registration Summary\\n \")]),_c('p',{staticClass:\"c-registration__text c-registration__text--emphasized c-registration__text-add-someone\"},[_vm._v(\"\\n Forget someone? \"),_c('a',{attrs:{\"tabindex\":\"0\"},on:{\"click\":function($event){return _vm.backToFirstStep()}}},[_vm._v(\"Add them now.\")])]),_c('div',{staticClass:\"c-registration__attendee-wrapper\",attrs:{\"role\":\"list\"}},[_vm._l((_vm.attendees),function(attendee){return _c('div',{attrs:{\"role\":\"listitem\"}},[_c('div',{staticClass:\"c-registration__attendee\"},[(attendee.customerId > 0)?_c('img',{staticClass:\"c-registration__attendee-image\",attrs:{\"src\":attendee.image,\"alt\":_vm.getAttendeeName(attendee)}}):_vm._e(),(attendee.customerId == 0)?_c('div',{staticClass:\"c-registration__attendee-initial\",attrs:{\"aria-hidden\":\"true\"},domProps:{\"innerHTML\":_vm._s(attendee.customerInitial)}}):_vm._e(),_c('div',{staticClass:\"c-registration__attendee-info\"},[_c('p',{staticClass:\"c-registration__attendee-name\"},[_c('a',{attrs:{\"tabindex\":\"0\"},on:{\"click\":function($event){return _vm.showAttendee(attendee)}}},[_vm._v(_vm._s(_vm.getAttendeeName(attendee)))])]),_c('div',{staticClass:\"c-registration__attendee-email\"},[_vm._v(\"\\n \"+_vm._s(attendee.email)+\"\\n \")])]),_c('div',{staticClass:\"c-registration__attendee-price-close\"},[_c('div',{staticClass:\"c-registration__attendee-price\",class:{'u-hide' : _vm.ticketsAndAddons.allItemsAreFree},domProps:{\"innerHTML\":_vm._s(_vm.registration.getAttendeeSubtotalFormated(attendee))}})])])])}),(_vm.attendeeBased)?_c('div',{attrs:{\"role\":\"listitem\"}},_vm._l((_vm.remainingSeats),function(seat){return _c('div',{attrs:{\"role\":\"listItem\"}},[_c('div',{staticClass:\"c-registration__attendee\"},[_c('div',{staticClass:\"c-registration__attendee-initial\",attrs:{\"aria-hidden\":\"true\"}}),_c('div',{staticClass:\"c-registration__attendee-info\"},[_c('p',{staticClass:\"c-registration__attendee-name\"},[_c('a',{attrs:{\"tabindex\":\"0\"}},[_vm._v(_vm._s(seat.name))])])]),_c('div',{staticClass:\"c-registration__attendee-price-close\"},[_c('div',{staticClass:\"c-registration__attendee-price\",class:{'u-hide' : _vm.ticketsAndAddons.allItemsAreFree},domProps:{\"innerHTML\":_vm._s(seat.formatedPrice)}})])])])}),0):_vm._e()],2)]),(!_vm.attendeeBased && _vm.visibleAddons.length > 0)?[_c('div',{staticClass:\"c-registration__checkout-wrapper\"},[_c('h3',{staticClass:\"c-registration__sub-title c-registration__sub-title--border\"},[_vm._v(\"\\n Add-ons\\n \")]),_vm._l((_vm.visibleAddons),function(addon){return _c('div',{attrs:{\"role\":\"list\"}},[_c('div',{staticClass:\"c-registration__checkout-addons\",attrs:{\"role\":\"listitem\"}},[_c('div',{staticClass:\"c-registration__item\"},[_c('a',{on:{\"click\":function($event){return _vm.showAddon(_vm.attendee)}}},[_vm._v(_vm._s(_vm.ticketsAndAddons.getAddonName(addon.id)))])]),_c('div',{staticClass:\"c-registration__price c-registration__checkout-addons-subtotal\"},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"currency\")(addon.subTotal,'$'))+\"\\n \")])])])})],2)]:_vm._e(),(_vm.showPromoCode)?_c('PromoCodeInput',{attrs:{\"registration\":_vm.registration},on:{\"update:discount\":function($event){_vm.registration.discount = $event},\"update:taxableDiscount\":function($event){_vm.registration.taxableDiscount = $event},\"update:discountCode\":function($event){_vm.registration.promoCode = $event},\"update:discountError\":_vm.updateDiscountError,\"update:isPromoInFocus\":_vm.updatePromoFocus}}):_vm._e(),_c('div',{staticClass:\"c-registration__checkout-wrapper\",class:{'u-hide' : _vm.ticketsAndAddons.allItemsAreFree}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.registration.discount > 0),expression:\"registration.discount > 0\"}],staticClass:\"c-registration__totals\",attrs:{\"id\":\"discount\"}},[_c('div',{staticClass:\"c-registration__totals-label\"},[_vm._v(\"\\n Discount\\n \")]),_c('div',{staticClass:\"c-registration__totals-price\"},[_vm._v(\"\\n $\"+_vm._s(_vm.registration.discount.toFixed(2))+\"\\n \")])])]),_c('hr',{staticClass:\"c-registration__hr\",class:{'u-hide' : _vm.ticketsAndAddons.allItemsAreFree}}),_c('div',{staticClass:\"c-registration__checkout-wrapper\",class:{'u-hide' : _vm.ticketsAndAddons.allItemsAreFree}},[_c('div',{staticClass:\"c-registration__totals\"},[_c('div',{staticClass:\"c-registration__totals-label\"},[_vm._v(\"\\n Subtotal\\n \")]),_c('div',{staticClass:\"c-registration__totals-price\",domProps:{\"innerHTML\":_vm._s(_vm.registration.subTotalFormatted)}})]),_c('div',{staticClass:\"c-registration__totals\"},[_c('div',{staticClass:\"c-registration__totals-label\"},[_vm._v(\"\\n Tax\\n \")]),_c('div',{staticClass:\"c-registration__totals-price\"},[(!_vm.taxExempt)?_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.registration.taxTotalFormatted)}}):_c('span',[_vm._v(\"Tax Exempt\")])])]),(_vm.donateTransactionFeeAmount > 0)?_c('div',{staticClass:\"c-registration__totals\"},[_c('div',{staticClass:\"c-registration__totals-label\"},[_vm._v(\"\\n \"+_vm._s(_vm.paymentProcessorOptions.donateTransactionFeeLabel)+\"\\n \")]),_c('div',{staticClass:\"c-registration__totals-price\",domProps:{\"innerHTML\":_vm._s(_vm.donateTransactionFeeAmountFormatted)}})]):_vm._e(),(_vm.convenienceFee > 0)?_c('div',{staticClass:\"c-registration__totals\"},[_c('div',{staticClass:\"c-registration__totals-label\"},[_vm._v(\"\\n Convenience Fee\\n \")]),_c('div',{staticClass:\"c-registration__totals-price\",domProps:{\"innerHTML\":_vm._s(_vm.convenienceFeeFormatted)}})]):_vm._e()]),_c('hr',{staticClass:\"c-registration__hr\",class:{'u-hide' : _vm.ticketsAndAddons.allItemsAreFree}}),_c('div',{staticClass:\"c-registration__checkout-wrapper\",class:{'u-hide' : _vm.ticketsAndAddons.allItemsAreFree}},[_c('div',{staticClass:\"c-registration__totals\"},[_c('div',{staticClass:\"c-registration__totals-label\"},[_vm._v(\"\\n Total\\n \")]),_c('div',{staticClass:\"c-registration__totals-price c-registration__totals-price--checkout\",domProps:{\"innerHTML\":_vm._s(_vm.totalFormatted)}})])]),_c('hr',{staticClass:\"c-registration__hr\",class:{'u-hide' : _vm.ticketsAndAddons.allItemsAreFree}}),_c('h3',{staticClass:\"c-registration__title c-registration__title-checkout\"},[_vm._v(\"\\n Email\\n \")]),_c('div',{staticClass:\"c-registration__email-wrapper\"},[((!_vm.currentUser.isLoggedIn && !_vm.guestOnlyAttendee) || (_vm.currentUser.email && ((_vm.registration.confirmationEmails && _vm.registration.confirmationEmails.some(function (email) { return email.trim() === _vm.currentUser.email; }) && _vm.attendees.length > 1) || !_vm.allAttendeesHavePurchaserEmail)))?[_c('div',[_c('label',{staticClass:\"control-label\",attrs:{\"for\":\"confirmationEmails\"}},[_vm._v(\"Individual confirmations will be sent to:\")]),_c('div',[_c('ul',_vm._l((_vm.registration.confirmationEmails),function(email){return _c('li',{attrs:{\"role\":\"listitem\"}},[_vm._v(\"\\n \"+_vm._s(email)+\"\\n \")])}),0)]),_c('EmailsInput',{attrs:{\"emails\":_vm.registration.summaryEmails,\"subtitle\":'Registration Summary to:',\"required\":true},on:{\"update:emails\":function($event){return _vm.$set(_vm.registration, \"summaryEmails\", $event)}}})],1)]:_vm._e(),((!_vm.currentUser.email || _vm.allAttendeesHavePurchaserEmail && _vm.attendees.length == 1) && (_vm.currentUser.isLoggedIn || _vm.guestOnlyAttendee))?[_c('EmailsInput',{attrs:{\"emails\":_vm.registration.confirmationEmails,\"subtitle\":'Confirmation & Registration Summary to:',\"required\":true},on:{\"update:emails\":function($event){return _vm.$set(_vm.registration, \"confirmationEmails\", $event)}}})]:_vm._e()],2)],2),_c('div',{staticClass:\"c-registration__checkout-wrapper--right\",class:{'g-registration__checkout-single-column' : _vm.ticketsAndAddons.allItemsAreFree, 'g-registration__checkout-two-columns' : !_vm.ticketsAndAddons.allItemsAreFree}},[(!_vm.currentUser.isLoggedIn)?_c('div',{staticClass:\"c-registration__checkout-wrapper c-registration__checkout-wrapper--guest\"},[_c('h3',{staticClass:\"c-registration__sub-title\"},[_vm._v(\"\\n Registration Contact\\n \")]),_c('div',{staticClass:\"c-registration__text c-registration__text--emphasized\"},[_vm._v(\"If we have questions about this registration, how can we reach you?\")]),_c('div',{staticClass:\"form-group\"},[_c('label',{class:{ 'control-label': true, required: true },attrs:{\"for\":\"guest_name\"}},[_vm._v(\"Name\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.registration.guestName),expression:\"registration.guestName\"},{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"guest_name\",\"id\":\"guest_name\",\"maxlength\":\"100\",\"data-vv-as\":\"Registration Contact Name\"},domProps:{\"value\":(_vm.registration.guestName)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.registration, \"guestName\", $event.target.value)}}}),_c('CharacterCount',{attrs:{\"maxCount\":100,\"text\":_vm.registration.guestName}}),_c('FieldValidationErrors',{attrs:{\"errorList\":_vm.errors.collect('guest_name')}})],1),_c('div',{staticClass:\"form-group\"},[_c('label',{class:{ 'control-label': true, required: _vm.parentRequired },attrs:{\"for\":\"guest_company\"}},[_vm._v(_vm._s(_vm.parentLabel))]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.registration.guestCompany),expression:\"registration.guestCompany\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"guest_company\",\"id\":\"guest_company\",\"maxlength\":\"100\",\"data-vv-as\":\"Registration Contact Company Name\"},domProps:{\"value\":(_vm.registration.guestCompany)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.registration, \"guestCompany\", $event.target.value)}}}),_c('CharacterCount',{attrs:{\"maxCount\":100,\"text\":_vm.registration.guestCompany}}),_c('FieldValidationErrors',{attrs:{\"errorList\":_vm.errors.collect('guest_company')}})],1),_c('div',{staticClass:\"form-group\"},[_c('label',{class:{ 'control-label': true, required: true },attrs:{\"for\":\"guest_email\"}},[_vm._v(\"Email\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.registration.guestEmail),expression:\"registration.guestEmail\"},{name:\"validate\",rawName:\"v-validate\",value:('required|email'),expression:\"'required|email'\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"guest_email\",\"id\":\"guest_email\",\"maxlength\":\"100\",\"data-vv-as\":\"Registration Contact Email\"},domProps:{\"value\":(_vm.registration.guestEmail)},on:{\"change\":_vm.onGuestEmailChanged,\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"space\",32,$event.key,[\" \",\"Spacebar\"])){ return null; }$event.preventDefault();},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.registration, \"guestEmail\", $event.target.value)}}}),_c('CharacterCount',{attrs:{\"maxCount\":100,\"text\":_vm.registration.guestEmail}}),_c('FieldValidationErrors',{attrs:{\"errorList\":_vm.errors.collect('guest_email')}})],1),_c('div',{staticClass:\"form-group\"},[_c('PhoneInput',{attrs:{\"isRequired\":true,\"id\":'guest_phone',\"phoneLabel\":'Phone',\"includeParens\":true,\"allowExtensions\":true,\"delimiterText\":'-'},model:{value:(_vm.registration.guestPhone),callback:function ($$v) {_vm.$set(_vm.registration, \"guestPhone\", $$v)},expression:\"registration.guestPhone\"}}),_c('FieldValidationErrors',{attrs:{\"errorList\":_vm.errors.collect('guest_phone')}})],1)]):_vm._e(),_c('PaymentContainer',{ref:\"payment\",attrs:{\"disabled\":_vm.isPromoInFocus,\"initialErrorMessage\":_vm.registration.attendees.length === 0 ? 'There are no tickets selected for registration.' : undefined,\"processorOptions\":_vm.paymentProcessorOptions,\"proposedDonateTransactionFeeAmount\":_vm.proposedDonateTransactionFeeAmount},on:{\"payment-token-ready\":_vm.onPaymentTokenReady,\"update-is-donating-transaction-fee\":_vm.handleIsDonatingTransactionFeeUpdated,\"update:convenience-fee\":_vm.onConvenienceFeeUpdated,\"update:billable-party-taxable\":_vm.onBillablePartyTaxableUpdated,\"update:payment-type\":_vm.onPaymentTypeUpdated,\"update:credit-card-billing-state\":_vm.updateTaxRate}},[_c('template',{slot:\"beforeSubmitButton\"},[(_vm.showTermsAndRecaptcha)?_c('TermsAndConditionsInput'):_vm._e(),(_vm.showTermsAndRecaptcha)?_c('RecaptchaInput',{ref:\"recaptcha\",on:{\"update:recaptcha-token\":function($event){_vm.registration.recaptchaToken = $event}}}):_vm._e(),(_vm.event.eventPolicyUsage == 'RequireAtCheckout')?_c('ConsentInput',{attrs:{\"policyName\":_vm.event.eventPolicyPageName,\"policyUrl\":'/event-policy',\"label\":'I/We agree to the [[PolicyLink]].',\"errorMessage\":'You must agree to the [[PolicyName]] in order to complete the registration.'}}):_vm._e()],1)],2),(_vm.event.eventPolicyUsage == 'ShowAtCheckout')?_c('div',{staticStyle:{\"text-align\":\"center\"}},[_c('a',{attrs:{\"href\":\"/event-policy\",\"id\":\"event-policy\",\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.event.eventPolicyPageName))])]):_vm._e()],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"control-label\",attrs:{\"for\":\"confirmationEmails\"}},[_vm._v(\"Send \"+_vm._s(_vm.subtitle))]),_vm._m(0),_c('span',{staticClass:\"sr-only\",attrs:{\"role\":\"status\",\"aria-live\":\"polite\"}},[_vm._v(_vm._s(_vm.ariaUpdateMessage))]),_c('multiselect',{directives:[{name:\"validate\",rawName:\"v-validate\",value:(_vm.required ? 'required' : ''),expression:\"required ? 'required' : ''\"},{name:\"selectOnTab\",rawName:\"v-selectOnTab\"},{name:\"noAutoComplete\",rawName:\"v-noAutoComplete\"}],attrs:{\"name\":\"confirmationEmails\",\"id\":\"confirmationEmails\",\"placeholder\":\"Add an email\",\"tag-placeholder\":\"Press enter to add this email\",\"options\":[],\"multiple\":true,\"taggable\":true,\"closeOnSelect\":false,\"data-vv-as\":'Confirmation Email',\"aria-label\":\"Send confirmation email\",\"aria-describedby\":\"confirmation-email-description-text\",\"aria-live\":\"polite\"},on:{\"open\":function($event){return _vm.dropdownOpened()},\"tag\":_vm.onEmailAdded,\"remove\":_vm.onEmailRemoved,\"close\":_vm.selectHighlightedOption,\"input\":_vm.inputChanged},scopedSlots:_vm._u([{key:\"option\",fn:function(props){return [_c('div',{staticClass:\"option__desc\"},[_c('strong',{staticClass:\"option__title\"},[_vm._v(_vm._s(props.option.label))])])]}}]),model:{value:(_vm.emails),callback:function ($$v) {_vm.emails=$$v},expression:\"emails\"}}),_c('div',{staticStyle:{\"margin-top\":\"10px\"}},[(_vm.showInvalidEmail)?_c('FieldValidationErrors',{attrs:{\"errorList\":['Please enter a valid email address']}}):_vm._e(),_c('FieldValidationErrors',{attrs:{\"errorList\":_vm.errors.collect('confirmationEmails')}})],1)],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('small',{staticStyle:{\"float\":\"right\"},attrs:{\"id\":\"confirmation-email-description-text\"}},[_c('em',[_vm._v(\"Add one or more recipients\")])])}]\n\nexport { render, staticRenderFns }","import { DirectiveOptions } from 'vue';\r\n\r\nconst noAutoComplete: DirectiveOptions = {\r\n\r\n inserted: function (el) {\r\n \r\n $(el).find(\".multiselect__input\").attr(\"autocomplete\", \"nope\");\r\n\r\n }\r\n};\r\n\r\nexport default noAutoComplete;","import { Component, Vue, Prop, Inject, Watch, Emit } from 'vue-property-decorator';\r\nimport { PropOptions } from 'vue';\r\nimport { Multiselect } from 'vue-multiselect';\r\nimport FieldValidationErrors from '@/components/errors/FieldValidationErrors.vue';\r\nimport selectOnTab from '@/components/directives/selectOnTab-directive';\r\nimport noAutoComplete from '@/components/directives/noAutoComplete-directive';\r\n\r\n@Component({\r\n name: 'Emails',\r\n components: {\r\n Multiselect,\r\n FieldValidationErrors\r\n },\r\n directives: {\r\n selectOnTab,\r\n noAutoComplete\r\n }\r\n})\r\nexport default class EmailsInput extends Vue {\r\n @Prop({ required: true, default: [] } as PropOptions)\r\n emails!: string[];\r\n\r\n @Prop({ required: false, default: false } as PropOptions)\r\n required!: boolean;\r\n\r\n @Prop({ required: true, default: '' } as PropOptions)\r\n subtitle!: string;\r\n\r\n @Inject('validator')\r\n $validator: any;\r\n\r\n showInvalidEmail: boolean = false;\r\n\r\n ariaUpdateMessage: string = '';\r\n\r\n setAccessibilityAttributes() {\r\n let element = $(this.$el);\r\n setTimeout(function () {\r\n element.find('.multiselect__tag-icon').attr({ 'tabindex': '0', 'role': 'button', 'aria-label': 'Remove', 'title': 'Remove' });\r\n element.find(\".multiselect__input\").attr({ 'aria-hidden': 'true' });\r\n element.find('.multiselect__element')\r\n .find('.multieselect__option')\r\n .find('.option__desc')\r\n .find('.option__title').attr({ 'role': 'alert', 'aria-label': 'List updated with one suggestion. Press enter to add this email', 'title': 'List updated with one suggestion. Press enter to add this email' });\r\n }, 50);\r\n }\r\n\r\n @Emit('open')\r\n dropdownOpened() {\r\n this.setAccessibilityAttributes();\r\n }\r\n\r\n onEmailAdded(newEmail: string) {\r\n this.setAccessibilityAttributes();\r\n\r\n if (/^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,3})+$/.test(newEmail)) {\r\n if (!this.emails.includes(newEmail)) {\r\n this.emails.push(newEmail);\r\n this.ariaUpdateMessage = \"Added \" + newEmail;\r\n }\r\n }\r\n else {\r\n this.showInvalidEmail = true;\r\n }\r\n }\r\n\r\n onEmailRemoved(removedEmail: string) {\r\n this.ariaUpdateMessage = \"Removed \" + removedEmail;\r\n }\r\n\r\n selectHighlightedOption() {\r\n var textEntered = $(this.$el).find(\".multiselect__input\").val();\r\n //@ts-ignore\r\n var isEnterEvent = event.which === 13;\r\n //@ts-ignore\r\n var isOptionSelectionEvent = event.currentTarget.className === 'multiselect__option multiselect__option--highlight';\r\n if (textEntered && !isEnterEvent && !isOptionSelectionEvent) {\r\n $(this.$el).find('.multiselect__option--highlight:not(.multiselect__option--selected)').trigger($.Event('click'));\r\n }\r\n }\r\n\r\n inputChanged() {\r\n this.setAccessibilityAttributes();\r\n }\r\n\r\n @Watch('emails')\r\n @Emit('update:emails')\r\n onEmailsUpdated() {\r\n this.showInvalidEmail = false;\r\n return this.emails;\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!./EmailsInputVue.ts?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!./EmailsInputVue.ts?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./EmailsInput.vue?vue&type=template&id=22003a3f&\"\nimport script from \"./EmailsInputVue.ts?vue&type=script&lang=ts&\"\nexport * from \"./EmailsInputVue.ts?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"c-registration__checkout-wrapper\"},[_c('div',{staticClass:\"c-registration__promo-code c-registration__promo-code--container\"},[_c('label',{staticClass:\"c-registration__item\",attrs:{\"for\":\"Promo\"}},[_vm._v(\"\\n Promo Code:\\n \")]),(_vm.applyingDiscount)?_c('div',{staticClass:\"c-registration__text c-registration__text--emphasized c-registration__promo-code--applying\"},[_c('span',{staticClass:\"novicon novicon-spinner novicon-spin\"}),_vm._v(\"Applying promo code...\\n \")]):_vm._e(),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.validatedDiscountCode == '' && !_vm.applyingDiscount),expression:\"validatedDiscountCode == '' && !applyingDiscount\"}],staticClass:\"c-registration__promo-code-input\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.discountCodeInput),expression:\"discountCodeInput\"}],staticClass:\"form-control\",attrs:{\"id\":\"Promo\",\"name\":\"Promo\",\"type\":\"text\",\"aria-invalid\":\"false\",\"aria-label\":\"Apply Promo Code\"},domProps:{\"value\":(_vm.discountCodeInput)},on:{\"blur\":_vm.applyCoupon,\"focus\":_vm.focusPromoInput,\"input\":function($event){if($event.target.composing){ return; }_vm.discountCodeInput=$event.target.value}}}),_c('a',{staticClass:\"btn btn-secondary\",attrs:{\"href\":\"javascript:void(0);\",\"type\":\"button\"}},[_c('span',{staticClass:\"novicon novicon-arrow-right\",attrs:{\"aria-hidden\":\"true\"},on:{\"click\":function($event){$event.preventDefault();return _vm.applyCoupon($event)}}})])]),(_vm.validatedDiscountCode)?_c('div',{staticClass:\"c-registration__promo-code-applied\"},[_c('div',{staticClass:\"c-registration__promo-code--applied\"},[_vm._v(_vm._s(_vm.validatedDiscountCode))]),_c('a',{staticClass:\"c-registration__promo-code--clear\",attrs:{\"href\":\"javascript:void(0);\"},on:{\"click\":function($event){$event.preventDefault();return _vm.clearCoupon($event)}}},[_vm._v(\"X\")])]):_vm._e()]),_c('div',{staticClass:\"c-registration__promo-code c-registration__promo-code--error\"},[(_vm.coupon.error)?_c('span',{staticClass:\"text-danger\"},[_vm._v(_vm._s(_vm.coupon.error))]):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { Component, Vue, Prop, Emit, Watch, Inject } from 'vue-property-decorator';\r\nimport { eventRepo } from '@/common/repositories/EventRepo';\r\nimport { AxiosResponse } from 'axios';\r\nimport { ApiErrorResponse } from '@/common/types/AllTypesExports';\r\nimport { TicketType } from '@/common/types/event/TicketType';\r\nimport { Ticket } from '@/common/types/event/DtoTicket';\r\nimport { CouponValidationResult, createCouponValidationResult } from '@/common/types/membership/CouponValidationResult';\r\nimport { EventRegistration } from '@/common/types/event/DtoEventRegistration';\r\n\r\n@Component({\r\n name: 'PromoCode',\r\n components: {}\r\n})\r\nexport default class PromoCodeInput extends Vue {\r\n\r\n @Prop({ required: true })\r\n registration!: EventRegistration;\r\n\r\n @Inject('validator')\r\n $validator: any;\r\n\r\n validatedDiscountCode: string = \"\";\r\n\r\n discountCodeInput: string = \"\";\r\n\r\n applyingDiscount: boolean = false;\r\n\r\n coupon: CouponValidationResult = createCouponValidationResult();\r\n\r\n isPromoInFocus: boolean = false;\r\n\r\n mounted() {\r\n if (this.registration.promoCode) {\r\n this.discountCodeInput = this.registration.promoCode;\r\n this.applyCoupon();\r\n }\r\n }\r\n\r\n get discountableTickets() {\r\n return this.registration.purchasedTickets\r\n .filter(ticket => ticket.ticketType != TicketType.Donation && this.coupon.discountTickets.includes(ticket.id));\r\n }\r\n\r\n get discountableProducts() {\r\n return this.registration.purchasedAddons\r\n .filter(product => !product.isDonation && this.coupon.discountProducts.includes(product.id));\r\n }\r\n\r\n get discount() {\r\n var subTotal = 0;\r\n\r\n if (this.coupon.discountType == 0) {\r\n var discounts: number[] = [];\r\n\r\n this.processDiscountableTickets(\r\n this.discountableTickets,\r\n (ticket) => { discounts.push(ticket.price ?? 0) }\r\n );\r\n\r\n this.discountableProducts.forEach(product => {\r\n for (var i = 0; i < product.quantity; i++) {\r\n discounts.push(product.price ?? 0);\r\n }\r\n });\r\n\r\n if (this.coupon.availableUses != null && this.coupon.availableUses < discounts.length) {\r\n discounts = discounts.filter(x => x > 0).sort(function (a, b) { return b - a; }).slice(0, this.coupon.availableUses);\r\n }\r\n\r\n subTotal = discounts.reduce((acc, price) => acc + price, 0);\r\n\r\n return Math.round((subTotal * this.coupon.discountPercent) * 100) / 100\r\n }\r\n\r\n if (this.coupon.discountType == 1 && this.coupon.discountMethod == 0) {\r\n subTotal += this.processDiscountableTickets(this.discountableTickets);\r\n\r\n this.discountableProducts.forEach(product => {\r\n subTotal += ((product.price ?? 0) * product.quantity);\r\n });\r\n\r\n return Math.min(subTotal, this.coupon.discountAmount);\r\n }\r\n\r\n if (this.coupon.discountType == 1 && this.coupon.discountMethod == 1) {\r\n var discounts: number[] = [];\r\n\r\n this.processDiscountableTickets(\r\n this.discountableTickets,\r\n (ticket) => { discounts.push(Math.min((ticket.price ?? 0), this.coupon.discountAmount)) }\r\n );\r\n\r\n this.discountableProducts.forEach(product => {\r\n for (var i = 0; i < product.quantity; i++) {\r\n discounts.push(Math.min((product.price ?? 0), this.coupon.discountAmount));\r\n }\r\n });\r\n\r\n if (this.coupon.availableUses != null && this.coupon.availableUses < discounts.length) {\r\n discounts = discounts.filter(x => x > 0).sort(function (a, b) { return b - a; }).slice(0, this.coupon.availableUses);\r\n }\r\n\r\n subTotal = discounts.reduce((acc, price) => acc + price, 0);\r\n\r\n return subTotal;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n get taxableDiscount() {\r\n var subTotal = 0;\r\n\r\n if (this.coupon.discountType == 0) {\r\n var discounts: any[] = [];\r\n\r\n this.processDiscountableTickets(\r\n this.discountableTickets,\r\n (ticket) => { discounts.push({ Price: ticket.price, Taxable: ticket.taxable }) }\r\n );\r\n\r\n this.discountableProducts.forEach(product => {\r\n for (var i = 0; i < product.quantity; i++) {\r\n discounts.push({ Price: product.price, Taxable: product.taxable });\r\n }\r\n });\r\n\r\n if (this.coupon.availableUses != null && this.coupon.availableUses < discounts.length) {\r\n discounts = discounts.filter(x => x.Price > 0).sort(function (a, b) { return a.Price - b.Price; }).slice(0, this.coupon.availableUses);\r\n }\r\n\r\n subTotal = discounts.filter(x => x.Taxable).reduce((acc, discount) => acc + discount.Price, 0);\r\n\r\n return Math.round((subTotal * this.coupon.discountPercent) * 100) / 100\r\n }\r\n\r\n if (this.coupon.discountType == 1 && this.coupon.discountMethod == 0) {\r\n subTotal += this.processDiscountableTickets(this.discountableTickets);\r\n\r\n this.discountableProducts.forEach(product => {\r\n if (product.taxable) {\r\n subTotal += (product.price * product.quantity);\r\n }\r\n });\r\n\r\n return Math.min(subTotal, this.coupon.discountAmount);\r\n }\r\n\r\n if (this.coupon.discountType == 1 && this.coupon.discountMethod == 1) {\r\n var discounts: any[] = [];\r\n\r\n this.processDiscountableTickets(\r\n this.discountableTickets,\r\n (ticket) => { discounts.push({ Price: Math.min(ticket.price, this.coupon.discountAmount), Taxable: ticket.taxable }) }\r\n );\r\n\r\n this.discountableProducts.forEach(product => {\r\n for (var i = 0; i < product.quantity; i++) {\r\n discounts.push({ Price: Math.min(product.price, this.coupon.discountAmount), Taxable: product.taxable });\r\n }\r\n });\r\n\r\n if (this.coupon.availableUses != null && this.coupon.availableUses < discounts.length) {\r\n discounts = discounts.filter(x => x > 0).sort(function (a, b) { return a.Price - b.Price; }).slice(0, this.coupon.availableUses);\r\n }\r\n\r\n subTotal = discounts.filter(x => x.Taxable).reduce((acc, discount) => acc + discount.Price, 0);\r\n\r\n return subTotal;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n /**\r\n * Processes an array of tickets, calculates the subtotal of prices with special consideration for multi-seat tickets,\r\n * and applies an optional discount action for each ticket.\r\n */\r\n processDiscountableTickets(tickets: Ticket[], discountAction?: ((ticket: Ticket) => void) | null): number {\r\n // This is necessary since _each_ seat of a multi-seat ticket will exist as its own ticket in discountableTickets\r\n // but we don't want to discount each one since the price on each reflects the price of a single ticket (not seat)\r\n\r\n // Map to track the count of remaining seats per multi-seat ticket ID\r\n let multiSeatTracker = new Map();\r\n let subTotal = 0;\r\n tickets.forEach(ticket => {\r\n if (ticket.seatsPerTicket > 1) {\r\n // Check if the ticket is already in the multiSeatTracker map and if there are remaining seats\r\n if (multiSeatTracker.has(ticket.id) && multiSeatTracker.get(ticket.id)! > 0) {\r\n // Ticket exists in the collection with remaining seats: skip this ticket\r\n multiSeatTracker.set(ticket.id, multiSeatTracker.get(ticket.id)! - 1);\r\n return; // Skip further processing for this ticket\r\n } else {\r\n // Ticket does not exist in collection or has no remaining seats: track it and process\r\n multiSeatTracker.set(ticket.id, ticket.seatsPerTicket - 1);\r\n }\r\n }\r\n\r\n // Add ticket price to the subtotal\r\n subTotal += (ticket.price ?? 0);\r\n\r\n // Apply the discount action if provided\r\n if (discountAction) {\r\n discountAction(ticket);\r\n }\r\n });\r\n\r\n return subTotal;\r\n }\r\n\r\n focusPromoInput() {\r\n this.isPromoInFocus = true;\r\n }\r\n\r\n applyCoupon() {\r\n this.clearCoupon();\r\n\r\n this.discountCodeInput = this.discountCodeInput.trim();\r\n\r\n if (!this.discountCodeInput) {\r\n this.isPromoInFocus = false;\r\n return;\r\n }\r\n\r\n this.applyingDiscount = true;\r\n\r\n eventRepo.validateCoupon(this.registration.eventId, this.registration.purchasedAddons.map(x => x.id), this.registration.purchaserId, this.discountCodeInput)\r\n .then(result => {\r\n Object.assign(this.coupon, result);\r\n\r\n if (!result.error) {\r\n this.validatedDiscountCode = this.discountCodeInput;\r\n this.discountCodeInput = \"\";\r\n\r\n if ((this.coupon.discountAmount || this.coupon.discountPercent) && !this.discount) {\r\n this.coupon.error = `This promo code is not valid for any tickets or add-ons you selected. Please choose eligible tickets/add-ons or remove the promo code to continue checkout.`;\r\n }\r\n }\r\n })\r\n .catch((axiosResponse: AxiosResponse) => {\r\n this.coupon.error = `Unable to verify promo code: ${axiosResponse.data.message}`;\r\n throw axiosResponse;\r\n })\r\n .finally(() => {\r\n this.applyingDiscount = false;\r\n this.isPromoInFocus = false;\r\n });\r\n }\r\n\r\n clearCoupon() {\r\n this.applyingDiscount = false;\r\n this.validatedDiscountCode = \"\";\r\n this.coupon = createCouponValidationResult();\r\n }\r\n\r\n @Watch('discount')\r\n @Emit('update:discount')\r\n updateDiscount() {\r\n return this.discount;\r\n }\r\n\r\n @Watch('taxableDiscount')\r\n @Emit('update:taxableDiscount')\r\n updateTaxableDiscount() {\r\n return this.taxableDiscount;\r\n }\r\n\r\n @Watch('validatedDiscountCode')\r\n @Emit('update:discountCode')\r\n updateDiscountCode() {\r\n return this.validatedDiscountCode;\r\n }\r\n\r\n @Watch('coupon.error')\r\n @Emit('update:discountError')\r\n updateDiscountError() {\r\n return this.coupon.error;\r\n }\r\n\r\n @Watch('isPromoInFocus')\r\n @Emit('update:isPromoInFocus')\r\n updatePromoFocus() {\r\n return this.isPromoInFocus;\r\n }\r\n\r\n private isEmpty(array: number[]) {\r\n return !array || array.length === 0;\r\n }\r\n}","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!./PromoCodeInputVue.ts?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!./PromoCodeInputVue.ts?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PromoCodeInput.vue?vue&type=template&id=774c9ba3&\"\nimport script from \"./PromoCodeInputVue.ts?vue&type=script&lang=ts&\"\nexport * from \"./PromoCodeInputVue.ts?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"agree-container\"},[_c('div',{staticClass:\"checkbox\"},[_c('label',{attrs:{\"for\":\"agree_to_terms\"}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.agreesToTerms),expression:\"agreesToTerms\"},{name:\"validate\",rawName:\"v-validate\",value:('agreeToTerms'),expression:\"'agreeToTerms'\"}],attrs:{\"type\":\"checkbox\",\"id\":\"agree_to_terms\",\"name\":\"agree_to_terms\"},domProps:{\"checked\":Array.isArray(_vm.agreesToTerms)?_vm._i(_vm.agreesToTerms,null)>-1:(_vm.agreesToTerms)},on:{\"change\":function($event){var $$a=_vm.agreesToTerms,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.agreesToTerms=$$a.concat([$$v]))}else{$$i>-1&&(_vm.agreesToTerms=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.agreesToTerms=$$c}}}}),_vm._v(\"\\n I agree to the \"),_c('a',{attrs:{\"href\":\"/legal\",\"target\":\"_blank\"}},[_vm._v(\"Terms & Conditions\")])]),_c('FieldValidationErrors',{attrs:{\"errorList\":_vm.errors.collect('agree_to_terms')}})],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { Component, Vue, Inject } from 'vue-property-decorator';\r\nimport FieldValidationErrors from '@/components/errors/FieldValidationErrors.vue';\r\n\r\n@Component({\r\n name: 'TermsAndConditions',\r\n components: {\r\n FieldValidationErrors\r\n }\r\n})\r\nexport default class TermsAndConditionsInput extends Vue {\r\n\r\n @Inject('validator')\r\n $validator: any;\r\n\r\n agreesToTerms: boolean = false;\r\n\r\n created() {\r\n this.$validator.extend('agreeToTerms', {\r\n getMessage: () => 'You must agree to terms & conditions to continue.',\r\n validate: (value: boolean) => value\r\n }, { validatesRequired: true });\r\n }\r\n}","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!./TermsAndConditionsInputVue.ts?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!./TermsAndConditionsInputVue.ts?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TermsAndConditionsInput.vue?vue&type=template&id=d529e330&\"\nimport script from \"./TermsAndConditionsInputVue.ts?vue&type=script&lang=ts&\"\nexport * from \"./TermsAndConditionsInputVue.ts?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"registration-policy-agree\"},[_c('div',{staticClass:\"checkbox\"},[_c('label',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.consentToPolicy),expression:\"consentToPolicy\"},{name:\"validate\",rawName:\"v-validate\",value:('consent'),expression:\"'consent'\"}],attrs:{\"type\":\"checkbox\",\"id\":_vm.inputFieldName,\"name\":_vm.inputFieldName,\"required\":\"\"},domProps:{\"checked\":Array.isArray(_vm.consentToPolicy)?_vm._i(_vm.consentToPolicy,null)>-1:(_vm.consentToPolicy)},on:{\"change\":function($event){var $$a=_vm.consentToPolicy,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.consentToPolicy=$$a.concat([$$v]))}else{$$i>-1&&(_vm.consentToPolicy=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.consentToPolicy=$$c}}}}),(_vm.customLabel !== null)?_c('span',{staticClass:\"registration-policy-label custom-registration-policy-label\",domProps:{\"innerHTML\":_vm._s(_vm.customLabel)}}):_c('span',{staticClass:\"registration-policy-label\"},[_vm._v(\"\\n I/We consent to the\\n \"),_c('a',{attrs:{\"href\":_vm.policyUrl,\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.policyName))]),_vm._v(\".\\n \")])]),_c('FieldValidationErrors',{attrs:{\"errorList\":_vm.errors.collect(_vm.inputFieldName)}})],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { Component, Vue, Prop, Inject } from 'vue-property-decorator';\r\nimport { PropOptions } from 'vue';\r\nimport FieldValidationErrors from '@/components/errors/FieldValidationErrors.vue';\r\n\r\n@Component({\r\n name: 'Consent',\r\n components: {\r\n FieldValidationErrors\r\n }\r\n})\r\nexport default class ConsentInput extends Vue {\r\n @Prop({ required: true } as PropOptions)\r\n policyName!: string;\r\n\r\n @Prop({ required: true } as PropOptions)\r\n policyUrl!: string;\r\n\r\n @Prop({ required: false, default: null } as PropOptions)\r\n label!: string;\r\n\r\n @Prop({ required: true, default: null } as PropOptions)\r\n errorMessage!: string;\r\n\r\n @Inject('validator')\r\n $validator: any;\r\n\r\n consentToPolicy: boolean = false;\r\n\r\n created() {\r\n this.$validator.extend('consent', { getMessage: this.getInvalidMessage, validate: (value: boolean) => value }, { validatesRequired: true });\r\n }\r\n\r\n get getInvalidMessage() {\r\n if (this.errorMessage === null) {\r\n return `You must consent to the ${this.policyName} to continue.`;\r\n } else {\r\n return this.ReplaceTokens(this.errorMessage, false);\r\n }\r\n }\r\n\r\n get inputFieldName() {\r\n return 'agree_to_' + this.policyName.replace(/\\s/g, '_').replace(/[^\\w\\s]/, '').toLowerCase();\r\n }\r\n\r\n get customLabel() {\r\n if (this.label === null) {\r\n return null;\r\n }\r\n\r\n return this.ReplaceTokens(this.label, true);\r\n }\r\n\r\n ReplaceTokens = (str: string, html: boolean) => {\r\n let r = str.replace(/\\[\\[PolicyUrl]]/gi, this.policyUrl).replace(/\\[\\[PolicyName]]/gi, this.policyName);\r\n\r\n if (!html) {\r\n return r;\r\n }\r\n\r\n return r.replace(/\\[\\[PolicyLink]]/gi, `${this.policyName}`);\r\n }\r\n}","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!./ConsentInputVue.ts?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!./ConsentInputVue.ts?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ConsentInput.vue?vue&type=template&id=6e64119a&\"\nimport script from \"./ConsentInputVue.ts?vue&type=script&lang=ts&\"\nexport * from \"./ConsentInputVue.ts?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { Component, Vue, Prop, Watch, Inject } from 'vue-property-decorator';\r\nimport ErrorAlert from '@/components/errors/ErrorAlert.vue';\r\nimport ValidationErrors from '@/components/errors/ValidationErrors.vue';\r\nimport FieldValidationErrors from '@/components/errors/FieldValidationErrors.vue';\r\nimport EmailsInput from '@/components/inputs/email/EmailsInput.vue';\r\nimport { Attendee } from '@/common/types/event/DtoAttendee';\r\nimport '@/common/filters/AllFiltersExport';\r\nimport { TicketsAndAddons } from '../../common/types/event/DtoTicketsAndAddons';\r\nimport { EventRegistration } from '../../common/types/event/DtoEventRegistration';\r\nimport { PaymentContainerToken, PaymentProcessorOptions, createPaymentProcessorOptions, DtoEvent, PaymentTypeEnum } from '../../common/types/AllTypesExports';\r\nimport { eventRepo } from '../../common/repositories/EventRepo';\r\nimport { AxiosResponse } from 'axios';\r\nimport { ApiPaymentErrorResponse, createApiPaymentErrorResponse } from '../../common/types/Payment/ApiPaymentErrorResponse';\r\nimport PaymentContainer from '@/components/payment-container/PaymentContainer.vue';\r\nimport { default as PaymentContainerClass } from '@/components/payment-container/PaymentContainerVue';\r\nimport { DtoRegistrationResponse } from '@/common/types/event/DtoRegistrationResponse';\r\nimport { DtoCurrentUser } from '@/common/types/user/DtoCurrentUser';\r\nimport cloneDeep from 'lodash/cloneDeep';\r\nimport PromoCodeInput from '@/components/inputs/promo/PromoCodeInput.vue';\r\nimport PhoneInput from '@/components/inputs/phone/PhoneInput.vue';\r\nimport RecaptchaInput from '@/components/inputs/recaptcha/RecaptchaInput.vue';\r\nimport { default as RecaptchaInputClass } from '@/components/inputs/recaptcha/RecaptchaInputVue';\r\nimport TermsAndConditionsInput from '@/components/inputs/terms/TermsAndConditionsInput.vue';\r\nimport ConsentInput from '@/components/inputs/consent/ConsentInput.vue';\r\nimport { Addon } from '../../common/types/event/DtoAddon';\r\nimport { IEventRegistrationGlobals } from '../../pages/event-registration/EventRegistrationGlobals';\r\nimport { PaymentProcessingStatus } from '../../common/types/Payment/PaymentProcessingStatus';\r\nimport { PropOptions } from 'vue';\r\nimport { paymentsRepo } from '../../common/repositories/PaymentsRepo';\r\nimport CustomerSelector from '@/components/membership/CustomerSelector.vue';\r\n\r\ndeclare let noviNs: IEventRegistrationGlobals;\r\n\r\n\r\n@Component({\r\n name: 'EventCheckout',\r\n components: {\r\n ErrorAlert,\r\n ValidationErrors,\r\n FieldValidationErrors,\r\n PaymentContainer,\r\n EmailsInput,\r\n PromoCodeInput,\r\n PhoneInput,\r\n RecaptchaInput,\r\n TermsAndConditionsInput,\r\n ConsentInput,\r\n CustomerSelector\r\n }\r\n})\r\nexport default class EventCheckout extends Vue {\r\n @Inject('event')\r\n event!: DtoEvent;\r\n\r\n @Prop({ required: true })\r\n invoiceFee!: number;\r\n\r\n @Inject('registration')\r\n registration!: EventRegistration;\r\n\r\n @Inject('ticketsAndAddons')\r\n ticketsAndAddons!: TicketsAndAddons;\r\n\r\n @Inject('user')\r\n currentUser!: DtoCurrentUser;\r\n\r\n @Inject('validator')\r\n $validator: any;\r\n\r\n @Prop({ required: false, default: () => null })\r\n attendeeBased!: boolean;\r\n\r\n @Prop({ required: false, default: () => 'Parent Member' })\r\n parentLabel!: string;\r\n\r\n @Prop({ required: false, default: () => false })\r\n parentRequired!: boolean;\r\n\r\n isDonatingTransactionFee: boolean = noviNs.paymentProcessorOptions.donateTransactionFeeChargeType?.toLowerCase() === 'OptOut'.toLowerCase();\r\n\r\n convenienceFee: number = 0;\r\n taxable: boolean = true;\r\n paymentType: string = PaymentTypeEnum.creditCard.toString();\r\n\r\n emailForConfirmation: { 'guest': string | null } = {\r\n 'guest': null\r\n };\r\n\r\n isPromoInFocus: boolean = false;\r\n\r\n paymentProcessorOptions: PaymentProcessorOptions = createPaymentProcessorOptions({\r\n initialTotal: 0,\r\n enableSaveCreditCard: this.currentUser.customerID || false,\r\n enableAutoPay: false,\r\n enableInvoice: true, // Always show the tab, but display proper warning message\r\n enableACH: noviNs.paymentProcessorOptions.enableACH,\r\n enableSaveAch: noviNs.paymentProcessorOptions.enableSaveAch,\r\n savedAchs: noviNs.paymentProcessorOptions.savedAchs,\r\n invoiceFee: this.invoiceFee,\r\n donateTransactionFeeLabel: noviNs.paymentProcessorOptions.donateTransactionFeeLabel,\r\n donateTransactionFeeDescription: noviNs.paymentProcessorOptions.donateTransactionFeeDescription,\r\n donateTransactionFeePercentage: noviNs.paymentProcessorOptions.donateTransactionFeePercentage,\r\n donateTransactionFeeChargeType: noviNs.paymentProcessorOptions.donateTransactionFeeChargeType,\r\n hasItemWithDisabledInvoicing: this.hasItemWithDisabledInvoicing(),\r\n invoiceWarningMessage: this.getInvoiceWarningMessage(),\r\n alternatePaymentStripeId: noviNs.alternatePaymentStripeId,\r\n alternatePaymentCurrency: noviNs.alternatePaymentCurrency,\r\n enableCreditCard: noviNs.paymentProcessorOptions.enableCreditCard\r\n });\r\n\r\n hasItemWithDisabledInvoicing() {\r\n return this.registration.attendees.every(a => a.selectedTickets.some(t => t.disableInvoicing));\r\n }\r\n\r\n getInvoiceWarningMessage() {\r\n if (!this.currentUser.isLoggedIn) {\r\n return 'You must login in order to be eligible for invoicing.';\r\n }\r\n\r\n const ticketsWithDisabledInvoicing = this.registration.attendees\r\n .flatMap(a => a.selectedTickets)\r\n .filter(t => t.disableInvoicing)\r\n .map(t => t.name);\r\n\r\n if (ticketsWithDisabledInvoicing.length > 0) {\r\n return `Invoicing is not allowed for these ticket(s): ${ticketsWithDisabledInvoicing.join(\", \")}. Please purchase separately or pay with Credit/Debit or ACH.`;\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n created() {\r\n if (this.currentUser.defaultBillablePartyID) {\r\n this.paymentProcessorOptions.billablePartyId = this.currentUser.defaultBillablePartyID;\r\n }\r\n\r\n // Ensure when we pass in the alternate payment stripe ID, we disable all other payment options and force CC payment\r\n if (noviNs.alternatePaymentStripeId) {\r\n this.paymentProcessorOptions.enableInvoice = false;\r\n this.paymentProcessorOptions.enableSaveCreditCard = false;\r\n this.paymentProcessorOptions.enableAutoPay = false;\r\n this.paymentProcessorOptions.enableACH = false;\r\n this.paymentProcessorOptions.enableSaveAch = false;\r\n this.paymentProcessorOptions.savedAchs = [];\r\n this.paymentProcessorOptions.savedCards = [];\r\n }\r\n }\r\n\r\n mounted() {\r\n this.updateTaxRate();\r\n\r\n this.onTotalChanged(this.total);\r\n\r\n if (this.currentUser.customerID) {\r\n this.registration.purchaserId = this.currentUser.customerID;\r\n }\r\n\r\n // Populate logged in user's email in confirmation emails input\r\n if (this.currentUser.professionalEmail && !this.registration.summaryEmails.includes(this.currentUser.professionalEmail)) {\r\n this.registration.summaryEmails.push(this.currentUser.professionalEmail);\r\n }\r\n\r\n // Populate selected attendee emails in confirmation emails input\r\n if (this.registration.attendees.length > 0) {\r\n this.registration.attendees.forEach(attendee => {\r\n if (attendee.email && !this.registration.confirmationEmails.includes(attendee.email)) {\r\n this.registration.confirmationEmails.push(attendee.email);\r\n }\r\n });\r\n }\r\n\r\n //filtering summary email in case of going back in stepper to change attendees emails to remove old ones that are not anymore part of emails of attendees\r\n if (this.registration.summaryEmails && this.registration.summaryEmails.length > 0 && this.registration.attendees.length > 0) {\r\n if (!this.currentUser.professionalEmail) {\r\n this.registration.summaryEmails = this.registration.summaryEmails.filter(email =>\r\n this.registration.attendees.some(attendee => attendee.email === email));\r\n }\r\n else {\r\n this.registration.summaryEmails = this.registration.summaryEmails.filter(email =>\r\n this.registration.attendees.some(attendee => attendee.email === email) || email === this.currentUser.professionalEmail);\r\n }\r\n }\r\n\r\n //filtering same thing for confirmation emails in case of going back in stepper\r\n if (this.registration.confirmationEmails && this.registration.confirmationEmails.length > 0 && this.registration.attendees.length > 0) {\r\n this.registration.confirmationEmails = this.registration.confirmationEmails.filter(email =>\r\n this.registration.attendees.some(attendee => attendee.email === email)); \r\n }\r\n\r\n // Populate guest info from the first attendee\r\n if (!this.currentUser.isLoggedIn && this.registration.attendees.length > 0) {\r\n this.registration.guestName = this.registration.attendees[0].name;\r\n this.registration.guestEmail = this.registration.attendees[0].email;\r\n this.registration.guestPhone = this.registration.attendees[0].phone;\r\n this.registration.guestCompany = this.registration.attendees[0].companyName\r\n }\r\n\r\n if (!this.currentUser.isLoggedIn && this.registration.summaryEmails.length == 0) {\r\n this.registration.summaryEmails.push(this.registration.guestEmail || \"\");\r\n \r\n }\r\n\r\n this.registration.isDonatingTransactionFee = this.isDonatingTransactionFee;\r\n }\r\n\r\n get showTermsAndRecaptcha() {\r\n return !this.currentUser.isLoggedIn;\r\n }\r\n\r\n get taxExempt() {\r\n return (this.paymentType == PaymentTypeEnum.invoice.toString() && !this.taxable) || (this.paymentType == PaymentTypeEnum.creditCard.toString() && !this.currentUser.taxable)\r\n }\r\n\r\n onPaymentTokenReady(paymentToken: PaymentContainerToken) {\r\n var validationPassed = false;\r\n\r\n this.$validator.validateAll()\r\n .then((valid: any) => {\r\n if (valid && !this.errors.any()) {\r\n validationPassed = true;\r\n let paymentWidget = this.$refs.payment;\r\n paymentWidget.onErrorToggle(false, '');\r\n }\r\n else {\r\n validationPassed = false; \r\n let paymentWidget = this.$refs.payment;\r\n paymentWidget.onErrorToggle(true, 'Please correct the errors shown before submitting.');\r\n }\r\n })\r\n .then(() => {\r\n if (!validationPassed)\r\n return;\r\n\r\n this.registration.paymentToken = paymentToken;\r\n eventRepo.register(this.registration)\r\n .then((result: DtoRegistrationResponse) => {\r\n window.location.href = `/${this.event.fileNameWithPrefix}/confirmation?registrationId=${result.registrationId}`;\r\n })\r\n .catch((axiosResponse: AxiosResponse) => {\r\n if (axiosResponse.status >= 500) {\r\n if (!axiosResponse.data) {\r\n axiosResponse.data = createApiPaymentErrorResponse(axiosResponse.data);\r\n axiosResponse.data.message = `It appears your browser had an issue. In order to continue, please restart your browser and check your email or contact us to see if your checkout went through.`;\r\n }\r\n axiosResponse.data.paymentProcessingStatus = PaymentProcessingStatus.Error;\r\n }\r\n if (this.showTermsAndRecaptcha) {\r\n let recaptchaInput = this.$refs.recaptcha;\r\n recaptchaInput.reset();\r\n }\r\n let paymentWidget = this.$refs.payment;\r\n paymentWidget.handleApiPaymentError(axiosResponse.data);\r\n });\r\n }); \r\n }\r\n\r\n get proposedDonateTransactionFeeAmount() {\r\n let ttl = this.registration.subTotal + this.registration.taxTotal + this.convenienceFee;\r\n if (ttl <= 0) {\r\n return 0;\r\n }\r\n\r\n return ttl * (this.paymentProcessorOptions.donateTransactionFeePercentage || 0);\r\n }\r\n\r\n get donateTransactionFeeAmount() {\r\n if (this.paymentType !== 'credit-card' || !this.isDonatingTransactionFee) {\r\n return 0;\r\n }\r\n\r\n return this.proposedDonateTransactionFeeAmount;\r\n }\r\n\r\n get donateTransactionFeeAmountFormatted() {\r\n return this.registration.currencyIcon + this.donateTransactionFeeAmount.toFixed(2);\r\n }\r\n\r\n get convenienceFeeFormatted() {\r\n return this.registration.currencyIcon + this.convenienceFee.toFixed(2);\r\n }\r\n\r\n get total() {\r\n return this.registration.subTotal + this.registration.taxTotal + this.convenienceFee + this.donateTransactionFeeAmount;\r\n }\r\n\r\n get totalFormatted() {\r\n return this.registration.currencyIcon + this.total.toFixed(2);\r\n }\r\n\r\n get showPromoCode() {\r\n return (this.registration.ticketTotal > 0 || this.registration.addonTotal > 0) && this.event.hasPromos && !this.paymentProcessorOptions.alternatePaymentStripeId;\r\n }\r\n\r\n @Watch('total', { immediate: true })\r\n onTotalChanged(newTotal: number) {\r\n let paymentWidget = this.$refs.payment;\r\n if (paymentWidget) {\r\n\r\n // Why pass in subTotal instead of newTotal?\r\n // Because the payment container uses the total we supply to determine whether or not this is a free registration\r\n // If we use newTotal, we'll be including the invoice convenience fee, which would make the total positive on an otherwise free registration\r\n // By passing in subTotal, the invoice convenience fee will go away if our total is otherwise zero\r\n paymentWidget.onTotalUpdated(this.registration.subTotal); \r\n }\r\n }\r\n\r\n @Watch('proposedDonateTransactionFeeAmount', { immediate: true })\r\n onProposedDonateTransactionFeeAmountUpdated(value: number) {\r\n const paymentContainer = this.$refs.payment as PaymentContainerClass;\r\n if (paymentContainer && paymentContainer.onProposedDonateTransactionFeeAmountUpdated) {\r\n paymentContainer.onProposedDonateTransactionFeeAmountUpdated(value);\r\n }\r\n }\r\n\r\n handleIsDonatingTransactionFeeUpdated(value: boolean) {\r\n this.isDonatingTransactionFee = value;\r\n this.registration.isDonatingTransactionFee = value;\r\n }\r\n\r\n backToFirstStep() {\r\n this.$emit(\"backToFirstStep\");\r\n }\r\n\r\n get remainingSeats() {\r\n if (!this.attendeeBased) {\r\n return null;\r\n }\r\n\r\n // Map to keep track of how many seats are taken for each ticket\r\n const seatsTaken = new Map();\r\n\r\n // Iterate through attendees to count the seats taken for each ticket\r\n this.registration.attendees.forEach(attendee => {\r\n attendee.selectedTickets.forEach(ticket => {\r\n const currentCount = seatsTaken.get(ticket.id) || 0;\r\n seatsTaken.set(ticket.id, currentCount + 1);\r\n });\r\n });\r\n\r\n // Array to accumulate the remaining seats\r\n const remainingSeats: {\r\n id: any; name: string; price: number; formatedPrice: string; // Use the calculated price\r\n }[] = [];\r\n\r\n var currencyIcon = this.registration.currencyIcon;\r\n\r\n // Now calculate the remaining seats per ticket type\r\n seatsTaken.forEach((count, ticketId) => {\r\n // Find the ticket by ID to get the seatsPerTicket value\r\n const ticket = this.registration.attendees.flatMap(a => a.selectedTickets).find(t => t.id === ticketId);\r\n if (!ticket) return; // Continue if ticket not found\r\n\r\n const remaining = ticket.seatsPerTicket - count;\r\n const totalTicketPrice = this.registration.getTicketPrice(ticket, undefined, true);\r\n\r\n // Calculate the base price per seat\r\n const basePricePerSeat = Math.floor((totalTicketPrice / ticket.seatsPerTicket) * 100) / 100;\r\n let priceAccumulated = basePricePerSeat * count; // The amount already distributed\r\n\r\n for (let i = 0; i < remaining; i++) {\r\n let priceForThisSeat = basePricePerSeat;\r\n\r\n // Check if this is the last seat for this ticket type\r\n if (i === remaining - 1) {\r\n // Adjust the price for the last seat to include any remainder\r\n priceForThisSeat = totalTicketPrice - priceAccumulated;\r\n } else {\r\n priceAccumulated += priceForThisSeat;\r\n }\r\n\r\n // Push a placeholder for each remaining seat\r\n remainingSeats.push({\r\n id: ticketId,\r\n name: 'TBD',\r\n price: priceForThisSeat, // Use the calculated price\r\n formatedPrice: currencyIcon + priceForThisSeat.toFixed(2)\r\n });\r\n }\r\n });\r\n\r\n return remainingSeats;\r\n }\r\n\r\n get attendees() {\r\n return this.registration.attendees;\r\n }\r\n\r\n getAttendeeName(attendee: Attendee) {\r\n return attendee.name || attendee.selectedTickets[0].name;\r\n }\r\n\r\n onGuestEmailChanged() {\r\n this.updateConfirmationEmails(this.registration.guestEmail, 'guest');\r\n }\r\n\r\n onConvenienceFeeUpdated(newInvoiceFee: number) {\r\n this.convenienceFee = newInvoiceFee;\r\n }\r\n\r\n onBillablePartyTaxableUpdated(taxable: boolean) {\r\n this.taxable = taxable;\r\n }\r\n\r\n onPaymentTypeUpdated(paymentType: string) {\r\n this.paymentType = paymentType;\r\n }\r\n\r\n updateDiscountError(discountError: string) {\r\n if (discountError) {\r\n this.errors.add({\r\n field: 'discount',\r\n msg: discountError\r\n });\r\n }\r\n else {\r\n this.errors.remove('discount');\r\n }\r\n }\r\n\r\n updatePromoFocus(isPromoInFocus: boolean) {\r\n this.isPromoInFocus = isPromoInFocus;\r\n }\r\n\r\n @Watch('taxExempt', { immediate: true })\r\n onTaxExemptChanged() {\r\n this.registration.taxExempt = this.taxExempt;\r\n }\r\n\r\n showAttendee(attendee: Attendee) {\r\n this.$emit(\"showAttendee\", attendee);\r\n }\r\n\r\n showAddon(addon: Addon) {\r\n this.$emit(\"showAddon\", addon);\r\n }\r\n\r\n get visibleAddons() {\r\n return this.registration.selectedAddons.filter(addon => !addon.isDonation || addon.subTotal > 0);\r\n }\r\n \r\n updateConfirmationEmails(enteredAddress: string | null, addressType: keyof typeof EventCheckout.prototype.emailForConfirmation) {\r\n // Remove the previous address in case it was updated\r\n if (this.emailForConfirmation[addressType]) {\r\n this.registration.confirmationEmails = this.registration.confirmationEmails.filter(addr => addr.toLowerCase() !== (this.emailForConfirmation[addressType] || '').toLowerCase())\r\n }\r\n\r\n if (enteredAddress && !this.registration.confirmationEmails.some((x) => x.toLowerCase() === (enteredAddress || '').toLowerCase())) {\r\n this.registration.confirmationEmails.push(enteredAddress)\r\n\r\n // Only set this if the address is new to the list\r\n this.emailForConfirmation[addressType] = enteredAddress\r\n }\r\n }\r\n\r\n updateTaxRate(billingState: string = \"\") {\r\n paymentsRepo.getTaxRate(\"\", billingState, this.currentUser.customerID || 0, this.event.id)\r\n .then((taxRate: any) => {\r\n this.registration.taxRate = taxRate;\r\n })\r\n .catch((axiosResponse: AxiosResponse) => {\r\n this.registration.taxRate = this.event.taxRate;\r\n });\r\n }\r\n\r\n get guestOnlyAttendee() {\r\n let emails = this.registration.attendees.map(attendee => attendee.email);\r\n let firstNonNullEmail = emails.find(email => email !== null);\r\n return !this.currentUser.isLoggedIn && ((this.registration.attendees.length == 1 && this.registration.attendees[0].email == this.registration.guestEmail) || emails.every(email => email == null || email == firstNonNullEmail));\r\n }\r\n\r\n get allAttendeesHavePurchaserEmail() {\r\n return this.registration.confirmationEmails && this.registration.confirmationEmails.every(email => email === this.currentUser.email);\r\n }\r\n\r\n get isCheckoutDisabled() {\r\n return this.registration.attendees.length === 0 || this.isPromoInFocus;\r\n }\r\n} ","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!./EventCheckoutVue.ts?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!./EventCheckoutVue.ts?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./EventCheckout.vue?vue&type=template&id=4e17f30a&\"\nimport script from \"./EventCheckoutVue.ts?vue&type=script&lang=ts&\"\nexport * from \"./EventCheckoutVue.ts?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\nexport interface DtoCurrentUser {\r\n customerID?: number | null;\r\n email?: string | null;\r\n professionalEmail?: string | null;\r\n firstAndLastName?: string | null;\r\n isLoggedIn: boolean;\r\n isMember: boolean;\r\n hasSomeAdminAccess: boolean;\r\n defaultBillablePartyID: number | null;\r\n taxable: boolean;\r\n}\r\n\r\nexport function createDtoCurrentUser(userContext?: DtoCurrentUser | any) {\r\n const result = {\r\n customerID: null,\r\n email: null,\r\n professionalEmail: null,\r\n firstAndLastName: null,\r\n isLoggedIn: false,\r\n isMember: false,\r\n hasSomeAdminAccess: false,\r\n defaultBillablePartyID: null,\r\n taxable: true\r\n };\r\n\r\n if (userContext) {\r\n Object.assign(result, userContext);\r\n }\r\n return result;\r\n}","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.isEditable)?_c('div',{staticClass:\"editor-container\"},[_c('button',{staticClass:\"btn editor-save hidden\",attrs:{\"type\":\"button\",\"data-region\":_vm.parsedRegionName,\"data-component\":_vm.component,\"data-component-id\":_vm.componentId}},[_c('span',{staticClass:\"novicon novicon-save\"}),_vm._v(\" Save\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.html),expression:\"html\"}],attrs:{\"type\":\"hidden\",\"id\":_vm.hiddenHtmlInputName,\"name\":_vm.hiddenHtmlInputName},domProps:{\"value\":(_vm.html)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.html=$event.target.value}}}),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.html),expression:\"html\"}],attrs:{\"type\":\"hidden\",\"id\":_vm.hiddenOriginalHtmlInputName,\"name\":_vm.hiddenOriginalHtmlInputName},domProps:{\"value\":(_vm.html)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.html=$event.target.value}}}),_c('div',{staticClass:\"hidden\",class:[_vm.simpleEditor ? 'tinymce_simple' : 'tinymce'],attrs:{\"contenteditable\":\"true\",\"id\":_vm.editableRegionName,\"name\":_vm.editableRegionName}}),_c('div',{staticClass:\"preview-tinymce-editor\",class:{ empty: !_vm.html },domProps:{\"innerHTML\":_vm._s(_vm.staticHtml)}})]):_vm._e(),(!_vm.isEditable)?_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.staticHtml)}}):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { Editor } from 'tinymce';\r\nimport { Component, Vue, Prop, Inject, Emit } from 'vue-property-decorator';\r\nimport { DtoCurrentUser, createDtoCurrentUser } from '@/common/types/user/DtoCurrentUser';\r\n\r\n@Component({\r\n name: 'NoviTinyMce'\r\n})\r\nexport default class NoviTinyMce extends Vue {\r\n @Prop({ required: false, default: \"\" })\r\n regionName!: string;\r\n\r\n @Prop({ required: false, default: \"\" })\r\n component!: string;\r\n\r\n @Prop({ required: false, default: \"\" })\r\n componentId!: string;\r\n\r\n @Prop({ required: true, default: \"\" })\r\n value!: string;\r\n\r\n @Prop({ required: true, default: false })\r\n simpleEditor!: boolean;\r\n\r\n @Inject('user')\r\n currentUser!: DtoCurrentUser;\r\n\r\n html: string = \"\";\r\n\r\n get parsedRegionName() {\r\n return this.regionName.replace(\" \", \"_\");\r\n }\r\n\r\n get editableRegionName() {\r\n return \"editable_\" + this.parsedRegionName;\r\n }\r\n\r\n get hiddenHtmlInputName() {\r\n return this.editableRegionName + \"_html\";\r\n }\r\n\r\n get hiddenOriginalHtmlInputName() {\r\n return this.editableRegionName + \"_html_original\";\r\n }\r\n\r\n get isEditable() {\r\n return this.currentUser.hasSomeAdminAccess;\r\n }\r\n\r\n get staticHtml() {\r\n\r\n //@ts-ignore\r\n //if (typeof ProcessContentForView != \"undefined\") {\r\n // //@ts-ignore\r\n // return ProcessContentForView(this.html);\r\n //}\r\n return this.html;\r\n }\r\n\r\n mounted() {\r\n this.html = this.value;\r\n if (!this.isEditable)\r\n return;\r\n\r\n var self = this;\r\n\r\n document.addEventListener('tinymceBlurred', function (evt: CustomEvent) {\r\n var content = evt.detail.getContent();\r\n self.emitInput(content);\r\n }, false);\r\n\r\n // We have to fire this custom event to let the INLINE editor (not the classic editor ) know that the content regions are loaded \r\n // and ready to be initialized.\r\n // For this to work, we have to make sure that the `_StaticPageRegionJS.cshtml` partial view is loaded on the page. This partial view\r\n // looks for a `ViewData[\"WaitToInitTinyMce\"] = true.ToString();` value. If that value is present (from the parent page), then the \r\n // partial view will NOT initialize the inline TinyMCE editor and instead allow other scripts (like this one) to do so \r\n // with this custom event.\r\n const contentRegionsLoadedEvent = new CustomEvent(window.noviCmsNamespace.contentRegionsLoadedEvent, { detail: {}, bubbles: true, cancelable: true });\r\n\r\n // If the DOMContentLoaded event has already fired and the readyState is loaded, we'll just fire the custom event\r\n if (document.readyState === 'complete') {\r\n document.dispatchEvent(contentRegionsLoadedEvent);\r\n }\r\n // If the document.readyState is in interactive mode (i.e. scripts and images still loading), we'll wait a bit and then\r\n // fire the custom event to insure that the TinyMCE scripts have loaded\r\n else if( document.readyState === 'interactive') {\r\n const tinyMCEInitTimeout = setTimeout(() => {\r\n document.dispatchEvent(contentRegionsLoadedEvent);\r\n clearTimeout(tinyMCEInitTimeout);\r\n }, 500);\r\n }\r\n // Otherwise, we'll wait for the DOM to load and then fire the custom event\r\n else {\r\n document.addEventListener('DOMContentLoaded', function () {\r\n document.dispatchEvent(contentRegionsLoadedEvent);\r\n });\r\n }\r\n }\r\n\r\n beforeDestroy() {\r\n if (!this.isEditable)\r\n return;\r\n\r\n //@ts-ignore\r\n window.tinymce.execCommand(\"mceRemoveEditor\", true, this.editableRegionName);\r\n }\r\n\r\n @Emit('input')\r\n emitInput(html: string) {\r\n return html;\r\n }\r\n}","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!./NoviTinyMceVue.ts?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!./NoviTinyMceVue.ts?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NoviTinyMce.vue?vue&type=template&id=00b3541e&\"\nimport script from \"./NoviTinyMceVue.ts?vue&type=script&lang=ts&\"\nexport * from \"./NoviTinyMceVue.ts?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { Component, Vue, Provide, Prop } from 'vue-property-decorator';\r\nimport { ApiErrorResponse, createDtoEvent, SelectListItemWithSubtext } from '@/common/types/AllTypesExports';\r\nimport { IEventRegistrationGlobals } from './EventRegistrationGlobals';\r\nimport { eventRepo } from '../../common/repositories/EventRepo';\r\nimport NoviStepper from '../../components/stepper/NoviStepper.vue'\r\nimport Step, { createStep } from '../../components/stepper/Step';\r\nimport ErrorAlert from '../../components/errors/ErrorAlert.vue';\r\nimport ValidationErrors from '../../components/errors/ValidationErrors.vue';\r\nimport { DtoEvent } from '../../common/types/event/DtoEvent';\r\nimport ValidationService from '../../common/services/ValidationService';\r\nimport { AxiosResponse } from 'axios';\r\nimport EventRegistrationTickets from '../../components/event/EventRegistrationTickets.vue';\r\nimport AttendeeSelector from '../../components/event/AttendeeSelector.vue';\r\nimport EventAttendeeForm from '../../components/event/EventAttendeeForm.vue';\r\nimport { Multiselect } from 'vue-multiselect';\r\nimport { createAttendeeFromSelectListItemWithSubText, createAttendee, Attendee, DtoAttendee } from '../../common/types/event/DtoAttendee';\r\nimport dayjs from 'dayjs';\r\nimport { createEventRegistration, EventRegistration } from '../../common/types/event/DtoEventRegistration';\r\nimport { TicketsAndAddons, createTicketsAndAddons } from '../../common/types/event/DtoTicketsAndAddons';\r\nimport EventCheckout from '../../components/event/EventCheckout.vue';\r\nimport { customerRepo } from '../../common/repositories/CustomerRepo';\r\nimport { DtoCurrentUser, createDtoCurrentUser } from '@/common/types/user/DtoCurrentUser';\r\nimport NoviTinyMce from '../../components/inputs/tinymce/NoviTinyMce.vue';\r\nimport { Addon } from '../../common/types/event/DtoAddon';\r\nimport InfoAlert from '../../components/errors/InfoAlert.vue';\r\nimport cloneDeep from 'lodash/cloneDeep';\r\nimport { Ticket } from '../../common/types/event/DtoTicket';\r\nimport debounce from 'lodash/debounce';\r\nimport EventBus from '@/common/services/EventBus';\r\n\r\ndeclare let noviNs: IEventRegistrationGlobals;\r\n\r\n@Component({\r\n name: 'EventRegistration',\r\n components: {\r\n NoviStepper,\r\n ErrorAlert,\r\n ValidationErrors,\r\n EventRegistrationTickets,\r\n AttendeeSelector,\r\n Multiselect,\r\n EventAttendeeForm,\r\n EventCheckout,\r\n NoviTinyMce,\r\n InfoAlert\r\n }\r\n})\r\nexport default class EventRegistrationPage extends Vue {\r\n\r\n @Provide('event')\r\n event: DtoEvent = createDtoEvent();\r\n\r\n // Map used for 'Require Unique Emails' setting\r\n attendeeEmailsTicketsMap: Array<{ email: string; ticketId: number }> = [];\r\n\r\n eligibleAttendees: Attendee[] = [];\r\n\r\n currentAttendeeIndex: number = 0;\r\n\r\n @Provide('registration')\r\n registrationModel: EventRegistration = createEventRegistration();\r\n\r\n @Provide('ticketsAndAddons')\r\n ticketsAndAddons: TicketsAndAddons = createTicketsAndAddons();\r\n\r\n @Provide('user')\r\n currentUser: DtoCurrentUser = createDtoCurrentUser();\r\n\r\n hideGuestLoginAlert: boolean = false;\r\n\r\n errorMessage: string = '';\r\n globalErrorMessage: string = '';\r\n\r\n steps: Array = [];\r\n currentStep: Step = createStep();\r\n\r\n hasErrorOnContinue: boolean = false;\r\n isSaving: boolean = false;\r\n isLoadingEvent: boolean = true;\r\n isLoadingEligibleAttendees: boolean = true;\r\n isLoadingTicketsAndAddons: boolean = true;\r\n\r\n private emailToCheck: string = '';\r\n\r\n @Provide('validator')\r\n $validator: any = this.$validator;\r\n\r\n // init calls\r\n mounted() {\r\n this.registrationModel.currencyIcon = noviNs.alternatePaymentCurrencyIcon;\r\n\r\n this.loadEvent();\r\n\r\n if (this.event.attendeeBased) {\r\n this.loadEligibleAttendees();\r\n this.loadTicketsAndAddons();\r\n }\r\n else {\r\n this.loadTicketsAndAddons();\r\n this.loadEligibleAttendees();\r\n }\r\n\r\n this.loadCurrentUser();\r\n this.resetFocus();\r\n }\r\n\r\n // Computed Variables\r\n get shippingAddressInstructions(): string { return noviNs.shippingAddressInstructions };\r\n get professionalEmailInstructions(): string { return noviNs.professionalEmailInstructions };\r\n get parentMemberInstructions(): string { return noviNs.parentMemberInstructions };\r\n get parentMemberLabel(): string { return noviNs.parentLabel };\r\n get parentMemberRequired(): boolean { return noviNs.parentRequired };\r\n\r\n get nextStepText() {\r\n return 'Continue';\r\n }\r\n\r\n get previousStepText() {\r\n return 'Back';\r\n }\r\n\r\n get showNext() {\r\n if (this.currentStep == this.checkoutStep) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n get showBack() {\r\n return this.steps.indexOf(this.currentStep) != 0;\r\n }\r\n\r\n get disableNext() {\r\n return (this.errors && this.errors.count() > 0) || this.isSaving;\r\n }\r\n\r\n get isLoading() {\r\n return this.isLoadingEvent || this.isLoadingEligibleAttendees || this.isLoadingTicketsAndAddons;\r\n }\r\n\r\n get currentAttendee() {\r\n if (this.registrationModel && this.registrationModel.attendees && this.registrationModel.attendees.length > 0) {\r\n return this.registrationModel.attendees[this.currentAttendeeIndex];\r\n }\r\n return createAttendee();\r\n }\r\n\r\n get currentTicketKey() {\r\n if (this.event.attendeeBased) {\r\n return this.currentAttendeeIndex + '-' + this.currentAttendee.uniqueId;\r\n }\r\n return \"\";\r\n }\r\n\r\n get groupedAttendees() {\r\n if (this.event.attendeeBased) {\r\n return this.registrationModel.attendees;\r\n }\r\n\r\n let attendees: Attendee[] = [];\r\n\r\n this.registrationModel.attendees.forEach(attendee => {\r\n var foundAttendee = attendees.find(item => item.matches(attendee));\r\n if (foundAttendee) {\r\n attendee.selectedTickets.forEach(ticket => {\r\n if (foundAttendee) {\r\n foundAttendee.selectedTickets.push(cloneDeep(ticket));\r\n }\r\n });\r\n }\r\n else {\r\n attendees.push(cloneDeep(attendee));\r\n }\r\n });\r\n\r\n return attendees;\r\n }\r\n\r\n // Private Methods\r\n private whoIsGoingStep: Step = {\r\n name: \"who-is-going\",\r\n title: \"Who's going?\",\r\n iconClass: \"fas fa-user\",\r\n completed: false\r\n };\r\n\r\n private ticketsStep: Step = {\r\n name: \"tickets\",\r\n title: \"Tickets\",\r\n iconClass: \"fas fa-cart-plus\",\r\n completed: false\r\n };\r\n\r\n private checkoutStep: Step = {\r\n name: \"checkout\",\r\n title: \"Checkout\",\r\n iconClass: \"fas fa-shopping-cart\",\r\n completed: false\r\n };\r\n\r\n private loadSteps() {\r\n if (this.event.attendeeBased) {\r\n this.currentStep = this.whoIsGoingStep;\r\n this.steps.push(this.whoIsGoingStep);\r\n this.steps.push(this.ticketsStep);\r\n }\r\n else {\r\n this.currentStep = this.ticketsStep;\r\n this.steps.push(this.ticketsStep);\r\n this.steps.push(this.whoIsGoingStep);\r\n } \r\n\r\n this.steps.push(this.checkoutStep);\r\n }\r\n\r\n private moveToNextStep() {\r\n var moveNextStep = true;\r\n this.hasErrorOnContinue = false;\r\n this.errorMessage = '';\r\n\r\n if (this.event.attendeeBased) {\r\n if (this.currentStep == this.whoIsGoingStep) {\r\n if (!this.currentUser.isLoggedIn && this.allItemsRestrictedForGuestPurchase) {\r\n moveNextStep = false;\r\n this.hasErrorOnContinue = true;\r\n this.errorMessage = 'Please login to register';\r\n return;\r\n }\r\n else if (this.isEmpty(this.registrationModel.attendees)) {\r\n moveNextStep = false;\r\n this.hasErrorOnContinue = true;\r\n this.errorMessage = 'You must select at least one attendee before proceeding to the next step';\r\n return;\r\n }\r\n }\r\n else if (this.currentStep == this.ticketsStep) {\r\n Object.keys(this.currentAttendee.attendeeCustomFieldValues).forEach(key => {\r\n // Check if `customFieldId` is missing on any custom field values\r\n if (!this.currentAttendee.attendeeCustomFieldValues[key].hasOwnProperty('customFieldId')) {\r\n // Assign `customFieldId` based on the key\r\n this.currentAttendee.attendeeCustomFieldValues[key].customFieldId = parseInt(key);\r\n }\r\n });\r\n\r\n // Make sure they've selected a ticket\r\n if (this.isEmpty(this.currentAttendee.selectedTickets)) {\r\n moveNextStep = false;\r\n this.hasErrorOnContinue = true;\r\n this.errorMessage = 'Please choose a ticket.';\r\n return;\r\n }\r\n\r\n // If this isn't the last attendee, then proceed to the next one\r\n if (this.currentAttendeeIndex < (this.registrationModel.attendees.length - 1)) {\r\n this.currentAttendeeIndex++;\r\n moveNextStep = false;\r\n } else {\r\n // reset the index in case users go back\r\n this.currentAttendeeIndex = 0;\r\n }\r\n }\r\n }\r\n else {\r\n if (this.currentStep == this.ticketsStep) {\r\n if (!this.currentUser.isLoggedIn && this.allItemsRestrictedForGuestPurchase) {\r\n moveNextStep = false;\r\n this.hasErrorOnContinue = true;\r\n this.errorMessage = 'Please login to register';\r\n return;\r\n }\r\n // Make sure they've selected a ticket\r\n else if (this.isEmpty(this.registrationModel.purchasedTickets)) {\r\n moveNextStep = false;\r\n this.hasErrorOnContinue = true;\r\n this.errorMessage = 'Please choose a ticket.';\r\n return;\r\n }\r\n }\r\n else if (this.currentStep == this.whoIsGoingStep) {\r\n let errorMessage = \"\";\r\n this.groupedAttendees.forEach(attendee => {\r\n let duplicates: Ticket[] = [];\r\n\r\n attendee.selectedTickets.forEach(ticket => {\r\n if (attendee.customerId && attendee.customerId > 0) {\r\n if (attendee.selectedTickets.filter(item => item.id == ticket.id).length > 1 && !duplicates.find(item => item.id == ticket.id)) {\r\n duplicates.push(ticket);\r\n errorMessage += ticket.name + \" ticket is selected more than once for attendee \" + attendee.name + \".\\n\"; \r\n }\r\n }\r\n });\r\n });\r\n\r\n if (errorMessage != \"\") {\r\n moveNextStep = false;\r\n this.hasErrorOnContinue = true;\r\n this.errorMessage = errorMessage;\r\n return;\r\n }\r\n }\r\n }\r\n\r\n if (moveNextStep) {\r\n this.currentStep.completed = true;\r\n this.currentStep = this.steps[this.steps.indexOf(this.currentStep) + 1];\r\n }\r\n\r\n this.scrollToTop();\r\n }\r\n\r\n private scrollToTop() {\r\n window.scrollTo({ top: (this.$refs.container).offsetTop });\r\n }\r\n\r\n resetFocus() {\r\n let containerEl = this.$refs.container;\r\n if (containerEl) {\r\n containerEl.focus();\r\n }\r\n } \r\n\r\n private loadEvent() {\r\n this.isLoadingEvent = true;\r\n eventRepo.getEvent(noviNs.eventId)\r\n .then(dtoEvent => {\r\n this.event = Object.assign(this.event, dtoEvent);\r\n this.registrationModel.eventId = this.event.id;\r\n\r\n // Once we know the event settings, check and load data for unique emails settings (if needed)\r\n if (this.event.requireUniqueEmailPerAttendee) {\r\n this.loadAttendeeEmailsTicketsMap();\r\n }\r\n })\r\n .catch(this.getLoadingErrorHandler(\"Unable to load the event information.\"))\r\n .finally(() => {\r\n this.isLoadingEvent = false;\r\n this.loadSteps();\r\n });\r\n }\r\n\r\n private loadAttendeeEmailsTicketsMap() {\r\n this.isLoadingEvent = true;\r\n eventRepo.loadAttendeeEmailsTicketsMap(noviNs.eventId)\r\n .then(attendeeEmailsTicketsMap => {\r\n this.attendeeEmailsTicketsMap = attendeeEmailsTicketsMap;\r\n })\r\n .catch(this.getLoadingErrorHandler(\"Unable to load the event attendee emails tickets map.\"))\r\n .finally(() => {\r\n this.isLoadingEvent = false;\r\n });\r\n }\r\n\r\n private loadEligibleAttendees() {\r\n this.isLoadingEligibleAttendees = true;\r\n eventRepo.getEligibleAttendees(noviNs.eventId)\r\n .then(dtoEligibleAttendees => { \r\n this.eligibleAttendees = dtoEligibleAttendees; // Don't use Object.assign here - The attendee selector won't recompute its options if you do\r\n })\r\n .catch(this.getLoadingErrorHandler(\"Unable to load the eligible attendees.\"))\r\n .finally(() => {\r\n this.isLoadingEligibleAttendees = false;\r\n this.selectCurrentUserAsAttendee();\r\n });\r\n }\r\n\r\n private loadTicketsAndAddons() {\r\n var self = this;\r\n this.isLoadingTicketsAndAddons = true;\r\n eventRepo.getTicketsAndAddons(noviNs.eventId)\r\n .then(ticketsAndAddons => {\r\n Object.assign(self.ticketsAndAddons, ticketsAndAddons);\r\n })\r\n .catch(self.getLoadingErrorHandler(\"Unable to load the tickets and addons.\"))\r\n .finally(() => {\r\n self.isLoadingTicketsAndAddons = false;\r\n if (this.ticketsAndAddons.allItemsAreFree) {\r\n this.checkoutStep.title = \"Confirm\";\r\n }\r\n if (!this.isEmpty(this.ticketsAndAddons.products)) {\r\n this.ticketsStep.title = \"Tickets & Add-ons\";\r\n }\r\n });\r\n }\r\n\r\n private loadCurrentUser() {\r\n var self = this;\r\n customerRepo.getCurrentUser()\r\n .then(user => {\r\n Object.assign(this.currentUser, user);\r\n })\r\n .catch(self.getLoadingErrorHandler(\"Unable to load current user.\"))\r\n .finally(() => {\r\n });\r\n }\r\n\r\n private selectCurrentUserAsAttendee() {\r\n if (this.event.attendeeBased && !this.event.alreadyAttending && this.currentUser.customerID) {\r\n var currentUser = this.eligibleAttendees.find(item => item.customerId == this.currentUser.customerID);\r\n if (currentUser) {\r\n this.registrationModel.attendees.push(createAttendee(currentUser));\r\n }\r\n }\r\n }\r\n\r\n private getLoadingErrorHandler(message: string) {\r\n const comp = this;\r\n return function (axiosResponse: AxiosResponse) {\r\n if (axiosResponse && axiosResponse.data && axiosResponse.data.message) {\r\n comp.globalErrorMessage = `${message} ${axiosResponse.data.message}`;\r\n } else {\r\n comp.globalErrorMessage = `${message}`;\r\n }\r\n\r\n //comp.hasError = true;\r\n throw axiosResponse;\r\n }\r\n }\r\n\r\n // public methods\r\n saveAndNext() {\r\n // clear error message in case validation find a different error.\r\n this.errorMessage = '';\r\n this.hasErrorOnContinue = false;\r\n\r\n this.$validator.validate()\r\n .then((valid: any) => {\r\n if (valid) {\r\n this.moveToNextStep();\r\n }\r\n else {\r\n ValidationService.scrollToFirstInvalidField(this.$el);\r\n }\r\n });\r\n }\r\n\r\n back() {\r\n if (this.event.attendeeBased && this.currentStep == this.ticketsStep && this.currentAttendeeIndex > 0) {\r\n this.currentAttendeeIndex--; \r\n }\r\n else {\r\n this.currentStep = this.steps[this.steps.indexOf(this.currentStep) - 1];\r\n }\r\n\r\n this.scrollToTop();\r\n }\r\n\r\n onAttendeeUpdated(attendee: SelectListItemWithSubtext) {\r\n if (attendee != null && this.event.attendeeBased) {\r\n if (attendee.id == 0) {\r\n this.registrationModel.attendees.push(createAttendeeFromSelectListItemWithSubText(attendee));\r\n }\r\n else if (attendee.id == -1) {\r\n this.registrationModel.attendees.push(createAttendeeFromSelectListItemWithSubText({ id: -1, text: \"TBD\" }));\r\n }\r\n else {\r\n var selectedAttendee = this.eligibleAttendees.find(item => item.customerId == attendee.id);\r\n if (selectedAttendee != null) {\r\n this.registrationModel.attendees.push(createAttendee(selectedAttendee));\r\n }\r\n }\r\n }\r\n\r\n EventBus.$emit(\"attendee-selector-change\");\r\n }\r\n\r\n removeAttendee(attendee: Attendee) {\r\n var index = this.registrationModel.attendees.indexOf(attendee);\r\n\r\n // if we are deleting the last attendee then go back to the who is going step\r\n if (this.registrationModel.attendees.length == 1) {\r\n this.currentStep = this.whoIsGoingStep;\r\n }\r\n\r\n // leave the index alone unless we are deleting the last attendee while having more than 1 attendee\r\n if (this.registrationModel.attendees.length == (index + 1)) {\r\n this.currentAttendeeIndex = Math.max(this.currentAttendeeIndex - 1, 0);\r\n }\r\n\r\n if (index != -1) {\r\n this.registrationModel.attendees.splice(index, 1);\r\n }\r\n }\r\n\r\n get allItemsRestrictedForGuestPurchase() {\r\n if (!this.ticketsAndAddons) {\r\n //if tickets are still not loaded\r\n return false;\r\n }\r\n\r\n return !this.ticketsAndAddons.ticketCategories\r\n .some(category => category.tickets.findIndex(ticket => ticket.restrictionTitle == null) != -1)\r\n }\r\n\r\n get guestNotAllowedMessage() {\r\n if (this.event.purchaserHasManagementAccess && noviNs.allowUsersToRegisterOtherStaffForEvents) {\r\n return \"Can't find someone? Make sure to add them in your Member Compass first.\";\r\n }\r\n\r\n return \"Can't find someone? Please contact us.\";\r\n }\r\n\r\n hideGuestAlert() {\r\n this.hideGuestLoginAlert = true;\r\n }\r\n\r\n login() {\r\n window.location.href = \"/login?returnUrl=\" + window.location.pathname;\r\n //window.location.pathname\r\n }\r\n\r\n backToFirstStep() {\r\n this.currentStep = this.steps[0];\r\n }\r\n\r\n showAttendee(attendee: Attendee) {\r\n this.hasErrorOnContinue = false;\r\n this.errorMessage = '';\r\n this.currentAttendeeIndex = this.registrationModel.attendees.findIndex(x => x.matches(attendee));\r\n this.currentStep = this.event.attendeeBased ? this.ticketsStep : this.whoIsGoingStep;\r\n }\r\n\r\n showAddon() {\r\n this.hasErrorOnContinue = false;\r\n this.errorMessage = '';\r\n this.currentStep = this.ticketsStep;\r\n }\r\n\r\n noviStepperEntered() {\r\n // For ticket based events on the whos going step if we have a currentAttendeeIndex with a value greater than 0 then scroll to\r\n // the nearests attendee from\r\n if (!this.event.attendeeBased && this.currentStep == this.whoIsGoingStep && this.currentAttendeeIndex > 0) {\r\n // get first attendee form associated to the current attendee.\r\n var form = window.document.getElementById('attendee-form-' + this.currentAttendee.uniqueId);\r\n \r\n if (form != null) {\r\n form.scrollIntoView({ behavior: 'auto', block: 'center', inline: 'center' })\r\n }\r\n }\r\n // If we get here then reset the currentAttendeeIndex in case we go back to the tickets step after leaving.\r\n else if (!this.event.attendeeBased || this.currentStep != this.ticketsStep) {\r\n this.currentAttendeeIndex = 0;\r\n }\r\n\r\n this.hasErrorOnContinue = false;\r\n this.errorMessage = '';\r\n\r\n this.resetFocus();\r\n }\r\n\r\n private isEmpty(array: any[]) {\r\n return !array || !array.length;\r\n }\r\n\r\n private updateEmailToValidate(email: string): void {\r\n this.emailToCheck = email;\r\n }\r\n\r\n\r\n // Debounce the function when necessary\r\n private debouncedCheckUniqueEmail = debounce(this.checkUniqueEmail.bind(this), 300);\r\n\r\n private validateUniqueEmail(validator: any): void {\r\n validator.errors.remove('email');\r\n this.debouncedCheckUniqueEmail(validator);\r\n }\r\n\r\n private checkUniqueEmail(validator: any): void {\r\n if (!this.emailToCheck || !this.attendeeEmailsTicketsMap.length) {\r\n return;\r\n }\r\n\r\n if (this.emailToCheck && this.event.attendeeBased && this.event.requireUniqueEmailPerAttendee) {\r\n // Check initial known emails first before making any requests (immediate validation)\r\n const hasDuplicate = this.checkImmediateUniqueEmails(validator);\r\n\r\n if (hasDuplicate) {\r\n // Add error only if it doesn't already exist\r\n if (!validator.errors.has('email')) {\r\n validator.errors.add({\r\n field: 'email',\r\n msg: 'This email is already linked to one or more selected tickets for this event.',\r\n });\r\n }\r\n }\r\n else {\r\n // Double-check all attendees in case any relevant emails have been registered while user works on this registration\r\n this.checkAllUniqueEmails(validator);\r\n }\r\n }\r\n }\r\n\r\n private checkImmediateUniqueEmails(validator: any): boolean {\r\n // Utility function to normalize emails for consistent comparison\r\n const normalizeEmail = (email: string | null): string => email?.toLowerCase().trim() || '';\r\n\r\n // Normalize the email to check\r\n const thisEmail = normalizeEmail(this.emailToCheck);\r\n\r\n // If the email is empty or invalid, return false immediately\r\n if (!thisEmail.length) {\r\n return false;\r\n }\r\n\r\n // Generalized function to check for duplicates\r\n const hasDuplicateTickets = (attendees: { email: string; ticketId: number }[]): boolean => {\r\n const seen = new Set();\r\n for (const { email, ticketId } of attendees) {\r\n if (!email.length) {\r\n // Skip processing for empty or invalid emails\r\n continue;\r\n }\r\n\r\n const key = `${email}-${ticketId}`;\r\n if (seen.has(key)) {\r\n return true; // Duplicate found\r\n }\r\n\r\n seen.add(key);\r\n }\r\n\r\n return false; // No duplicates\r\n };\r\n\r\n // Prepare data for checking duplicates in the registration model\r\n const newAttendeesWithTickets: { email: string; ticketId: number }[] =\r\n this.registrationModel.attendees\r\n ?.filter(attendee => normalizeEmail(attendee.email) === thisEmail) // Filter matching attendees\r\n .flatMap(attendee =>\r\n attendee.selectedTickets.map(ticket => ({\r\n email: normalizeEmail(attendee.email),\r\n ticketId: ticket.id\r\n }))\r\n ) || [];\r\n\r\n // Prepare data for checking duplicates in existing attendees\r\n const existingAttendeesWithTickets: { email: string; ticketId: number }[] =\r\n this.attendeeEmailsTicketsMap\r\n ?.filter(attendee => normalizeEmail(attendee.email) === thisEmail) // Filter matching attendees\r\n .map(attendee => ({\r\n email: normalizeEmail(attendee.email),\r\n ticketId: attendee.ticketId\r\n })) || [];\r\n\r\n // Check for duplicates in both lists\r\n return hasDuplicateTickets(newAttendeesWithTickets) || hasDuplicateTickets(existingAttendeesWithTickets);\r\n }\r\n\r\n private checkAllUniqueEmails(validator: any): void {\r\n \r\n const ticketIds = this.registrationModel.attendees.flatMap((attendee: any) => attendee.selectedTickets.map((ticket: any) => ticket.id));\r\n\r\n eventRepo.checkAttendeeDuplicateEmails(this.event.id, this.emailToCheck, ticketIds)\r\n .then((data) => {\r\n if (data.IsDuplicateEmail) {\r\n // Add error only if it doesn't already exist\r\n if (!validator.errors.has('email')) {\r\n validator.errors.add({\r\n field: 'email',\r\n msg: 'This email is already linked to one or more selected tickets for this event.',\r\n });\r\n }\r\n }\r\n })\r\n .catch((error) => {\r\n console.error('Error checking duplicate email:', error);\r\n });\r\n }\r\n}","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!./EventRegistrationPageVue.ts?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!./EventRegistrationPageVue.ts?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./EventRegistrationPage.vue?vue&type=template&id=48980b79&\"\nimport script from \"./EventRegistrationPageVue.ts?vue&type=script&lang=ts&\"\nexport * from \"./EventRegistrationPageVue.ts?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import 'es6-object-assign/auto'\r\nimport Vue from 'vue'\r\nimport EventRegistrationPage from './EventRegistrationPage.vue'\r\nimport '../../common/GlobalVueConfig';\r\n\r\nnew Vue({\r\n render: h => h(EventRegistrationPage)\r\n}).$mount('#event-registration-app');\r\n"],"sourceRoot":""}