{"version":3,"file":"registrationEntry.js","sources":["../../src/Event/RegistrationEntry/types.partial.ts","../../src/Event/RegistrationEntry/utils.partial.ts","../../src/Event/RegistrationEntry/intro.partial.ts","../../src/Event/RegistrationEntry/registrantPersonField.partial.ts","../../src/Event/RegistrationEntry/registrantAttributeField.partial.ts","../../src/Event/RegistrationEntry/feeField.partial.ts","../../src/Event/RegistrationEntry/registrant.partial.ts","../../src/Event/RegistrationEntry/registrants.partial.ts","../../src/Event/RegistrationEntry/registrationEnd.partial.ts","../../src/Event/RegistrationEntry/registrationStart.partial.ts","../../src/Event/RegistrationEntry/sessionRenewal.partial.ts","../../src/Event/RegistrationEntry/success.partial.ts","../../src/Event/RegistrationEntry/payment.partial.ts","../../src/Event/RegistrationEntry/costSummary.partial.ts","../../src/Event/RegistrationEntry/discountCodeForm.partial.ts","../../src/Event/RegistrationEntry/registrar.partial.ts","../../src/Event/RegistrationEntry/summary.partial.ts","../../src/Event/registrationEntry.ts"],"sourcesContent":["// \r\n// Copyright by the Spark Development Network\r\n//\r\n// Licensed under the Rock Community License (the \"License\");\r\n// you may not use this file except in compliance with the License.\r\n// You may obtain a copy of the License at\r\n//\r\n// http://www.rockrms.com/license\r\n//\r\n// Unless required by applicable law or agreed to in writing, software\r\n// distributed under the License is distributed on an \"AS IS\" BASIS,\r\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n// See the License for the specific language governing permissions and\r\n// limitations under the License.\r\n// \r\n//\r\n\r\nimport { Guid } from \"@Obsidian/Types\";\r\nimport { GatewayControlBag } from \"@Obsidian/ViewModels/Controls/gatewayControlBag\";\r\nimport { ListItemBag } from \"@Obsidian/ViewModels/Utility/listItemBag\";\r\nimport { PublicAttributeBag } from \"@Obsidian/ViewModels/Utility/publicAttributeBag\";\r\nimport { SavedFinancialAccountListItemBag } from \"@Obsidian/ViewModels/Finance/savedFinancialAccountListItemBag\";\r\nimport { FilterExpressionType } from \"@Obsidian/Core/Reporting/filterExpressionType\";\r\nimport { ComparisonValue } from \"@Obsidian/Types/Reporting/comparisonValue\";\r\n\r\nexport const enum RegistrationPersonFieldType {\r\n FirstName = 0,\r\n LastName = 1,\r\n Campus = 2,\r\n Address = 3,\r\n Email = 4,\r\n Birthdate = 5,\r\n Gender = 6,\r\n MaritalStatus = 7,\r\n MobilePhone = 8,\r\n HomePhone = 9,\r\n WorkPhone = 10,\r\n Grade = 11,\r\n ConnectionStatus = 12,\r\n MiddleName = 13,\r\n AnniversaryDate = 14,\r\n Race = 15,\r\n Ethnicity = 16\r\n}\r\n\r\nexport const enum RegistrationFieldSource {\r\n PersonField = 0,\r\n PersonAttribute = 1,\r\n GroupMemberAttribute = 2,\r\n RegistrantAttribute = 4\r\n}\r\n\r\nexport const enum RegistrarOption {\r\n PromptForRegistrar = 0,\r\n PrefillFirstRegistrant = 1,\r\n UseFirstRegistrant = 2,\r\n UseLoggedInPerson = 3\r\n}\r\n\r\nexport const enum RegistrantsSameFamily {\r\n No = 0,\r\n Yes = 1,\r\n Ask = 2\r\n}\r\n\r\nexport type SessionRenewalResult = {\r\n spotsSecured: number;\r\n expirationDateTime: string;\r\n};\r\n\r\nexport type RegistrationEntryBlockViewModel = {\r\n timeoutMinutes: number | null;\r\n registrantsSameFamily: RegistrantsSameFamily;\r\n maxRegistrants: number;\r\n registrationAttributeTitleStart: string;\r\n registrationAttributeTitleEnd: string;\r\n instructionsHtml: string;\r\n registrantTerm: string;\r\n registrationTerm: string;\r\n pluralRegistrationTerm: string;\r\n pluralRegistrantTerm: string;\r\n pluralFeeTerm: string;\r\n registrantForms: RegistrationEntryBlockFormViewModel[];\r\n fees: RegistrationEntryBlockFeeViewModel[];\r\n familyMembers: RegistrationEntryBlockFamilyMemberViewModel[];\r\n registrationAttributesStart: PublicAttributeBag[];\r\n registrationAttributesEnd: PublicAttributeBag[];\r\n forceEmailUpdate: boolean;\r\n registrarOption: RegistrarOption;\r\n cost: number;\r\n gatewayControl: GatewayControlBag;\r\n isRedirectGateway: boolean;\r\n spotsRemaining: number | null;\r\n waitListEnabled: boolean;\r\n instanceName: string;\r\n amountDueToday: number | null;\r\n initialAmountToPay: number | null;\r\n session: RegistrationEntryBlockSession | null;\r\n isUnauthorized: boolean;\r\n hasDiscountsAvailable: boolean;\r\n redirectGatewayUrl: string;\r\n loginRequiredToRegister: boolean;\r\n successViewModel: RegistrationEntryBlockSuccessViewModel | null;\r\n allowRegistrationUpdates: boolean;\r\n isExistingRegistration: boolean;\r\n startAtBeginning: boolean;\r\n gatewayGuid: Guid | null;\r\n campuses: ListItemBag[];\r\n maritalStatuses: ListItemBag[];\r\n connectionStatuses: ListItemBag[];\r\n grades: ListItemBag[];\r\n enableSaveAccount: boolean;\r\n savedAccounts: SavedFinancialAccountListItemBag[] | null;\r\n registrationInstanceNotFoundMessage: string | null;\r\n races: ListItemBag[];\r\n ethnicities: ListItemBag[];\r\n\r\n isInlineSignatureRequired: boolean;\r\n isSignatureDrawn: boolean;\r\n signatureDocumentTerm?: string | null;\r\n signatureDocumentTemplateName?: string | null;\r\n};\r\n\r\nexport type RegistrationEntryBlockFamilyMemberViewModel = {\r\n guid: Guid;\r\n familyGuid: Guid;\r\n fullName: string;\r\n fieldValues: Record;\r\n};\r\n\r\nexport type RegistrationEntryBlockFeeViewModel = {\r\n name: string;\r\n guid: Guid;\r\n allowMultiple: boolean;\r\n isRequired: boolean;\r\n items: RegistrationEntryBlockFeeItemViewModel[];\r\n discountApplies: boolean;\r\n};\r\n\r\nexport type RegistrationEntryBlockFeeItemViewModel = {\r\n name: string;\r\n guid: Guid;\r\n cost: number;\r\n countRemaining: number | null;\r\n};\r\n\r\nexport type RegistrationEntryBlockFormViewModel = {\r\n fields: RegistrationEntryBlockFormFieldViewModel[];\r\n};\r\n\r\nexport type RegistrationEntryBlockFormFieldViewModel = {\r\n fieldSource: RegistrationFieldSource;\r\n personFieldType: RegistrationPersonFieldType;\r\n isRequired: boolean;\r\n isSharedValue: boolean;\r\n attribute: PublicAttributeBag | null;\r\n visibilityRuleType: FilterExpressionType;\r\n visibilityRules: RegistrationEntryBlockFormFieldRuleViewModel[];\r\n preHtml: string;\r\n postHtml: string;\r\n showOnWaitList: boolean;\r\n guid: Guid;\r\n};\r\n\r\nexport type RegistrationEntryBlockFormFieldRuleViewModel = {\r\n comparedToRegistrationTemplateFormFieldGuid: Guid;\r\n comparisonValue: ComparisonValue;\r\n};\r\n\r\nexport type RegistrantInfo = {\r\n isOnWaitList: boolean;\r\n\r\n /** The family guid that this person is to be a part of */\r\n familyGuid: Guid;\r\n\r\n /** If the person were an existing person, this is his/her guid */\r\n personGuid: Guid | null;\r\n\r\n fieldValues: Record;\r\n cost: number;\r\n feeItemQuantities: Record;\r\n signatureData?: string | null;\r\n\r\n guid: Guid;\r\n};\r\n\r\nexport type RegistrarInfo = {\r\n nickName: string;\r\n lastName: string;\r\n email: string;\r\n updateEmail: boolean;\r\n familyGuid: Guid | null;\r\n};\r\n\r\nexport type RegistrationEntryBlockSuccessViewModel = {\r\n titleHtml: string;\r\n messageHtml: string;\r\n transactionCode: string;\r\n gatewayPersonIdentifier: string;\r\n};\r\n\r\nexport type RegistrationEntryBlockArgs = {\r\n registrationGuid: Guid | null;\r\n registrationSessionGuid: Guid | null;\r\n registrants: RegistrantInfo[];\r\n fieldValues: Record;\r\n registrar: RegistrarInfo;\r\n savedAccountGuid: Guid | null;\r\n gatewayToken: string;\r\n discountCode: string;\r\n amountToPayNow: number;\r\n};\r\n\r\nexport type RegistrationEntryBlockSession = RegistrationEntryBlockArgs & {\r\n discountAmount: number;\r\n discountPercentage: number;\r\n previouslyPaid: number;\r\n};\r\n\r\nexport const enum Step {\r\n Intro = \"intro\",\r\n RegistrationStartForm = \"registrationStartForm\",\r\n PerRegistrantForms = \"perRegistrantForms\",\r\n RegistrationEndForm = \"registrationEndForm\",\r\n Review = \"review\",\r\n Payment = \"payment\",\r\n Success = \"success\"\r\n}\r\n\r\nexport type RegistrantBasicInfo = {\r\n firstName: string;\r\n lastName: string;\r\n email: string;\r\n guid: Guid;\r\n};\r\n\r\nexport type RegistrationEntryState = {\r\n steps: Record;\r\n viewModel: RegistrationEntryBlockViewModel;\r\n currentStep: string;\r\n firstStep: string;\r\n navBack: boolean;\r\n currentRegistrantIndex: number;\r\n currentRegistrantFormIndex: number;\r\n registrants: RegistrantInfo[];\r\n registrationFieldValues: Record;\r\n registrar: RegistrarInfo;\r\n gatewayToken: string;\r\n savedAccountGuid: Guid | null;\r\n discountCode: string;\r\n discountAmount: number;\r\n discountPercentage: number;\r\n successViewModel: RegistrationEntryBlockSuccessViewModel | null;\r\n amountToPayToday: number;\r\n sessionExpirationDateMs: number | null;\r\n registrationSessionGuid: Guid;\r\n ownFamilyGuid: Guid;\r\n};\r\n","// \r\n// Copyright by the Spark Development Network\r\n//\r\n// Licensed under the Rock Community License (the \"License\");\r\n// you may not use this file except in compliance with the License.\r\n// You may obtain a copy of the License at\r\n//\r\n// http://www.rockrms.com/license\r\n//\r\n// Unless required by applicable law or agreed to in writing, software\r\n// distributed under the License is distributed on an \"AS IS\" BASIS,\r\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n// See the License for the specific language governing permissions and\r\n// limitations under the License.\r\n// \r\n//\r\n\r\nimport { Guid } from \"@Obsidian/Types\";\r\nimport { PersonBag } from \"@Obsidian/ViewModels/Entities/personBag\";\r\nimport { newGuid } from \"@Obsidian/Utility/guid\";\r\nimport { RegistrantBasicInfo, RegistrantInfo, RegistrantsSameFamily, RegistrationEntryBlockFormFieldViewModel, RegistrationEntryBlockFormViewModel, RegistrationEntryBlockViewModel, RegistrationPersonFieldType, RegistrationFieldSource } from \"./types.partial\";\r\n\r\n/** If all registrants are to be in the same family, but there is no currently authenticated person,\r\n * then this guid is used as a common family guid */\r\nconst unknownSingleFamilyGuid = newGuid();\r\n\r\n/**\r\n * If there is a forced family guid because of RegistrantsSameFamily setting, then this returns that guid\r\n * @param currentPerson\r\n * @param viewModel\r\n */\r\nexport function getForcedFamilyGuid(currentPerson: PersonBag | null, viewModel: RegistrationEntryBlockViewModel): string | null {\r\n return (currentPerson && viewModel.registrantsSameFamily === RegistrantsSameFamily.Yes) ?\r\n (currentPerson.primaryFamilyGuid || unknownSingleFamilyGuid) :\r\n null;\r\n}\r\n\r\n/**\r\n * Get a default registrant object with the current family guid set.\r\n * @param currentPerson\r\n * @param viewModel\r\n * @param familyGuid\r\n */\r\nexport function getDefaultRegistrantInfo(currentPerson: PersonBag | null, viewModel: RegistrationEntryBlockViewModel, familyGuid: Guid | null): RegistrantInfo {\r\n const forcedFamilyGuid = getForcedFamilyGuid(currentPerson, viewModel);\r\n\r\n if (forcedFamilyGuid) {\r\n familyGuid = forcedFamilyGuid;\r\n }\r\n\r\n // If the family is not specified, then assume the person is in their own family\r\n if (!familyGuid) {\r\n familyGuid = newGuid();\r\n }\r\n\r\n return {\r\n isOnWaitList: false,\r\n familyGuid: familyGuid,\r\n fieldValues: {},\r\n feeItemQuantities: {},\r\n guid: newGuid(),\r\n personGuid: null\r\n } as RegistrantInfo;\r\n}\r\n\r\nexport function getRegistrantBasicInfo(registrant: RegistrantInfo, registrantForms: RegistrationEntryBlockFormViewModel[]): RegistrantBasicInfo {\r\n const fields = registrantForms?.reduce((acc, f) => acc.concat(f.fields), [] as RegistrationEntryBlockFormFieldViewModel[]) || [];\r\n\r\n const firstNameGuid = fields.find(f => f.personFieldType === RegistrationPersonFieldType.FirstName && f.fieldSource === RegistrationFieldSource.PersonField)?.guid || \"\";\r\n const lastNameGuid = fields.find(f => f.personFieldType === RegistrationPersonFieldType.LastName && f.fieldSource === RegistrationFieldSource.PersonField)?.guid || \"\";\r\n const emailGuid = fields.find(f => f.personFieldType === RegistrationPersonFieldType.Email && f.fieldSource === RegistrationFieldSource.PersonField)?.guid || \"\";\r\n\r\n return {\r\n firstName: (registrant?.fieldValues[firstNameGuid] || \"\") as string,\r\n lastName: (registrant?.fieldValues[lastNameGuid] || \"\") as string,\r\n email: (registrant?.fieldValues[emailGuid] || \"\") as string,\r\n guid: registrant?.guid\r\n };\r\n}\r\n","// \r\n// Copyright by the Spark Development Network\r\n//\r\n// Licensed under the Rock Community License (the \"License\");\r\n// you may not use this file except in compliance with the License.\r\n// You may obtain a copy of the License at\r\n//\r\n// http://www.rockrms.com/license\r\n//\r\n// Unless required by applicable law or agreed to in writing, software\r\n// distributed under the License is distributed on an \"AS IS\" BASIS,\r\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n// See the License for the specific language governing permissions and\r\n// limitations under the License.\r\n// \r\n//\r\n\r\nimport { defineComponent, inject } from \"vue\";\r\nimport NotificationBox from \"@Obsidian/Controls/notificationBox.obs\";\r\nimport NumberUpDown from \"@Obsidian/Controls/numberUpDown\";\r\nimport RockButton from \"@Obsidian/Controls/rockButton\";\r\nimport { toTitleCase, pluralConditional } from \"@Obsidian/Utility/stringUtils\";\r\nimport { areEqual } from \"@Obsidian/Utility/guid\";\r\nimport { getDefaultRegistrantInfo, getForcedFamilyGuid } from \"./utils.partial\";\r\nimport { RegistrationEntryBlockViewModel, RegistrationEntryState } from \"./types.partial\";\r\nimport { useStore } from \"@Obsidian/PageState\";\r\nimport { PersonBag } from \"@Obsidian/ViewModels/Entities/personBag\";\r\n\r\nconst store = useStore();\r\n\r\nexport default defineComponent({\r\n name: \"Event.RegistrationEntry.Intro\",\r\n components: {\r\n NumberUpDown,\r\n RockButton,\r\n NotificationBox\r\n },\r\n data() {\r\n const registrationEntryState = inject(\"registrationEntryState\") as RegistrationEntryState;\r\n\r\n return {\r\n /** The number of registrants that this registrar is going to input */\r\n numberOfRegistrants: registrationEntryState.registrants.length,\r\n\r\n /** The shared state among all the components that make up this block */\r\n registrationEntryState,\r\n\r\n /** Should the remaining capacity warning be shown? */\r\n showRemainingCapacity: false\r\n };\r\n },\r\n computed: {\r\n /** The currently authenticated person */\r\n currentPerson(): PersonBag | null {\r\n return store.state.currentPerson;\r\n },\r\n\r\n /** The view model sent by the C# code behind. This is just a convenient shortcut to the shared object. */\r\n viewModel(): RegistrationEntryBlockViewModel {\r\n return this.registrationEntryState.viewModel;\r\n },\r\n\r\n /** The number of these registrants that will be placed on a waitlist because of capacity rules */\r\n numberToAddToWaitlist(): number {\r\n if (this.viewModel.spotsRemaining === null || !this.viewModel.waitListEnabled) {\r\n // There is no waitlist or no cap on number of attendees\r\n return 0;\r\n }\r\n\r\n if (this.viewModel.spotsRemaining >= this.numberOfRegistrants) {\r\n // There is enough capacity left for all of these registrants\r\n return 0;\r\n }\r\n\r\n // Some or all need to go on the waitlist\r\n return this.numberOfRegistrants - this.viewModel.spotsRemaining;\r\n },\r\n\r\n /** The capacity left phrase: Ex: 1 more camper */\r\n remainingCapacityPhrase(): string {\r\n const spots = this.viewModel.spotsRemaining;\r\n\r\n if (spots === null) {\r\n return \"\";\r\n }\r\n\r\n return pluralConditional(spots, `1 more ${this.registrantTerm}`, `${spots} more ${this.registrantTermPlural}`);\r\n },\r\n\r\n /** Is this instance full and no one else can register? */\r\n isFull(): boolean {\r\n if (this.viewModel.spotsRemaining === null) {\r\n return false;\r\n }\r\n\r\n return this.viewModel.spotsRemaining < 1;\r\n },\r\n\r\n /** True if the user is allowed to move on to the next screen. */\r\n canContinue(): boolean {\r\n return !(this.isFull && this.numberToAddToWaitlist !== this.numberOfRegistrants);\r\n },\r\n\r\n registrantTerm(): string {\r\n this.viewModel.instanceName;\r\n return (this.viewModel.registrantTerm || \"registrant\").toLowerCase();\r\n },\r\n registrantTermPlural(): string {\r\n return (this.viewModel.pluralRegistrantTerm || \"registrants\").toLowerCase();\r\n },\r\n registrationTerm(): string {\r\n return (this.viewModel.registrationTerm || \"registration\").toLowerCase();\r\n },\r\n registrationTermPlural(): string {\r\n return (this.viewModel.pluralRegistrationTerm || \"registrations\").toLowerCase();\r\n },\r\n registrationTermTitleCase(): string {\r\n return toTitleCase(this.registrationTerm);\r\n }\r\n },\r\n methods: {\r\n pluralConditional,\r\n onNext(): void {\r\n // If the person is authenticated and the setting is to put registrants in the same family, then we force that family guid\r\n const forcedFamilyGuid = getForcedFamilyGuid(this.currentPerson, this.viewModel);\r\n\r\n const usedFamilyMemberGuids = this.registrationEntryState.registrants\r\n .filter(r => r.personGuid)\r\n .map(r => r.personGuid);\r\n\r\n const availableFamilyMembers = this.viewModel.familyMembers\r\n .filter(fm =>\r\n areEqual(fm.familyGuid, forcedFamilyGuid) &&\r\n !usedFamilyMemberGuids.includes(fm.guid));\r\n\r\n // Resize the registrant array to match the selected number\r\n while (this.numberOfRegistrants > this.registrationEntryState.registrants.length) {\r\n const registrant = getDefaultRegistrantInfo(this.currentPerson, this.viewModel, forcedFamilyGuid);\r\n this.registrationEntryState.registrants.push(registrant);\r\n }\r\n\r\n this.registrationEntryState.registrants.length = this.numberOfRegistrants;\r\n\r\n // Set people beyond the capacity to be on the waitlist\r\n const firstWaitListIndex = this.numberOfRegistrants - this.numberToAddToWaitlist;\r\n\r\n for (let i = firstWaitListIndex; i < this.numberOfRegistrants; i++) {\r\n this.registrationEntryState.registrants[i].isOnWaitList = true;\r\n }\r\n\r\n this.$emit(\"next\");\r\n },\r\n },\r\n watch: {\r\n numberOfRegistrants(): void {\r\n if (!this.viewModel.waitListEnabled && this.viewModel.spotsRemaining !== null && this.viewModel.spotsRemaining < this.numberOfRegistrants) {\r\n this.showRemainingCapacity = true;\r\n const spotsRemaining = this.viewModel.spotsRemaining;\r\n\r\n // Do this on the next tick to allow the events to finish. Otherwise the component tree doesn't have time\r\n // to respond to this, since the watch was triggered by the numberOfRegistrants change\r\n this.$nextTick(() => this.numberOfRegistrants = spotsRemaining);\r\n }\r\n }\r\n },\r\n template: `\r\n
\r\n \r\n {{registrationTermTitleCase}} Full\r\n

\r\n There are not any more {{registrationTermPlural}} available for {{viewModel.instanceName}}.\r\n

\r\n
\r\n \r\n {{registrationTermTitleCase}} Full\r\n

\r\n This {{registrationTerm}} only has capacity for {{remainingCapacityPhrase}}.\r\n

\r\n
\r\n
\r\n
\r\n
1\" class=\"registrationentry-intro\">\r\n

How many {{viewModel.pluralRegistrantTerm}} will you be registering?

\r\n \r\n
\r\n \r\n Due to a high-volume of expected interest, your {{registrationTerm}} session will expire after\r\n {{pluralConditional(viewModel.timeoutMinutes, 'a minute', viewModel.timeoutMinutes + ' minutes')}}\r\n of inactivity.\r\n \r\n \r\n This {{registrationTerm}} has reached its capacity. Complete the registration to be added to the waitlist.\r\n \r\n \r\n This {{registrationTerm}} only has capacity for {{remainingCapacityPhrase}}.\r\n The first {{pluralConditional(viewModel.spotsRemaining, registrantTerm, viewModel.spotsRemaining + ' ' + registrantTermPlural)}} you add will be registered for {{viewModel.instanceName}}.\r\n The remaining {{pluralConditional(numberToAddToWaitlist, registrantTerm, numberToAddToWaitlist + ' ' + registrantTermPlural)}} will be added to the waitlist.\r\n \r\n\r\n
\r\n \r\n Next\r\n \r\n
\r\n
`\r\n});\r\n","// \r\n// Copyright by the Spark Development Network\r\n//\r\n// Licensed under the Rock Community License (the \"License\");\r\n// you may not use this file except in compliance with the License.\r\n// You may obtain a copy of the License at\r\n//\r\n// http://www.rockrms.com/license\r\n//\r\n// Unless required by applicable law or agreed to in writing, software\r\n// distributed under the License is distributed on an \"AS IS\" BASIS,\r\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n// See the License for the specific language governing permissions and\r\n// limitations under the License.\r\n// \r\n//\r\n\r\nimport { Guid } from \"@Obsidian/Types\";\r\nimport { computed, defineComponent, inject, PropType } from \"vue\";\r\nimport AddressControl from \"@Obsidian/Controls/addressControl.obs\";\r\nimport { getDefaultAddressControlModel } from \"@Obsidian/Utility/address\";\r\nimport TextBox from \"@Obsidian/Controls/textBox\";\r\nimport EmailBox from \"@Obsidian/Controls/emailBox\";\r\nimport DropDownList from \"@Obsidian/Controls/dropDownList\";\r\nimport GenderDropDownList from \"@Obsidian/Controls/genderDropDownList\";\r\nimport BirthdayPicker from \"@Obsidian/Controls/birthdayPicker\";\r\nimport PhoneNumberBox from \"@Obsidian/Controls/phoneNumberBox.obs\";\r\nimport ComponentFromUrl from \"@Obsidian/Controls/componentFromUrl\";\r\nimport NotificationBox from \"@Obsidian/Controls/notificationBox.obs\";\r\nimport { getDefaultDatePartsPickerModel } from \"@Obsidian/Controls/datePartsPicker\";\r\nimport { RegistrationEntryBlockFormFieldViewModel, RegistrationPersonFieldType, RegistrationEntryState } from \"./types.partial\";\r\n\r\nexport default defineComponent({\r\n name: \"Event.RegistrationEntry.RegistrantPersonField\",\r\n components: {\r\n NotificationBox,\r\n ComponentFromUrl\r\n },\r\n props: {\r\n field: {\r\n type: Object as PropType,\r\n required: true\r\n },\r\n fieldValues: {\r\n type: Object as PropType>,\r\n required: true\r\n },\r\n isKnownFamilyMember: {\r\n type: Boolean as PropType,\r\n required: true\r\n }\r\n },\r\n\r\n setup(props) {\r\n const registrationEntryState = inject(\"registrationEntryState\") as RegistrationEntryState;\r\n\r\n const component = computed(() => {\r\n switch (props.field.personFieldType) {\r\n case RegistrationPersonFieldType.FirstName:\r\n return TextBox;\r\n\r\n case RegistrationPersonFieldType.LastName:\r\n return TextBox;\r\n\r\n case RegistrationPersonFieldType.MiddleName:\r\n return TextBox;\r\n\r\n case RegistrationPersonFieldType.Campus:\r\n return DropDownList;\r\n\r\n case RegistrationPersonFieldType.Email:\r\n return EmailBox;\r\n\r\n case RegistrationPersonFieldType.Gender:\r\n return GenderDropDownList;\r\n\r\n case RegistrationPersonFieldType.Birthdate:\r\n return BirthdayPicker;\r\n\r\n case RegistrationPersonFieldType.AnniversaryDate:\r\n return BirthdayPicker;\r\n\r\n case RegistrationPersonFieldType.Address:\r\n return AddressControl;\r\n\r\n case RegistrationPersonFieldType.MaritalStatus:\r\n return DropDownList;\r\n\r\n case RegistrationPersonFieldType.ConnectionStatus:\r\n return DropDownList;\r\n\r\n case RegistrationPersonFieldType.Grade:\r\n return DropDownList;\r\n\r\n case RegistrationPersonFieldType.HomePhone:\r\n return PhoneNumberBox;\r\n\r\n case RegistrationPersonFieldType.WorkPhone:\r\n return PhoneNumberBox;\r\n\r\n case RegistrationPersonFieldType.MobilePhone:\r\n return PhoneNumberBox;\r\n\r\n case RegistrationPersonFieldType.Race:\r\n return DropDownList;\r\n\r\n case RegistrationPersonFieldType.Ethnicity:\r\n return DropDownList;\r\n }\r\n });\r\n\r\n const fieldControlComponentProps = computed(() => {\r\n const componentProps: Record = {\r\n rules: props.field.isRequired ? \"required\" : \"\"\r\n };\r\n\r\n switch (props.field.personFieldType) {\r\n case RegistrationPersonFieldType.FirstName:\r\n componentProps.label = \"First Name\";\r\n componentProps.disabled = props.isKnownFamilyMember;\r\n break;\r\n\r\n case RegistrationPersonFieldType.LastName:\r\n componentProps.label = \"Last Name\";\r\n componentProps.disabled = props.isKnownFamilyMember;\r\n break;\r\n\r\n case RegistrationPersonFieldType.MiddleName:\r\n componentProps.label = \"Middle Name\";\r\n break;\r\n\r\n case RegistrationPersonFieldType.Campus:\r\n componentProps.label = \"Campus\";\r\n componentProps.items = [...registrationEntryState.viewModel.campuses];\r\n break;\r\n\r\n case RegistrationPersonFieldType.Email:\r\n componentProps.label = \"Email\";\r\n break;\r\n\r\n case RegistrationPersonFieldType.Gender:\r\n break;\r\n\r\n case RegistrationPersonFieldType.Birthdate:\r\n componentProps.label = \"Birthday\";\r\n break;\r\n\r\n case RegistrationPersonFieldType.AnniversaryDate:\r\n componentProps.label = \"Anniversary Date\";\r\n break;\r\n\r\n case RegistrationPersonFieldType.Address:\r\n componentProps.label = \"Address\";\r\n break;\r\n\r\n case RegistrationPersonFieldType.MaritalStatus:\r\n componentProps.label = \"Marital Status\";\r\n componentProps.items = [...registrationEntryState.viewModel.maritalStatuses];\r\n break;\r\n\r\n case RegistrationPersonFieldType.ConnectionStatus:\r\n componentProps.label = \"Connection Status\";\r\n componentProps.items = [...registrationEntryState.viewModel.connectionStatuses];\r\n break;\r\n\r\n case RegistrationPersonFieldType.Grade:\r\n componentProps.label = \"Grade\";\r\n componentProps.items = [...registrationEntryState.viewModel.grades];\r\n break;\r\n\r\n case RegistrationPersonFieldType.HomePhone:\r\n componentProps.label = \"Home Phone\";\r\n break;\r\n\r\n case RegistrationPersonFieldType.WorkPhone:\r\n componentProps.label = \"Work Phone\";\r\n break;\r\n\r\n case RegistrationPersonFieldType.MobilePhone:\r\n componentProps.label = \"Mobile Phone\";\r\n break;\r\n\r\n case RegistrationPersonFieldType.Race:\r\n componentProps.label = \"Race\";\r\n componentProps.items = [...registrationEntryState.viewModel.races];\r\n break;\r\n\r\n case RegistrationPersonFieldType.Ethnicity:\r\n componentProps.label = \"Ethnicity\";\r\n componentProps.items = [...registrationEntryState.viewModel.ethnicities];\r\n break;\r\n }\r\n\r\n return componentProps;\r\n });\r\n\r\n // Set the default value if needed\r\n if (!(props.field.guid in props.fieldValues)) {\r\n let defaultValue: unknown = \"\";\r\n\r\n switch (props.field.personFieldType) {\r\n case RegistrationPersonFieldType.Birthdate:\r\n defaultValue = getDefaultDatePartsPickerModel();\r\n break;\r\n\r\n case RegistrationPersonFieldType.AnniversaryDate:\r\n defaultValue = getDefaultDatePartsPickerModel();\r\n break;\r\n\r\n case RegistrationPersonFieldType.Address:\r\n defaultValue = getDefaultAddressControlModel();\r\n break;\r\n }\r\n\r\n props.fieldValues[props.field.guid] = defaultValue;\r\n }\r\n\r\n return {\r\n component,\r\n fieldControlComponentProps,\r\n fieldValues: props.fieldValues,\r\n fieldType: props.field.personFieldType\r\n };\r\n },\r\n\r\n template: `\r\n\r\nCould not load the control for person field {{ fieldType }}.\r\n`\r\n});\r\n","// \r\n// Copyright by the Spark Development Network\r\n//\r\n// Licensed under the Rock Community License (the \"License\");\r\n// you may not use this file except in compliance with the License.\r\n// You may obtain a copy of the License at\r\n//\r\n// http://www.rockrms.com/license\r\n//\r\n// Unless required by applicable law or agreed to in writing, software\r\n// distributed under the License is distributed on an \"AS IS\" BASIS,\r\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n// See the License for the specific language governing permissions and\r\n// limitations under the License.\r\n// \r\n//\r\n\r\nimport { Guid } from \"@Obsidian/Types\";\r\nimport { computed, defineComponent, PropType, ref, watch } from \"vue\";\r\nimport RockField from \"@Obsidian/Controls/rockField\";\r\nimport NotificationBox from \"@Obsidian/Controls/notificationBox.obs\";\r\nimport { FilterExpressionType } from \"@Obsidian/Core/Reporting/filterExpressionType\";\r\nimport { RegistrationEntryBlockFormFieldRuleViewModel, RegistrationEntryBlockFormFieldViewModel } from \"./types.partial\";\r\nimport { getFieldType } from \"@Obsidian/Utility/fieldTypes\";\r\nimport { areEqual } from \"@Obsidian/Utility/guid\";\r\n\r\nfunction isRuleMet(rule: RegistrationEntryBlockFormFieldRuleViewModel, fieldValues: Record, formFields: RegistrationEntryBlockFormFieldViewModel[]): boolean {\r\n const value = fieldValues[rule.comparedToRegistrationTemplateFormFieldGuid] || \"\";\r\n\r\n if (typeof value !== \"string\") {\r\n return false;\r\n }\r\n\r\n const comparedToFormField = formFields.find(ff => areEqual(ff.guid, rule.comparedToRegistrationTemplateFormFieldGuid));\r\n if (!comparedToFormField?.attribute?.fieldTypeGuid) {\r\n return false;\r\n }\r\n\r\n const fieldType = getFieldType(comparedToFormField.attribute.fieldTypeGuid);\r\n\r\n if (!fieldType) {\r\n return false;\r\n }\r\n\r\n return fieldType.doesValueMatchFilter(value, rule.comparisonValue, comparedToFormField.attribute.configurationValues ?? {});\r\n}\r\n\r\nexport default defineComponent({\r\n name: \"Event.RegistrationEntry.RegistrantAttributeField\",\r\n\r\n components: {\r\n NotificationBox,\r\n RockField\r\n },\r\n\r\n props: {\r\n field: {\r\n type: Object as PropType,\r\n required: true\r\n },\r\n\r\n fieldValues: {\r\n type: Object as PropType>,\r\n required: true\r\n },\r\n\r\n formFields: {\r\n type: Array as PropType,\r\n required: true\r\n }\r\n },\r\n\r\n setup(props) {\r\n const isVisible = computed(() => {\r\n switch (props.field.visibilityRuleType) {\r\n case FilterExpressionType.GroupAll:\r\n return props.field.visibilityRules.every(vr => isRuleMet(vr, props.fieldValues, props.formFields));\r\n\r\n case FilterExpressionType.GroupAllFalse:\r\n return props.field.visibilityRules.every(vr => !isRuleMet(vr, props.fieldValues, props.formFields));\r\n\r\n case FilterExpressionType.GroupAny:\r\n return props.field.visibilityRules.some(vr => isRuleMet(vr, props.fieldValues, props.formFields));\r\n\r\n case FilterExpressionType.GroupAnyFalse:\r\n return props.field.visibilityRules.some(vr => !isRuleMet(vr, props.fieldValues, props.formFields));\r\n }\r\n\r\n return true;\r\n });\r\n\r\n const value = ref((props.fieldValues[props.field.guid] as string) ?? \"\");\r\n const modifiedAttribute = computed(() => {\r\n if (!props.field.attribute) {\r\n return null;\r\n }\r\n\r\n const fieldAttribute = { ...props.field.attribute };\r\n fieldAttribute.isRequired = props.field.isRequired;\r\n return fieldAttribute;\r\n });\r\n\r\n // Detect changes like switch from one person to another.\r\n watch(() => props.fieldValues[props.field.guid], () => {\r\n value.value = props.fieldValues[props.field.guid] as string;\r\n });\r\n\r\n watch(value, () => {\r\n props.fieldValues[props.field.guid] = value.value;\r\n });\r\n\r\n return {\r\n isVisible,\r\n modifiedAttribute,\r\n value\r\n };\r\n },\r\n\r\n template: `\r\n`\r\n});\r\n","// \r\n// Copyright by the Spark Development Network\r\n//\r\n// Licensed under the Rock Community License (the \"License\");\r\n// you may not use this file except in compliance with the License.\r\n// You may obtain a copy of the License at\r\n//\r\n// http://www.rockrms.com/license\r\n//\r\n// Unless required by applicable law or agreed to in writing, software\r\n// distributed under the License is distributed on an \"AS IS\" BASIS,\r\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n// See the License for the specific language governing permissions and\r\n// limitations under the License.\r\n// \r\n//\r\n\r\nimport { Guid } from \"@Obsidian/Types\";\r\nimport { defineComponent, PropType } from \"vue\";\r\nimport NotificationBox from \"@Obsidian/Controls/notificationBox.obs\";\r\nimport CheckBox from \"@Obsidian/Controls/checkBox\";\r\nimport DropDownList from \"@Obsidian/Controls/dropDownList\";\r\nimport NumberUpDown from \"@Obsidian/Controls/numberUpDown\";\r\nimport NumberUpDownGroup, { NumberUpDownGroupOption } from \"@Obsidian/Controls/numberUpDownGroup\";\r\nimport Number from \"@Obsidian/Utility/numberUtils\";\r\nimport GuidHelper from \"@Obsidian/Utility/guid\";\r\nimport { ListItemBag } from \"@Obsidian/ViewModels/Utility/listItemBag\";\r\nimport { RegistrationEntryBlockFeeViewModel, RegistrationEntryBlockFeeItemViewModel } from \"./types.partial\";\r\n\r\nexport default defineComponent({\r\n name: \"Event.RegistrationEntry.FeeField\",\r\n components: {\r\n NumberUpDown,\r\n NumberUpDownGroup,\r\n DropDownList,\r\n CheckBox,\r\n NotificationBox\r\n },\r\n props: {\r\n modelValue: {\r\n type: Object as PropType>,\r\n required: true\r\n },\r\n fee: {\r\n type: Object as PropType,\r\n required: true\r\n }\r\n },\r\n data() {\r\n return {\r\n dropDownValue: \"\",\r\n checkboxValue: false\r\n };\r\n },\r\n methods: {\r\n getItemLabel(item: RegistrationEntryBlockFeeItemViewModel): string {\r\n const formattedCost = Number.asFormattedString(item.cost, 2);\r\n\r\n if (item.countRemaining) {\r\n const formattedRemaining = Number.asFormattedString(item.countRemaining, 0);\r\n return `${item.name} ($${formattedCost}) (${formattedRemaining} remaining)`;\r\n }\r\n\r\n return `${item.name} ($${formattedCost})`;\r\n }\r\n },\r\n computed: {\r\n label(): string {\r\n if (this.singleItem) {\r\n return this.getItemLabel(this.singleItem);\r\n }\r\n\r\n return this.fee.name;\r\n },\r\n singleItem(): RegistrationEntryBlockFeeItemViewModel | null {\r\n if (this.fee.items.length !== 1) {\r\n return null;\r\n }\r\n\r\n return this.fee.items[0];\r\n },\r\n isHidden(): boolean {\r\n return !this.fee.items.length;\r\n },\r\n isCheckbox(): boolean {\r\n return !!this.singleItem && !this.fee.allowMultiple;\r\n },\r\n isNumberUpDown(): boolean {\r\n return !!this.singleItem && this.fee.allowMultiple;\r\n },\r\n isNumberUpDownGroup(): boolean {\r\n return this.fee.items.length > 1 && this.fee.allowMultiple;\r\n },\r\n isDropDown(): boolean {\r\n return this.fee.items.length > 1 && !this.fee.allowMultiple;\r\n },\r\n dropDownListOptions(): ListItemBag[] {\r\n return this.fee.items.map(i => ({\r\n text: this.getItemLabel(i),\r\n value: i.guid\r\n }));\r\n },\r\n numberUpDownGroupOptions(): NumberUpDownGroupOption[] {\r\n return this.fee.items.map(i => ({\r\n key: i.guid,\r\n label: this.getItemLabel(i),\r\n max: i.countRemaining || 100,\r\n min: 0\r\n }));\r\n },\r\n rules(): string {\r\n return this.fee.isRequired ? \"required\" : \"\";\r\n }\r\n },\r\n watch: {\r\n modelValue: {\r\n immediate: true,\r\n deep: true,\r\n handler(): void {\r\n // Set the drop down selecton\r\n if (this.isDropDown) {\r\n this.dropDownValue = \"\";\r\n\r\n for (const item of this.fee.items) {\r\n if (!this.dropDownValue && this.modelValue[item.guid]) {\r\n // Pick the first option that has a qty\r\n this.modelValue[item.guid] = 1;\r\n this.dropDownValue = item.guid;\r\n }\r\n else if (this.modelValue[item.guid]) {\r\n // Any other quantities need to be zeroed since only one can be picked\r\n this.modelValue[item.guid] = 0;\r\n }\r\n }\r\n }\r\n\r\n // Set the checkbox selection\r\n if (this.isCheckbox && this.singleItem) {\r\n this.checkboxValue = !!this.modelValue[this.singleItem.guid];\r\n this.modelValue[this.singleItem.guid] = this.checkboxValue ? 1 : 0;\r\n }\r\n }\r\n },\r\n fee: {\r\n immediate: true,\r\n handler(): void {\r\n for (const item of this.fee.items) {\r\n this.modelValue[item.guid] = this.modelValue[item.guid] || 0;\r\n }\r\n }\r\n },\r\n dropDownValue(): void {\r\n // Drop down implies a quantity of 1. Zero out all items except for the one selected.\r\n for (const item of this.fee.items) {\r\n const isSelected = GuidHelper.areEqual(this.dropDownValue, item.guid);\r\n this.modelValue[item.guid] = isSelected ? 1 : 0;\r\n }\r\n },\r\n checkboxValue(): void {\r\n if (this.singleItem) {\r\n // Drop down implies a quantity of 1.\r\n this.modelValue[this.singleItem.guid] = this.checkboxValue ? 1 : 0;\r\n }\r\n }\r\n },\r\n template: `\r\n`\r\n});\r\n","// \r\n// Copyright by the Spark Development Network\r\n//\r\n// Licensed under the Rock Community License (the \"License\");\r\n// you may not use this file except in compliance with the License.\r\n// You may obtain a copy of the License at\r\n//\r\n// http://www.rockrms.com/license\r\n//\r\n// Unless required by applicable law or agreed to in writing, software\r\n// distributed under the License is distributed on an \"AS IS\" BASIS,\r\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n// See the License for the specific language governing permissions and\r\n// limitations under the License.\r\n// \r\n//\r\n\r\nimport { Guid } from \"@Obsidian/Types\";\r\nimport { computed, defineComponent, inject, PropType, ref } from \"vue\";\r\nimport DropDownList from \"@Obsidian/Controls/dropDownList\";\r\nimport ElectronicSignature from \"@Obsidian/Controls/electronicSignature\";\r\nimport RadioButtonList from \"@Obsidian/Controls/radioButtonList\";\r\nimport { getRegistrantBasicInfo } from \"./utils.partial\";\r\nimport StringFilter from \"@Obsidian/Utility/stringUtils\";\r\nimport RockButton from \"@Obsidian/Controls/rockButton\";\r\nimport RegistrantPersonField from \"./registrantPersonField.partial\";\r\nimport RegistrantAttributeField from \"./registrantAttributeField.partial\";\r\nimport NotificationBox from \"@Obsidian/Controls/notificationBox.obs\";\r\nimport { RegistrantInfo, RegistrantsSameFamily, RegistrationEntryBlockFamilyMemberViewModel, RegistrationEntryBlockFormFieldViewModel, RegistrationEntryBlockFormViewModel, RegistrationEntryBlockViewModel, RegistrationFieldSource, RegistrationEntryState, RegistrationEntryBlockArgs } from \"./types.partial\";\r\nimport { areEqual, newGuid } from \"@Obsidian/Utility/guid\";\r\nimport RockForm from \"@Obsidian/Controls/rockForm\";\r\nimport FeeField from \"./feeField.partial\";\r\nimport ItemsWithPreAndPostHtml, { ItemWithPreAndPostHtml } from \"@Obsidian/Controls/itemsWithPreAndPostHtml\";\r\nimport { useStore } from \"@Obsidian/PageState\";\r\nimport { PersonBag } from \"@Obsidian/ViewModels/Entities/personBag\";\r\nimport { ListItemBag } from \"@Obsidian/ViewModels/Utility/listItemBag\";\r\nimport { useInvokeBlockAction } from \"@Obsidian/Utility/block\";\r\nimport { ElectronicSignatureValue } from \"@Obsidian/ViewModels/Controls/electronicSignatureValue\";\r\n\r\nconst store = useStore();\r\n\r\nexport default defineComponent({\r\n name: \"Event.RegistrationEntry.Registrant\",\r\n components: {\r\n ElectronicSignature,\r\n RadioButtonList,\r\n RockButton,\r\n RegistrantPersonField,\r\n RegistrantAttributeField,\r\n NotificationBox,\r\n RockForm,\r\n FeeField,\r\n DropDownList,\r\n ItemsWithPreAndPostHtml\r\n },\r\n props: {\r\n currentRegistrant: {\r\n type: Object as PropType,\r\n required: true\r\n },\r\n isWaitList: {\r\n type: Boolean as PropType,\r\n required: true\r\n }\r\n },\r\n setup() {\r\n const invokeBlockAction = useInvokeBlockAction();\r\n const registrationEntryState = inject(\"registrationEntryState\") as RegistrationEntryState;\r\n const getRegistrationEntryBlockArgs = inject(\"getRegistrationEntryBlockArgs\") as () => RegistrationEntryBlockArgs;\r\n\r\n const signatureData = ref(null);\r\n const signatureSource = ref(\"\");\r\n const signatureToken = ref(\"\");\r\n const formResetKey = ref(\"\");\r\n\r\n const isNextDisabled = ref(false);\r\n\r\n const isSignatureDrawn = computed((): boolean => registrationEntryState.viewModel.isSignatureDrawn);\r\n\r\n return {\r\n formResetKey,\r\n getRegistrationEntryBlockArgs,\r\n invokeBlockAction,\r\n isNextDisabled,\r\n isSignatureDrawn,\r\n registrationEntryState,\r\n signatureData,\r\n signatureSource,\r\n signatureToken\r\n };\r\n },\r\n data() {\r\n return {\r\n fieldSources: {\r\n personField: RegistrationFieldSource.PersonField,\r\n personAttribute: RegistrationFieldSource.PersonAttribute,\r\n groupMemberAttribute: RegistrationFieldSource.GroupMemberAttribute,\r\n registrantAttribute: RegistrationFieldSource.RegistrantAttribute\r\n }\r\n };\r\n },\r\n computed: {\r\n showPrevious(): boolean {\r\n return this.registrationEntryState.firstStep !== this.registrationEntryState.steps.perRegistrantForms;\r\n },\r\n viewModel(): RegistrationEntryBlockViewModel {\r\n return this.registrationEntryState.viewModel;\r\n },\r\n currentFormIndex(): number {\r\n return this.registrationEntryState.currentRegistrantFormIndex;\r\n },\r\n currentForm(): RegistrationEntryBlockFormViewModel | null {\r\n return this.formsToShow[this.currentFormIndex] || null;\r\n },\r\n isLastForm(): boolean {\r\n return (this.currentFormIndex + 1) === this.formsToShow.length;\r\n },\r\n isDataForm(): boolean {\r\n return this.currentFormIndex < this.formsToShow.length;\r\n },\r\n isSignatureForm(): boolean {\r\n return this.viewModel.isInlineSignatureRequired && this.currentFormIndex === this.formsToShow.length;\r\n },\r\n\r\n isNextVisible(): boolean {\r\n return !this.isSignatureForm;\r\n },\r\n\r\n /** The filtered list of forms that will be shown */\r\n formsToShow(): RegistrationEntryBlockFormViewModel[] {\r\n if (!this.isWaitList) {\r\n return this.viewModel.registrantForms;\r\n }\r\n\r\n return this.viewModel.registrantForms.filter(form => form.fields.some(field => field.showOnWaitList));\r\n },\r\n\r\n /** The filtered fields to show on the current form */\r\n currentFormFields(): RegistrationEntryBlockFormFieldViewModel[] {\r\n return (this.currentForm?.fields || [])\r\n .filter(f => !this.isWaitList || f.showOnWaitList);\r\n },\r\n\r\n /** The current fields as pre-post items to allow pre-post HTML to be rendered */\r\n prePostHtmlItems(): ItemWithPreAndPostHtml[] {\r\n return this.currentFormFields\r\n .map(f => ({\r\n preHtml: f.preHtml,\r\n postHtml: f.postHtml,\r\n slotName: f.guid\r\n }));\r\n },\r\n currentPerson(): PersonBag | null {\r\n return store.state.currentPerson;\r\n },\r\n pluralFeeTerm(): string {\r\n return StringFilter.toTitleCase(this.viewModel.pluralFeeTerm || \"fees\");\r\n },\r\n\r\n /** The radio options that are displayed to allow the user to pick another person that this\r\n * registrant is part of a family. */\r\n familyOptions(): ListItemBag[] {\r\n const options: ListItemBag[] = [];\r\n const usedFamilyGuids: Record = {};\r\n\r\n if (this.viewModel.registrantsSameFamily !== RegistrantsSameFamily.Ask) {\r\n return options;\r\n }\r\n\r\n // Add previous registrants as options\r\n for (let i = 0; i < this.registrationEntryState.currentRegistrantIndex; i++) {\r\n const registrant = this.registrationEntryState.registrants[i];\r\n const info = getRegistrantBasicInfo(registrant, this.viewModel.registrantForms);\r\n\r\n if (!usedFamilyGuids[registrant.familyGuid] && info?.firstName && info?.lastName) {\r\n options.push({\r\n text: `${info.firstName} ${info.lastName}`,\r\n value: registrant.familyGuid\r\n });\r\n\r\n usedFamilyGuids[registrant.familyGuid] = true;\r\n }\r\n }\r\n\r\n // Add the current person (registrant) if not already added\r\n if (this.currentPerson?.primaryFamilyGuid && this.currentPerson.fullName && !usedFamilyGuids[this.currentPerson.primaryFamilyGuid]) {\r\n usedFamilyGuids[this.currentPerson.primaryFamilyGuid] = true;\r\n options.push({\r\n text: this.currentPerson.fullName,\r\n value: this.currentPerson.primaryFamilyGuid\r\n });\r\n }\r\n\r\n // Add the current person (registrant) if not already added\r\n const familyGuid = usedFamilyGuids[this.currentRegistrant.familyGuid] == true\r\n ? newGuid()\r\n : this.currentRegistrant.familyGuid;\r\n options.push({\r\n text: \"None of the above\",\r\n value: familyGuid\r\n });\r\n\r\n return options;\r\n },\r\n\r\n /** The people that can be picked from because they are members of the same family. */\r\n familyMemberOptions(): ListItemBag[] {\r\n const selectedFamily = this.currentRegistrant.familyGuid;\r\n\r\n if (!selectedFamily) {\r\n return [];\r\n }\r\n\r\n const usedFamilyMemberGuids = this.registrationEntryState.registrants\r\n .filter(r => r.personGuid && r.personGuid !== this.currentRegistrant.personGuid)\r\n .map(r => r.personGuid);\r\n\r\n return this.viewModel.familyMembers\r\n .filter(fm =>\r\n areEqual(fm.familyGuid, selectedFamily) &&\r\n !usedFamilyMemberGuids.includes(fm.guid))\r\n .map(fm => ({\r\n text: fm.fullName,\r\n value: fm.guid\r\n }));\r\n },\r\n uppercaseRegistrantTerm(): string {\r\n return StringFilter.toTitleCase(this.viewModel.registrantTerm);\r\n },\r\n firstName(): string {\r\n return getRegistrantBasicInfo(this.currentRegistrant, this.viewModel.registrantForms).firstName;\r\n },\r\n familyMember(): RegistrationEntryBlockFamilyMemberViewModel | null {\r\n const personGuid = this.currentRegistrant.personGuid;\r\n\r\n if (!personGuid) {\r\n return null;\r\n }\r\n\r\n return this.viewModel.familyMembers.find(fm => areEqual(fm.guid, personGuid)) || null;\r\n },\r\n signatureDocumentTerm(): string {\r\n return StringFilter.toTitleCase(this.viewModel.signatureDocumentTerm || \"Release\");\r\n }\r\n },\r\n methods: {\r\n onPrevious(): void {\r\n this.clearFormErrors();\r\n if (this.currentFormIndex <= 0) {\r\n this.$emit(\"previous\");\r\n return;\r\n }\r\n\r\n this.registrationEntryState.currentRegistrantFormIndex--;\r\n },\r\n async onNext(): Promise {\r\n this.clearFormErrors();\r\n let lastFormIndex = this.formsToShow.length - 1;\r\n\r\n // If we have an inline signature then there is an additional form\r\n // screen that we need to show. Get the document to be signed from\r\n // the server and then display the form.\r\n if (this.viewModel.isInlineSignatureRequired) {\r\n this.isNextDisabled = true;\r\n\r\n try {\r\n const result = await this.invokeBlockAction(\"GetSignatureDocumentData\", {\r\n args: this.getRegistrationEntryBlockArgs(),\r\n registrantGuid: this.currentRegistrant.guid\r\n });\r\n\r\n if (result.isSuccess && result.data) {\r\n this.signatureSource = (result.data as Record).documentHtml;\r\n this.signatureToken = (result.data as Record).securityToken;\r\n\r\n lastFormIndex += 1;\r\n }\r\n else {\r\n console.error(result.data);\r\n return;\r\n }\r\n }\r\n finally {\r\n this.isNextDisabled = false;\r\n }\r\n }\r\n\r\n if (this.currentFormIndex >= lastFormIndex) {\r\n this.$emit(\"next\");\r\n return;\r\n }\r\n\r\n this.registrationEntryState.currentRegistrantFormIndex++;\r\n },\r\n\r\n /**\r\n * Clears any existing errors from the RockForm component. This is\r\n * needed since we display multiple registrant forms inside the single\r\n * RockForm instance. Otherwise when moving from the first form to\r\n * the second form it would immediately validate and display errors.\r\n */\r\n clearFormErrors(): void {\r\n this.formResetKey = newGuid();\r\n },\r\n\r\n async onSigned(): Promise {\r\n // Send all the signed document information to the server. This will\r\n // prepare the final signed document data that will be later sent\r\n // when we complete the registration.\r\n const result = await this.invokeBlockAction(\"SignDocument\", {\r\n args: this.getRegistrationEntryBlockArgs(),\r\n registrantGuid: this.currentRegistrant.guid,\r\n documentHtml: this.signatureSource,\r\n securityToken: this.signatureToken,\r\n signature: this.signatureData\r\n });\r\n\r\n if (result.isSuccess && result.data) {\r\n // Store the signed document data on the registrant.\r\n this.currentRegistrant.signatureData = result.data;\r\n this.$emit(\"next\");\r\n }\r\n else {\r\n console.error(result.data);\r\n }\r\n },\r\n\r\n /** Copy the values that are to have current values used */\r\n copyValuesFromFamilyMember(): void {\r\n if (!this.familyMember || this.registrationEntryState.navBack) {\r\n // Nothing to copy\r\n return;\r\n }\r\n\r\n // If the family member selection is made then set all form fields where use existing value is enabled\r\n for (const form of this.viewModel.registrantForms) {\r\n for (const field of form.fields) {\r\n if (field.guid in this.familyMember.fieldValues) {\r\n const familyMemberValue = this.familyMember.fieldValues[field.guid];\r\n\r\n if (!familyMemberValue) {\r\n delete this.currentRegistrant.fieldValues[field.guid];\r\n }\r\n else if (typeof familyMemberValue === \"object\") {\r\n this.currentRegistrant.fieldValues[field.guid] = { ...familyMemberValue };\r\n }\r\n else {\r\n this.currentRegistrant.fieldValues[field.guid] = familyMemberValue;\r\n }\r\n }\r\n else {\r\n delete this.currentRegistrant.fieldValues[field.guid];\r\n }\r\n }\r\n }\r\n }\r\n },\r\n watch: {\r\n \"currentRegistrant.familyGuid\"(): void {\r\n // Clear the person guid if the family changes\r\n this.currentRegistrant.personGuid = null;\r\n },\r\n familyMember: {\r\n handler(): void {\r\n if (!this.familyMember) {\r\n // If the family member selection is cleared then clear all form fields\r\n for (const form of this.viewModel.registrantForms) {\r\n for (const field of form.fields) {\r\n delete this.currentRegistrant.fieldValues[field.guid];\r\n }\r\n }\r\n }\r\n else {\r\n // If the family member selection is made then set all form fields where use existing value is enabled\r\n this.copyValuesFromFamilyMember();\r\n }\r\n }\r\n }\r\n },\r\n created() {\r\n this.copyValuesFromFamilyMember();\r\n },\r\n template: `\r\n
\r\n \r\n \r\n\r\n
\r\n

Please Sign the {{ signatureDocumentTerm }} for {{ firstName }}

\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n Previous\r\n \r\n
\r\n
\r\n \r\n Next\r\n \r\n
\r\n
\r\n
\r\n
`\r\n});\r\n","// \r\n// Copyright by the Spark Development Network\r\n//\r\n// Licensed under the Rock Community License (the \"License\");\r\n// you may not use this file except in compliance with the License.\r\n// You may obtain a copy of the License at\r\n//\r\n// http://www.rockrms.com/license\r\n//\r\n// Unless required by applicable law or agreed to in writing, software\r\n// distributed under the License is distributed on an \"AS IS\" BASIS,\r\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n// See the License for the specific language governing permissions and\r\n// limitations under the License.\r\n// \r\n//\r\n\r\nimport { defineComponent, inject } from \"vue\";\r\nimport Registrant from \"./registrant.partial\";\r\nimport NotificationBox from \"@Obsidian/Controls/notificationBox.obs\";\r\nimport { RegistrantInfo, RegistrationEntryState } from \"./types.partial\";\r\n\r\nexport default defineComponent({\r\n name: \"Event.RegistrationEntry.Registrants\",\r\n components: {\r\n Registrant,\r\n NotificationBox\r\n },\r\n setup() {\r\n return {\r\n registrationEntryState: inject(\"registrationEntryState\") as RegistrationEntryState,\r\n persistSession: inject(\"persistSession\") as () => Promise\r\n };\r\n },\r\n data() {\r\n return {\r\n hasCopiedCommonValues: false\r\n };\r\n },\r\n methods: {\r\n /** The event that handles when the user clicks to move to the previous registrant */\r\n async onPrevious() {\r\n if (this.registrationEntryState.currentRegistrantIndex <= 0) {\r\n this.$emit(\"previous\");\r\n return;\r\n }\r\n\r\n const lastFormIndex = this.registrationEntryState.viewModel.registrantForms.length - 1;\r\n this.registrationEntryState.currentRegistrantIndex--;\r\n this.registrationEntryState.currentRegistrantFormIndex = lastFormIndex;\r\n await this.persistSession();\r\n },\r\n\r\n /** The event that handles when the user clicks to move to the next registrant */\r\n async onNext() {\r\n const lastIndex = this.registrationEntryState.registrants.length - 1;\r\n\r\n if (this.registrationEntryState.currentRegistrantIndex >= lastIndex) {\r\n this.$emit(\"next\");\r\n return;\r\n }\r\n\r\n // If the first registrant was just completed, then copy the common/shared values to other registrants\r\n if (this.registrationEntryState.currentRegistrantIndex === 0) {\r\n this.copyCommonValuesFromFirstRegistrant();\r\n }\r\n\r\n this.registrationEntryState.currentRegistrantIndex++;\r\n this.registrationEntryState.currentRegistrantFormIndex = 0;\r\n await this.persistSession();\r\n },\r\n\r\n /** Copy the common values from the first registrant to the others */\r\n copyCommonValuesFromFirstRegistrant() {\r\n // Only copy one time\r\n if (this.hasCopiedCommonValues) {\r\n return;\r\n }\r\n\r\n this.hasCopiedCommonValues = true;\r\n const firstRegistrant = this.registrants[0];\r\n\r\n for (let i = 1; i < this.registrants.length; i++) {\r\n const currentRegistrant = this.registrants[i];\r\n\r\n for (const form of this.registrationEntryState.viewModel.registrantForms) {\r\n for (const field of form.fields) {\r\n if (!field.isSharedValue) {\r\n continue;\r\n }\r\n\r\n const valueToShare = firstRegistrant.fieldValues[field.guid];\r\n\r\n if (valueToShare && typeof valueToShare === \"object\") {\r\n currentRegistrant.fieldValues[field.guid] = { ...valueToShare };\r\n }\r\n else {\r\n currentRegistrant.fieldValues[field.guid] = valueToShare;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n },\r\n computed: {\r\n /** Will some of the registrants have to be added to a waitlist */\r\n hasWaitlist(): boolean {\r\n return this.registrationEntryState.registrants.some(r => r.isOnWaitList);\r\n },\r\n\r\n /** Will this registrant be added to the waitlist? */\r\n isOnWaitlist(): boolean {\r\n const currentRegistrant = this.registrationEntryState.registrants[this.registrationEntryState.currentRegistrantIndex];\r\n return currentRegistrant.isOnWaitList;\r\n },\r\n\r\n /** What are the registrants called? */\r\n registrantTerm(): string {\r\n return (this.registrationEntryState.viewModel.registrantTerm || \"registrant\").toLowerCase();\r\n },\r\n\r\n registrants(): RegistrantInfo[] {\r\n return this.registrationEntryState.registrants;\r\n },\r\n currentRegistrantIndex(): number {\r\n return this.registrationEntryState.currentRegistrantIndex;\r\n }\r\n },\r\n template: `\r\n
\r\n \r\n This {{registrantTerm}} will be fully registered.\r\n \r\n \r\n This {{registrantTerm}} will be on the waiting list.\r\n \r\n \r\n
`\r\n});\r\n","// \r\n// Copyright by the Spark Development Network\r\n//\r\n// Licensed under the Rock Community License (the \"License\");\r\n// you may not use this file except in compliance with the License.\r\n// You may obtain a copy of the License at\r\n//\r\n// http://www.rockrms.com/license\r\n//\r\n// Unless required by applicable law or agreed to in writing, software\r\n// distributed under the License is distributed on an \"AS IS\" BASIS,\r\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n// See the License for the specific language governing permissions and\r\n// limitations under the License.\r\n// \r\n//\r\n\r\nimport { computed, defineComponent, inject, ref, watch } from \"vue\";\r\nimport AttributeValuesContainer from \"@Obsidian/Controls/attributeValuesContainer\";\r\nimport RockForm from \"@Obsidian/Controls/rockForm\";\r\nimport RockButton from \"@Obsidian/Controls/rockButton\";\r\nimport { PublicAttributeBag } from \"@Obsidian/ViewModels/Utility/publicAttributeBag\";\r\nimport { RegistrationEntryState } from \"./types.partial\";\r\n\r\nexport default defineComponent({\r\n name: \"Event.RegistrationEntry.RegistrationEnd\",\r\n components: {\r\n RockButton,\r\n AttributeValuesContainer,\r\n RockForm\r\n },\r\n setup(props, { emit }) {\r\n const registrationEntryState = inject(\"registrationEntryState\") as RegistrationEntryState;\r\n\r\n const attributeValues = ref>({});\r\n\r\n for (const a of registrationEntryState.viewModel.registrationAttributesEnd) {\r\n attributeValues.value[a.key ?? \"\"] = (registrationEntryState.registrationFieldValues[a.attributeGuid ?? \"\"] as string) || \"\";\r\n }\r\n\r\n const showPrevious = computed((): boolean => {\r\n return registrationEntryState.firstStep === registrationEntryState.steps.intro;\r\n });\r\n\r\n const attributes = computed((): Record => {\r\n const attrs: Record = {};\r\n\r\n for (const a of registrationEntryState.viewModel.registrationAttributesEnd) {\r\n attrs[a.key ?? \"\"] = a;\r\n }\r\n\r\n return attrs;\r\n });\r\n\r\n const onPrevious = (): void => {\r\n emit(\"previous\");\r\n };\r\n\r\n const onNext = (): void => {\r\n emit(\"next\");\r\n };\r\n\r\n watch(attributeValues, () => {\r\n for (const a of registrationEntryState.viewModel.registrationAttributesEnd) {\r\n registrationEntryState.registrationFieldValues[a.attributeGuid ?? \"\"] = attributeValues.value[a.key ?? \"\"];\r\n }\r\n });\r\n\r\n return {\r\n attributes,\r\n attributeValues,\r\n onNext,\r\n onPrevious,\r\n showPrevious\r\n };\r\n },\r\n\r\n template: `\r\n
\r\n \r\n \r\n\r\n
\r\n
\r\n \r\n Previous\r\n \r\n
\r\n
\r\n \r\n Next\r\n \r\n
\r\n
\r\n
\r\n
`\r\n});\r\n","// \r\n// Copyright by the Spark Development Network\r\n//\r\n// Licensed under the Rock Community License (the \"License\");\r\n// you may not use this file except in compliance with the License.\r\n// You may obtain a copy of the License at\r\n//\r\n// http://www.rockrms.com/license\r\n//\r\n// Unless required by applicable law or agreed to in writing, software\r\n// distributed under the License is distributed on an \"AS IS\" BASIS,\r\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n// See the License for the specific language governing permissions and\r\n// limitations under the License.\r\n// \r\n//\r\n\r\nimport { computed, defineComponent, inject, ref, watch } from \"vue\";\r\nimport AttributeValuesContainer from \"@Obsidian/Controls/attributeValuesContainer\";\r\nimport RockForm from \"@Obsidian/Controls/rockForm\";\r\nimport RockButton from \"@Obsidian/Controls/rockButton\";\r\nimport { PublicAttributeBag } from \"@Obsidian/ViewModels/Utility/publicAttributeBag\";\r\nimport { RegistrationEntryState } from \"./types.partial\";\r\n\r\nexport default defineComponent({\r\n name: \"Event.RegistrationEntry.RegistrationStart\",\r\n components: {\r\n RockButton,\r\n AttributeValuesContainer,\r\n RockForm\r\n },\r\n setup(props, { emit }) {\r\n const registrationEntryState = inject(\"registrationEntryState\") as RegistrationEntryState;\r\n\r\n const attributeValues = ref>({});\r\n\r\n for (const a of registrationEntryState.viewModel.registrationAttributesStart) {\r\n attributeValues.value[a.key ?? \"\"] = (registrationEntryState.registrationFieldValues[a.attributeGuid ?? \"\"] as string) || \"\";\r\n }\r\n\r\n const showPrevious = computed((): boolean => {\r\n return registrationEntryState.firstStep === registrationEntryState.steps.intro;\r\n });\r\n\r\n const attributes = computed((): Record => {\r\n const attrs: Record = {};\r\n\r\n for (const a of registrationEntryState.viewModel.registrationAttributesStart) {\r\n attrs[a.key ?? \"\"] = a;\r\n }\r\n\r\n return attrs;\r\n });\r\n\r\n const onPrevious = (): void => {\r\n emit(\"previous\");\r\n };\r\n\r\n const onNext = (): void => {\r\n emit(\"next\");\r\n };\r\n\r\n watch(attributeValues, () => {\r\n for (const a of registrationEntryState.viewModel.registrationAttributesStart) {\r\n registrationEntryState.registrationFieldValues[a.attributeGuid ?? \"\"] = attributeValues.value[a.key ?? \"\"];\r\n }\r\n });\r\n\r\n return {\r\n attributes,\r\n attributeValues,\r\n onNext,\r\n onPrevious,\r\n showPrevious\r\n };\r\n },\r\n\r\n template: `\r\n
\r\n \r\n \r\n\r\n
\r\n
\r\n \r\n Previous\r\n \r\n
\r\n
\r\n \r\n Next\r\n \r\n
\r\n
\r\n
\r\n
`\r\n});\r\n","// \r\n// Copyright by the Spark Development Network\r\n//\r\n// Licensed under the Rock Community License (the \"License\");\r\n// you may not use this file except in compliance with the License.\r\n// You may obtain a copy of the License at\r\n//\r\n// http://www.rockrms.com/license\r\n//\r\n// Unless required by applicable law or agreed to in writing, software\r\n// distributed under the License is distributed on an \"AS IS\" BASIS,\r\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n// See the License for the specific language governing permissions and\r\n// limitations under the License.\r\n// \r\n//\r\n\r\nimport { defineComponent, inject, PropType } from \"vue\";\r\nimport Dialog from \"@Obsidian/Controls/dialog\";\r\nimport { useInvokeBlockAction } from \"@Obsidian/Utility/block\";\r\nimport LoadingIndicator from \"@Obsidian/Controls/loadingIndicator\";\r\nimport RockButton from \"@Obsidian/Controls/rockButton\";\r\nimport { toWord } from \"@Obsidian/Utility/numberUtils\";\r\nimport { pluralConditional } from \"@Obsidian/Utility/stringUtils\";\r\nimport { SessionRenewalResult, RegistrationEntryState } from \"./types.partial\";\r\nimport { RockDateTime } from \"@Obsidian/Utility/rockDateTime\";\r\n\r\nexport default defineComponent({\r\n name: \"Event.RegistrationEntry.SessionRenewal\",\r\n components: {\r\n Dialog,\r\n LoadingIndicator,\r\n RockButton\r\n },\r\n props: {\r\n isSessionExpired: {\r\n type: Boolean as PropType,\r\n required: true\r\n }\r\n },\r\n setup () {\r\n return {\r\n registrationEntryState: inject(\"registrationEntryState\") as RegistrationEntryState,\r\n invokeBlockAction: useInvokeBlockAction()\r\n };\r\n },\r\n data () {\r\n return {\r\n spotsSecured: null as number | null,\r\n isLoading: false,\r\n isModalVisible: false\r\n };\r\n },\r\n computed: {\r\n /** Does this registration instance have a waitlist? */\r\n hasWaitlist (): boolean {\r\n return this.registrationEntryState.viewModel.waitListEnabled;\r\n },\r\n\r\n /** The number of registrants being registered */\r\n allRegistrantCount (): number {\r\n return this.registrationEntryState.registrants.length;\r\n },\r\n\r\n /** The number of registrants pushed to the waitlist */\r\n waitlistRegistrantCount (): number {\r\n return this.registrationEntryState.registrants.filter(r => r.isOnWaitList).length;\r\n },\r\n\r\n /** The number of registrants pushed to the waitlist as a word (eg \"one\") */\r\n waitlistRegistrantCountWord (): string {\r\n return toWord(this.waitlistRegistrantCount);\r\n },\r\n\r\n /** The number of registrants not on a waitlist */\r\n nonWaitlistRegistrantCount (): number {\r\n return this.registrationEntryState.registrants.filter(r => !r.isOnWaitList).length;\r\n },\r\n\r\n /** The number of registrants not on a waitlist as a word (eg \"one\") */\r\n nonWaitlistRegistrantCountWord (): string {\r\n return toWord(this.nonWaitlistRegistrantCount);\r\n }\r\n },\r\n methods: {\r\n pluralConditional,\r\n\r\n /** Restart the registration by reloading the page */\r\n restart(): void {\r\n this.isLoading = true;\r\n location.reload();\r\n },\r\n\r\n /** Close the modal and continue on */\r\n close(): void {\r\n this.isModalVisible = false;\r\n\r\n this.$nextTick(() => {\r\n this.spotsSecured = null;\r\n this.isLoading = false;\r\n });\r\n },\r\n\r\n /** Attempt to renew the session and get more time */\r\n async requestRenewal(): Promise {\r\n this.spotsSecured = 0;\r\n this.isLoading = true;\r\n\r\n try {\r\n const response = await this.invokeBlockAction(\"TryToRenewSession\", {\r\n registrationSessionGuid: this.registrationEntryState.registrationSessionGuid\r\n });\r\n\r\n if (response.isSuccess && response.data) {\r\n const asDate = RockDateTime.parseISO(response.data.expirationDateTime);\r\n this.registrationEntryState.sessionExpirationDateMs = asDate?.toMilliseconds() ?? null;\r\n this.spotsSecured = response.data.spotsSecured;\r\n }\r\n else {\r\n this.registrationEntryState.sessionExpirationDateMs = null;\r\n this.spotsSecured = 0;\r\n }\r\n\r\n // If there is a deficiency, then update the state to reflect the reduced spots available\r\n let deficiency = this.nonWaitlistRegistrantCount - this.spotsSecured;\r\n\r\n if (!deficiency) {\r\n this.$emit(\"success\");\r\n this.close();\r\n return;\r\n }\r\n\r\n this.registrationEntryState.viewModel.spotsRemaining = this.spotsSecured;\r\n\r\n if (!this.hasWaitlist) {\r\n // Reduce the registrants down to fit the spots available\r\n this.registrationEntryState.registrants.length = this.spotsSecured;\r\n return;\r\n }\r\n\r\n // Work backward through the registrants until the deficiency is removed\r\n for (let i = this.allRegistrantCount - 1; i >= 0; i--) {\r\n if (!deficiency) {\r\n break;\r\n }\r\n\r\n const registrant = this.registrationEntryState.registrants[i];\r\n\r\n if (registrant.isOnWaitList) {\r\n continue;\r\n }\r\n\r\n registrant.isOnWaitList = true;\r\n deficiency--;\r\n }\r\n }\r\n finally {\r\n this.isLoading = false;\r\n }\r\n }\r\n },\r\n watch: {\r\n isSessionExpired(): void {\r\n if (this.isSessionExpired) {\r\n this.spotsSecured = null;\r\n this.isModalVisible = true;\r\n }\r\n }\r\n },\r\n template: `\r\n\r\n \r\n \r\n \r\n`\r\n});\r\n","// \r\n// Copyright by the Spark Development Network\r\n//\r\n// Licensed under the Rock Community License (the \"License\");\r\n// you may not use this file except in compliance with the License.\r\n// You may obtain a copy of the License at\r\n//\r\n// http://www.rockrms.com/license\r\n//\r\n// Unless required by applicable law or agreed to in writing, software\r\n// distributed under the License is distributed on an \"AS IS\" BASIS,\r\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n// See the License for the specific language governing permissions and\r\n// limitations under the License.\r\n// \r\n//\r\n\r\nimport { Guid } from \"@Obsidian/Types\";\r\nimport { defineComponent, inject } from \"vue\";\r\nimport SaveFinancialAccountForm from \"@Obsidian/Controls/saveFinancialAccountForm\";\r\nimport { RegistrationEntryState } from \"./types.partial\";\r\n\r\nexport default defineComponent({\r\n name: \"Event.RegistrationEntry.Success\",\r\n components: {\r\n SaveFinancialAccountForm\r\n },\r\n setup () {\r\n return {\r\n registrationEntryState: inject(\"registrationEntryState\") as RegistrationEntryState\r\n };\r\n },\r\n computed: {\r\n /** The term to refer to a registrant */\r\n registrationTerm (): string {\r\n return this.registrationEntryState.viewModel.registrationTerm.toLowerCase();\r\n },\r\n\r\n /** The success lava markup */\r\n messageHtml (): string {\r\n return this.registrationEntryState.successViewModel?.messageHtml || `You have successfully completed this ${this.registrationTerm}`;\r\n },\r\n\r\n /** The financial gateway record's guid */\r\n gatewayGuid (): Guid | null {\r\n return this.registrationEntryState.viewModel.gatewayGuid;\r\n },\r\n\r\n /** The transaction code that can be used to create a saved account */\r\n transactionCode (): string {\r\n return this.registrationEntryState.viewModel.isRedirectGateway ?\r\n \"\" :\r\n this.registrationEntryState.successViewModel?.transactionCode || \"\";\r\n },\r\n\r\n /** The token returned for the payment method */\r\n gatewayPersonIdentifier (): string {\r\n return this.registrationEntryState.successViewModel?.gatewayPersonIdentifier || \"\";\r\n },\r\n\r\n enableSaveAccount(): boolean {\r\n return this.registrationEntryState.viewModel.enableSaveAccount && this.registrationEntryState.savedAccountGuid === null;\r\n }\r\n },\r\n template: `\r\n
\r\n
\r\n \r\n \r\n \r\n
`\r\n});\r\n","// \r\n// Copyright by the Spark Development Network\r\n//\r\n// Licensed under the Rock Community License (the \"License\");\r\n// you may not use this file except in compliance with the License.\r\n// You may obtain a copy of the License at\r\n//\r\n// http://www.rockrms.com/license\r\n//\r\n// Unless required by applicable law or agreed to in writing, software\r\n// distributed under the License is distributed on an \"AS IS\" BASIS,\r\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n// See the License for the specific language governing permissions and\r\n// limitations under the License.\r\n// \r\n//\r\n\r\nimport { defineComponent, inject, ref } from \"vue\";\r\nimport GatewayControl from \"@Obsidian/Controls/gatewayControl\";\r\nimport { provideSubmitPayment } from \"@Obsidian/Core/Controls/financialGateway\";\r\nimport { GatewayControlBag } from \"@Obsidian/ViewModels/Controls/gatewayControlBag\";\r\nimport RockForm from \"@Obsidian/Controls/rockForm\";\r\nimport RockValidation from \"@Obsidian/Controls/rockValidation\";\r\nimport NotificationBox from \"@Obsidian/Controls/notificationBox.obs\";\r\nimport RockButton from \"@Obsidian/Controls/rockButton\";\r\nimport { useInvokeBlockAction } from \"@Obsidian/Utility/block\";\r\nimport { newGuid, toGuidOrNull } from \"@Obsidian/Utility/guid\";\r\nimport { SavedFinancialAccountListItemBag } from \"@Obsidian/ViewModels/Finance/savedFinancialAccountListItemBag\";\r\nimport { RegistrationEntryBlockSuccessViewModel, RegistrationEntryBlockViewModel, RegistrationEntryBlockArgs, RegistrationEntryState } from \"./types.partial\";\r\nimport { FormError } from \"@Obsidian/Utility/form\";\r\n\r\nexport default defineComponent({\r\n name: \"Event.RegistrationEntry.Payment\",\r\n components: {\r\n RockButton,\r\n RockForm,\r\n NotificationBox,\r\n GatewayControl,\r\n RockValidation\r\n },\r\n setup() {\r\n const submitPayment = provideSubmitPayment();\r\n\r\n const getRegistrationEntryBlockArgs = inject(\"getRegistrationEntryBlockArgs\") as () => RegistrationEntryBlockArgs;\r\n const invokeBlockAction = useInvokeBlockAction();\r\n const registrationEntryState = inject(\"registrationEntryState\") as RegistrationEntryState;\r\n\r\n /** Is there an AJAX call in-flight? */\r\n const loading = ref(false);\r\n\r\n /** Gateway indicated error */\r\n const gatewayErrorMessage = ref(\"\");\r\n\r\n /** Gateway indicated validation issues */\r\n const gatewayValidationFields = ref([]);\r\n\r\n /** An error message received from a bad submission */\r\n const submitErrorMessage = ref(\"\");\r\n\r\n /** The currently selected saved account. */\r\n const selectedSavedAccount = ref(\"\");\r\n\r\n return {\r\n uniqueId: newGuid(),\r\n loading,\r\n gatewayErrorMessage,\r\n gatewayValidationFields,\r\n submitErrorMessage,\r\n selectedSavedAccount,\r\n submitPayment,\r\n getRegistrationEntryBlockArgs,\r\n invokeBlockAction,\r\n registrationEntryState: registrationEntryState\r\n };\r\n },\r\n\r\n computed: {\r\n /** The settings for the gateway (MyWell, etc) control */\r\n gatewayControlModel(): GatewayControlBag {\r\n return this.viewModel.gatewayControl;\r\n },\r\n\r\n /** This is the data sent from the C# code behind when the block initialized. */\r\n viewModel(): RegistrationEntryBlockViewModel {\r\n return this.registrationEntryState.viewModel;\r\n },\r\n\r\n /** The text to be displayed on the \"Finish\" button */\r\n finishButtonText(): string {\r\n return \"Pay\";\r\n },\r\n\r\n /** true if there are any saved accounts to be selected. */\r\n hasSavedAccounts(): boolean {\r\n return this.registrationEntryState.viewModel.savedAccounts !== null\r\n && this.registrationEntryState.viewModel.savedAccounts.length > 0;\r\n },\r\n\r\n /** Contains the options to display in the saved account drop down list. */\r\n savedAccountOptions(): SavedFinancialAccountListItemBag[] {\r\n if (this.registrationEntryState.viewModel.savedAccounts === null) {\r\n return [];\r\n }\r\n\r\n const options = [...this.registrationEntryState.viewModel.savedAccounts];\r\n\r\n options.push({\r\n value: \"\",\r\n text: \"New Payment Method\"\r\n });\r\n\r\n return options;\r\n },\r\n\r\n /** true if the gateway control should be visible. */\r\n showGateway(): boolean {\r\n return !this.hasSavedAccounts || this.selectedSavedAccount === \"\";\r\n },\r\n\r\n /** The amount to pay in dollars and cents. */\r\n amountToPay(): number {\r\n return this.registrationEntryState.amountToPayToday;\r\n },\r\n\r\n /** The amount to pay as a friendly text string. */\r\n amountToPayText(): string {\r\n return `$${this.registrationEntryState.amountToPayToday.toFixed(2)}`;\r\n },\r\n\r\n /** The URL to return to if the gateway control needs to perform a redirect. */\r\n redirectReturnUrl(): string {\r\n if (window.location.href.includes(\"?\")) {\r\n return `${window.location.href}&sessionGuid=${this.registrationEntryState.registrationSessionGuid}`;\r\n }\r\n else {\r\n return `${window.location.href}?sessionGuid=${this.registrationEntryState.registrationSessionGuid}`;\r\n }\r\n }\r\n },\r\n\r\n methods: {\r\n /** User clicked the \"previous\" button */\r\n onPrevious() {\r\n this.$emit(\"previous\");\r\n },\r\n\r\n /** User clicked the \"finish\" button */\r\n async onNext() {\r\n this.loading = true;\r\n\r\n // If there is a cost, then the gateway will need to be used to pay\r\n if (this.registrationEntryState.amountToPayToday) {\r\n if (this.showGateway) {\r\n // Otherwise, this is a traditional gateway\r\n this.gatewayErrorMessage = \"\";\r\n this.gatewayValidationFields = [];\r\n this.submitPayment();\r\n }\r\n else if (this.selectedSavedAccount !== \"\") {\r\n this.registrationEntryState.savedAccountGuid = toGuidOrNull(this.selectedSavedAccount);\r\n const success = await this.submit();\r\n this.loading = false;\r\n\r\n if (success) {\r\n this.$emit(\"next\");\r\n }\r\n }\r\n else {\r\n this.submitErrorMessage = \"Please select a valid payment option.\";\r\n this.loading = false;\r\n\r\n return;\r\n }\r\n }\r\n else {\r\n const success = await this.submit();\r\n this.loading = false;\r\n\r\n if (success) {\r\n this.$emit(\"next\");\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * The gateway indicated success and returned a token\r\n * @param token\r\n */\r\n async onGatewayControlSuccess(token: string) {\r\n this.registrationEntryState.gatewayToken = token;\r\n const success = await this.submit();\r\n\r\n this.loading = false;\r\n\r\n if (success) {\r\n this.$emit(\"next\");\r\n }\r\n },\r\n\r\n /**\r\n * The gateway indicated an error\r\n * @param message\r\n */\r\n onGatewayControlError(message: string) {\r\n this.loading = false;\r\n this.gatewayErrorMessage = message;\r\n },\r\n\r\n /**\r\n * The gateway wants the user to fix some fields\r\n * @param invalidFields\r\n */\r\n onGatewayControlValidation(invalidFields: FormError[]) {\r\n this.loading = false;\r\n this.gatewayValidationFields = invalidFields;\r\n },\r\n\r\n /**\r\n * Get the unique identifier of the option to use on the input control.\r\n *\r\n * @param option The option that represents the saved account.\r\n *\r\n * @returns A string that contains the unique control identifier.\r\n */\r\n getOptionUniqueId(option: SavedFinancialAccountListItemBag): string {\r\n const key = option.value?.replace(\" \", \"-\") ?? \"\";\r\n\r\n return `${this.uniqueId}-${key}`;\r\n },\r\n\r\n /**\r\n * Gets the image to display for the saved account input control.\r\n *\r\n * @param option The option that represents the saved account.\r\n *\r\n * @returns A string with the URL of the image to display.\r\n */\r\n getAccountImage(option: SavedFinancialAccountListItemBag): string {\r\n return option.image ?? \"\";\r\n },\r\n\r\n /**\r\n * Gets the name to display for the saved account input control.\r\n *\r\n * @param option The option that represents the saved account.\r\n *\r\n * @returns A string with the user friendly name of the saved account.\r\n */\r\n getAccountName(option: SavedFinancialAccountListItemBag): string {\r\n return option.text ?? \"\";\r\n },\r\n\r\n /**\r\n * Gets the descriptive text to display for the saved account input control.\r\n *\r\n * @param option The option that represents the saved account.\r\n *\r\n * @returns A string with the user friendly description of the saved account.\r\n */\r\n getAccountDescription(option: SavedFinancialAccountListItemBag): string {\r\n return option.description ?? \"\";\r\n },\r\n\r\n /** Submit the registration to the server */\r\n async submit(): Promise {\r\n this.submitErrorMessage = \"\";\r\n\r\n const result = await this.invokeBlockAction(\"SubmitRegistration\", {\r\n args: this.getRegistrationEntryBlockArgs()\r\n });\r\n\r\n if (result.isError || !result.data) {\r\n this.submitErrorMessage = result.errorMessage || \"Unknown error\";\r\n }\r\n else {\r\n this.registrationEntryState.successViewModel = result.data;\r\n }\r\n\r\n return result.isSuccess;\r\n }\r\n },\r\n\r\n template: `\r\n
\r\n \r\n

Payment Information

\r\n
\r\n Payment Amount: {{ amountToPayText }}\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n {{gatewayErrorMessage}}\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n {{submitErrorMessage}}\r\n\r\n
\r\n \r\n Previous\r\n \r\n\r\n \r\n {{finishButtonText}}\r\n \r\n
\r\n
\r\n
`\r\n});\r\n","// \r\n// Copyright by the Spark Development Network\r\n//\r\n// Licensed under the Rock Community License (the \"License\");\r\n// you may not use this file except in compliance with the License.\r\n// You may obtain a copy of the License at\r\n//\r\n// http://www.rockrms.com/license\r\n//\r\n// Unless required by applicable law or agreed to in writing, software\r\n// distributed under the License is distributed on an \"AS IS\" BASIS,\r\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n// See the License for the specific language governing permissions and\r\n// limitations under the License.\r\n// \r\n//\r\n\r\nimport { defineComponent, inject } from \"vue\";\r\nimport Loading from \"@Obsidian/Controls/loading\";\r\nimport { useInvokeBlockAction } from \"@Obsidian/Utility/block\";\r\nimport CurrencyBox from \"@Obsidian/Controls/currencyBox\";\r\nimport HelpBlock from \"@Obsidian/Controls/helpBlock\";\r\nimport { ValidationRule } from \"@Obsidian/ValidationRules\";\r\nimport { asFormattedString } from \"@Obsidian/Utility/numberUtils\";\r\nimport { RegistrationEntryBlockArgs, RegistrationEntryState } from \"./types.partial\";\r\n\r\nenum RegistrationCostSummaryType {\r\n Cost = 0,\r\n Fee = 1,\r\n Discount = 2,\r\n Total = 3\r\n}\r\n\r\ntype LineItem = {\r\n type: RegistrationCostSummaryType;\r\n description: string;\r\n cost: number;\r\n discountedCost: number;\r\n minPayment: number;\r\n defaultPayment: number | null;\r\n};\r\n\r\ntype AugmentedLineItem = LineItem & {\r\n isFee: boolean;\r\n discountHelp: string;\r\n discountedAmountFormatted: string;\r\n amountFormatted: string;\r\n};\r\n\r\nexport default defineComponent({\r\n name: \"Event.RegistrationEntry.CostSummary\",\r\n components: {\r\n Loading,\r\n CurrencyBox,\r\n HelpBlock\r\n },\r\n setup() {\r\n return {\r\n getRegistrationEntryBlockArgs: inject(\"getRegistrationEntryBlockArgs\") as () => RegistrationEntryBlockArgs,\r\n invokeBlockAction: useInvokeBlockAction(),\r\n registrationEntryState: inject(\"registrationEntryState\") as RegistrationEntryState\r\n };\r\n },\r\n data() {\r\n return {\r\n isLoading: false,\r\n lineItems: [] as LineItem[]\r\n };\r\n },\r\n computed: {\r\n /** Line items with some extra info computed for table rendering */\r\n augmentedLineItems(): AugmentedLineItem[] {\r\n return this.lineItems.map(li => ({\r\n ...li,\r\n isFee: li.type === RegistrationCostSummaryType.Fee,\r\n discountHelp: (this.hasDiscount && li.cost === li.discountedCost) ? \"This item is not eligible for the discount.\" : \"\",\r\n amountFormatted: asFormattedString(li.cost, 2),\r\n discountedAmountFormatted: asFormattedString(li.discountedCost, 2)\r\n } as AugmentedLineItem));\r\n },\r\n\r\n /** Should the discount column in the fee table be shown? */\r\n hasDiscount(): boolean {\r\n return this.lineItems.some(li => li.discountedCost !== li.cost);\r\n },\r\n\r\n /** The total cost before discounts */\r\n total(): number {\r\n let total = 0;\r\n this.lineItems.forEach(li => total += li.cost);\r\n return total;\r\n },\r\n\r\n /** The total before discounts as a formatted string */\r\n totalFormatted(): string {\r\n return `$${asFormattedString(this.total, 2)}`;\r\n },\r\n\r\n /** The total cost before discounts */\r\n defaultPaymentAmount(): number {\r\n let total = 0;\r\n let hasDefault = false;\r\n\r\n this.lineItems.forEach(li => {\r\n if (li.defaultPayment) {\r\n hasDefault = true;\r\n total += li.defaultPayment;\r\n }\r\n });\r\n\r\n total = hasDefault ? total : this.maxAmountCanBePaid;\r\n\r\n if (total > this.maxAmountCanBePaid) {\r\n total = this.maxAmountCanBePaid;\r\n }\r\n\r\n if (total < this.amountDueToday) {\r\n total = this.amountDueToday;\r\n }\r\n\r\n if (total < 0) {\r\n total = 0;\r\n }\r\n\r\n return total;\r\n },\r\n\r\n /** The total cost after discounts */\r\n discountedTotal(): number {\r\n let total = 0;\r\n this.lineItems.forEach(li => total += li.discountedCost);\r\n return total;\r\n },\r\n\r\n /** The total after discounts as a formatted string */\r\n discountedTotalFormatted(): string {\r\n return `$${asFormattedString(this.discountedTotal, 2)}`;\r\n },\r\n\r\n /** The min amount that must be paid today */\r\n amountDueToday(): number {\r\n if (this.amountPreviouslyPaid) {\r\n return 0;\r\n }\r\n\r\n let total = 0;\r\n this.lineItems.forEach(li => total += (Math.min(li.minPayment,li.discountedCost)));\r\n return total;\r\n },\r\n\r\n /** The min amount that must be paid today as a formatted string */\r\n amountDueTodayFormatted(): string {\r\n return `$${asFormattedString(this.amountDueToday, 2)}`;\r\n },\r\n\r\n /** Should the amount that is due today be shown */\r\n showAmountDueToday(): boolean {\r\n return this.amountDueToday !== this.discountedTotal;\r\n },\r\n\r\n /** The amount previously paid */\r\n amountPreviouslyPaid(): number {\r\n return this.registrationEntryState.viewModel.session?.previouslyPaid || 0;\r\n },\r\n\r\n /** The amount previously paid formatted as a string */\r\n amountPreviouslyPaidFormatted(): string {\r\n return `$${asFormattedString(this.amountPreviouslyPaid, 2)}`;\r\n },\r\n\r\n /** The max amount that can be paid today */\r\n maxAmountCanBePaid(): number {\r\n const balance = this.discountedTotal - this.amountPreviouslyPaid;\r\n\r\n if (balance > 0) {\r\n return balance;\r\n }\r\n return 0;\r\n },\r\n\r\n /** The max amount that can be paid today as a formatted string */\r\n maxAmountCanBePaidFormatted(): string {\r\n return `$${asFormattedString(this.maxAmountCanBePaid, 2)}`;\r\n },\r\n\r\n /** The amount that would remain if the user paid the amount indicated in the currency box */\r\n amountRemaining(): number {\r\n const actual = this.maxAmountCanBePaid - this.registrationEntryState.amountToPayToday;\r\n const bounded = actual < 0 ? 0 : actual > this.maxAmountCanBePaid ? this.maxAmountCanBePaid : actual;\r\n return bounded;\r\n },\r\n\r\n /** The amount that would remain if the user paid the amount indicated in the currency box as a formatted string */\r\n amountRemainingFormatted(): string {\r\n return `$${asFormattedString(this.amountRemaining, 2)}`;\r\n },\r\n\r\n /** The vee-validate rules for the amount to pay today */\r\n amountToPayTodayRules(): ValidationRule[] {\r\n const rules: ValidationRule[] = [];\r\n let min = this.amountDueToday;\r\n const max = this.maxAmountCanBePaid;\r\n\r\n if (min > max) {\r\n min = max;\r\n }\r\n\r\n if (min > 0) {\r\n rules.push(\"required\");\r\n }\r\n else {\r\n rules.push(\"notblank\");\r\n }\r\n\r\n rules.push(`gte:${min}`);\r\n rules.push(`lte:${max}`);\r\n\r\n return rules;\r\n },\r\n },\r\n methods: {\r\n /** Retrieve the line item costs from the server */\r\n async fetchData(): Promise {\r\n this.isLoading = true;\r\n this.lineItems = [];\r\n\r\n try {\r\n const response = await this.invokeBlockAction(\"CalculateCost\", {\r\n args: this.getRegistrationEntryBlockArgs()\r\n });\r\n\r\n if (response.data) {\r\n this.lineItems = response.data;\r\n }\r\n }\r\n finally {\r\n this.isLoading = false;\r\n }\r\n }\r\n },\r\n async created() {\r\n await this.fetchData();\r\n },\r\n watch: {\r\n defaultPaymentAmount: {\r\n immediate: true,\r\n handler(): void {\r\n this.registrationEntryState.amountToPayToday = this.defaultPaymentAmount;\r\n }\r\n },\r\n\r\n async \"registrationEntryState.discountCode\"(): Promise {\r\n await this.fetchData();\r\n }\r\n },\r\n template: `\r\n\r\n
\r\n
\r\n
\r\n Description\r\n
\r\n
\r\n Discounted Amount\r\n
\r\n
\r\n Amount\r\n
\r\n
\r\n
\r\n
\r\n {{lineItem.description}}\r\n
\r\n
\r\n \r\n Discounted Amount:\r\n $ {{lineItem.discountedAmountFormatted}}\r\n
\r\n
\r\n Amount:\r\n $ {{lineItem.amountFormatted}}\r\n
\r\n
\r\n
\r\n
\r\n Total\r\n
\r\n
\r\n Discounted Amount:\r\n {{discountedTotalFormatted}}\r\n
\r\n
\r\n Amount:\r\n {{totalFormatted}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n {{discountedTotalFormatted}}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n {{amountPreviouslyPaidFormatted}}\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n {{maxAmountCanBePaidFormatted}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
`\r\n});\r\n","// \r\n// Copyright by the Spark Development Network\r\n//\r\n// Licensed under the Rock Community License (the \"License\");\r\n// you may not use this file except in compliance with the License.\r\n// You may obtain a copy of the License at\r\n//\r\n// http://www.rockrms.com/license\r\n//\r\n// Unless required by applicable law or agreed to in writing, software\r\n// distributed under the License is distributed on an \"AS IS\" BASIS,\r\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n// See the License for the specific language governing permissions and\r\n// limitations under the License.\r\n// \r\n//\r\n\r\nimport { defineComponent, inject } from \"vue\";\r\nimport { useInvokeBlockAction } from \"@Obsidian/Utility/block\";\r\nimport NotificationBox from \"@Obsidian/Controls/notificationBox.obs\";\r\nimport RockButton from \"@Obsidian/Controls/rockButton\";\r\nimport TextBox from \"@Obsidian/Controls/textBox\";\r\nimport { asFormattedString } from \"@Obsidian/Utility/numberUtils\";\r\nimport { RegistrationEntryBlockViewModel, RegistrationEntryState, RegistrationEntryBlockArgs } from \"./types.partial\";\r\n\r\ntype CheckDiscountCodeResult = {\r\n discountCode: string;\r\n usagesRemaining: number | null;\r\n discountAmount: number;\r\n discountPercentage: number;\r\n};\r\n\r\nexport default defineComponent({\r\n name: \"Event.RegistrationEntry.DiscountCodeForm\",\r\n components: {\r\n RockButton,\r\n TextBox,\r\n NotificationBox\r\n },\r\n setup() {\r\n const getRegistrationEntryBlockArgs = inject(\"getRegistrationEntryBlockArgs\") as () => RegistrationEntryBlockArgs;\r\n return {\r\n invokeBlockAction: useInvokeBlockAction(),\r\n registrationEntryState: inject(\"registrationEntryState\") as RegistrationEntryState,\r\n getRegistrationEntryBlockArgs\r\n\r\n };\r\n },\r\n mounted() {\r\n this.tryDiscountCode();\r\n },\r\n data() {\r\n return {\r\n /** Is there an AJAX call in-flight? */\r\n loading: false,\r\n\r\n /** The bound value to the discount code input */\r\n discountCodeInput: \"\",\r\n\r\n /** A warning message about the discount code that is a result of a failed AJAX call */\r\n discountCodeWarningMessage: \"\",\r\n };\r\n },\r\n computed: {\r\n /** The success message displayed once a discount code has been applied */\r\n discountCodeSuccessMessage(): string {\r\n const discountAmount = this.registrationEntryState.discountAmount;\r\n const discountPercent = this.registrationEntryState.discountPercentage;\r\n\r\n if (!discountPercent && !discountAmount) {\r\n return \"\";\r\n }\r\n\r\n const discountText = discountPercent ?\r\n `${asFormattedString(discountPercent * 100, 0)}%` :\r\n `$${asFormattedString(discountAmount, 2)}`;\r\n\r\n return `Your ${discountText} discount code for all registrants was successfully applied.`;\r\n },\r\n\r\n /** Should the discount panel be shown? */\r\n isDiscountPanelVisible(): boolean {\r\n return this.viewModel.hasDiscountsAvailable;\r\n },\r\n\r\n /** Disable the textbox and hide the apply button */\r\n isDiscountCodeAllowed(): boolean {\r\n const args = this.getRegistrationEntryBlockArgs();\r\n if (args.discountCode.length > 0 && args.registrationGuid != null) {\r\n return false;\r\n }\r\n\r\n return true;\r\n },\r\n\r\n /** This is the data sent from the C# code behind when the block initialized. */\r\n viewModel(): RegistrationEntryBlockViewModel {\r\n return this.registrationEntryState.viewModel;\r\n }\r\n },\r\n methods: {\r\n /** Send a user input discount code to the server so the server can check and send back\r\n * the discount amount. */\r\n async tryDiscountCode(): Promise {\r\n this.loading = true;\r\n try {\r\n const result = await this.invokeBlockAction(\"CheckDiscountCode\", {\r\n code: this.discountCodeInput,\r\n registrantCount: this.registrationEntryState.registrants.length\r\n });\r\n\r\n if (result.isError || !result.data) {\r\n if (this.discountCodeInput != \"\") {\r\n this.discountCodeWarningMessage = `'${this.discountCodeInput}' is not a valid Discount Code.`;\r\n }\r\n }\r\n else {\r\n this.discountCodeWarningMessage = \"\";\r\n this.discountCodeInput = this.discountCodeInput == \"\" ? result.data.discountCode : this.discountCodeInput;\r\n this.registrationEntryState.discountAmount = result.data.discountAmount;\r\n this.registrationEntryState.discountPercentage = result.data.discountPercentage;\r\n this.registrationEntryState.discountCode = result.data.discountCode;\r\n }\r\n }\r\n finally {\r\n this.loading = false;\r\n }\r\n }\r\n },\r\n watch: {\r\n \"registrationEntryState.DiscountCode\": {\r\n immediate: true,\r\n handler(): void {\r\n this.discountCodeInput = this.registrationEntryState.discountCode;\r\n }\r\n }\r\n },\r\n template: `\r\n
\r\n {{discountCodeWarningMessage}}\r\n {{discountCodeSuccessMessage}}\r\n
\r\n \r\n
\r\n \r\n \r\n Apply\r\n \r\n
\r\n
\r\n
`\r\n});\r\n","// \r\n// Copyright by the Spark Development Network\r\n//\r\n// Licensed under the Rock Community License (the \"License\");\r\n// you may not use this file except in compliance with the License.\r\n// You may obtain a copy of the License at\r\n//\r\n// http://www.rockrms.com/license\r\n//\r\n// Unless required by applicable law or agreed to in writing, software\r\n// distributed under the License is distributed on an \"AS IS\" BASIS,\r\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n// See the License for the specific language governing permissions and\r\n// limitations under the License.\r\n// \r\n//\r\n\r\nimport { Guid } from \"@Obsidian/Types\";\r\nimport { defineComponent, inject } from \"vue\";\r\nimport InlineCheckBox from \"@Obsidian/Controls/inlineCheckBox\";\r\nimport EmailBox from \"@Obsidian/Controls/emailBox\";\r\nimport RadioButtonList from \"@Obsidian/Controls/radioButtonList\";\r\nimport StaticFormControl from \"@Obsidian/Controls/staticFormControl\";\r\nimport TextBox from \"@Obsidian/Controls/textBox\";\r\nimport { getRegistrantBasicInfo, } from \"./utils.partial\";\r\nimport { RegistrantInfo, RegistrantsSameFamily, RegistrarInfo, RegistrarOption, RegistrationEntryBlockViewModel, RegistrantBasicInfo, RegistrationEntryState, RegistrationEntryBlockArgs } from \"./types.partial\";\r\nimport { useStore } from \"@Obsidian/PageState\";\r\nimport { PersonBag } from \"@Obsidian/ViewModels/Entities/personBag\";\r\nimport { ListItemBag } from \"@Obsidian/ViewModels/Utility/listItemBag\";\r\n\r\nconst store = useStore();\r\n\r\nexport default defineComponent({\r\n name: \"Event.RegistrationEntry.Registrar\",\r\n components: {\r\n TextBox,\r\n InlineCheckBox,\r\n EmailBox,\r\n StaticFormControl,\r\n RadioButtonList\r\n },\r\n setup () {\r\n return {\r\n getRegistrationEntryBlockArgs: inject(\"getRegistrationEntryBlockArgs\") as () => RegistrationEntryBlockArgs,\r\n registrationEntryState: inject(\"registrationEntryState\") as RegistrationEntryState\r\n };\r\n },\r\n data () {\r\n return {\r\n /** Should the registrar panel be shown */\r\n isRegistrarPanelShown: true\r\n };\r\n },\r\n computed: {\r\n /** Is the registrar option set to UseLoggedInPerson */\r\n useLoggedInPersonForRegistrar (): boolean {\r\n return (!!this.currentPerson) && this.viewModel.registrarOption === RegistrarOption.UseLoggedInPerson;\r\n },\r\n\r\n /** The person that is currently authenticated */\r\n currentPerson (): PersonBag | null {\r\n return store.state.currentPerson;\r\n },\r\n\r\n /** The person entering the registration information. This object is part of the registration state. */\r\n registrar (): RegistrarInfo {\r\n return this.registrationEntryState.registrar;\r\n },\r\n\r\n /** The first registrant entered into the registration. */\r\n firstRegistrant (): RegistrantInfo {\r\n return this.registrationEntryState.registrants[ 0 ];\r\n },\r\n\r\n /** This is the data sent from the C# code behind when the block initialized. */\r\n viewModel (): RegistrationEntryBlockViewModel {\r\n return this.registrationEntryState.viewModel;\r\n },\r\n\r\n /** Should the checkbox allowing the registrar to choose to update their email address be shown? */\r\n doShowUpdateEmailOption (): boolean {\r\n return !this.viewModel.forceEmailUpdate && !!this.currentPerson?.email;\r\n },\r\n\r\n /** Info about the registrants made available by .FirstName instead of by field guid */\r\n registrantInfos (): RegistrantBasicInfo[] {\r\n return this.registrationEntryState.registrants.map(r => getRegistrantBasicInfo(r, this.viewModel.registrantForms));\r\n },\r\n\r\n /** The registrant term - plural if there are more than 1 */\r\n registrantTerm (): string {\r\n return this.registrantInfos.length === 1 ? this.viewModel.registrantTerm : this.viewModel.pluralRegistrantTerm;\r\n },\r\n\r\n /** The name of this registration instance */\r\n instanceName (): string {\r\n return this.viewModel.instanceName;\r\n },\r\n\r\n /** The radio options that are displayed to allow the user to pick another person that this\r\n * registrar is part of a family. */\r\n familyOptions (): ListItemBag[] {\r\n const options: ListItemBag[] = [];\r\n const usedFamilyGuids: Record = {};\r\n\r\n if (this.viewModel.registrantsSameFamily !== RegistrantsSameFamily.Ask) {\r\n return options;\r\n }\r\n\r\n // Add previous registrants as options\r\n for (let i = 0; i < this.registrationEntryState.registrants.length; i++) {\r\n const registrant = this.registrationEntryState.registrants[ i ];\r\n const info = getRegistrantBasicInfo(registrant, this.viewModel.registrantForms);\r\n\r\n if (!usedFamilyGuids[ registrant.familyGuid ] && info?.firstName && info?.lastName) {\r\n options.push({\r\n text: `${info.firstName} ${info.lastName}`,\r\n value: registrant.familyGuid\r\n });\r\n\r\n usedFamilyGuids[ registrant.familyGuid ] = true;\r\n }\r\n }\r\n\r\n // Add the current person (registrant) if not already added\r\n if (!usedFamilyGuids[this.registrationEntryState.ownFamilyGuid]) {\r\n options.push({\r\n text: \"None\",\r\n value: this.registrationEntryState.ownFamilyGuid\r\n });\r\n }\r\n\r\n return options;\r\n },\r\n },\r\n methods: {\r\n /** Prefill in the registrar form fields based on the admin's settings */\r\n prefillRegistrar () {\r\n this.isRegistrarPanelShown = true;\r\n\r\n // If the option is to prompt or use the current person, prefill the current person if available\r\n if (this.currentPerson &&\r\n (this.viewModel.registrarOption === RegistrarOption.UseLoggedInPerson || this.viewModel.registrarOption === RegistrarOption.PromptForRegistrar)) {\r\n this.registrar.nickName = this.currentPerson.nickName || this.currentPerson.firstName || \"\";\r\n this.registrar.lastName = this.currentPerson.lastName || \"\";\r\n this.registrar.email = this.currentPerson.email || \"\";\r\n this.registrar.familyGuid = this.currentPerson.primaryFamilyGuid || null;\r\n return;\r\n }\r\n\r\n if (this.viewModel.registrarOption === RegistrarOption.PromptForRegistrar) {\r\n return;\r\n }\r\n\r\n // If prefill or first-registrant, then the first registrants info is used (as least as a starting point)\r\n if (this.viewModel.registrarOption === RegistrarOption.PrefillFirstRegistrant || this.viewModel.registrarOption === RegistrarOption.UseFirstRegistrant) {\r\n const firstRegistrantInfo = getRegistrantBasicInfo(this.firstRegistrant, this.viewModel.registrantForms);\r\n this.registrar.nickName = firstRegistrantInfo.firstName;\r\n this.registrar.lastName = firstRegistrantInfo.lastName;\r\n this.registrar.email = firstRegistrantInfo.email;\r\n this.registrar.familyGuid = this.firstRegistrant.familyGuid;\r\n\r\n const hasAllInfo = (!!this.registrar.nickName) && (!!this.registrar.lastName) && (!!this.registrar.email);\r\n\r\n if (hasAllInfo && this.viewModel.registrarOption === RegistrarOption.UseFirstRegistrant) {\r\n this.isRegistrarPanelShown = false;\r\n }\r\n\r\n return;\r\n }\r\n }\r\n },\r\n watch: {\r\n currentPerson: {\r\n immediate: true,\r\n handler () {\r\n this.prefillRegistrar();\r\n }\r\n }\r\n },\r\n template: `\r\n
\r\n

This Registration Was Completed By

\r\n \r\n \r\n
`\r\n});\r\n","// \r\n// Copyright by the Spark Development Network\r\n//\r\n// Licensed under the Rock Community License (the \"License\");\r\n// you may not use this file except in compliance with the License.\r\n// You may obtain a copy of the License at\r\n//\r\n// http://www.rockrms.com/license\r\n//\r\n// Unless required by applicable law or agreed to in writing, software\r\n// distributed under the License is distributed on an \"AS IS\" BASIS,\r\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n// See the License for the specific language governing permissions and\r\n// limitations under the License.\r\n// \r\n//\r\n\r\nimport { computed, defineComponent, inject, ref } from \"vue\";\r\nimport GatewayControl from \"@Obsidian/Controls/gatewayControl\";\r\nimport RockForm from \"@Obsidian/Controls/rockForm\";\r\nimport RockValidation from \"@Obsidian/Controls/rockValidation\";\r\nimport NotificationBox from \"@Obsidian/Controls/notificationBox.obs\";\r\nimport DropDownList from \"@Obsidian/Controls/dropDownList\";\r\nimport EmailBox from \"@Obsidian/Controls/emailBox\";\r\nimport RockButton from \"@Obsidian/Controls/rockButton\";\r\nimport { useInvokeBlockAction } from \"@Obsidian/Utility/block\";\r\nimport { getRegistrantBasicInfo } from \"./utils.partial\";\r\nimport CostSummary from \"./costSummary.partial\";\r\nimport DiscountCodeForm from \"./discountCodeForm.partial\";\r\nimport Registrar from \"./registrar.partial\";\r\nimport { RegistrationEntryBlockSuccessViewModel, RegistrationEntryBlockViewModel, RegistrantBasicInfo, RegistrationEntryState, RegistrationEntryBlockArgs } from \"./types.partial\";\r\nimport { Guid } from \"@Obsidian/Types\";\r\n\r\nexport default defineComponent({\r\n name: \"Event.RegistrationEntry.Summary\",\r\n components: {\r\n RockButton,\r\n EmailBox,\r\n RockForm,\r\n NotificationBox,\r\n DropDownList,\r\n GatewayControl,\r\n RockValidation,\r\n CostSummary,\r\n Registrar,\r\n DiscountCodeForm\r\n },\r\n setup() {\r\n const getRegistrationEntryBlockArgs = inject(\"getRegistrationEntryBlockArgs\") as () => RegistrationEntryBlockArgs;\r\n const invokeBlockAction = useInvokeBlockAction();\r\n const registrationEntryState = inject(\"registrationEntryState\") as RegistrationEntryState;\r\n\r\n /** Is there an AJAX call in-flight? */\r\n const loading = ref(false);\r\n\r\n /** An error message received from a bad submission */\r\n const submitErrorMessage = ref(\"\");\r\n\r\n const persistSession = inject(\"persistSession\") as (force: boolean) => Promise;\r\n\r\n const hasPaymentCost = computed(() => {\r\n const usedFeeIds: Guid[] = [];\r\n\r\n // Get a list of all fees that are in use.\r\n for (const registrant of registrationEntryState.registrants) {\r\n for (const feeId in registrant.feeItemQuantities) {\r\n if (registrant.feeItemQuantities[feeId] > 0) {\r\n usedFeeIds.push(feeId);\r\n }\r\n }\r\n }\r\n\r\n // See if any of those fees have a cost.\r\n const hasCostFees = registrationEntryState.viewModel.fees.some(f => f.items.some(i => i.cost > 0 && usedFeeIds.includes(i.guid)));\r\n\r\n return hasCostFees || registrationEntryState.viewModel.cost > 0;\r\n });\r\n\r\n if (!hasPaymentCost.value) {\r\n registrationEntryState.amountToPayToday = 0;\r\n }\r\n\r\n return {\r\n loading,\r\n submitErrorMessage,\r\n getRegistrationEntryBlockArgs,\r\n hasPaymentCost,\r\n invokeBlockAction,\r\n persistSession,\r\n registrationEntryState: registrationEntryState\r\n };\r\n },\r\n\r\n computed: {\r\n /** This is the data sent from the C# code behind when the block initialized. */\r\n viewModel(): RegistrationEntryBlockViewModel {\r\n return this.registrationEntryState.viewModel;\r\n },\r\n\r\n /** Info about the registrants made available by .FirstName instead of by field guid */\r\n registrantInfos(): RegistrantBasicInfo[] {\r\n return this.registrationEntryState.registrants.map(r => getRegistrantBasicInfo(r, this.viewModel.registrantForms));\r\n },\r\n\r\n /** The registrant term - plural if there are more than 1 */\r\n registrantTerm(): string {\r\n return this.registrantInfos.length === 1 ? this.viewModel.registrantTerm : this.viewModel.pluralRegistrantTerm;\r\n },\r\n\r\n /** The name of this registration instance */\r\n instanceName(): string {\r\n return this.viewModel.instanceName;\r\n },\r\n\r\n /** The text to be displayed on the \"Finish\" button */\r\n finishButtonText(): string {\r\n if (this.registrationEntryState.amountToPayToday) {\r\n return this.viewModel.isRedirectGateway ? \"Pay\" : \"Next\";\r\n }\r\n else {\r\n return \"Finish\";\r\n }\r\n }\r\n },\r\n\r\n methods: {\r\n /** User clicked the \"previous\" button */\r\n onPrevious() {\r\n this.$emit(\"previous\");\r\n },\r\n\r\n /** User clicked the \"finish\" button */\r\n async onNext() {\r\n this.loading = true;\r\n\r\n // If there is a cost, then the gateway will need to be used to pay\r\n if (this.registrationEntryState.amountToPayToday) {\r\n await this.persistSession(true);\r\n\r\n if (this.viewModel.isRedirectGateway) {\r\n const redirectUrl = await this.getPaymentRedirect();\r\n\r\n if (redirectUrl) {\r\n location.href = redirectUrl;\r\n }\r\n else {\r\n // Error is shown by getPaymentRedirect method\r\n this.loading = false;\r\n }\r\n }\r\n else {\r\n this.loading = false;\r\n this.$emit(\"next\");\r\n }\r\n }\r\n else {\r\n const success = await this.submit();\r\n this.loading = false;\r\n\r\n if (success) {\r\n this.$emit(\"next\");\r\n }\r\n }\r\n },\r\n\r\n /** Submit the registration to the server */\r\n async submit(): Promise {\r\n this.submitErrorMessage = \"\";\r\n\r\n const result = await this.invokeBlockAction(\"SubmitRegistration\", {\r\n args: this.getRegistrationEntryBlockArgs()\r\n });\r\n\r\n if (result.isError || !result.data) {\r\n this.submitErrorMessage = result.errorMessage || \"Unknown error\";\r\n }\r\n else {\r\n this.registrationEntryState.successViewModel = result.data;\r\n }\r\n\r\n return result.isSuccess;\r\n },\r\n\r\n\r\n /**\r\n * Persist the args to the server so the user can be redirected for\r\n * payment. Returns the redirect URL.\r\n */\r\n async getPaymentRedirect(): Promise {\r\n const result = await this.invokeBlockAction(\"GetPaymentRedirect\", {\r\n args: this.getRegistrationEntryBlockArgs(),\r\n returnUrl: window.location.href\r\n });\r\n\r\n if (result.isError || !result.data) {\r\n this.submitErrorMessage = result.errorMessage || \"Unknown error\";\r\n }\r\n\r\n return result.data || \"\";\r\n },\r\n },\r\n\r\n template: `\r\n
\r\n \r\n\r\n \r\n\r\n
\r\n

Payment Summary

\r\n \r\n \r\n
\r\n\r\n
\r\n

The following {{registrantTerm}} will be registered for {{instanceName}}:

\r\n
    \r\n
  • \r\n {{r.firstName}} {{r.lastName}}\r\n
  • \r\n
\r\n
\r\n\r\n {{submitErrorMessage}}\r\n\r\n
\r\n \r\n Previous\r\n \r\n \r\n {{finishButtonText}}\r\n \r\n
\r\n
\r\n
`\r\n});\r\n","// \r\n// Copyright by the Spark Development Network\r\n//\r\n// Licensed under the Rock Community License (the \"License\");\r\n// you may not use this file except in compliance with the License.\r\n// You may obtain a copy of the License at\r\n//\r\n// http://www.rockrms.com/license\r\n//\r\n// Unless required by applicable law or agreed to in writing, software\r\n// distributed under the License is distributed on an \"AS IS\" BASIS,\r\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n// See the License for the specific language governing permissions and\r\n// limitations under the License.\r\n// \r\n//\r\n\r\nimport { defineComponent, provide, reactive, ref } from \"vue\";\r\nimport NotificationBox from \"@Obsidian/Controls/notificationBox.obs\";\r\nimport CountdownTimer from \"@Obsidian/Controls/countdownTimer\";\r\nimport JavaScriptAnchor from \"@Obsidian/Controls/javaScriptAnchor\";\r\nimport ProgressTracker, { ProgressTrackerItem } from \"@Obsidian/Controls/progressTracker\";\r\nimport RockButton from \"@Obsidian/Controls/rockButton\";\r\nimport NumberFilter, { toWord } from \"@Obsidian/Utility/numberUtils\";\r\nimport StringFilter, { isNullOrWhiteSpace, toTitleCase } from \"@Obsidian/Utility/stringUtils\";\r\nimport { useStore } from \"@Obsidian/PageState\";\r\nimport { useConfigurationValues, useInvokeBlockAction } from \"@Obsidian/Utility/block\";\r\nimport { newGuid } from \"@Obsidian/Utility/guid\";\r\nimport { List } from \"@Obsidian/Utility/linq\";\r\nimport Page from \"@Obsidian/Utility/page\";\r\nimport { RockDateTime } from \"@Obsidian/Utility/rockDateTime\";\r\nimport { PersonBag } from \"@Obsidian/ViewModels/Entities/personBag\";\r\nimport RegistrationEntryIntro from \"./RegistrationEntry/intro.partial\";\r\nimport RegistrationEntryRegistrants from \"./RegistrationEntry/registrants.partial\";\r\nimport RegistrationEntryRegistrationEnd from \"./RegistrationEntry/registrationEnd.partial\";\r\nimport { RegistrantInfo, RegistrationEntryBlockFeeViewModel, RegistrationEntryBlockViewModel, RegistrationEntryBlockArgs, Step, RegistrationEntryState } from \"./RegistrationEntry/types.partial\";\r\nimport RegistrationEntryRegistrationStart from \"./RegistrationEntry/registrationStart.partial\";\r\nimport SessionRenewal from \"./RegistrationEntry/sessionRenewal.partial\";\r\nimport RegistrationEntrySuccess from \"./RegistrationEntry/success.partial\";\r\nimport RegistrationEntryPayment from \"./RegistrationEntry/payment.partial\";\r\nimport RegistrationEntrySummary from \"./RegistrationEntry/summary.partial\";\r\nimport { getDefaultRegistrantInfo, getForcedFamilyGuid, getRegistrantBasicInfo } from \"./RegistrationEntry/utils.partial\";\r\n\r\nconst store = useStore();\r\n\r\nexport default defineComponent({\r\n name: \"Event.RegistrationEntry\",\r\n components: {\r\n RockButton,\r\n RegistrationEntryIntro,\r\n RegistrationEntryRegistrants,\r\n RegistrationEntryRegistrationStart,\r\n RegistrationEntryRegistrationEnd,\r\n RegistrationEntrySummary,\r\n RegistrationEntryPayment,\r\n RegistrationEntrySuccess,\r\n ProgressTracker,\r\n NotificationBox,\r\n CountdownTimer,\r\n JavaScriptAnchor,\r\n SessionRenewal\r\n },\r\n setup() {\r\n const steps: Record = {\r\n [Step.Intro]: Step.Intro,\r\n [Step.RegistrationStartForm]: Step.RegistrationStartForm,\r\n [Step.PerRegistrantForms]: Step.PerRegistrantForms,\r\n [Step.RegistrationEndForm]: Step.RegistrationEndForm,\r\n [Step.Review]: Step.Review,\r\n [Step.Payment]: Step.Payment,\r\n [Step.Success]: Step.Success\r\n };\r\n\r\n const notFound = ref(false);\r\n const viewModel = useConfigurationValues();\r\n const invokeBlockAction = useInvokeBlockAction();\r\n const notFoundMessage = viewModel?.registrationInstanceNotFoundMessage || \"The selected registration could not be found or is no longer active.\";\r\n\r\n if (viewModel === null || viewModel.registrationInstanceNotFoundMessage) {\r\n notFound.value = true;\r\n\r\n return {\r\n viewModel,\r\n notFound,\r\n notFoundMessage\r\n };\r\n }\r\n\r\n if (!viewModel.registrationAttributesStart) {\r\n notFound.value = true;\r\n }\r\n\r\n const hasPreAttributes = viewModel.registrationAttributesStart?.length > 0;\r\n let currentStep = steps.intro;\r\n\r\n if (viewModel.successViewModel) {\r\n // This is after having paid via redirect gateway\r\n currentStep = steps.success;\r\n }\r\n else if (viewModel.session && !viewModel.startAtBeginning) {\r\n // This is an existing registration, start at the summary\r\n currentStep = steps.review;\r\n }\r\n else if (viewModel.maxRegistrants === 1 && isNullOrWhiteSpace(viewModel.instructionsHtml)) {\r\n // There is no need to show the number of registrants selector or instructions. Start at the second page.\r\n currentStep = hasPreAttributes ? steps.registrationStartForm : steps.perRegistrantForms;\r\n }\r\n\r\n const staticRegistrationEntryState: RegistrationEntryState = {\r\n steps: steps,\r\n viewModel: viewModel,\r\n firstStep: currentStep,\r\n currentStep: currentStep,\r\n navBack: false,\r\n currentRegistrantFormIndex: 0,\r\n currentRegistrantIndex: 0,\r\n registrants: viewModel.session?.registrants || [getDefaultRegistrantInfo(null, viewModel, null)],\r\n registrationFieldValues: viewModel.session?.fieldValues || {},\r\n registrar: viewModel.session?.registrar || {\r\n nickName: \"\",\r\n lastName: \"\",\r\n email: \"\",\r\n updateEmail: true,\r\n familyGuid: null\r\n },\r\n gatewayToken: \"\",\r\n savedAccountGuid: null,\r\n discountCode: viewModel.session?.discountCode || \"\",\r\n discountAmount: viewModel.session?.discountAmount || 0,\r\n discountPercentage: viewModel.session?.discountPercentage || 0,\r\n successViewModel: viewModel.successViewModel,\r\n amountToPayToday: 0,\r\n sessionExpirationDateMs: null,\r\n registrationSessionGuid: viewModel.session?.registrationSessionGuid || newGuid(),\r\n ownFamilyGuid: store.state.currentPerson?.primaryFamilyGuid || newGuid()\r\n };\r\n const registrationEntryState = reactive(staticRegistrationEntryState);\r\n\r\n provide(\"registrationEntryState\", registrationEntryState);\r\n\r\n /** A method to get the args needed for persisting the session */\r\n const getRegistrationEntryBlockArgs: () => RegistrationEntryBlockArgs = () => {\r\n return {\r\n registrationSessionGuid: registrationEntryState.registrationSessionGuid,\r\n gatewayToken: registrationEntryState.gatewayToken,\r\n savedAccountGuid: registrationEntryState.savedAccountGuid,\r\n discountCode: registrationEntryState.discountCode,\r\n fieldValues: registrationEntryState.registrationFieldValues,\r\n registrar: registrationEntryState.registrar,\r\n registrants: registrationEntryState.registrants,\r\n amountToPayNow: registrationEntryState.amountToPayToday,\r\n registrationGuid: viewModel.session?.registrationGuid || null\r\n };\r\n };\r\n\r\n provide(\"getRegistrationEntryBlockArgs\", getRegistrationEntryBlockArgs);\r\n\r\n /** A method to persist the session */\r\n const persistSession: (force: boolean) => Promise = async (force = false) => {\r\n if (!force && !viewModel.timeoutMinutes) {\r\n return;\r\n }\r\n\r\n const response = await invokeBlockAction<{ expirationDateTime: string }>(\"PersistSession\", {\r\n args: getRegistrationEntryBlockArgs()\r\n });\r\n\r\n if (response.data) {\r\n const expirationDate = RockDateTime.parseISO(response.data.expirationDateTime);\r\n\r\n registrationEntryState.sessionExpirationDateMs = expirationDate?.toMilliseconds() ?? null;\r\n }\r\n };\r\n\r\n provide(\"persistSession\", persistSession);\r\n\r\n /** Expose these members and make them available within the rest of the component */\r\n return {\r\n viewModel,\r\n steps,\r\n registrationEntryState,\r\n notFound,\r\n notFoundMessage,\r\n persistSession,\r\n invokeBlockAction,\r\n getRegistrationEntryBlockArgs\r\n };\r\n },\r\n data() {\r\n return {\r\n secondsBeforeExpiration: -1,\r\n hasSessionRenewalSuccess: false\r\n };\r\n },\r\n computed: {\r\n /** The person currently authenticated */\r\n currentPerson(): PersonBag | null {\r\n return store.state.currentPerson;\r\n },\r\n\r\n /** Is the session expired? */\r\n isSessionExpired(): boolean {\r\n return this.secondsBeforeExpiration === 0 && this.currentStep !== Step.Success;\r\n },\r\n\r\n mustLogin(): boolean {\r\n return !store.state.currentPerson && this.viewModel != null && (this.viewModel.isUnauthorized || this.viewModel.loginRequiredToRegister);\r\n },\r\n isUnauthorized(): boolean {\r\n return this.viewModel?.isUnauthorized ?? false;\r\n },\r\n currentStep(): string {\r\n return this.registrationEntryState?.currentStep ?? \"\";\r\n },\r\n registrants(): RegistrantInfo[] {\r\n return this.registrationEntryState?.registrants ?? [];\r\n },\r\n hasPreAttributes(): boolean {\r\n return (this.viewModel?.registrationAttributesStart?.length ?? 0) > 0;\r\n },\r\n hasPostAttributes(): boolean {\r\n return (this.viewModel?.registrationAttributesEnd?.length ?? 0) > 0;\r\n },\r\n progressTrackerIndex(): number {\r\n if (this.currentStep === Step.Intro || this.registrationEntryState == null) {\r\n return 0;\r\n }\r\n\r\n const stepsBeforePre = this.registrationEntryState?.firstStep === Step.Intro ? 1 : 0;\r\n\r\n if (this.currentStep === Step.RegistrationStartForm) {\r\n return stepsBeforePre;\r\n }\r\n\r\n const stepsBeforeRegistrants = stepsBeforePre + (this.hasPreAttributes ? 1 : 0);\r\n\r\n if (this.currentStep === Step.PerRegistrantForms) {\r\n return this.registrationEntryState.currentRegistrantIndex + stepsBeforeRegistrants;\r\n }\r\n\r\n const stepsToCompleteRegistrants = this.registrationEntryState.registrants.length + stepsBeforeRegistrants;\r\n\r\n if (this.currentStep === Step.RegistrationEndForm) {\r\n return stepsToCompleteRegistrants;\r\n }\r\n\r\n if (this.currentStep === Step.Review) {\r\n return stepsToCompleteRegistrants + (this.hasPostAttributes ? 1 : 0);\r\n }\r\n\r\n if (this.currentStep === Step.Payment) {\r\n return stepsToCompleteRegistrants + (this.hasPostAttributes ? 1 : 0);\r\n }\r\n\r\n return 0;\r\n },\r\n uppercaseRegistrantTerm(): string {\r\n return StringFilter.toTitleCase(this.viewModel?.registrantTerm ?? \"\");\r\n },\r\n currentRegistrantTitle(): string {\r\n if (this.registrationEntryState == null) {\r\n return \"\";\r\n }\r\n\r\n const ordinal = NumberFilter.toOrdinal(this.registrationEntryState.currentRegistrantIndex + 1);\r\n let title = StringFilter.toTitleCase(\r\n this.registrants.length <= 1 ?\r\n this.uppercaseRegistrantTerm :\r\n ordinal + \" \" + this.uppercaseRegistrantTerm);\r\n\r\n if (this.registrationEntryState.currentRegistrantFormIndex > 0) {\r\n title += \" (cont)\";\r\n }\r\n\r\n return title;\r\n },\r\n stepTitleHtml(): string {\r\n if (this.currentStep === Step.RegistrationStartForm) {\r\n return this.viewModel?.registrationAttributeTitleStart ?? \"\";\r\n }\r\n\r\n if (this.currentStep === Step.PerRegistrantForms) {\r\n return this.currentRegistrantTitle;\r\n }\r\n\r\n if (this.currentStep === Step.RegistrationEndForm) {\r\n return this.viewModel?.registrationAttributeTitleEnd ?? \"\";\r\n }\r\n\r\n if (this.currentStep === Step.Review) {\r\n return \"Review Registration\";\r\n }\r\n\r\n if (this.currentStep === Step.Success) {\r\n return this.registrationEntryState?.successViewModel?.titleHtml || \"Congratulations\";\r\n }\r\n\r\n return \"\";\r\n },\r\n\r\n /** The items to display in the progress tracker */\r\n progressTrackerItems(): ProgressTrackerItem[] {\r\n const items: ProgressTrackerItem[] = [];\r\n\r\n if (this.registrationEntryState == null) {\r\n return items;\r\n }\r\n\r\n if (this.registrationEntryState.firstStep === Step.Intro) {\r\n items.push({\r\n key: \"Start\",\r\n title: \"Start\",\r\n subtitle: this.viewModel.registrationTerm\r\n });\r\n }\r\n\r\n if (this.hasPreAttributes) {\r\n items.push({\r\n key: \"Pre\",\r\n title: this.viewModel.registrationAttributeTitleStart,\r\n subtitle: this.viewModel.registrationTerm\r\n });\r\n }\r\n\r\n if (!this.registrationEntryState.registrants.length) {\r\n items.push({\r\n key: \"Registrant\",\r\n title: toTitleCase(this.viewModel.registrantTerm),\r\n subtitle: this.viewModel.registrationTerm\r\n });\r\n }\r\n\r\n for (let i = 0; i < this.registrationEntryState.registrants.length; i++) {\r\n const registrant = this.registrationEntryState.registrants[i];\r\n const info = getRegistrantBasicInfo(registrant, this.viewModel.registrantForms);\r\n\r\n if (info?.firstName && info?.lastName) {\r\n items.push({\r\n key: `Registrant-${registrant.guid}`,\r\n title: info.firstName,\r\n subtitle: info.lastName\r\n });\r\n }\r\n else {\r\n items.push({\r\n key: `Registrant-${registrant.guid}`,\r\n title: toTitleCase(this.viewModel.registrantTerm),\r\n subtitle: toTitleCase(toWord(i + 1))\r\n });\r\n }\r\n }\r\n\r\n if (this.hasPostAttributes) {\r\n items.push({\r\n key: \"Post\",\r\n title: this.viewModel.registrationAttributeTitleEnd,\r\n subtitle: this.viewModel.registrationTerm\r\n });\r\n }\r\n\r\n items.push({\r\n key: \"Finalize\",\r\n title: \"Finalize\",\r\n subtitle: this.viewModel.registrationTerm\r\n });\r\n\r\n return items;\r\n },\r\n\r\n /**\r\n * Determines if there are any costs or fees on the registration and\r\n * checks if we have a valid gateway.\r\n */\r\n isInvalidGateway() {\r\n if (!this.viewModel) {\r\n return false;\r\n }\r\n\r\n const hasCostFees = new List(this.viewModel.fees)\r\n .any(f => new List(f.items).any(i => i.cost > 0));\r\n\r\n // If no cost or fees, then no gateway will be needed.\r\n if (this.viewModel.cost <= 0 && !hasCostFees) {\r\n return false;\r\n }\r\n\r\n if (this.viewModel.isRedirectGateway || this.viewModel.gatewayControl.fileUrl) {\r\n return false;\r\n }\r\n\r\n return true;\r\n },\r\n\r\n isFull(): boolean {\r\n if (!this.viewModel || this.viewModel.spotsRemaining === null) {\r\n return false;\r\n }\r\n\r\n return this.viewModel.spotsRemaining < 1 && !this.viewModel.waitListEnabled;\r\n },\r\n\r\n preventNewRegistration(): boolean {\r\n if (!this.viewModel) {\r\n return this.isFull;\r\n }\r\n\r\n return this.isFull && !this.viewModel.isExistingRegistration;\r\n },\r\n\r\n registrationTerm(): string {\r\n return (this.viewModel?.registrationTerm || \"registration\").toLowerCase();\r\n },\r\n\r\n registrationTermPlural(): string {\r\n return (this.viewModel?.pluralRegistrationTerm || \"registrations\").toLowerCase();\r\n },\r\n\r\n registrationTermTitleCase(): string {\r\n return toTitleCase(this.registrationTerm);\r\n }\r\n },\r\n methods: {\r\n /** The user requested an extension in time and it was granted */\r\n onSessionRenewalSuccess(): void {\r\n this.hasSessionRenewalSuccess = true;\r\n setTimeout(() => this.hasSessionRenewalSuccess = false, 5000);\r\n },\r\n\r\n async onIntroNext(): Promise {\r\n if (this.persistSession && this.registrationEntryState) {\r\n await this.persistSession(false);\r\n this.registrationEntryState.currentStep = this.hasPreAttributes ? Step.RegistrationStartForm : Step.PerRegistrantForms;\r\n this.registrationEntryState.navBack = false;\r\n Page.smoothScrollToTop();\r\n }\r\n },\r\n async onRegistrationStartPrevious(): Promise {\r\n if (this.persistSession && this.registrationEntryState) {\r\n await this.persistSession(false);\r\n this.registrationEntryState.currentStep = Step.Intro;\r\n this.registrationEntryState.navBack = true;\r\n Page.smoothScrollToTop();\r\n }\r\n },\r\n async onRegistrationStartNext(): Promise {\r\n if (this.persistSession && this.registrationEntryState) {\r\n await this.persistSession(false);\r\n this.registrationEntryState.currentStep = Step.PerRegistrantForms;\r\n this.registrationEntryState.navBack = false;\r\n Page.smoothScrollToTop();\r\n }\r\n },\r\n async onRegistrantPrevious(): Promise {\r\n if (this.persistSession && this.registrationEntryState) {\r\n await this.persistSession(false);\r\n this.registrationEntryState.currentStep = this.hasPreAttributes ? Step.RegistrationStartForm : Step.Intro;\r\n this.registrationEntryState.navBack = true;\r\n Page.smoothScrollToTop();\r\n }\r\n },\r\n async onRegistrantNext(): Promise {\r\n if (this.persistSession && this.registrationEntryState) {\r\n await this.persistSession(false);\r\n this.registrationEntryState.currentStep = this.hasPostAttributes ? Step.RegistrationEndForm : Step.Review;\r\n this.registrationEntryState.navBack = false;\r\n Page.smoothScrollToTop();\r\n }\r\n },\r\n async onRegistrationEndPrevious(): Promise {\r\n if (this.persistSession && this.registrationEntryState) {\r\n await this.persistSession(false);\r\n this.registrationEntryState.currentStep = Step.PerRegistrantForms;\r\n this.registrationEntryState.navBack = true;\r\n Page.smoothScrollToTop();\r\n }\r\n },\r\n async onRegistrationEndNext(): Promise {\r\n if (this.persistSession && this.registrationEntryState) {\r\n await this.persistSession(false);\r\n this.registrationEntryState.currentStep = Step.Review;\r\n this.registrationEntryState.navBack = false;\r\n Page.smoothScrollToTop();\r\n }\r\n },\r\n async onSummaryPrevious(): Promise {\r\n if (this.persistSession && this.registrationEntryState) {\r\n await this.persistSession(false);\r\n\r\n if (this.hasPostAttributes) {\r\n this.registrationEntryState.currentStep = Step.RegistrationEndForm;\r\n }\r\n else {\r\n const lastFormIndex = this.registrationEntryState.viewModel.registrantForms.length - 1;\r\n\r\n this.registrationEntryState.currentRegistrantFormIndex = lastFormIndex;\r\n this.registrationEntryState.currentStep = Step.PerRegistrantForms;\r\n }\r\n this.registrationEntryState.navBack = true;\r\n Page.smoothScrollToTop();\r\n }\r\n },\r\n async onSummaryNext(): Promise {\r\n if (this.persistSession && this.registrationEntryState) {\r\n if (this.registrationEntryState.amountToPayToday) {\r\n this.registrationEntryState.currentStep = Step.Payment;\r\n }\r\n else {\r\n this.registrationEntryState.currentStep = Step.Success;\r\n }\r\n this.registrationEntryState.navBack = false;\r\n Page.smoothScrollToTop();\r\n }\r\n },\r\n async onPaymentPrevious(): Promise {\r\n if (this.persistSession && this.registrationEntryState) {\r\n await this.persistSession(false);\r\n this.registrationEntryState.currentStep = Step.Review;\r\n this.registrationEntryState.navBack = true;\r\n Page.smoothScrollToTop();\r\n }\r\n },\r\n async onPaymentNext(): Promise {\r\n if (this.persistSession && this.registrationEntryState) {\r\n this.registrationEntryState.currentStep = Step.Success;\r\n this.registrationEntryState.navBack = false;\r\n Page.smoothScrollToTop();\r\n }\r\n }\r\n },\r\n watch: {\r\n currentPerson: {\r\n immediate: true,\r\n handler() {\r\n if (this.viewModel != null && this.registrationEntryState != null) {\r\n const forcedFamilyGuid = getForcedFamilyGuid(this.currentPerson, this.viewModel);\r\n\r\n if (forcedFamilyGuid) {\r\n for (const registrant of this.registrationEntryState.registrants) {\r\n registrant.familyGuid = forcedFamilyGuid;\r\n }\r\n }\r\n }\r\n }\r\n },\r\n \"registrationEntryState.sessionExpirationDateMs\": {\r\n immediate: true,\r\n handler() {\r\n if (!this.registrationEntryState?.sessionExpirationDateMs) {\r\n this.secondsBeforeExpiration = -1;\r\n return;\r\n }\r\n\r\n const nowMs = RockDateTime.now().toMilliseconds();\r\n const thenMs = this.registrationEntryState.sessionExpirationDateMs;\r\n const diffMs = thenMs - nowMs;\r\n this.secondsBeforeExpiration = diffMs / 1000;\r\n }\r\n }\r\n },\r\n mounted() {\r\n if (this.viewModel?.loginRequiredToRegister && !store.state.currentPerson) {\r\n store.redirectToLogin();\r\n }\r\n },\r\n template: `\r\n
\r\n \r\n Sorry\r\n

{{notFoundMessage}}

\r\n
\r\n \r\n Please log in\r\n

You must be logged in to access this registration.

\r\n
\r\n \r\n Sorry\r\n

You are not allowed to view or edit the selected registration since you are not the one who created the registration.

\r\n
\r\n \r\n Incorrect Configuration\r\n

This registration has costs/fees associated with it but the configured payment gateway is not supported.

\r\n
\r\n \r\n {{registrationTermTitleCase}} Full\r\n

\r\n There are not any more {{registrationTermPlural}} available for {{viewModel.instanceName}}.\r\n

\r\n
\r\n \r\n \r\n
`\r\n});\r\n"],"names":["RegistrationPersonFieldType","RegistrationFieldSource","RegistrarOption","RegistrantsSameFamily","Step","unknownSingleFamilyGuid","newGuid","getForcedFamilyGuid","currentPerson","viewModel","registrantsSameFamily","Yes","primaryFamilyGuid","getDefaultRegistrantInfo","familyGuid","forcedFamilyGuid","isOnWaitList","fieldValues","feeItemQuantities","guid","personGuid","getRegistrantBasicInfo","registrant","registrantForms","_fields$find","_fields$find2","_fields$find3","fields","reduce","acc","f","concat","firstNameGuid","find","personFieldType","FirstName","fieldSource","PersonField","lastNameGuid","LastName","emailGuid","Email","firstName","lastName","email","store","useStore","defineComponent","name","components","NumberUpDown","RockButton","NotificationBox","data","registrationEntryState","inject","numberOfRegistrants","registrants","length","showRemainingCapacity","computed","state","numberToAddToWaitlist","spotsRemaining","waitListEnabled","remainingCapacityPhrase","spots","pluralConditional","registrantTerm","registrantTermPlural","isFull","canContinue","instanceName","toLowerCase","pluralRegistrantTerm","registrationTerm","registrationTermPlural","pluralRegistrationTerm","registrationTermTitleCase","toTitleCase","methods","onNext","usedFamilyMemberGuids","filter","r","map","familyMembers","fm","areEqual","includes","push","firstWaitListIndex","i","$emit","watch","$nextTick","template","ComponentFromUrl","props","field","type","Object","required","isKnownFamilyMember","Boolean","setup","component","TextBox","MiddleName","Campus","DropDownList","EmailBox","Gender","GenderDropDownList","Birthdate","BirthdayPicker","AnniversaryDate","Address","AddressControl","MaritalStatus","ConnectionStatus","Grade","HomePhone","PhoneNumberBox","WorkPhone","MobilePhone","Race","Ethnicity","fieldControlComponentProps","componentProps","rules","isRequired","label","disabled","items","campuses","maritalStatuses","connectionStatuses","grades","races","ethnicities","defaultValue","getDefaultDatePartsPickerModel","getDefaultAddressControlModel","fieldType","isRuleMet","rule","formFields","_comparedToFormField$","_comparedToFormField$2","value","comparedToRegistrationTemplateFormFieldGuid","comparedToFormField","ff","attribute","fieldTypeGuid","getFieldType","doesValueMatchFilter","comparisonValue","configurationValues","RockField","Array","_ref","isVisible","visibilityRuleType","FilterExpressionType","GroupAll","visibilityRules","every","vr","GroupAllFalse","GroupAny","some","GroupAnyFalse","ref","modifiedAttribute","fieldAttribute","_objectSpread","NumberUpDownGroup","CheckBox","modelValue","fee","dropDownValue","checkboxValue","getItemLabel","item","formattedCost","Number","asFormattedString","cost","countRemaining","formattedRemaining","singleItem","isHidden","isCheckbox","allowMultiple","isNumberUpDown","isNumberUpDownGroup","isDropDown","dropDownListOptions","text","numberUpDownGroupOptions","key","max","min","immediate","deep","handler","_iterator","_createForOfIteratorHelper","_step","s","n","done","err","e","_iterator2","_step2","_iterator3","_step3","isSelected","GuidHelper","ElectronicSignature","RadioButtonList","RegistrantPersonField","RegistrantAttributeField","RockForm","FeeField","ItemsWithPreAndPostHtml","currentRegistrant","isWaitList","invokeBlockAction","useInvokeBlockAction","getRegistrationEntryBlockArgs","signatureData","signatureSource","signatureToken","formResetKey","isNextDisabled","isSignatureDrawn","fieldSources","personField","personAttribute","PersonAttribute","groupMemberAttribute","GroupMemberAttribute","registrantAttribute","RegistrantAttribute","showPrevious","firstStep","steps","perRegistrantForms","currentFormIndex","currentRegistrantFormIndex","currentForm","formsToShow","isLastForm","isDataForm","isSignatureForm","isInlineSignatureRequired","isNextVisible","form","showOnWaitList","currentFormFields","_this$currentForm","prePostHtmlItems","preHtml","postHtml","slotName","pluralFeeTerm","StringFilter","familyOptions","_this$currentPerson","options","usedFamilyGuids","Ask","currentRegistrantIndex","info","fullName","familyMemberOptions","selectedFamily","uppercaseRegistrantTerm","familyMember","signatureDocumentTerm","onPrevious","clearFormErrors","_this","_asyncToGenerator","lastFormIndex","result","args","registrantGuid","isSuccess","documentHtml","securityToken","console","error","onSigned","_this2","signature","copyValuesFromFamilyMember","navBack","familyMemberValue","currentRegistrant.familyGuid","_iterator4","_step4","created","Registrant","persistSession","hasCopiedCommonValues","lastIndex","copyCommonValuesFromFirstRegistrant","firstRegistrant","isSharedValue","valueToShare","hasWaitlist","isOnWaitlist","AttributeValuesContainer","emit","attributeValues","registrationAttributesEnd","_a$key3","_a$attributeGuid2","a","registrationFieldValues","attributeGuid","intro","attributes","attrs","_a$key","_a$attributeGuid","_a$key2","registrationAttributesStart","Dialog","LoadingIndicator","isSessionExpired","spotsSecured","isLoading","isModalVisible","allRegistrantCount","waitlistRegistrantCount","waitlistRegistrantCountWord","toWord","nonWaitlistRegistrantCount","nonWaitlistRegistrantCountWord","restart","location","reload","close","requestRenewal","response","registrationSessionGuid","_asDate$toMillisecond","asDate","RockDateTime","parseISO","expirationDateTime","sessionExpirationDateMs","toMilliseconds","deficiency","SaveFinancialAccountForm","messageHtml","_this$registrationEnt","successViewModel","gatewayGuid","transactionCode","_this$registrationEnt2","isRedirectGateway","gatewayPersonIdentifier","_this$registrationEnt3","enableSaveAccount","savedAccountGuid","GatewayControl","RockValidation","submitPayment","provideSubmitPayment","loading","gatewayErrorMessage","gatewayValidationFields","submitErrorMessage","selectedSavedAccount","uniqueId","gatewayControlModel","gatewayControl","finishButtonText","hasSavedAccounts","savedAccounts","savedAccountOptions","showGateway","amountToPay","amountToPayToday","amountToPayText","toFixed","redirectReturnUrl","window","href","toGuidOrNull","success","submit","onGatewayControlSuccess","token","gatewayToken","onGatewayControlError","message","onGatewayControlValidation","invalidFields","getOptionUniqueId","option","_option$value$replace","_option$value","replace","getAccountImage","_option$image","image","getAccountName","_option$text","getAccountDescription","_option$description","description","_this3","isError","errorMessage","RegistrationCostSummaryType","Loading","CurrencyBox","HelpBlock","lineItems","augmentedLineItems","li","isFee","Fee","discountHelp","hasDiscount","discountedCost","amountFormatted","discountedAmountFormatted","total","forEach","totalFormatted","defaultPaymentAmount","hasDefault","defaultPayment","maxAmountCanBePaid","amountDueToday","discountedTotal","discountedTotalFormatted","amountPreviouslyPaid","Math","minPayment","amountDueTodayFormatted","showAmountDueToday","session","previouslyPaid","amountPreviouslyPaidFormatted","balance","maxAmountCanBePaidFormatted","amountRemaining","actual","bounded","amountRemainingFormatted","amountToPayTodayRules","fetchData","registrationEntryState.discountCode","mounted","tryDiscountCode","discountCodeInput","discountCodeWarningMessage","discountCodeSuccessMessage","discountAmount","discountPercent","discountPercentage","discountText","isDiscountPanelVisible","hasDiscountsAvailable","isDiscountCodeAllowed","discountCode","registrationGuid","code","registrantCount","InlineCheckBox","StaticFormControl","isRegistrarPanelShown","useLoggedInPersonForRegistrar","registrarOption","UseLoggedInPerson","registrar","doShowUpdateEmailOption","forceEmailUpdate","registrantInfos","ownFamilyGuid","prefillRegistrar","PromptForRegistrar","nickName","PrefillFirstRegistrant","UseFirstRegistrant","firstRegistrantInfo","hasAllInfo","CostSummary","Registrar","DiscountCodeForm","hasPaymentCost","usedFeeIds","feeId","hasCostFees","fees","redirectUrl","getPaymentRedirect","returnUrl","RegistrationEntryIntro","RegistrationEntryRegistrants","RegistrationEntryRegistrationStart","RegistrationEntryRegistrationEnd","RegistrationEntrySummary","RegistrationEntryPayment","RegistrationEntrySuccess","ProgressTracker","CountdownTimer","JavaScriptAnchor","SessionRenewal","_viewModel$registrati","_viewModel$session","_viewModel$session2","_viewModel$session3","_viewModel$session4","_viewModel$session5","_viewModel$session6","_viewModel$session7","_store$state$currentP","Intro","RegistrationStartForm","PerRegistrantForms","RegistrationEndForm","Review","Payment","Success","notFound","useConfigurationValues","notFoundMessage","registrationInstanceNotFoundMessage","hasPreAttributes","currentStep","startAtBeginning","review","maxRegistrants","isNullOrWhiteSpace","instructionsHtml","registrationStartForm","staticRegistrationEntryState","updateEmail","reactive","provide","_viewModel$session8","amountToPayNow","force","arguments","undefined","timeoutMinutes","_expirationDate$toMil","expirationDate","apply","secondsBeforeExpiration","hasSessionRenewalSuccess","mustLogin","isUnauthorized","loginRequiredToRegister","_this$viewModel$isUna","_this$viewModel","_this$registrationEnt4","_this$viewModel$regis","_this$viewModel2","_this$viewModel2$regi","hasPostAttributes","_this$viewModel$regis2","_this$viewModel3","_this$viewModel3$regi","progressTrackerIndex","_this$registrationEnt5","stepsBeforePre","stepsBeforeRegistrants","stepsToCompleteRegistrants","_this$viewModel$regis3","_this$viewModel4","currentRegistrantTitle","ordinal","NumberFilter","toOrdinal","title","stepTitleHtml","_this$viewModel$regis4","_this$viewModel5","registrationAttributeTitleStart","_this$viewModel$regis5","_this$viewModel6","registrationAttributeTitleEnd","_this$registrationEnt6","_this$registrationEnt7","titleHtml","progressTrackerItems","subtitle","isInvalidGateway","List","any","fileUrl","preventNewRegistration","isExistingRegistration","_this$viewModel7","_this$viewModel8","onSessionRenewalSuccess","setTimeout","onIntroNext","Page","smoothScrollToTop","onRegistrationStartPrevious","onRegistrationStartNext","onRegistrantPrevious","_this4","onRegistrantNext","_this5","onRegistrationEndPrevious","_this6","onRegistrationEndNext","_this7","onSummaryPrevious","_this8","onSummaryNext","_this9","onPaymentPrevious","_this10","onPaymentNext","_this11","_this$registrationEnt8","nowMs","now","thenMs","diffMs","_this$viewModel9","redirectToLogin"],"mappings":"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"}