{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/pages/event-registration/EventRegistrationPage.vue?dd68","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","Attendee","[object Object]","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","RandomGenerator","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","Math","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 }","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 != null && this.currentUser.customerID != undefined) || 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":""}