{"version":3,"sources":["webpack:///./src/components/VolunteerRoleAllowOnline.vue?ca65","webpack:///./src/views/Programs/Volunteers/vues/VolunteerImport.vue?0a02","webpack:///./src/lib/components/CoachSelectionModal/VolunteerSelectionGridColumns.ts","webpack:///./src/components/VolunteerSelectionModal.vue?da86","webpack:///./src/components/VolunteerSelectionModal.vue","webpack:///./src/components/VolunteerSelectionModal.vue?b065","webpack:///./src/components/VolunteerSelectionModal.vue?80a3","webpack:///./src/lib/support/models/CoachProgram/data.ts","webpack:///./src/views/Programs/Volunteers/ext/composeutils.ts","webpack:///./src/lib/support/models/UpwardTypes/TypeLeagueVolunteerRole/data.ts","webpack:///./src/views/Programs/Volunteers/VolunteerView.vue?7839","webpack:///./src/views/Programs/Volunteers/ext/headers.ts","webpack:///./src/views/Programs/Volunteers/ext/gridcolumntypes.ts","webpack:///./src/views/Programs/Volunteers/VolunteerTransfer.vue?e0ea","webpack:///./src/views/Programs/Volunteers/ext/transfer_gridcolumns.ts","webpack:///./src/views/Programs/Volunteers/VolunteerTransfer.vue","webpack:///./src/views/Programs/Volunteers/VolunteerTransfer.vue?316b","webpack:///./src/views/Programs/Volunteers/VolunteerTransfer.vue?7ebd","webpack:///./src/elements/DataTable/vue/CheckboxCell.vue?8fc4","webpack:///./src/elements/DataTable/vue/CheckboxCell.vue","webpack:///./src/elements/DataTable/vue/CheckboxCell.vue?c3e2","webpack:///./src/elements/DataTable/vue/CheckboxCell.vue?9b81","webpack:///./src/views/Programs/Volunteers/ext/GridVue/InviteBtn.vue?a923","webpack:///./src/views/Programs/Volunteers/ext/GridVue/InviteBtn.vue","webpack:///./src/components/VolunteerEmailPhoneSearch.vue","webpack:///./src/views/Programs/Volunteers/ext/GridVue/InviteBtn.vue?42f7","webpack:///./src/views/Programs/Volunteers/ext/GridVue/InviteBtn.vue?d83e","webpack:///./src/views/Programs/Volunteers/ext/GridVue/InviteCell.vue?50b8","webpack:///./src/views/Programs/Volunteers/ext/GridVue/InviteCell.vue","webpack:///./src/views/Programs/Volunteers/ext/GridVue/InviteCell.vue?17e3","webpack:///./src/views/Programs/Volunteers/ext/GridVue/InviteCell.vue?9b29","webpack:///./src/components/VolunteerEmailPhoneSearch.vue?69d5","webpack:///./src/components/VolunteerEmailPhoneSearch.vue?ea8f","webpack:///./src/components/VolunteerEmailPhoneSearch.vue?14dd","webpack:///./src/components/VolunteerRoleAllowOnline.vue?08b9","webpack:///./src/views/Programs/Volunteers/vues/InvitationResendModal.vue","webpack:///./src/components/VolunteerRoleAllowOnline.vue","webpack:///./src/components/VolunteerRoleAllowOnline.vue?e760","webpack:///./src/components/VolunteerRoleAllowOnline.vue?55e2","webpack:///./src/views/Programs/Volunteers/vues/InvitationResendModal.vue?474b","webpack:///./src/views/Programs/Volunteers/vues/InvitationSendModal.vue","webpack:///./src/views/Programs/Volunteers/vues/InvitationResendModal.vue?3934","webpack:///./src/views/Programs/Volunteers/vues/InvitationResendModal.vue?599f","webpack:///./src/views/Programs/Volunteers/vues/InvitationSendModal.vue?461e","webpack:///./src/views/Programs/Volunteers/vues/InvitationSendModal.vue?4e0b","webpack:///./src/views/Programs/Volunteers/vues/InvitationSendModal.vue?74e9","webpack:///./src/lib/support/models/ListInfo/IndividualEmailInfo/data.ts","webpack:///./src/lib/support/models/ListInfo/IndividualEmailInfo/emailinfo_list_operations.ts","webpack:///./src/lib/support/models/ListInfo/IndividualPhoneInfo/data.ts","webpack:///./src/lib/support/models/ListInfo/IndividualPhoneInfo/phoneinfo_list_operations.ts","webpack:///./src/views/Programs/Volunteers/vues/VolunteerImport.vue?36da","webpack:///./src/composables/VolunteerImport.ts","webpack:///./src/views/Programs/Volunteers/vues/VolunteerImport.vue","webpack:///./src/views/Programs/Volunteers/vues/VolunteerImport.vue?bd11","webpack:///./src/views/Programs/Volunteers/vues/VolunteerImport.vue?cae0","webpack:///./src/views/Programs/Volunteers/VolunteerView.vue","webpack:///./src/views/Programs/Volunteers/VolunteerView.vue?0d79","webpack:///./src/views/Programs/Volunteers/VolunteerView.vue?d54f","webpack:///./src/GeneratedTypes/CoachAssistantLink.ts","webpack:///./src/views/Programs/Volunteers/ext/routeutils.ts"],"names":["volunteerSearchHeaders","text","value","volunteerSelectionHeaders","render","_vm","this","_h","$createElement","_c","_self","attrs","searchActive","title","selectionData","search","on","updateSearch","searchSelected","passiveSelect","model","callback","$$v","isModalOpen","expression","staticClass","_v","staticRenderFns","v2map","x","internalSelectedID","name","lastName","firstName","gender","individualID","selected","components","SearchModal","filters","properCase","props","league","required","type","String","default","roles","Array","selectedID","Number","searchTerm","selectedRecord","Object","includePastLeagues","Boolean","typeProgramID","setup","ctx","searchTimeout","searchData","updateSelected","p","close","emit","find","immediate","b","data","map","findIndex","s","trim","length","clearTimeout","window","setTimeout","doSearch","volunteersClient","leagueID","first","last","email","phone","orSearch","role","COACH","coachTypeProgramID","component","getEmptyCoachProgram","seed","products","assistantCoachPreferred","gendersAndGrades","assistantCoachLink","CoachProgramSeed","seedWithProgramID","programId","c","hasAddress","a","street1","subdivision1","subdivision2","composeLeagueVolunteer","originalTemplate","args","volunteer","typeSizeID","coachPreferences","accountNumber","thirdPartyClientIDs","addresses","address","typeAddressID","priority","phoneNumbers","phones","emailAddresses","emailAddress","typeEmailID","roleById","id","isHistoricalProgram","_e","interfaceToggles","batchInviteButtonDisable","batchInvite","isInPartnership","hasTransfer","routeType","params","leagueid","combinedCategoryAndProgram","importClicked","class","disabled","addButtonEnabled","btn","hasAllowRoleOnline","programHasOPR","staticStyle","approveRoleID","valueOf","currentRoleAllowsOPR","currentRoleAllowsOVR","hasTeamInfo","LeagueInfoMoreThanOneProgram","tabs","hasTypeProgramTab","clearTypeProgram","currentProgram","headers","visibleVolunteers","pagination","itemsPerPage","page","rowSelected","rowDoubleClicked","onPagination","scopedSlots","_u","key","fn","ref","header","isEveryoneApproved","approveClick","_s","item","approved","$event","individualClick","invite","inviteAllowed","onShowInviteStatusErrorClick","editVolunteer","deletingId","deleteVolunteer","currentVolunteer","teamInfo","confirmDeleteVolunteer","cancelDeleteVolunteer","showDelete","rolesByProgram","volunteerSelectionModalTitle","volunteerFound","searchClosed","existingVolunteerSearchActive","emailPhoneVolunteerSearchActive","transferActive","transferClosed","showConfirmBatchInvite","onBatchConfirm","pendingInviteVolunteer","onInviteConfirm","showInviteConfirm","onResendInviteConfirm","showResendInviteConfirm","alertType","showEmailInviteSent","getFirstEmailInfo","showSmsInviteSent","smsInviteSentNumber","isImportVisible","currentItem","closeImport","showBatchInviteSent","_l","prettyName","showInviteStatusError","baseHeaders","sort","toLowerCase","localeCompare","sortable","cheerDirectorHeaders","headersWithInviteAndApproved","coachHeaders","refHeaders","splice","commissionerHeaders","headersWithInviteAndRoles","othersHeaders","headersWithRoles","InvitationStatusEnum","internalVisible","programs","program","clear","rowselected","partners","transferAccount","transfer","localStatus","SelectInput","Modal","DataTable","GradeRangeDropdowns","GenderSelect","InputLabel","TextInput","Loading","visible","ids","transferStatus","store","getters","volunteers","status","loading","loggedInAccount","authorization","firstAccountNumber","transferAction","dispatch","transferVolunteers","filter","i","list","leagueAbstraction","shortPrograms","push","label","act","gd","nm","stringContainsFilter","pg","coachProgram","playerVal","indexOf","allSelected","isArray","newAccount","hasCheer","click","checked","SearchChoice","canInvite","invitationStatus","ACCEPTED","statusText","EMPTY","EXPIRED","SENT","cancel","showModal","choice","term","choiceName","RadioGroupInput","autoSearch","criteria","historyLimit","useStartsWith","EMAIL","result","v","upwardLeagueID","VChip","VChipGroup","ResendInvitePayloadMedium","directives","rawName","elementId","domProps","internalValue","_i","$$a","$$el","target","$$c","$$i","concat","slice","handleChange","_t","getText","roleID","allowOPR","storeLeague","leagues","storeCamp","camps","guid","v4","retrieveAndSetAsCurrent","myLeague","changeRole","allowInOPR","allowInOVR","update","myCamp","valid","validated","clickedResendEmail","internalPhone","phoneNumber","clickedResendText","SendInvitePayloadMedium","PhoneInputMask","VeeValidateForm","closeModal","doResend","SMS","medium","typePhoneID","MOBILE","clickedSendEmail","clickedSendText","doSend","getEmptyIndividualEmailInfo","validityReason","emailID","contact","getEmptyIndividualPhoneInfo","extension","phoneID","getFirstPhoneInfo","step","proxy","duplicateChoices","duplicateChoice","uploadFiles","import_errors","line","imported","saved","total","showErrors","shouldShowErrors","style","height","volunteerImportShapeBase","SportCoach","CheerCoach","FirstName","max","MI","LastName","StreetAddress","test","parent","City","State","Zip","oneOf","DOB","Gender","matches","Email","MobilePhone","WorkPhone","WorkPhoneExt","when","is","ext","then","CanPracticeMonday","uppercase","CanPracticeTuesday","CanPracticeWednesday","CanPracticeThursday","CanPracticeFriday","CanPracticeSaturday","CanPracticeSunday","Notes","ChurchName","CoachLinkFirstName","lname","CoachLinkLastName","UDF1","UDF2","UDF3","FemaleGradesToCoach","MaleGradesToCoach","FemaleGradesToCoachCheer","MaleGradesToCoachCheer","PoloShirtSize","CheerPoloShirtSize","TeeShirtSize","shape","useVolunteerImport","schema","validFemaleGrades","retval","accounts","gradeTypes","leagueUpwardProgramTypeID","upwardTypeID","grades","g","validMaleGrades","validFemaleCheerGrades","validMaleCheerGrades","buildSchema","mappings","getSizes","colName","mapping","leagueProductMappings","importColumnName","prod","allProducts","productID","Set","productColorSizes","ordersClient","getLeagueOrderItems","coachSportShirtSizesMale","coachSportShirtSizesFemale","coachCheerShirtSizesMale","coachCheerShirtSizesFemale","teeShirtSizesMale","teeShirtSizesFemale","schemaShape","transform","orgValue","split","of","columnNames","includes","otherwise","validateVolunteer","row","showAllErrors","keys","forEach","validate","abortEarly","cast","extractGrades","grade_part","typeGradeID","genderToCoach","VolunteerXLToVolunteerParts","productColumnNames","validPracticeNights","days","typeDayID","endTime","startTime","udfs","val","udfid","parseInt","udfValue","obj","columnName","volunteerParts","isCheer","isSport","postalCode","middleInitial","birthDate","churchName","registrationNote","practiceNights","upwardAuthInvitationID","authorizedExpireDate","udFs","coachLinkFirstName","coachLinkLastName","WORK","ProgressIndicator","ImportErrorsTable","CheckboxInput","errors","validPracticeDays","getVolunteerFromList","duplicate","mergeVolunteer","foundVol","existingID","SKIP","error","UPDATE","retrieveVolunteer","retrieveTemplateWithRole","getVolunteerProgram","match","ev","t","volImport","files","sheet","createCoachLink","link","pendingFirstName","pendingLastName","r","parts","volunteerProgram","volunteerRole","udfDefinitions","newudfs","u","sortOrder","lv","Error","prog","m","xlProduct","part","save","errorObject","propertyName","message","getMessage","camp","noControlsOn","hasImport","hasBatchInvite","hasNewButtons","hasSearch","hasApproveAll","approvalRole","mostControlsOff","tabToInterfaceMap","ALL","REFEREES","REFEREE","COMMISSIONERS","OTHER","COACHES","CHEERDIRECTOR","ALL_PROGRAMS","setAllApproved","setAllInvited","setAllInvitedViaSms","removeVolunteer","loadLeanVolunteersByProgramRole","setCurrentVolunteerByID","setCurrentStoreProgram","commit","setCurrentProgram","clearCurrentVolunteer","clearCurrent","clearVolunteerUnderEdit","setPagination","Alert","NOTICE","allApproved","category","batchInviteLastSentList","shouldForceRefresh","leagueId","shouldForce","typeProgramId","roleIDs","refreshVolunteers","navigateBackToList","$route","replaceAll","$router","d","to","vid","startsWith","emailPhoneParticipantSearch","vs","toString","l","listToListInfo","payload","vol2contact","inviteContact","actionConfirmed","Promise","all","inviteExpireDate","getFullVolunteerInfo","batchInvitableList","inviteAcceptDate","diff","roles_text","description","join","roleInfo","currentRoleInfo","isOPRLeague","individualId","volunteerType","teamsClient","retrieveTeamInfo","setLocalCurrentVolunteerID","currentRoute","fullPath","routePart","idx","substring","some","progs","currentStoreProgram","credentialsService","getPrimaryAccountFromCredentials","jwtService","getCredentialsFromStoredAuthToken","toLocaleLowerCase","Getter","deep","VolunteerImport","InvitationResendModal","InvitationSendModal","ConfirmationModal","FullBody","TypeProgramTab","ConfirmDeleteModal","HorizontalTabs","SearchInput","TeamInfo","VolunteerSelectionModal","VolunteerTransfer","VolunteerEmailPhoneSearch","VolunteerRoleAllowOnline","EditBtn","DeleteBtn","CheckboxCell","InviteBtn","InviteCell","methods","useFeatureFlags","empty","coach1IndividualID","coach2IndividualID","pendingIndividualID","VolunteerRouteRuntimeException","routeActionToVolunteer","routeName","getRouteCategoryName","routepath","getLeagueType","routeParts"],"mappings":"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","file":"js/chunk-0359f5b6.13c2e462.js","sourcesContent":["export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VolunteerRoleAllowOnline.vue?vue&type=style&index=0&id=82b6f676&lang=scss&scoped=true&\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VolunteerImport.vue?vue&type=style&index=0&id=6fb04f76&lang=scss&scoped=true&\"","import { DataTableHeader } from 'vuetify/types'\n\nexport const volunteerSearchHeaders = [\n { text: 'Name', value: 'name' },\n { text: 'Gender', value: 'gender' },\n] as DataTableHeader[]\n\nexport const volunteerSelectionHeaders = [\n { text: 'Name', value: 'name' },\n { text: 'Gender', value: 'gender' },\n { text: 'Address', value: 'firstAddress' },\n] as DataTableHeader[]\n\nexport interface VolunteerSelectionGridInfo {\n /** how the name should be formatted for display **/\n name: string\n /** unique ID for the volunteer **/\n individualID: number\n /** additional field per requirements */\n gender: string\n /** firstName easy deconstructed name **/\n firstName: string\n /** lastName for a deconstructed name **/\n lastName: string\n /** provides for a selected, puts a check on the selected */\n selected: boolean\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('search-modal',{attrs:{\"headers\":_vm.volunteerSelectionHeaders,\"loading\":_vm.searchActive,\"title\":_vm.title,\"item-key\":\"individualID\",\"data\":_vm.selectionData,\"search-term\":_vm.search,\"can-commit-unselected\":true},on:{\"updateSearch\":_vm.updateSearch,\"onSelected\":_vm.searchSelected,\"passiveSelected\":_vm.passiveSelect},model:{value:(_vm.isModalOpen),callback:function ($$v) {_vm.isModalOpen=$$v},expression:\"isModalOpen\"}},[_c('div',{staticClass:\"text-small font-italic text-center\"},[_vm._v(\" Type a few letters in the name of the volunteer you are trying to find \")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { defineComponent, ref, computed, watch, PropType } from '@vue/composition-api'\nimport { getProps, useModalValue } from '@/composables/ModalValue'\nimport SearchModal from '@/elements/SearchModal.vue'\n\nimport {\n VolunteerSelectionGridInfo,\n volunteerSelectionHeaders,\n} from '@/lib/components/CoachSelectionModal/VolunteerSelectionGridColumns'\nimport { VolunteerSearchInfo } from '@/GeneratedTypes/ListInfo/VolunteerSearchInfo'\nimport { RolesEnum, VolunteerIDType } from '@/lib/support/models/LeagueVolunteer/data'\nimport volunteersClient from '@/clients/volunteersClient'\nimport properCase from '@/filters/properCase'\n\nfunction v2map(x: VolunteerSearchInfo, internalSelectedID: VolunteerIDType) {\n return {\n name: `${x.lastName}, ${x.firstName}`,\n gender: x.gender ?? '?',\n individualID: x.individualID,\n firstName: x.firstName ?? '',\n lastName: x.lastName ?? '',\n selected: internalSelectedID == x.individualID,\n }\n}\n\nexport default defineComponent({\n name: 'VolunteerSelectionModal',\n components: {\n SearchModal,\n },\n filters: {\n properCase,\n },\n props: {\n league: { required: true, type: String, default: '' },\n roles: { type: Array as PropType, required: false, default: () => [0] },\n selectedID: { required: false, type: Number, default: -1 },\n searchTerm: { required: false, type: String, default: '' },\n selectedRecord: { required: false, type: Object as PropType, default: null },\n title: { required: false, type: String, default: 'Coaches' },\n includePastLeagues: { required: false, type: Boolean, default: false },\n typeProgramID: { type: String, required: false, default: 'NONE' },\n ...getProps(),\n },\n setup(props, ctx) {\n const { isModalOpen } = useModalValue(props, ctx)\n const searchTimeout = ref(null)\n const internalSelectedID = ref(-1)\n const searchData = ref([])\n const search = ref('')\n const searchActive = ref(false) //not showing initially\n\n watch(\n () => props.selectedID,\n () => {\n updateSelected()\n },\n { immediate: true }\n )\n\n watch(\n () => props.searchTerm,\n () => {\n updateSelected()\n },\n { immediate: true }\n )\n\n function updateSelected() {\n search.value = props.searchTerm\n internalSelectedID.value = props.selectedID\n }\n\n function passiveSelect(p: VolunteerSearchInfo | null) {\n if (p?.individualID) {\n internalSelectedID.value = p.individualID\n } else {\n internalSelectedID.value = -1\n }\n }\n\n watch(\n () => isModalOpen.value,\n (b: boolean) => {\n if (!b) {\n close()\n }\n }\n )\n\n function close() {\n ctx.emit('close', true)\n }\n\n function searchSelected(p: VolunteerSearchInfo) {\n ctx.emit('select', p && searchData.value.find((x) => x.individualID == p.individualID))\n }\n\n const selectionData = computed((): VolunteerSelectionGridInfo[] => {\n let data = searchData.value.map((x) => v2map(x, internalSelectedID.value))\n if (\n props.selectedRecord &&\n props.selectedRecord.firstName && //make sure it's not an empty record\n data.findIndex((x) => x.individualID == props.selectedRecord?.individualID) < 0\n ) {\n data = [v2map(props.selectedRecord, internalSelectedID.value), ...data]\n }\n return data\n })\n\n /***\n * Callback on the SearchModal\n * @param s\n */\n function updateSearch(s: string) {\n //4656 - make them type at least 3 characters before searching\n if (s.trim().length > 2) {\n if (searchTimeout.value) {\n clearTimeout(searchTimeout.value)\n }\n\n searchTimeout.value = window.setTimeout(async () => {\n await doSearch(s)\n }, 1000)\n }\n }\n\n async function doSearch(s: string) {\n if (!s) {\n searchData.value = []\n return\n }\n\n if (!searchActive.value) {\n searchActive.value = true\n\n try {\n searchData.value = await volunteersClient.search({\n leagueID: props.league,\n first: s,\n last: s,\n email: '',\n phone: '',\n orSearch: true,\n role: props.roles.length == 1 && props.roles[0] == RolesEnum.COACH ? [RolesEnum.COACH] : [0], //if just coach then send coach else do what it has always done and return everyone\n includePastLeagues: props.includePastLeagues,\n coachTypeProgramID: props.typeProgramID,\n })\n } finally {\n searchActive.value = false\n searchTimeout.value = null\n }\n }\n }\n\n return {\n isModalOpen,\n volunteerSelectionHeaders,\n searchActive,\n selectionData,\n search,\n updateSearch,\n searchSelected,\n passiveSelect,\n }\n },\n})\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VolunteerSelectionModal.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VolunteerSelectionModal.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./VolunteerSelectionModal.vue?vue&type=template&id=0fe0955e&scoped=true&\"\nimport script from \"./VolunteerSelectionModal.vue?vue&type=script&lang=ts&\"\nexport * from \"./VolunteerSelectionModal.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0fe0955e\",\n null\n \n)\n\nexport default component.exports","import { CoachProgram } from '@/GeneratedTypes/CoachProgram'\n\nexport function getEmptyCoachProgram(seed?: CoachProgramSeed): CoachProgram {\n return {\n typeProgramID: seed?.typeProgramID || '',\n products: [],\n assistantCoachPreferred: false,\n gendersAndGrades: [],\n assistantCoachLink: null,\n }\n}\n\nexport class CoachProgramSeed {\n typeProgramID = ''\n}\n\nexport function seedWithProgramID(programId: string) {\n const c = new CoachProgramSeed()\n c.typeProgramID = programId\n return c\n}\n","import { DecomposedArgs } from '@/views/Programs/Volunteers/ext/edittypes'\nimport { LeagueVolunteer } from '@/GeneratedTypes/LeagueVolunteer'\nimport { humanEmailToEmailID } from '@/lib/support/models/IndividualEmail/data'\nimport { WeedThePhoneList } from '@/lib/support/models/IndividualPhone/array_utils'\nimport { getFirstEmail } from '@/lib/support/models/IndividualEmail/email_list_operations'\nimport { stringToAddressTypeID } from '@/lib/support/models/IndividualAddress/data'\nimport { IndividualAddress } from '@/GeneratedTypes/IndividualAddress'\n\n/**\n * Did the user fill out an address (e.g. did they type into street, city, etc\n * trying to avoid null-checks on fields that might be mandatory dropdowns\n *\n * @param a address to check\n * @return {boolean} has or not filled out\n */\nfunction hasAddress(a: IndividualAddress) {\n if (a) {\n return !!(a.street1 || a.subdivision1 || a.subdivision2)\n }\n return false\n}\n\n/**\n * Builds a volunteer from field data, cleans up phones.\n * @param originalTemplate\n * @param args\n */\nexport function composeLeagueVolunteer(\n originalTemplate: LeagueVolunteer,\n args: DecomposedArgs\n): LeagueVolunteer {\n return {\n ...args.volunteer,\n //oddly type size ID as null (which happens on import) can gum up save but not validate.\n typeSizeID: args.volunteer.typeSizeID ? args.volunteer.typeSizeID : '',\n coachPreferences: args.coachPreferences,\n individualID: originalTemplate.individualID,\n accountNumber: originalTemplate.accountNumber,\n leagueID: originalTemplate.leagueID,\n thirdPartyClientIDs: [],\n addresses: hasAddress(args.address)\n ? [\n {\n ...args.address,\n typeAddressID: args.address.typeAddressID\n ? args.address.typeAddressID\n : stringToAddressTypeID('home'),\n priority: 1,\n },\n ]\n : [],\n phoneNumbers: WeedThePhoneList(args.phones),\n roles: args.roles,\n emailAddresses: args.email\n ? [\n {\n ...getFirstEmail(originalTemplate),\n emailAddress: args.email,\n typeEmailID: humanEmailToEmailID('home'),\n priority: 1,\n },\n ]\n : [],\n }\n}\n","import { TypeLeagueVolunteerRole } from '@/GeneratedTypes/TypeLeagueVolunteerRole'\n\nexport function roleById(id: number, roles: TypeLeagueVolunteerRole[]) {\n return roles.find((x) => x.id == id)\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('full-body',[(_vm.loading)?_c('loading',{staticClass:\"m-3\"}):_c('div',{staticClass:\"container-fluid flex-grow-1 d-flex flex-column\"},[_c('div',{staticClass:\"row mb-3 flex-grow-0\"},[(!_vm.isHistoricalProgram)?_c('div',{staticClass:\"col-12 text-right\"},[(_vm.interfaceToggles.hasBatchInvite)?_c('button',{staticClass:\"btn btn-outline-dark mx-1 mt-3\",attrs:{\"disabled\":_vm.batchInviteButtonDisable},on:{\"click\":_vm.batchInvite}},[_c('i',{staticClass:\"fa fa-envelope\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\" Batch Invite \")]):_vm._e(),(_vm.isInPartnership && _vm.interfaceToggles.hasTransfer)?_c('router-link',{staticClass:\"mt-3 mx-1 btn btn-outline-dark\",attrs:{\"to\":{\n name: (\"transfer-volunteer-\" + _vm.routeType),\n params: { id: _vm.leagueid, type: _vm.combinedCategoryAndProgram },\n }}},[_c('i',{staticClass:\"fas fa-exchange-alt\"}),_vm._v(\" Transfer \")]):_vm._e(),(_vm.interfaceToggles.hasImport)?_c('button',{staticClass:\"mx-1 mt-3 btn btn-outline-dark not_white_hover\",on:{\"click\":_vm.importClicked}},[_c('i',{staticClass:\"fas fa-cloud-upload-alt\"}),_vm._v(\" Import \")]):_vm._e(),(_vm.interfaceToggles.hasNewButtons)?[_c('router-link',{class:{ disabled: !_vm.addButtonEnabled, btn: true, 'btn-outline-dark': true, 'mx-1 mt-3': true },attrs:{\"to\":{\n name: (\"former-volunteer-\" + _vm.routeType),\n params: { id: _vm.leagueid, type: _vm.combinedCategoryAndProgram },\n }}},[_c('i',{staticClass:\"fa fa-plus\"}),_vm._v(\" Add Existing \")]),_c('router-link',{class:{ disabled: !_vm.addButtonEnabled, btn: true, 'btn-success': true, 'mx-1 mt-3': true },attrs:{\"to\":{\n name: (\"new-volunteer-\" + _vm.routeType),\n params: { id: _vm.leagueid, type: _vm.combinedCategoryAndProgram },\n }}},[_c('i',{staticClass:\"fa fa-plus\"}),_vm._v(\" Add New \")])]:_vm._e(),(_vm.interfaceToggles.hasAllowRoleOnline && _vm.programHasOPR())?_c('div',{staticClass:\"container-fluid flex-grow-1 d-flex flex-row\",staticStyle:{\"justify-content\":\"flex-end\"}},[_c('div',{staticClass:\"text-right\"},[_c('volunteer-role-allow-online',{attrs:{\"upwardLeagueID\":_vm.leagueid,\"routeType\":_vm.routeType,\"allowOPR\":true,\"roleID\":Number(this.approveRoleID.valueOf()),\"value\":_vm.currentRoleAllowsOPR()}})],1),_c('div',{staticStyle:{\"display\":\"inline-flex\"}},[_c('volunteer-role-allow-online',{attrs:{\"upwardLeagueID\":_vm.leagueid,\"routeType\":_vm.routeType,\"allowOPR\":false,\"roleID\":Number(this.approveRoleID.valueOf()),\"value\":_vm.currentRoleAllowsOVR()}})],1)]):_vm._e()],2):_vm._e()]),_c('div',{staticClass:\"bg-light-1 row flex-grow-1\"},[_c('div',{class:{ 'col-xl-8 pr-0': _vm.interfaceToggles.hasTeamInfo, 'col-12': !_vm.interfaceToggles.hasTeamInfo }},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[(_vm.LeagueInfoMoreThanOneProgram(_vm.tabs) && _vm.interfaceToggles.hasTypeProgramTab)?_c('type-program-tab',{staticClass:\"mb-2\",attrs:{\"programs\":_vm.tabs},on:{\"destroyed\":_vm.clearTypeProgram},model:{value:(_vm.currentProgram),callback:function ($$v) {_vm.currentProgram=$$v},expression:\"currentProgram\"}}):_vm._e()],1),_c('div',{staticClass:\"col-auto\"},[(_vm.interfaceToggles.hasSearch)?_c('SearchInput',{staticClass:\"mb-1\",model:{value:(_vm.searchTerm),callback:function ($$v) {_vm.searchTerm=$$v},expression:\"searchTerm\"}}):_vm._e(),(_vm.hasOneRole)?_c('router-link',{staticClass:\"small\",attrs:{\"to\":{\n name: (\"search-volunteer-\" + _vm.routeType),\n params: { id: _vm.leagueid, type: _vm.combinedCategoryAndProgram },\n }}},[_vm._v(\"Search by email or phone\")]):_vm._e()],1)]),_c('DataTable',{staticClass:\"elevation-1 data-table-zebra\",attrs:{\"dense\":\"\",\"headers\":_vm.headers,\"items\":_vm.visibleVolunteers,\"items-per-page\":_vm.pagination.itemsPerPage,\"page\":_vm.pagination.page,\"sortBy\":\"prettyName\"},on:{\"rowSelected\":_vm.rowSelected,\"dblClick\":_vm.rowDoubleClicked,\"pagination\":_vm.onPagination},scopedSlots:_vm._u([{key:\"header.approved\",fn:function(ref){\n var header = ref.header;\nreturn [_c('CheckboxCell',{staticClass:\"d-inline mr-2\",attrs:{\"checked\":_vm.isEveryoneApproved},on:{\"click\":_vm.approveClick}}),_vm._v(_vm._s(header.text)+\" \")]}},{key:\"item.approved\",fn:function(ref){\n var item = ref.item;\nreturn [_c('CheckboxCell',{attrs:{\"checked\":item.approved},on:{\"click\":function($event){return _vm.individualClick(item)}}})]}},{key:\"item.invitationStatus\",fn:function(ref){\n var item = ref.item;\nreturn [_c('InviteCell',{attrs:{\"data\":item}})]}},{key:\"item.actions\",fn:function(ref){\n var item = ref.item;\nreturn [_c('div',{staticClass:\"float-right\"},[(!_vm.isHistoricalProgram)?_c('InviteBtn',{attrs:{\"data\":item},on:{\"click\":function($event){return _vm.invite(item)}}}):_vm._e(),(!item.inviteAllowed)?_c('button',{staticClass:\"btn btn-link\",attrs:{\"title\":\"User not allowed to receive invite\"},on:{\"click\":function($event){return _vm.onShowInviteStatusErrorClick()}}},[_c('i',{staticClass:\"fas fa-exclamation-triangle\",staticStyle:{\"color\":\"orange\"},attrs:{\"aria-hidden\":\"true\"}})]):_vm._e(),_c('EditBtn',{on:{\"click\":function($event){return _vm.editVolunteer(item.individualID)}}}),(_vm.deletingId != item.individualID)?_c('DeleteBtn',{on:{\"click\":_vm.deleteVolunteer}}):_c('loading',{staticClass:\"mx-3\",attrs:{\"is-small\":\"\"}})],1)]}}])})],1),(_vm.interfaceToggles.hasTeamInfo)?_c('div',{staticClass:\"col-xl-4\"},[_c('div',{staticStyle:{\"position\":\"sticky\",\"top\":\"70px\"}},[_c('team-info',{attrs:{\"person\":_vm.currentVolunteer,\"team\":_vm.teamInfo}})],1)]):_vm._e()])]),(this.currentVolunteer)?_c('confirm-delete-modal',{attrs:{\"has-confirm-box\":false,\"title\":\"Delete this Volunteer?\"},on:{\"onDeleteConfirmed\":_vm.confirmDeleteVolunteer,\"onDeleteDismissed\":_vm.cancelDeleteVolunteer},model:{value:(_vm.showDelete),callback:function ($$v) {_vm.showDelete=$$v},expression:\"showDelete\"}},[_vm._v(\" Are you sure you want to delete \"+_vm._s(_vm.currentVolunteer.firstName)+\" \"+_vm._s(_vm.currentVolunteer.lastName)+\" ? \")]):_vm._e(),_c('volunteer-selection-modal',{attrs:{\"league\":_vm.leagueid,\"roles\":_vm.rolesByProgram,\"includePastLeagues\":true,\"title\":_vm.volunteerSelectionModalTitle},on:{\"select\":_vm.volunteerFound,\"close\":_vm.searchClosed},model:{value:(_vm.existingVolunteerSearchActive),callback:function ($$v) {_vm.existingVolunteerSearchActive=$$v},expression:\"existingVolunteerSearchActive\"}}),_c('volunteer-email-phone-search',{key:_vm.emailPhoneVolunteerSearchActive,attrs:{\"visible\":_vm.emailPhoneVolunteerSearchActive,\"league\":_vm.leagueid,\"roles\":_vm.rolesByProgram,\"title\":_vm.volunteerSelectionModalTitle},on:{\"select\":_vm.volunteerFound,\"cancel\":_vm.searchClosed}}),(_vm.transferActive)?_c('volunteer-transfer',{attrs:{\"league\":_vm.leagueid,\"visible\":_vm.transferActive},on:{\"close\":_vm.transferClosed}}):_vm._e(),_c('confirmation-modal',{attrs:{\"title\":\"Confirm Batch Invite\",\"show\":_vm.showConfirmBatchInvite,\"is-small\":true},on:{\"onResponse\":_vm.onBatchConfirm}},[_c('p',{staticClass:\"font-weight-bold\"},[_vm._v(\" NOTE: Sending invites to coaches will immediately give them access to the rosters and schedules for the teams they are assigned to. It is highly recommended that you finalize your rosters and schedules before inviting coaches. \")]),_c('p',[_vm._v(\" Do you wish to send an invite to all APPROVED individuals in the list who have not been invited previously? \")])]),_c('invitation-send-modal',{attrs:{\"volunteer\":_vm.pendingInviteVolunteer},on:{\"send\":_vm.onInviteConfirm},model:{value:(_vm.showInviteConfirm),callback:function ($$v) {_vm.showInviteConfirm=$$v},expression:\"showInviteConfirm\"}}),_c('invitation-resend-modal',{attrs:{\"volunteer\":_vm.pendingInviteVolunteer},on:{\"resend\":_vm.onResendInviteConfirm},model:{value:(_vm.showResendInviteConfirm),callback:function ($$v) {_vm.showResendInviteConfirm=$$v},expression:\"showResendInviteConfirm\"}}),_c('alert',{attrs:{\"type\":_vm.alertType},model:{value:(_vm.showEmailInviteSent),callback:function ($$v) {_vm.showEmailInviteSent=$$v},expression:\"showEmailInviteSent\"}},[_vm._v(\"An invitation has been sent to \"+_vm._s(_vm.getFirstEmailInfo(this.pendingInviteVolunteer).emailAddress)+\". If the invitation is not accepted within a reasonable time frame, please have them check their spam folder for an email from Upward Sports. \")]),_c('alert',{attrs:{\"type\":_vm.alertType},model:{value:(_vm.showSmsInviteSent),callback:function ($$v) {_vm.showSmsInviteSent=$$v},expression:\"showSmsInviteSent\"}},[_vm._v(\"An invitation has been sent to \"+_vm._s(_vm.smsInviteSentNumber)+\". \")]),_c('volunteer-import',{attrs:{\"visible\":_vm.isImportVisible,\"league\":_vm.currentItem},on:{\"close\":_vm.closeImport}}),_c('alert',{attrs:{\"type\":_vm.alertType},model:{value:(_vm.showBatchInviteSent),callback:function ($$v) {_vm.showBatchInviteSent=$$v},expression:\"showBatchInviteSent\"}},[_vm._v(\"An invitation has been sent to \"),_c('ul',_vm._l((_vm.batchInviteLastSentList),function(c){return _c('li',{key:((c.individualID) + \"-bi\")},[_vm._v(\" \"+_vm._s(c.prettyName)+\" \"+_vm._s(_vm.getFirstEmailInfo(c).emailAddress)+\" \")])}),0),_vm._v(\" Please have volunteers check their spam folder for an email from Upward Sports if the the invitation request is not accepted in a reasonable time \")]),_c('alert',{attrs:{\"type\":_vm.alertType},model:{value:(_vm.showInviteStatusError),callback:function ($$v) {_vm.showInviteStatusError=$$v},expression:\"showInviteStatusError\"}},[_vm._v(\"This user has an invalid or suspicous email address, chosen not to provide an email address or has opted out of receiving emails. Invites can only be sent to users with a valid email address. \")])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { DataTableHeader } from 'vuetify/types'\nconst baseHeaders: DataTableHeader[] = [\n {\n text: 'Name',\n value: 'prettyName',\n sort: (a: string, b: string) => {\n return a.toLowerCase().localeCompare(b.toLowerCase())\n },\n },\n { text: 'Gender', value: 'gender' },\n { text: '', value: 'actions', sortable: false },\n]\n\nexport const cheerDirectorHeaders = headersWithInviteAndApproved()\nexport const coachHeaders = headersWithInviteAndApproved()\nexport const refHeaders = headersWithInviteAndApproved()\nfunction headersWithInviteAndApproved() {\n const headers = [...baseHeaders]\n headers.splice(1, 0, { text: 'Approved', value: 'approved' })\n headers.splice(3, 0, { text: 'Invitaton Status', value: 'invitationStatus' })\n return headers\n}\n\nexport const commissionerHeaders = headersWithInviteAndRoles()\nfunction headersWithInviteAndRoles() {\n const headers = [...baseHeaders]\n headers.splice(-1, 0, { text: 'Invitaton Status', value: 'invitationStatus' })\n headers.splice(-1, 0, { text: 'Roles', value: 'roles_text' })\n return headers\n}\n\nexport const othersHeaders = headersWithRoles()\nfunction headersWithRoles() {\n const headers = [...baseHeaders]\n headers.splice(-1, 0, { text: 'Roles', value: 'roles_text' })\n return headers\n}\n","import { LeagueVolunteerInfo } from '@/GeneratedTypes/ListInfo/LeagueVolunteerInfo'\n\nexport type VolunteerInfo = LeagueVolunteerInfo\n\nexport enum InvitationStatusEnum {\n EMPTY, //Both acceptInviteDate and expireInviteDate are empty strings (or nulls)\n SENT, //acceptInviteDate is an empty string and expireInviteDate has a value but the date has not passed yet\n ACCEPTED, //acceptInviteDate has a value\n EXPIRED, //acceptInviteDate is an empty string and expireInviteDate has a value AND the date has passed\n}\n\nexport interface VolunteerListInfo extends VolunteerInfo {\n approved: boolean\n invitationStatus: InvitationStatusEnum\n roles_text: string\n prettyName: string\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('modal',{attrs:{\"title\":\"Choose one or more volunteers to transfer\"},on:{\"input\":_vm.close},model:{value:(_vm.internalVisible),callback:function ($$v) {_vm.internalVisible=$$v},expression:\"internalVisible\"}},[_c('div',[_c('div',{staticClass:\"bg-primary text-white font-weight-bold p-1 pl-3\"},[_c('i',{staticClass:\"fas fa-filter\"}),_vm._v(\" Filters\")]),_c('div',{staticClass:\"border p-3 mb-3\"},[_c('div',{staticClass:\"d-flex p-0 m-0\"},[_c('text-input',{staticClass:\"adjust-alignment\",attrs:{\"label\":\"Name Contains\"},model:{value:(_vm.name),callback:function ($$v) {_vm.name=$$v},expression:\"name\"}}),(_vm.hasCheer)?_c('select-input',{staticClass:\"adjust-alignment ml-5 pl-5\",attrs:{\"label\":\"Program\",\"items-list\":_vm.programs,\"value-property-name\":\"id\",\"text-property-name\":\"label\"},model:{value:(_vm.program),callback:function ($$v) {_vm.program=$$v},expression:\"program\"}}):_vm._e(),_c('gender-select',{staticClass:\"adjust-alignment ml-5 pl-5\",staticStyle:{\"max-width\":\"140px\"},attrs:{\"label\":\"Gender\",\"adult\":true,\"show-blank-item\":false},model:{value:(_vm.gender),callback:function ($$v) {_vm.gender=$$v},expression:\"gender\"}}),_c('button',{staticClass:\"btn btn-link\",on:{\"click\":_vm.clear}},[_vm._v(\"clear filters\")])],1)]),(_vm.loading)?_c('loading',{staticClass:\"m-3\"}):_vm._e(),_c('span',{staticClass:\"small text-muted lh-1 p-0 m-0\"},[_vm._v(\"Count: \"+_vm._s(_vm.data ? _vm.data.length : 0))]),_c('div',{staticStyle:{\"height\":\"350px\"}},[_c('DataTable',{staticClass:\"elevation-1 data-table-zebra\",attrs:{\"dense\":\"\",\"single-select\":false,\"headers\":_vm.headers,\"items\":_vm.data,\"items-per-page\":5},on:{\"rowSelected\":_vm.rowselected}})],1),_c('div',{staticClass:\"mt-3\"},[_c('select-input',{attrs:{\"label\":\"Transfer To\",\"items-list\":_vm.partners,\"text-property-name\":\"name\",\"value-property-name\":\"accountNumber\"},model:{value:(_vm.transferAccount),callback:function ($$v) {_vm.transferAccount=$$v},expression:\"transferAccount\"}}),_c('button',{staticClass:\"btn btn-primary d-inline-block\",attrs:{\"role\":\"button\"},on:{\"click\":_vm.transfer}},[_vm._v(\"Transfer\")]),(_vm.localStatus)?_c('span',{staticClass:\"alert alert-info text-center p-1 ml-3 d-inline-block\",staticStyle:{\"width\":\"250px\"}},[_vm._v(\" \"+_vm._s(_vm.localStatus)+\" \")]):_vm._e()],1)],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { DataTableHeader } from 'vuetify/types'\n\nexport default [\n {\n value: 'selected',\n text: '',\n },\n {\n value: 'last',\n text: 'Last',\n },\n {\n value: 'first',\n text: 'First',\n },\n {\n value: 'gender',\n text: 'Gender',\n },\n] as DataTableHeader[]\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { computed, defineComponent, ref, watch } from '@vue/composition-api'\nimport { cloneDeep } from 'lodash'\nimport headers from './ext/transfer_gridcolumns'\nimport { VolunteerTransfer } from './model/VolunteerTransfer'\nimport Modal from '@/components/Modal.vue'\nimport DataTable from '@/elements/DataTable/DataTable.vue'\nimport SelectInput from '@/elements/SelectInput.vue'\nimport InputLabel from '@/elements/InputLabel.vue'\nimport TextInput from '@/elements/TextInput.vue'\nimport GradeRangeDropdowns from '@/elements/GradeRangeDropdowns.vue'\nimport Loading from '@/elements/Loading.vue'\nimport GenderSelect from '@/elements/GenderSelect.vue'\nimport { DataTableSelection } from '@/models/DataTable/DataTableSelection'\n\nimport store from '@/store'\n\nexport default defineComponent({\n name: 'VolunteerTransfer',\n components: {\n SelectInput,\n Modal,\n DataTable,\n GradeRangeDropdowns,\n GenderSelect,\n InputLabel,\n TextInput,\n Loading,\n },\n data() {\n return { headers }\n },\n props: {\n visible: { type: Boolean, required: true, default: false },\n league: { type: String, required: false, default: '' },\n },\n setup(props, ctx) {\n const ids = ref([])\n const transferAccount = ref('')\n const internalVisible = ref(false)\n const gender = ref('E')\n const name = ref('')\n const program = ref('BOTH')\n let localStatus = ref('')\n\n const transferStatus = computed(() => store.getters.volunteers.status)\n const volunteers = computed(() => cloneDeep(store.getters.volunteers.volunteers))\n const loading = computed(() => cloneDeep(store.getters.volunteers.loading))\n const loggedInAccount = computed(() => store.getters.authorization.firstAccountNumber)\n const transferAction = store.dispatch.volunteers.transferVolunteers\n const partners = computed(() => {\n const p = cloneDeep(store.getters.partners.partners)\n return p.filter((i) => i.accountNumber != loggedInAccount.value)\n })\n\n const programs = computed((): { label: string; id: string }[] => {\n const list = [...store.getters.leagueAbstraction.shortPrograms]\n list.push({ label: 'Both', id: 'BOTH' })\n return list\n })\n\n watch(\n () => props.visible,\n () => (internalVisible.value = props.visible),\n { immediate: true }\n )\n\n watch(\n () => partners.value,\n () => {\n if (transferAccount.value == '' && partners.value.length) {\n transferAccount.value = partners.value[0].accountNumber ?? ''\n }\n },\n { immediate: true }\n )\n\n watch(\n () => transferStatus.value,\n () => {\n if (transferStatus.value == 'Done' && localStatus.value != '') {\n setTimeout(() => (localStatus.value = ''), 2500)\n }\n localStatus.value = transferStatus.value\n }\n )\n const data = computed(() => {\n return volunteers.value\n .filter((x) => {\n const act = x.accountNumber == loggedInAccount.value\n const gd = gender.value == 'E' ? true : gender.value == x.gender\n const nm = stringContainsFilter(`${x.firstName}${x.lastName}`, name.value)\n let pg = false\n if (program.value == 'BOTH') {\n pg = true\n } else {\n const coachProgram = x.coachPreferences?.programs?.find((p) => p.typeProgramID == program.value)\n pg = coachProgram ? true : false\n }\n\n return act && gd && nm && pg\n })\n .map((x) => ({\n id: x.individualID,\n last: x.lastName,\n first: x.firstName,\n gender: x.gender,\n }))\n })\n function stringContainsFilter(playerVal: string, filter: string) {\n return filter != '' ? playerVal.toLowerCase().indexOf(filter.toLowerCase()) > -1 : true\n }\n\n function rowselected(a: DataTableSelection, allSelected: VolunteerTransfer[]) {\n if (Array.isArray(allSelected) && allSelected.length) {\n ids.value = allSelected.map((x) => x.id)\n }\n }\n\n function clear() {\n program.value = 'BOTH'\n gender.value = 'E'\n name.value = ''\n }\n\n function close(b: boolean) {\n if (!b) {\n ctx.emit('close')\n }\n }\n function transfer() {\n transferAction({\n leagueID: props.league,\n ids: cloneDeep(ids.value),\n newAccount: transferAccount.value,\n })\n }\n\n return {\n loading,\n name,\n gender,\n program,\n programs,\n internalVisible,\n volunteers,\n close,\n data,\n partners,\n transferAccount,\n rowselected,\n localStatus,\n hasCheer: computed(() => store.getters.leagueAbstraction.hasCheer),\n clear,\n transfer,\n }\n },\n})\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VolunteerTransfer.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VolunteerTransfer.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./VolunteerTransfer.vue?vue&type=template&id=aa00f55c&\"\nimport script from \"./VolunteerTransfer.vue?vue&type=script&lang=ts&\"\nexport * from \"./VolunteerTransfer.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('span',{staticClass:\"clickable\",on:{\"click\":_vm.click}},[_vm._v(_vm._s(_vm.checked ? \"✔\" : \"⬜\"))])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\nimport { defineComponent } from '@vue/composition-api'\nexport default defineComponent({\n name: 'CheckboxCell',\n props: { checked: { type: Boolean, required: true } },\n components: {},\n setup(props, { emit }) {\n function click() {\n emit('click')\n }\n return { click }\n },\n})\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CheckboxCell.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CheckboxCell.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CheckboxCell.vue?vue&type=template&id=d5c835ee&\"\nimport script from \"./CheckboxCell.vue?vue&type=script&lang=ts&\"\nexport * from \"./CheckboxCell.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.canInvite)?_c('button',{staticClass:\"btn btn-link\",on:{\"click\":_vm.click}},[_c('i',{staticClass:\"fa fa-envelope text-primary\",attrs:{\"aria-hidden\":\"true\"}})]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\nimport { defineComponent, PropType, computed } from '@vue/composition-api'\nimport { InvitationStatusEnum, VolunteerListInfo } from '@/views/Programs/Volunteers/ext/gridcolumntypes'\nexport default defineComponent({\n name: 'InviteBtn',\n props: { data: { type: Object as PropType, required: false } },\n components: {},\n setup(props, { emit }) {\n const canInvite = computed(() => {\n return props.data\n ? props.data.approved &&\n props.data.invitationStatus != InvitationStatusEnum.ACCEPTED &&\n props.data.inviteAllowed\n : false\n })\n function click() {\n emit('click')\n }\n return { click, canInvite }\n },\n})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { defineComponent, computed, ref, watch, PropType } from '@vue/composition-api'\n\nimport { volunteerSearchHeaders } from '@/lib/components/CoachSelectionModal/VolunteerSelectionGridColumns'\nimport volunteersClient from '@/clients/volunteersClient'\nimport { VolunteerSearchInfo } from '@/GeneratedTypes/ListInfo/VolunteerSearchInfo'\nimport TextInput from '@/elements/TextInput.vue'\nimport RadioGroupInput from '@/elements/RadioGroupInput.vue'\nimport { RolesEnum } from '@/lib/support/models/LeagueVolunteer/data'\nimport SearchModal from '@/elements/SearchModal.vue'\n\nenum SearchChoice {\n EMAIL,\n PHONE,\n}\n\nexport default defineComponent({\n name: 'VolunteerEmailPhoneSearch',\n components: {\n SearchModal,\n TextInput,\n RadioGroupInput,\n },\n props: {\n autoSearch: { required: false, type: String, default: '' },\n league: { required: true, type: String, default: '' },\n visible: { required: false, type: Boolean, default: false },\n roles: { type: Array as PropType, default: () => [0], required: true },\n title: { required: false, type: String, default: 'Coaches' },\n },\n setup(props, ctx) {\n const showModal = ref(props.visible)\n\n watch(\n () => props.visible,\n () => {\n showModal.value = props.visible\n }\n )\n\n watch(\n () => showModal.value,\n (b: boolean) => {\n if (b) {\n ctx.emit('open')\n return\n }\n\n ctx.emit('close')\n return\n }\n )\n\n function cancel() {\n ctx.emit('cancel')\n }\n\n async function search() {\n searchActive.value = true\n const criteria = {\n leagueID: props.league,\n orSearch: false,\n role: props.roles,\n historyLimit: null,\n includePastLeagues: false,\n useStartsWith: false,\n ...(choice.value == SearchChoice.EMAIL ? { email: term.value } : { phone: term.value }),\n }\n try {\n const result = await volunteersClient.search(criteria)\n searchData.value = result.map((v) => {\n return {\n ...v,\n name: `${v.firstName} ${v.lastName}`,\n }\n })\n } finally {\n searchActive.value = false\n }\n if (searchData.value.length) {\n showModal.value = true\n }\n }\n\n function searchSelected(p: VolunteerSearchInfo) {\n ctx.emit('select', { individualID: p.individualID, leagueID: p.upwardLeagueID })\n }\n\n const searchData = ref([])\n const searchActive = ref(false)\n\n const choice = ref(SearchChoice.EMAIL)\n const term = ref('')\n\n const choiceName = computed(() => (choice.value ? 'Phone Numbers' : 'Emails'))\n\n function clear() {\n term.value = ''\n }\n\n return {\n volunteerSearchHeaders,\n showModal,\n searchActive,\n searchData,\n searchSelected,\n cancel,\n choice,\n term,\n clear,\n search,\n choiceName,\n }\n },\n})\n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InviteBtn.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InviteBtn.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./InviteBtn.vue?vue&type=template&id=56808481&\"\nimport script from \"./InviteBtn.vue?vue&type=script&lang=ts&\"\nexport * from \"./InviteBtn.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',[_vm._v(_vm._s(_vm.statusText))])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\nimport { defineComponent, PropType, computed } from '@vue/composition-api'\nimport { InvitationStatusEnum, VolunteerListInfo } from '@/views/Programs/Volunteers/ext/gridcolumntypes'\n\nexport default defineComponent({\n name: 'InviteCell',\n props: { data: { type: Object as PropType, required: true } },\n components: {},\n setup(props) {\n const statusText = computed(() => {\n switch (props.data.invitationStatus) {\n case InvitationStatusEnum.ACCEPTED:\n return 'accepted'\n case InvitationStatusEnum.EMPTY:\n return ''\n case InvitationStatusEnum.EXPIRED:\n return 'expired'\n case InvitationStatusEnum.SENT:\n return 'sent'\n }\n return ''\n })\n\n return { statusText }\n },\n})\n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InviteCell.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InviteCell.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./InviteCell.vue?vue&type=template&id=0cf53707&\"\nimport script from \"./InviteCell.vue?vue&type=script&lang=ts&\"\nexport * from \"./InviteCell.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('SearchModal',{attrs:{\"headers\":_vm.volunteerSearchHeaders,\"loading\":_vm.searchActive,\"title\":(\"Search \" + _vm.title),\"item-key\":\"individualID\",\"data\":_vm.searchData,\"showSearchInput\":false},on:{\"onSelected\":_vm.searchSelected,\"cancel\":_vm.cancel},model:{value:(_vm.showModal),callback:function ($$v) {_vm.showModal=$$v},expression:\"showModal\"}},[_c('div',{staticClass:\"border rounded shadow-sm\"},[_c('div',{staticClass:\"bg-primary text-white font-weight-bold p-1 pl-3\"},[_vm._v(\"Search by\")]),_c('v-chip-group',{staticClass:\"pl-2\",attrs:{\"column\":\"\",\"mandatory\":\"\",\"active-class\":\"primary--text\"},model:{value:(_vm.choice),callback:function ($$v) {_vm.choice=$$v},expression:\"choice\"}},[_c('v-chip',{attrs:{\"filter\":\"\",\"outlined\":\"\"}},[_vm._v(\" Email \")]),_c('v-chip',{attrs:{\"filter\":\"\",\"outlined\":\"\"}},[_vm._v(\" Phone \")])],1)],1),_c('div',{staticClass:\"my-4\"},[_c('text-input',{staticClass:\"mt-2\",attrs:{\"placeholder\":\"Search criteria ...\"},model:{value:(_vm.term),callback:function ($$v) {_vm.term=$$v},expression:\"term\"}})],1),_c('div',{staticClass:\"text-right\"},[_c('button',{staticClass:\"btn btn-outline-dark mr-2\",on:{\"click\":_vm.clear}},[_vm._v(\"Clear\")]),_c('button',{staticClass:\"btn btn-primary\",on:{\"click\":_vm.search}},[_c('i',{staticClass:\"fas fa-search\"}),_vm._v(\" Search \"+_vm._s(_vm.choiceName)+\" \")])]),_c('hr')])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VolunteerEmailPhoneSearch.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VolunteerEmailPhoneSearch.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./VolunteerEmailPhoneSearch.vue?vue&type=template&id=9cd423b6&\"\nimport script from \"./VolunteerEmailPhoneSearch.vue?vue&type=script&lang=ts&\"\nexport * from \"./VolunteerEmailPhoneSearch.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VChip } from 'vuetify/lib/components/VChip';\nimport { VChipGroup } from 'vuetify/lib/components/VChipGroup';\ninstallComponents(component, {VChip,VChipGroup})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"form-check\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.internalValue),expression:\"internalValue\"}],attrs:{\"type\":\"checkbox\",\"id\":_vm.elementId},domProps:{\"checked\":Array.isArray(_vm.internalValue)?_vm._i(_vm.internalValue,null)>-1:(_vm.internalValue)},on:{\"change\":[function($event){var $$a=_vm.internalValue,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.internalValue=$$a.concat([$$v]))}else{$$i>-1&&(_vm.internalValue=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.internalValue=$$c}},_vm.handleChange]}}),_vm._t(\"inline-label\",[_c('input-label',{staticClass:\"pl-2\",attrs:{\"label\":_vm.getText,\"required\":false,\"input-id\":_vm.elementId}})])],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { defineComponent, ref, computed, watch, PropType } from '@vue/composition-api'\nimport { getProps, useModalValue } from '@/composables/ModalValue'\n\nimport VeeValidateForm from '@/elements/VeeValidateForm.vue'\n\nimport { VolunteerInfo } from '@/views/Programs/Volunteers/ext/gridcolumntypes'\nimport PhoneInputMask from '@/elements/PhoneInputMask.vue'\nimport { IndividualPhone } from '@/GeneratedTypes/IndividualPhone'\nimport { getEmptyPhone, PhoneTypeEnum } from '@/lib/support/models/IndividualPhone/data'\nimport Modal from '@/components/Modal.vue'\n\nexport enum ResendInvitePayloadMedium {\n SMS = 'SMS',\n EMAIL = 'EMAIL',\n}\n\nexport interface ResendInvitePayload {\n phoneNumber: string\n medium: ResendInvitePayloadMedium\n}\n\nexport default defineComponent({\n name: 'InvitationResendModal',\n components: {\n PhoneInputMask,\n VeeValidateForm,\n Modal,\n },\n props: {\n volunteer: { type: Object as PropType },\n ...getProps(),\n },\n setup(props, ctx) {\n const { isModalOpen, closeModal } = useModalValue(props, ctx)\n const internalPhone = ref(getEmptyPhone())\n\n const email = computed(() => props.volunteer?.emailAddresses?.find(() => true)?.emailAddress || '')\n\n function clickedResendEmail() {\n doResend(ResendInvitePayloadMedium.EMAIL)\n }\n\n function clickedResendText() {\n doResend(ResendInvitePayloadMedium.SMS)\n }\n\n function doResend(medium: ResendInvitePayloadMedium) {\n closeModal()\n ctx.emit('resend', {\n medium,\n phoneNumber: internalPhone.value.phoneNumber,\n } as ResendInvitePayload)\n }\n\n function cancel() {\n closeModal()\n }\n\n watch(\n () => props.volunteer,\n () => {\n const phone = props.volunteer?.phoneNumbers?.find(\n (p) => !!p.phoneNumber && p.typePhoneID === PhoneTypeEnum.MOBILE\n )\n\n if (phone?.phoneNumber) {\n internalPhone.value.phoneNumber = phone.phoneNumber\n } else {\n internalPhone.value.phoneNumber = '' //clear this out or the last volunteer's phone number will show.\n }\n },\n { immediate: true }\n )\n\n return {\n isModalOpen,\n email,\n clickedResendEmail,\n internalPhone,\n clickedResendText,\n cancel,\n }\n },\n})\n","\n\n\n\n\n\n\n\n\n\nimport { defineComponent, computed, ref, watch } from '@vue/composition-api'\nimport InputLabel from '@/elements/InputLabel.vue'\nimport uuid from 'uuid'\nimport { cloneDeep } from 'lodash'\nimport store from '@/store'\n\nexport default defineComponent({\n name: 'VolunteerRoleAllowOnline',\n components: {\n InputLabel,\n },\n props: {\n upwardLeagueID: { type: String, required: true },\n routeType: { type: String, required: true },\n roleID: { type: Number, required: true },\n allowOPR: { type: Boolean, required: true },\n value: { type: Boolean, required: true },\n },\n setup(props) {\n const storeLeague = computed(() => store.getters.leagues.currentItem)\n const storeCamp = computed(() => store.getters.camps.currentItem)\n\n const getText = computed(() =>\n props.allowOPR ? 'Show on participant registration' : 'Show on volunteer application'\n )\n\n const guid = ref(uuid.v4())\n\n const internalValue = ref(props.value)\n\n async function handleChange() {\n if (props.routeType == 'league') {\n await store.dispatch.leagues.retrieveAndSetAsCurrent({ id: props.upwardLeagueID })\n if (storeLeague.value) {\n const myLeague = cloneDeep(storeLeague.value)\n const changeRole = myLeague.roles?.find((x) => x.id == props.roleID)\n if (changeRole) {\n props.allowOPR\n ? (changeRole.allowInOPR = internalValue.value)\n : (changeRole.allowInOVR = internalValue.value)\n await store.dispatch.leagues.update({ item: myLeague })\n }\n }\n }\n if (props.routeType == 'camp') {\n await store.dispatch.camps.retrieveAndSetAsCurrent({ id: props.upwardLeagueID })\n if (storeCamp.value) {\n const myCamp = cloneDeep(storeCamp.value)\n const changeRole = myCamp.roles?.find((x) => x.id == props.roleID)\n if (changeRole) {\n props.allowOPR\n ? (changeRole.allowInOPR = internalValue.value)\n : (changeRole.allowInOVR = internalValue.value)\n store.dispatch.camps.update({ item: myCamp })\n }\n }\n }\n }\n\n watch(\n () => props.value,\n () => {\n internalValue.value = props.value\n }\n )\n\n const elementId = computed(() => `checkbox-${guid.value}`)\n\n return {\n internalValue,\n elementId,\n handleChange,\n getText,\n }\n },\n})\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VolunteerRoleAllowOnline.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VolunteerRoleAllowOnline.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./VolunteerRoleAllowOnline.vue?vue&type=template&id=82b6f676&scoped=true&\"\nimport script from \"./VolunteerRoleAllowOnline.vue?vue&type=script&lang=ts&\"\nexport * from \"./VolunteerRoleAllowOnline.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./VolunteerRoleAllowOnline.vue?vue&type=style&index=0&id=82b6f676&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"82b6f676\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('vee-validate-form',{ref:\"form\",scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar valid = ref.valid;\nvar validated = ref.validated;\nreturn [_c('modal',{attrs:{\"is-small\":false,\"title\":\"Resend Volunteer Invitation\"},model:{value:(_vm.isModalOpen),callback:function ($$v) {_vm.isModalOpen=$$v},expression:\"isModalOpen\"}},[_vm._t(\"default\",[_c('div',{staticClass:\"row mb-4\"},[_c('div',{staticClass:\"col-12 mb-3\"},[_vm._v(\" Choose how you would like to send an invitation to \"),(_vm.volunteer && (_vm.volunteer.firstName || _vm.volunteer.lastName))?[_vm._v(\" \"+_vm._s(_vm.volunteer.firstName)+\" \"+_vm._s(_vm.volunteer.lastName)+\": \")]:[_vm._v(\" this person: \")]],2),(_vm.email)?_c('div',{staticClass:\"col-6\"},[_c('h5',[_vm._v(\"Email\")]),_c('p',[_vm._v(\" To resend the invitiation link to the volunteer via an email, please verify the address below and then click the \"),_c('strong',[_vm._v(\"Resend Email\")]),_vm._v(\" button. \")]),_c('p',[_vm._v(_vm._s(_vm.email))]),_c('div',[_c('button',{staticClass:\"btn btn-primary btn-sm\",on:{\"click\":_vm.clickedResendEmail}},[_vm._v(\"Resend Email\")])])]):_vm._e(),_c('div',{staticClass:\"col-6 border-left\"},[_c('h5',[_vm._v(\"Text Message\")]),_c('p',{staticClass:\"mb-0\"},[_vm._v(\" To resend the invitiation link to the volunteer via a text message, please enter or verify the mobile number below and then click the \"),_c('strong',[_vm._v(\"Send Text\")]),_vm._v(\" button. \")]),_c('phone-input-mask',{model:{value:(_vm.internalPhone),callback:function ($$v) {_vm.internalPhone=$$v},expression:\"internalPhone\"}}),_c('div',[_c('button',{staticClass:\"btn btn-primary btn-sm\",attrs:{\"disabled\":!_vm.internalPhone.phoneNumber},on:{\"click\":_vm.clickedResendText}},[_vm._v(\" Send Text \")])])],1)])]),_vm._t(\"footer\",[_c('div',{staticClass:\"text-right\"},[_c('button',{staticClass:\"btn btn-light\",on:{\"click\":_vm.cancel}},[_vm._v(\"Cancel\")])])])],2)]}}],null,true)})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { defineComponent, ref, computed, watch, PropType } from '@vue/composition-api'\nimport { getProps, useModalValue } from '@/composables/ModalValue'\n\nimport VeeValidateForm from '@/elements/VeeValidateForm.vue'\n\nimport { VolunteerInfo } from '@/views/Programs/Volunteers/ext/gridcolumntypes'\nimport PhoneInputMask from '@/elements/PhoneInputMask.vue'\nimport { IndividualPhone } from '@/GeneratedTypes/IndividualPhone'\nimport { getEmptyPhone, PhoneTypeEnum } from '@/lib/support/models/IndividualPhone/data'\nimport Modal from '@/components/Modal.vue'\n\nexport enum SendInvitePayloadMedium {\n SMS = 'SMS',\n EMAIL = 'EMAIL',\n}\n\nexport interface SendInvitePayload {\n phoneNumber: string\n medium: SendInvitePayloadMedium\n}\n\nexport default defineComponent({\n name: 'InvitationSendModal',\n components: {\n PhoneInputMask,\n VeeValidateForm,\n Modal,\n },\n props: {\n volunteer: { type: Object as PropType },\n ...getProps(),\n },\n setup(props, ctx) {\n const { isModalOpen, closeModal } = useModalValue(props, ctx)\n const internalPhone = ref(getEmptyPhone())\n\n const email = computed(() => props.volunteer?.emailAddresses?.find(() => true)?.emailAddress || '')\n\n function clickedSendEmail() {\n doSend(SendInvitePayloadMedium.EMAIL)\n }\n\n function clickedSendText() {\n doSend(SendInvitePayloadMedium.SMS)\n }\n\n function doSend(medium: SendInvitePayloadMedium) {\n closeModal()\n ctx.emit('send', {\n medium,\n phoneNumber: internalPhone.value.phoneNumber,\n } as SendInvitePayload)\n }\n\n function cancel() {\n closeModal()\n }\n\n watch(\n () => props.volunteer,\n () => {\n const phone = props.volunteer?.phoneNumbers?.find(\n (p) => !!p.phoneNumber && p.typePhoneID === PhoneTypeEnum.MOBILE\n )\n\n if (phone?.phoneNumber) {\n internalPhone.value.phoneNumber = phone.phoneNumber\n } else {\n internalPhone.value.phoneNumber = '' //clear this out or the last volunteer's phone number will show.\n }\n },\n { immediate: true }\n )\n\n return {\n isModalOpen,\n email,\n clickedSendEmail,\n internalPhone,\n clickedSendText,\n cancel,\n }\n },\n})\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InvitationResendModal.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InvitationResendModal.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./InvitationResendModal.vue?vue&type=template&id=55242af2&\"\nimport script from \"./InvitationResendModal.vue?vue&type=script&lang=ts&\"\nexport * from \"./InvitationResendModal.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('vee-validate-form',{ref:\"form\",scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar valid = ref.valid;\nvar validated = ref.validated;\nreturn [_c('modal',{attrs:{\"is-small\":false,\"title\":\"Send Volunteer Invitation\"},model:{value:(_vm.isModalOpen),callback:function ($$v) {_vm.isModalOpen=$$v},expression:\"isModalOpen\"}},[_vm._t(\"default\",[_c('div',{staticClass:\"row mb-4\"},[_c('div',{staticClass:\"col-12 mb-3\"},[_vm._v(\" Choose how you would like to send an invitation to \"),(_vm.volunteer && (_vm.volunteer.firstName || _vm.volunteer.lastName))?[_vm._v(\" \"+_vm._s(_vm.volunteer.firstName)+\" \"+_vm._s(_vm.volunteer.lastName)+\": \")]:[_vm._v(\" this person: \")]],2),(_vm.email)?_c('div',{staticClass:\"col-6\"},[_c('h5',[_vm._v(\"Email\")]),_c('p',[_vm._v(\" To send the invitiation link to the volunteer via an email, please verify the address below then click the \"),_c('strong',[_vm._v(\"Send Email\")]),_vm._v(\" button. \")]),_c('p',[_vm._v(_vm._s(_vm.email))]),_c('div',[_c('button',{staticClass:\"btn btn-primary btn-sm\",on:{\"click\":_vm.clickedSendEmail}},[_vm._v(\"Send Email\")])])]):_vm._e(),_c('div',{staticClass:\"col-6 border-left\"},[_c('h5',[_vm._v(\"Text Message\")]),_c('p',{staticClass:\"mb-0\"},[_vm._v(\" To Send the invitiation link to the volunteer via a text message, please enter or verify the mobile number below and then click the \"),_c('strong',[_vm._v(\"Send Text\")]),_vm._v(\" button. \")]),_c('phone-input-mask',{model:{value:(_vm.internalPhone),callback:function ($$v) {_vm.internalPhone=$$v},expression:\"internalPhone\"}}),_c('div',[_c('button',{staticClass:\"btn btn-primary btn-sm\",attrs:{\"disabled\":!_vm.internalPhone.phoneNumber},on:{\"click\":_vm.clickedSendText}},[_vm._v(\" Send Text \")])])],1)])]),_vm._t(\"footer\",[_c('div',{staticClass:\"text-right\"},[_c('button',{staticClass:\"btn btn-light\",on:{\"click\":_vm.cancel}},[_vm._v(\"Cancel\")])])])],2)]}}],null,true)})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InvitationSendModal.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InvitationSendModal.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./InvitationSendModal.vue?vue&type=template&id=dc161c66&\"\nimport script from \"./InvitationSendModal.vue?vue&type=script&lang=ts&\"\nexport * from \"./InvitationSendModal.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { IndividualEmailInfo } from '@/GeneratedTypes/ListInfo/IndividualEmailInfo'\nimport { humanEmailToEmailID } from '@/lib/support/models/IndividualEmail/data'\n\nexport function getEmptyIndividualEmailInfo(): IndividualEmailInfo {\n return {\n emailAddress: '',\n valid: 'true',\n validityReason: '',\n priority: 1,\n typeEmailID: humanEmailToEmailID('home'),\n emailID: 1,\n individualID: 0,\n }\n}\n","/**\n * Grab the first email info on a contact\n * @param contact\n */\nimport { VolunteerListInfo } from '@/views/Programs/Volunteers/ext/gridcolumntypes'\nimport { IndividualEmailInfo } from '@/GeneratedTypes/ListInfo/IndividualEmailInfo'\nimport { getEmptyIndividualEmailInfo } from '@/lib/support/models/ListInfo/IndividualEmailInfo/data'\n\n/***\n * Grab first email or a blank address.\n * @param contact\n */\nexport function getFirstEmailInfo(contact: VolunteerListInfo): IndividualEmailInfo {\n return contact?.emailAddresses?.[0] || getEmptyIndividualEmailInfo()\n}\n","import { IndividualPhoneInfo } from '@/GeneratedTypes/ListInfo/IndividualPhoneInfo'\nimport { PhoneTypeEnum } from '@/lib/support/models/IndividualPhone/data'\n\nexport function getEmptyIndividualPhoneInfo(): IndividualPhoneInfo {\n return {\n typePhoneID: PhoneTypeEnum.MOBILE,\n extension: '',\n priority: 1,\n phoneNumber: '',\n phoneID: 0,\n individualID: 0,\n }\n}\n","/**\n * Grab the first mobile phone info on a contact\n * @param contact\n */\nimport { VolunteerListInfo } from '@/views/Programs/Volunteers/ext/gridcolumntypes'\nimport { IndividualPhoneInfo } from '@/GeneratedTypes/ListInfo/IndividualPhoneInfo'\nimport { getEmptyIndividualPhoneInfo } from '@/lib/support/models/ListInfo/IndividualPhoneInfo/data'\nimport { PhoneTypeEnum } from '../../IndividualPhone/data'\n\n/***\n * Grab first mobile or a blank phone.\n * @param contact\n */\nexport function getFirstPhoneInfo(contact: VolunteerListInfo): IndividualPhoneInfo {\n return (\n contact?.phoneNumbers?.filter((x) => x.typePhoneID === PhoneTypeEnum.MOBILE)[0] ||\n getEmptyIndividualPhoneInfo()\n )\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('modal',{staticClass:\"import\",attrs:{\"title\":\"Import Volunteers\"},on:{\"input\":_vm.close},scopedSlots:_vm._u([{key:\"footer\",fn:function(){return [_c('button',{staticClass:\"btn btn-light\",on:{\"click\":function($event){return _vm.close(false)}}},[_vm._v(_vm._s((\"\" + (_vm.step == 3 ? 'Done' : 'Cancel'))))])]},proxy:true}]),model:{value:(_vm.internalVisible),callback:function ($$v) {_vm.internalVisible=$$v},expression:\"internalVisible\"}},[(_vm.step == 1)?[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col center\"},[_vm._v(\" This utility can be used to import coaches from third-party registration systems. Your file must adhere to the format specification linked below to be properly processed. You can also download a \"),_c('a',{attrs:{\"href\":\"/import-csv/sample_coach.xlsx\"}},[_vm._v(\"sample file (XLSX)\")]),_vm._v(\". \")])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col center\"},[_c('a',{attrs:{\"href\":\"/import-csv/coaches.xls\"}},[_vm._v(\"Download Coach Import Specification\")])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-md-6 offset-md-3\"},[_c('div',{staticClass:\"my-5 p-4 center border border-primary\"},[_c('label',[_vm._v(\"If a duplicate record exists (same name):\")]),_c('radio-group-input',{attrs:{\"items-list\":_vm.duplicateChoices,\"value-property-name\":\"value\",\"text-property-name\":\"text\",\"item-class\":\"form-check\"},model:{value:(_vm.duplicateChoice),callback:function ($$v) {_vm.duplicateChoice=$$v},expression:\"duplicateChoice\"}})],1)])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col center\"},[_c('input',{attrs:{\"type\":\"file\"},on:{\"change\":_vm.uploadFiles}})])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col center\"},[_vm._v(\" Be sure your spreadsheet is saved as .csv, .xls, or .xlsx before uploading. \")])])])]:_vm._e(),(_vm.step >= 2)?_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 pb-0\"},[_c('ProgressIndicator',{attrs:{\"import_errors\":_vm.import_errors.map(function (x) { return x.line; }),\"imported\":_vm.imported,\"saved\":_vm.saved,\"total\":_vm.total}},[_vm._v(_vm._s(_vm.text))])],1),(_vm.import_errors.length)?_c('a',{staticClass:\"col-12 pt-0\",on:{\"click\":_vm.showErrors}},[_vm._v(_vm._s((\"\" + (_vm.shouldShowErrors ? 'Hide' : 'Show')))+\" Import Errors\")]):_vm._e()]),(_vm.shouldShowErrors)?_c('div',{staticClass:\"row\"},[_c('ImportErrorsTable',{staticClass:\"col\",style:({ height: '20em' }),attrs:{\"import_errors\":_vm.import_errors}})],1):_vm._e()]):_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { ref, computed } from '@vue/composition-api'\nimport * as yup from 'yup'\nimport {\n binaryChoice,\n daylist,\n phoneEnum,\n stateAbbreviations,\n yesno,\n ziptest,\n} from '@/lib/common/yup-validation/common-validations'\nimport { LeagueVolunteerRole } from '@/GeneratedTypes/LeagueVolunteerRole'\nimport { CoachPracticeAvailability } from '@/GeneratedTypes/CoachPracticeAvailability'\nimport { CoachGenderGrade } from '@/GeneratedTypes/CoachGenderGrade'\nimport { LeagueVolunteer } from '@/GeneratedTypes/LeagueVolunteer'\nimport { IndividualAddress } from '@/GeneratedTypes/IndividualAddress'\nimport { IndividualPhone } from '@/GeneratedTypes/IndividualPhone'\nimport { getEmptyIndividualAddress } from '@/lib/support/models/IndividualAddress/data'\nimport { getEmptyLeagueVolunteer } from '@/lib/support/models/LeagueVolunteer/data'\nimport { VolunteerRoleUDFValue } from '@/GeneratedTypes/VolunteerRoleUDFValue'\nimport {\n decrementingPhoneIDStrategy,\n getEmptyPhone,\n PhoneTypeEnum,\n} from '@/lib/support/models/IndividualPhone/data'\nimport { LeagueProductMapping } from '@/lib/support/models/LeagueProgram/data'\nimport { getGradesListFromAccount } from '@/services/gradeService'\nimport ordersClient from '@/clients/ordersClient'\nimport store from '@/store'\n\nexport interface XLProduct {\n columnName: string\n value: string\n}\n\nexport interface VolunteerPartsReturn {\n isCheer: boolean\n isSport: boolean\n volunteer: LeagueVolunteer\n address: IndividualAddress\n roles: LeagueVolunteerRole[]\n phones: IndividualPhone[]\n email: string\n practiceNights: CoachPracticeAvailability[]\n grades: CoachGenderGrade[]\n products: XLProduct[]\n coachLinkFirstName: string | null\n coachLinkLastName: string | null\n}\n\nconst volunteerImportShapeBase = {\n SportCoach: yesno.default('YES'),\n CheerCoach: yesno.default('NO'),\n FirstName: yup.string().required().max(64),\n MI: yup.string().max(1).default(''),\n LastName: yup.string().max(64).required(),\n StreetAddress: yup\n .string()\n .max(128)\n .test('allRequired', 'If StreetAddress is provided, City, State, Zip is required', function () {\n if (!this.parent.StreetAddress) return true\n return this.parent.City && this.parent.State && this.parent.Zip\n }),\n City: yup\n .string()\n .max(64)\n .test('allRequired', 'If City is provided, StreetAddress, State, Zip is required', function () {\n if (!this.parent.City) return true\n return this.parent.State && this.parent.StreetAddress && this.parent.Zip\n }),\n State: yup\n .string()\n .oneOf(stateAbbreviations)\n .test('allRequired', 'If State is provided, StreetAddress, City, Zip is required', function () {\n if (!this.parent.State) return true\n return this.parent.City && this.parent.StreetAddress && this.parent.Zip\n }),\n Zip: ziptest.test('allRequired', 'If Zip is provided, StreetAddress, City, State is required', function () {\n if (!this.parent.Zip) return true\n return this.parent.StreetAddress && this.parent.City && this.parent.State\n }),\n DOB: yup.date().required(),\n Gender: yup.string().required().matches(/(M|F)/),\n Email: yup.string().email().required(),\n MobilePhone: yup.string().max(48).matches(phoneEnum),\n WorkPhone: yup.string().max(48).matches(phoneEnum),\n WorkPhoneExt: yup.lazy((v) =>\n yup.string().when('WorkPhoneExt', {\n is: (ext) => (ext ? ext.length > 0 : false),\n then: yup\n .string()\n .max(4, `The maximum length for WorkPhoneExt is 4. ${v} is too long`)\n .matches(phoneEnum, 'WorkPhoneExt must be a number')\n .test('required', 'If WorkPhoneExt is provided, WorkPhone is required', function () {\n if (!this.parent.WorkPhone) return false\n return true\n }),\n })\n ),\n CanPracticeMonday: yup.string().uppercase().oneOf(binaryChoice),\n CanPracticeTuesday: yup.string().uppercase().oneOf(binaryChoice),\n CanPracticeWednesday: yup.string().uppercase().oneOf(binaryChoice),\n CanPracticeThursday: yup.string().uppercase().oneOf(binaryChoice),\n CanPracticeFriday: yup.string().uppercase().oneOf(binaryChoice),\n CanPracticeSaturday: yup.string().uppercase().oneOf(binaryChoice),\n CanPracticeSunday: yup.string().uppercase().oneOf(binaryChoice),\n Notes: yup.string().max(255),\n ChurchName: yup.string().max(64),\n CoachLinkFirstName: yup.lazy((v) =>\n yup.string().when('CoachLinkLastName', {\n is: (lname) => (lname ? lname.length > 0 : false),\n then: yup\n .string()\n .max(32, `${v} is too long`)\n .required(`If CoachLinkLastName is supplied, CoachLinkFirstName is required`),\n })\n ),\n CoachLinkLastName: yup.lazy((v) =>\n yup.string().when('CoachLinkFirstName', {\n is: (lname) => (lname ? lname.length > 0 : false),\n then: yup\n .string()\n .max(32, `${v} is too long`)\n .required(`If CoachLinkFirstName is supplied, CoachLinkLastName is required`),\n })\n ),\n UDF1: yup.string().max(64),\n UDF2: yup.string().max(64),\n UDF3: yup.string().max(64),\n\n //these will get overriden with real values later.\n FemaleGradesToCoach: yup.array(), //.matches(matchGrades).uppercase(),\n MaleGradesToCoach: yup.array(), //.matches(matchGrades).uppercase(),\n FemaleGradesToCoachCheer: yup.array(), //.matches(matchGrades).uppercase(),\n MaleGradesToCoachCheer: yup.array(), //.matches(matchGrades).uppercase(),\n PoloShirtSize: yup.string(), //.oneOf(sizes),\n CheerPoloShirtSize: yup.string(), //.oneOf(sizes),\n TeeShirtSize: yup.string(), //.oneOf(sizes),\n}\n\nconst volunteerXLType = yup.object().shape(volunteerImportShapeBase).required()\nexport type VolunteerXL = yup.InferType\n\nexport function useVolunteerImport() {\n const myLeague = ref(store.getters.leagueAbstraction.currentItem)\n const schema = ref(null)\n\n const validFemaleGrades = computed(() => {\n const retval: string[] = []\n if (myLeague.value.accounts != null) {\n const gradeTypes = getGradesListFromAccount(\n myLeague.value.accounts![0],\n store.getters.leagueAbstraction.leagueUpwardProgramTypeID[0].upwardTypeID!,\n 'F'\n )\n const grades = gradeTypes.map((g) => g.upwardTypeID!)\n retval.push(...grades)\n }\n\n return retval\n })\n\n const validMaleGrades = computed(() => {\n const retval: string[] = []\n if (myLeague.value.accounts != null) {\n const gradeTypes = getGradesListFromAccount(\n myLeague.value.accounts![0],\n store.getters.leagueAbstraction.leagueUpwardProgramTypeID[0].upwardTypeID!,\n 'M'\n )\n const grades = gradeTypes.map((g) => g.upwardTypeID!)\n retval.push(...grades)\n }\n\n return retval\n })\n\n const validFemaleCheerGrades = computed(() => {\n const retval: string[] = []\n if (store.getters.leagueAbstraction.hasCheer && myLeague.value.accounts != null) {\n const gradeTypes = getGradesListFromAccount(\n myLeague.value.accounts![0],\n store.getters.leagueAbstraction.leagueUpwardProgramTypeID[1].upwardTypeID!,\n 'F'\n )\n const grades = gradeTypes.map((g) => g.upwardTypeID!)\n retval.push(...grades)\n }\n\n return retval\n })\n\n const validMaleCheerGrades = computed(() => {\n const retval: string[] = []\n if (store.getters.leagueAbstraction.hasCheer && myLeague.value.accounts != null) {\n const gradeTypes = getGradesListFromAccount(\n myLeague.value.accounts![0],\n store.getters.leagueAbstraction.leagueUpwardProgramTypeID[1].upwardTypeID!,\n 'M'\n )\n const grades = gradeTypes.map((g) => g.upwardTypeID!)\n retval.push(...grades)\n }\n\n return retval\n })\n\n async function buildSchema(mappings: LeagueProductMapping) {\n const allProducts = (await ordersClient.getLeagueOrderItems(myLeague.value.upwardLeagueID ?? '')) ?? []\n\n function getSizes(colName: string, gender: string) {\n const retval: string[] = []\n const mapping = mappings.leagueProductMappings.find(\n (x) => x.importColumnName == colName && x.gender == gender\n )\n if (mapping) {\n const prod = allProducts.find((p) => p.id == mapping.productID)\n if (prod) {\n retval.push(...new Set(prod.productColorSizes?.map((x) => x.typeSizeID ?? '')))\n }\n }\n return retval\n }\n\n const coachSportShirtSizesMale = getSizes('PoloShirtSize', 'M')\n const coachSportShirtSizesFemale = getSizes('PoloShirtSize', 'F')\n\n const coachCheerShirtSizesMale = getSizes('CheerPoloShirtSize', 'M')\n const coachCheerShirtSizesFemale = getSizes('CheerPoloShirtSize', 'F')\n\n const teeShirtSizesMale = getSizes('TeeShirtSize', 'M')\n const teeShirtSizesFemale = getSizes('TeeShirtSize', 'F')\n\n const schemaShape = {\n ...volunteerImportShapeBase,\n FemaleGradesToCoach: yup\n .array()\n .transform((value, orgValue) => (orgValue ? orgValue.split(/[\\s,]+/) : []))\n .of(yup.string().oneOf(validFemaleGrades.value)),\n MaleGradesToCoach: yup\n .array()\n .transform((value, orgValue) => (orgValue ? orgValue.split(/[\\s,]+/) : []))\n .of(yup.string().oneOf(validMaleGrades.value)),\n FemaleGradesToCoachCheer: yup\n .array()\n .transform((value, orgValue) => (orgValue ? orgValue.split(/[\\s,]+/) : []))\n .of(yup.string().oneOf(validFemaleCheerGrades.value)),\n MaleGradesToCoachCheer: yup\n .array()\n .transform((value, orgValue) => (orgValue ? orgValue.split(/[\\s,]+/) : []))\n .of(yup.string().oneOf(validMaleCheerGrades.value)),\n PoloShirtSize: mappings.columnNames.includes('PoloShirtSize')\n ? yup.string().when('Gender', {\n is: (g) => g == 'M',\n then: yup.string().oneOf(coachSportShirtSizesMale),\n otherwise: yup.string().oneOf(coachSportShirtSizesFemale),\n })\n : yup.string(),\n\n CheerPoloShirtSize: mappings.columnNames.includes('CheerPoloShirtSize')\n ? yup.string().when('Gender', {\n is: (g) => g == 'M',\n then: yup.string().oneOf(coachCheerShirtSizesMale),\n otherwise: yup.string().oneOf(coachCheerShirtSizesFemale),\n })\n : yup.string(),\n\n TeeShirtSize: mappings.columnNames.includes('TeeShirtSize')\n ? yup.string().when('Gender', {\n is: (g) => g == 'M',\n then: yup.string().oneOf(teeShirtSizesMale),\n otherwise: yup.string().oneOf(teeShirtSizesFemale),\n })\n : yup.string(),\n }\n\n schema.value = yup.object().shape(schemaShape).required()\n }\n\n async function validateVolunteer(\n row: Record,\n showAllErrors = false\n ): Promise {\n try {\n Object.keys(row).forEach((key) => {\n if (row[key] == null || row[key] == '') {\n delete row[key]\n }\n })\n if (await schema.value.validate(row, { abortEarly: !showAllErrors })) {\n return schema.value.cast(row)\n }\n } catch (e) {\n throw e\n }\n }\n\n function extractGrades(gender: string, list: string[]) {\n const grade_part: CoachGenderGrade[] = []\n list.forEach((x) => {\n grade_part.push({\n typeGradeID: x,\n genderToCoach: gender,\n })\n })\n\n return grade_part\n }\n\n /*\n validPracticeNights: Allowable practice nights for the league. Camps always pass an empty array.\n */\n function VolunteerXLToVolunteerParts(\n p: VolunteerXL,\n productColumnNames: string[],\n validPracticeNights: string[]\n ): VolunteerPartsReturn {\n const days: CoachPracticeAvailability[] = []\n daylist.forEach((x) => {\n //skip practice nights in xsl that are invalid for league\n if (validPracticeNights.indexOf(x) < 0) return\n\n //@ts-ignore indexing into the type like this is a bit hackish\n if (p['CanPractice' + x] == 'TRUE' || p['CanPractice' + x] == 'YES') {\n days.push({\n typeDayID: x,\n endTime: '23:59:00',\n startTime: '00:00:01',\n })\n }\n })\n\n const grades = [\n ...extractGrades('F', (p.FemaleGradesToCoach ?? []) as string[]),\n ...extractGrades('M', (p.MaleGradesToCoach ?? []) as string[]),\n ...extractGrades('F', (p.FemaleGradesToCoachCheer ?? []) as string[]),\n ...extractGrades('M', (p.MaleGradesToCoachCheer ?? []) as string[]),\n ]\n\n const udfs: VolunteerRoleUDFValue[] = []\n ;['1', '2', '3'].forEach((x) => {\n const val = (p as Record)['UDF' + x]\n if (val) {\n udfs.push({\n udfid: parseInt(x),\n udfValue: val as string,\n })\n }\n })\n\n const products = productColumnNames\n .map((c) => {\n const obj = {} as XLProduct\n obj.columnName = c\n //@ts-ignore\n obj.value = p[c]\n return obj\n })\n .filter((p) => p.value) //remove products not provided in spreadsheet\n\n const volunteerParts = {\n isCheer: (p.CheerCoach == 'YES' || p.CheerCoach == 'TRUE') ?? false,\n isSport: (p.SportCoach == 'YES' || p.SportCoach == 'TRUE') ?? false,\n address: {\n ...getEmptyIndividualAddress(),\n postalCode: p.Zip ?? '',\n street1: p.StreetAddress ?? '',\n subdivision1: p.City ?? '',\n subdivision2: p.State ?? '',\n },\n volunteer: {\n ...getEmptyLeagueVolunteer(),\n coachPreferences: null,\n thirdPartyClientIDs: [],\n phoneNumbers: [] as IndividualPhone[],\n emailAddresses: [],\n addresses: [],\n firstName: p.FirstName,\n lastName: p.LastName,\n individualID: 0,\n middleInitial: p.MI ?? null,\n leagueID: 0,\n accountNumber: '',\n birthDate: p.DOB as Date,\n gender: p.Gender,\n roles: [],\n churchName: p.ChurchName ?? null,\n registrationNote: p.Notes ?? null,\n typeSizeID: null,\n },\n phones: [],\n email: p.Email,\n grades: grades,\n products: products,\n practiceNights: days,\n roles: [\n { roleID: 3, upwardAuthInvitationID: '', authorizedExpireDate: null, udFs: udfs, approved: false },\n ],\n coachLinkFirstName: '',\n coachLinkLastName: '',\n }\n\n if (p.MobilePhone) {\n volunteerParts.volunteer.phoneNumbers.push({\n ...getEmptyPhone(decrementingPhoneIDStrategy()),\n phoneNumber: p.MobilePhone,\n typePhoneID: PhoneTypeEnum.MOBILE,\n })\n }\n if (p.WorkPhone) {\n volunteerParts.volunteer.phoneNumbers.push({\n ...getEmptyPhone(decrementingPhoneIDStrategy()),\n phoneNumber: p.WorkPhone,\n typePhoneID: PhoneTypeEnum.WORK,\n extension: p.WorkPhoneExt ? p.WorkPhoneExt : '',\n })\n }\n const coachLinkFirstName = p.CoachLinkFirstName?.trim()\n const coachLinkLastName = p.CoachLinkLastName?.trim()\n if (coachLinkFirstName && coachLinkLastName) {\n volunteerParts.coachLinkFirstName = coachLinkFirstName\n volunteerParts.coachLinkLastName = coachLinkLastName\n }\n\n return volunteerParts\n }\n\n return {\n buildSchema,\n validateVolunteer,\n VolunteerXLToVolunteerParts,\n }\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { defineComponent, PropType, ref, watch, computed } from '@vue/composition-api'\nimport Modal from '@/components/Modal.vue'\nimport CheckboxInput from '@/elements/CheckboxInput.vue'\nimport { FileToSet } from '@/views/Programs/Participants/vues/import/xls_import'\nimport RadioGroupInput from '@/elements/RadioGroupInput.vue'\nimport { League } from '@/GeneratedTypes/League'\nimport { Camp } from '@/GeneratedTypes/Camp'\nimport { getEmptyLeague } from '@/lib/support/models/League/data'\nimport { ValidationError } from 'yup'\nimport ImportErrorsTable, { ImportErrorsType } from '@/views/Programs/Participants/vues/ImportErrorsTable.vue'\nimport ProgressIndicator from '@/views/Programs/Participants/vues/ProgressIndicator.vue'\nimport { cloneDeep } from 'lodash'\nimport { LeagueVolunteer } from '@/GeneratedTypes/LeagueVolunteer'\nimport volunteersClient from '@/clients/volunteersClient'\nimport { VolunteerPartsReturn, useVolunteerImport } from '@/composables/VolunteerImport'\nimport { composeLeagueVolunteer } from '@/views/Programs/Volunteers/ext/composeutils'\nimport {\n getEmptyLeagueProgram,\n ProgramHasGradeAndGender,\n leagueProductImportMapping,\n getProducts,\n} from '@/lib/support/models/LeagueProgram/data'\nimport { LeagueVolunteerRoleUDFDefinition } from '@/GeneratedTypes/LeagueVolunteerRoleUDFDefinition'\nimport { VolunteerRoleUDFValue } from '@/GeneratedTypes/VolunteerRoleUDFValue'\nimport { getEmptyCoachProgram } from '@/lib/support/models/CoachProgram/data'\nimport { DuplicateOptions, duplicateOptionList } from '@/views/Programs/Participants/ext/import'\nimport { LeagueProgram } from '@/GeneratedTypes/LeagueProgram'\nimport { RolesEnum } from '@/lib/support/models/LeagueVolunteer/data'\nimport { CoachAssistantLink, empty as emptyCoachAssistantLink } from '@/GeneratedTypes/CoachAssistantLink'\n\nexport default defineComponent({\n name: 'VolunteerImport',\n\n components: { ProgressIndicator, ImportErrorsTable, CheckboxInput, Modal, RadioGroupInput },\n props: {\n visible: { type: Boolean, required: true, default: false },\n league: { type: Object as PropType, required: true, default: () => getEmptyLeague() },\n },\n setup(props, ctx) {\n const duplicateChoices = ref(duplicateOptionList)\n const duplicateChoice = ref(duplicateOptionList[0].value)\n const internalVisible = ref(false)\n const step = ref(1)\n const errors = ref([])\n const import_errors = ref([])\n const shouldShowErrors = ref(true)\n const imported = ref(0)\n const total = ref(0)\n const text = ref('')\n const saved = ref(0)\n\n watch(\n () => props.visible,\n () => (internalVisible.value = props.visible),\n { immediate: true }\n )\n\n watch(\n () => internalVisible.value,\n () => {\n //reset the step to first if the window is closed.\n if (internalVisible.value) {\n step.value = 1\n imported.value = 0\n total.value = 0\n text.value = ''\n saved.value = 0\n duplicateChoice.value = duplicateOptionList[0].value\n import_errors.value = []\n }\n },\n { immediate: true }\n )\n\n function close(b: boolean) {\n if (!b) {\n //closed\n step.value = 3\n\n ctx.emit('close')\n }\n }\n\n function showErrors() {\n shouldShowErrors.value = !shouldShowErrors.value\n }\n\n const validPracticeDays = computed(() => {\n if ('practiceNights' in props.league) {\n //for leagues\n return (props.league.practiceNights ?? []).map((p) => p.typeDayID)\n }\n // for camps\n return []\n })\n\n /**\n * Load a player from the DB\n * @param duplicate\n * @param volunteer\n */\n async function getVolunteerFromList(\n duplicate: number,\n volunteer: VolunteerPartsReturn,\n line: number\n ): Promise {\n let mergeVolunteer: LeagueVolunteer | null = null\n\n const foundVol = await volunteersClient.search({\n leagueID: props.league?.upwardLeagueID ?? '',\n role: [RolesEnum.COACH],\n orSearch: false,\n first: volunteer.volunteer.firstName,\n last: volunteer.volunteer.lastName,\n includePastLeagues: false,\n })\n\n const existingID = foundVol.length ? foundVol[0].individualID : null\n\n if (existingID && duplicate == DuplicateOptions.SKIP) {\n import_errors.value.push({\n line: line,\n error: `Duplicate: skipping ${volunteer.volunteer.firstName} ${volunteer.volunteer.lastName}`,\n })\n return null\n }\n\n if (existingID && duplicate == DuplicateOptions.UPDATE) {\n mergeVolunteer = await volunteersClient.retrieveVolunteer(\n props.league?.upwardLeagueID ?? '',\n existingID\n )\n return cloneDeep(mergeVolunteer)\n }\n\n //new volunteer\n mergeVolunteer = await volunteersClient.retrieveTemplateWithRole(\n props.league?.upwardLeagueID ?? '',\n getVolunteerProgram(volunteer.isSport).typeProgramID,\n RolesEnum.COACH\n )\n return cloneDeep(mergeVolunteer)\n }\n\n function getVolunteerProgram(isSport: boolean): LeagueProgram {\n if (!props.league?.programs?.length) return getEmptyLeagueProgram()\n if (isSport) {\n return props.league.programs[0]\n } else {\n return (\n props.league.programs.find((x) => x.typeProgramID.match(/.*CHEER.*/)) ?? getEmptyLeagueProgram()\n )\n }\n }\n\n async function uploadFiles(ev: InputEvent) {\n const t = ev.target as HTMLInputElement\n /**\n * get the mapping that connects the spreadsheet column name and the product IDs\n */\n const mappings = await leagueProductImportMapping(props.league.upwardLeagueID ?? '')\n const volImport = useVolunteerImport()\n await volImport.buildSchema(mappings)\n\n if (t?.files?.length) {\n try {\n step.value = 2\n const sheet = await FileToSet(t.files[0])\n\n if (!sheet || sheet?.length <= 0) {\n text.value = 'Uploaded file not recognized'\n } else {\n try {\n await volImport.validateVolunteer(sheet[0], true)\n } catch (e) {\n text.value = 'First row has import errors, check the file'\n if (e.errors?.length) {\n e.errors.map((x: string) => import_errors.value.push({ line: 0, error: x }))\n step.value = 3\n }\n }\n }\n\n const createCoachLink = (v: VolunteerPartsReturn): CoachAssistantLink | null => {\n const first = v.coachLinkFirstName\n const last = v.coachLinkLastName\n const link = first && last ? emptyCoachAssistantLink() : null\n if (link) {\n link.pendingFirstName = first\n link.pendingLastName = last\n }\n return link\n }\n\n let line = 0\n total.value = sheet.length\n /**\n * Step is being used for state 1=file selection; 2=importing; 3=cancelled/done state\n */\n for (let i = 0; i < sheet.length && step.value <= 2; i++) {\n let r = sheet[i]\n try {\n line++\n imported.value = line\n const p = await volImport.validateVolunteer(r)\n text.value = `Line ${line + 1}}`\n if (p) {\n text.value = `Line ${line + 1} ${p.FirstName} ${p.LastName}`\n const parts = volImport.VolunteerXLToVolunteerParts(\n p,\n mappings.columnNames,\n validPracticeDays.value\n )\n\n const mergeVolunteer = await getVolunteerFromList(duplicateChoice.value, parts, line)\n\n if (mergeVolunteer) {\n try {\n const volunteerProgram = getVolunteerProgram(parts.isSport)\n let udfs: LeagueVolunteerRoleUDFDefinition[] = []\n if (props.league.roles?.length) {\n //assume sports program.\n const volunteerRole = props.league.roles.find((x) => x.id == 3)\n if (volunteerRole) {\n udfs = volunteerRole.udfDefinitions ?? []\n }\n }\n\n let newudfs: VolunteerRoleUDFValue[] = []\n if (parts.roles.length) {\n //the first and only program is the sports program so UDF1...3 are sports\n newudfs = udfs.map(\n (x) =>\n ({\n udfValue: parts.roles[0].udFs?.length\n ? parts.roles[0].udFs.find((u) => u.udfid == x.sortOrder)?.udfValue ?? ''\n : '',\n udfid: x.udfid,\n } as VolunteerRoleUDFValue)\n )\n }\n const lv = composeLeagueVolunteer(mergeVolunteer, {\n volunteer: parts.volunteer,\n roles: [{ ...parts.roles[0], udFs: newudfs.filter((x) => x.udfValue) }],\n\n phones: parts.volunteer.phoneNumbers ?? [],\n\n email: parts.email,\n address: parts.address,\n coachPreferences: {\n ...mergeVolunteer.coachPreferences,\n programs: [\n {\n ...getEmptyCoachProgram(),\n gendersAndGrades: parts.grades.filter((x) =>\n ProgramHasGradeAndGender(volunteerProgram, x.genderToCoach, x.typeGradeID)\n ),\n products: getProducts(mergeVolunteer, volunteerProgram),\n typeProgramID: volunteerProgram.typeProgramID,\n assistantCoachLink: createCoachLink(parts),\n },\n ],\n practiceNights: parts.practiceNights,\n },\n })\n\n if (!lv.coachPreferences || !lv.coachPreferences.programs) {\n throw Error('Missing coach preferences')\n }\n const programs = lv.coachPreferences.programs\n if (programs && programs.length) {\n programs.forEach((prog) => {\n if (!prog || !prog.products?.length) return\n prog.products.forEach((p) => {\n const map = mappings.leagueProductMappings.find((m) => {\n return m.gender == lv.gender && m.productID == p.productID\n })\n if (map) {\n const xlProduct = parts.products.find((part) => {\n return part.columnName == map.importColumnName\n })\n if (xlProduct) {\n p.typeSizeID = xlProduct.value\n }\n }\n })\n })\n }\n await volunteersClient.save(props.league?.upwardLeagueID ?? '', lv, false, true)\n saved.value++\n } catch (e) {\n if (e.errorObject?.errors?.length) {\n e.errorObject.errors.forEach((x: { propertyName: string; message: string }) => {\n import_errors.value.push({ line, error: `Server: ${x.propertyName} ${x.message}` })\n })\n }\n if (e.errorObject?.message) {\n import_errors.value.push({ line, error: e.errorObject.message })\n } else {\n import_errors.value.push({ line, error: e.getMessage() })\n }\n }\n }\n }\n } catch (e) {\n //likely validation error\n if (e instanceof ValidationError || e.errors) {\n import_errors.value.push({ line, error: e.message })\n }\n }\n }\n\n step.value = 2\n } catch (e) {\n step.value = 2\n errors.value = e.getMessage()\n } finally {\n step.value = 3\n text.value = 'Done.'\n ctx.emit('imported')\n }\n }\n }\n return {\n internalVisible,\n close,\n step,\n total,\n uploadFiles,\n import_errors,\n errors,\n saved,\n imported,\n showErrors,\n text,\n shouldShowErrors,\n duplicateChoices,\n duplicateChoice,\n }\n },\n})\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VolunteerImport.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VolunteerImport.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./VolunteerImport.vue?vue&type=template&id=6fb04f76&scoped=true&\"\nimport script from \"./VolunteerImport.vue?vue&type=script&lang=ts&\"\nexport * from \"./VolunteerImport.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./VolunteerImport.vue?vue&type=style&index=0&id=6fb04f76&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6fb04f76\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, InjectReactive, Vue, Watch } from 'vue-property-decorator'\nimport { Route } from 'vue-router'\n\nimport { getterNames, namespace as volunteerStoreName } from '@/store/volunteers'\nimport { namespace as campStoreName, getterNames as campGetterNames } from '@/store/camps'\nimport { namespace as leagueStoreName } from '@/store/leagues'\nimport { leagueAbstractionNamespace as leagueAbstractionName } from '@/store/leagueAbstraction'\nimport { namespace } from 'vuex-class'\n/**types */\nimport { League } from '@/GeneratedTypes/League'\nimport { Camp } from '@/GeneratedTypes/Camp'\n/** external data */\nimport {\n coachHeaders,\n refHeaders,\n commissionerHeaders,\n othersHeaders,\n cheerDirectorHeaders,\n} from './ext/headers'\n/**components */\nimport FullBody from '@/components/FullBody.vue'\nimport SearchInput from '@/elements/SearchInput.vue'\nimport HorizontalTabs from '@/components/HorizontalNavTabs.vue'\nimport VolunteerTransfer from '@/views/Programs/Volunteers/VolunteerTransfer.vue'\n\nimport DataTable from '@/elements/DataTable/DataTable.vue'\nimport DeleteBtn from '@/elements/DataTable/vue/DeleteBtn.vue'\nimport EditBtn from '@/elements/DataTable/vue/EditBtn.vue'\nimport CheckboxCell from '@/elements/DataTable/vue/CheckboxCell.vue'\nimport InviteBtn from '@/views/Programs/Volunteers/ext/GridVue/InviteBtn.vue'\nimport InviteCell from '@/views/Programs/Volunteers/ext/GridVue/InviteCell.vue'\n\n/** local components */\nimport TeamInfo from '@/components/TeamInfo.vue'\nimport ConfirmDeleteModal from '@/components/ConfirmDeleteModal.vue'\nimport { intersection, cloneDeep, uniq } from 'lodash'\nimport {\n getEmptyLeagueListItem,\n LeagueInfoMoreThanOneProgram,\n LeagueListItemSeed,\n} from '@/lib/support/models/LeagueListItem/data'\n\nimport VolunteerSelectionModal from '@/components/VolunteerSelectionModal.vue'\nimport VolunteerEmailPhoneSearch from '@/components/VolunteerEmailPhoneSearch.vue'\nimport VolunteerRoleAllowOnline from '@/components/VolunteerRoleAllowOnline.vue'\nimport { RolesEnum, VolunteerID, VolunteerIDType } from '@/lib/support/models/LeagueVolunteer/data'\nimport { LeagueVolunteerInfo } from '@/GeneratedTypes/ListInfo/LeagueVolunteerInfo'\nimport { getRouteCategoryName, getLeagueType } from '@/views/Programs/Volunteers/ext/routeutils'\nimport teamsClient from '@/clients/teamsClient'\nimport { DivisionTeamInfo } from '@/GeneratedTypes/ListInfo/DivisionTeamInfo'\nimport { LeagueListItem } from '@/models/Program/LeagueListItem'\nimport { LeagueProgams2LeagueListItem } from '@/lib/support/models/LeagueListItem/LeaguePrograms2LeagueListItem'\nimport TypeProgramTab from '@/components/TypeProgramTab.vue'\nimport {\n CategoryNameToCategory,\n categoryToRoles,\n CategoryWithProgram,\n VolunteerSectionTypes,\n categoryToTitle,\n} from '@/views/Programs/Volunteers/ext/roleutils'\nimport { VolunteerSearchInfo } from '@/GeneratedTypes/ListInfo/VolunteerSearchInfo'\nimport ConfirmationModal from '@/components/ConfirmationModal.vue'\nimport { InvitationStatusEnum, VolunteerListInfo } from '@/views/Programs/Volunteers/ext/gridcolumntypes'\nimport InvitationResendModal, {\n ResendInvitePayload,\n ResendInvitePayloadMedium,\n} from '@/views/Programs/Volunteers/vues/InvitationResendModal.vue'\nimport InvitationSendModal, {\n SendInvitePayload,\n SendInvitePayloadMedium,\n} from '@/views/Programs/Volunteers/vues/InvitationSendModal.vue'\n\nimport { InviteContact } from '@/models/VolunteerManagement/Invitations/InviteContact'\n\nimport { getFirstEmailInfo } from '@/lib/support/models/ListInfo/IndividualEmailInfo/emailinfo_list_operations'\nimport { getFirstPhoneInfo } from '@/lib/support/models/ListInfo/IndividualPhoneInfo/phoneinfo_list_operations'\nimport dayjs from 'dayjs'\nimport Alert, { AlertTypeEnum } from '@/components/Alert.vue'\n\nimport Loading from '@/elements/Loading.vue'\nimport { roleById } from '@/lib/support/models/UpwardTypes/TypeLeagueVolunteerRole/data'\nimport jwtService from '@/services/jwtService'\nimport credentialsService from '@/services/credentialsService'\nimport VolunteerImport from '@/views/Programs/Volunteers/vues/VolunteerImport.vue'\n\nconst volunteers = namespace(volunteerStoreName)\nconst league = namespace(leagueStoreName)\nconst camp = namespace(campStoreName)\nconst leagueAbstraction = namespace(leagueAbstractionName)\nimport store from '@/store'\nimport { useFeatureFlags } from '@/services/useFeatureFlags'\nimport properCase from '@/filters/properCase'\nimport { formatPhoneNumber } from '@/services/phoneNumberService'\nimport { DataTableSelection, DataTablePagination } from '@/models/DataTable/DataTableSelection'\nimport volunteersClient from '@/clients/volunteersClient'\n\ninterface ControlToggles {\n hasImport: boolean\n hasBatchInvite: boolean\n hasNewButtons: boolean\n hasSearch: boolean\n hasTeamInfo: boolean\n hasApproveAll: boolean\n hasTransfer: boolean\n /** role id to use in approve all **/\n approvalRole: RolesEnum | false\n hasTypeProgramTab: boolean\n hasAllowRoleOnline: boolean\n}\n\nconst noControlsOn: ControlToggles = {\n hasImport: false,\n hasBatchInvite: false,\n hasNewButtons: false,\n hasSearch: false,\n hasTeamInfo: false,\n hasApproveAll: false,\n approvalRole: false,\n hasTransfer: false,\n hasTypeProgramTab: false,\n hasAllowRoleOnline: false,\n}\n\nconst mostControlsOff: ControlToggles = {\n ...noControlsOn,\n hasNewButtons: true,\n hasSearch: true,\n}\n\nconst tabToInterfaceMap: Record = {\n [VolunteerSectionTypes.ALL]: { ...noControlsOn, hasSearch: true },\n [VolunteerSectionTypes.REFEREES]: {\n ...mostControlsOff,\n hasSearch: true,\n hasBatchInvite: true,\n hasApproveAll: true,\n approvalRole: RolesEnum.REFEREE,\n hasAllowRoleOnline: true,\n },\n [VolunteerSectionTypes.COMMISSIONERS]: { ...mostControlsOff, hasBatchInvite: true },\n [VolunteerSectionTypes.OTHER]: mostControlsOff,\n [VolunteerSectionTypes.COACHES]: {\n hasBatchInvite: true,\n hasImport: true,\n hasNewButtons: true,\n hasSearch: true,\n hasTeamInfo: true,\n hasApproveAll: true,\n approvalRole: RolesEnum.COACH,\n hasTransfer: true,\n hasTypeProgramTab: true,\n hasAllowRoleOnline: true,\n },\n [VolunteerSectionTypes.CHEERDIRECTOR]: {\n hasBatchInvite: true,\n hasImport: false,\n hasNewButtons: true,\n hasSearch: true,\n hasTeamInfo: true,\n hasApproveAll: true,\n approvalRole: RolesEnum.COACH,\n hasTransfer: false,\n hasTypeProgramTab: false,\n hasAllowRoleOnline: false,\n },\n}\n\nconst ALL_PROGRAMS = ''\n\n@Component({\n components: {\n Loading,\n VolunteerImport,\n InvitationResendModal,\n InvitationSendModal,\n ConfirmationModal,\n FullBody,\n TypeProgramTab,\n ConfirmDeleteModal,\n HorizontalTabs,\n SearchInput,\n TeamInfo,\n Alert,\n VolunteerSelectionModal,\n VolunteerTransfer,\n VolunteerEmailPhoneSearch,\n VolunteerRoleAllowOnline,\n DataTable,\n EditBtn,\n DeleteBtn,\n CheckboxCell,\n InviteBtn,\n InviteCell,\n },\n methods: {\n LeagueInfoMoreThanOneProgram,\n },\n setup() {\n return { ...useFeatureFlags() }\n },\n filters: {\n properCase,\n },\n})\nexport default class VolunteerView extends Vue {\n /** index into this.currentItem.programs[] variables */\n\n searchTerm = ''\n showDelete = false\n @volunteers.Getter('loading') loading!: boolean\n @volunteers.Getter('currentProgram') currentStoreProgram!: string\n @leagueAbstraction.Getter('isInPartnership') isInPartnership!: boolean\n @volunteers.Getter('pagination') pagination!: DataTablePagination\n\n /** getters */\n @league.Getter(getterNames.currentItem) league!: League\n @volunteers.Getter(getterNames.volunteers) volunteers!: LeagueVolunteerInfo[]\n @volunteers.Getter(getterNames.currentItem) currentVolunteer!: LeagueVolunteerInfo\n @camp.Getter(campGetterNames.currentItem) camp!: Camp\n\n /** actions */\n setAllApproved = store.dispatch.volunteers.setAllApproved\n setAllInvited = store.dispatch.volunteers.setAllInvited\n setAllInvitedViaSms = store.dispatch.volunteers.setAllInvitedViaSms\n removeVolunteer = store.dispatch.volunteers.removeVolunteer\n loadLeanVolunteersByProgramRole = store.dispatch.volunteers.loadLeanVolunteersByProgramRole\n setCurrentVolunteerByID = store.dispatch.volunteers.setCurrentVolunteerByID\n setCurrentStoreProgram = store.commit.volunteers.setCurrentProgram\n clearCurrentVolunteer = store.commit.volunteers.clearCurrent\n clearVolunteerUnderEdit = store.commit.volunteers.clearVolunteerUnderEdit\n setPagination = store.commit.volunteers.setPagination\n\n private emailPhoneVolunteerSearchActive = false\n\n private readonly alertType = AlertTypeEnum.NOTICE\n private leagueid = '' //aught to be set by the router.\n\n @InjectReactive()\n private isHistoricalProgram!: boolean\n\n private get volunteerSelectionModalTitle() {\n return properCase(categoryToTitle(this.category))\n }\n\n get routeType(): string {\n return getLeagueType(this.$route.fullPath)\n }\n\n get currentItem() {\n if (this.routeType === 'league') return this.league\n if (this.routeType === 'camp') return this.camp\n }\n\n private get showInvitationStatus() {\n return this.category !== VolunteerSectionTypes.OTHER\n }\n\n get headers() {\n switch (this.volunteerType) {\n case 'coaches':\n return coachHeaders\n case 'referees':\n return refHeaders\n case 'commissioners':\n return commissionerHeaders\n case 'cheerdirector':\n return cheerDirectorHeaders\n case 'others':\n return othersHeaders\n default:\n throw new Error('Cannot select DataTable headers')\n }\n }\n\n get volunteerType() {\n const routePart = this.$route.params.type\n const idx = routePart.indexOf('-') // cheer is sometimes appended to volunteer type; delimited by '-'\n const volunteerType = idx == -1 ? routePart : routePart.substring(0, idx)\n return volunteerType ? volunteerType : 'coaches'\n }\n\n private allApproved = true\n /**\n * Approve All clicked on grid header\n */\n approveClick() {\n if (this.approveRoleID !== false) {\n this.setAllApproved({\n ids: this.visibleVolunteers.map((x) => x.individualID) || [],\n leagueID: this.leagueid || '',\n role: this.approveRoleID,\n approved: !this.isEveryoneApproved,\n })\n this.allApproved = !this.allApproved\n }\n }\n get isEveryoneApproved() {\n return !this.visibleVolunteers.some((x) => !x.approved)\n }\n\n private getFirstEmailInfo = getFirstEmailInfo\n private getFirstPhoneInfo = getFirstPhoneInfo\n\n private get approveRoleID() {\n return this.interfaceToggles.approvalRole // may change to a referee\n }\n\n async refreshVolunteers(shouldForceRefresh: boolean) {\n await this.loadLeanVolunteersByProgramRole({\n leagueId: this.leagueid,\n shouldForce: shouldForceRefresh,\n typeProgramId: this.currentProgram === ALL_PROGRAMS ? 'NONE' : this.currentProgram,\n roleIDs: categoryToRoles(this.category),\n })\n }\n\n isImportVisible = false\n importClicked() {\n this.isImportVisible = true\n }\n\n async closeImport() {\n this.isImportVisible = false\n await this.refreshVolunteers(true)\n }\n\n async transferClosed() {\n this.transferActive = false\n await this.navigateBackToList()\n }\n\n async searchClosed() {\n this.existingVolunteerSearchActive = false\n this.emailPhoneVolunteerSearchActive = false\n await this.navigateBackToList()\n }\n\n async navigateBackToList() {\n let type = ''\n if (this.$route.params.type) {\n type = this.$route.params.type.replaceAll('-', '')\n }\n await this.$router.push({\n name: `list-volunteer-${this.routeType}`,\n params: { type: type, ...this.$route.params },\n })\n }\n\n onPagination(data: DataTablePagination) {\n this.setPagination({ pagination: data })\n }\n\n /***\n * Approve clicked on the row\n */\n individualClick(d: VolunteerListInfo) {\n if (this.approveRoleID !== false) {\n this.setAllApproved({\n ids: [d.individualID],\n approved: !d.approved,\n leagueID: this.leagueid || '',\n role: this.approveRoleID,\n })\n }\n }\n\n get tabs(): LeagueListItem {\n if (this.currentItem && this.currentItem.programs) {\n return LeagueProgams2LeagueListItem(this.currentItem.programs)\n }\n return getEmptyLeagueListItem(new LeagueListItemSeed())\n }\n\n get hasOneRole() {\n //The API supports searches for one role at time.\n //hasOneRole is used to limit the email and phone search\n //to Referees and Coaches because they have only one role.\n //Commissioners and Other Volunteers will come later\n return this.rolesByProgram.length == 1\n }\n\n /***\n * Returns the structure to define the tabs based on loaded league\n */\n /** index into this.currentItem.programs[] variables */\n\n get currentProgram(): string {\n if (!LeagueInfoMoreThanOneProgram(this.tabs)) {\n const progs = this.league.programs\n const program = progs && progs.length ? progs[0].typeProgramID : ''\n this.setCurrentStoreProgram({ program })\n return ALL_PROGRAMS\n }\n return this.currentStoreProgram\n }\n set currentProgram(program: string) {\n if (this.$route.params['type'] != CategoryWithProgram(this.category, program)) {\n this.$router.push({\n name: `list-volunteer-${this.routeType}`,\n params: { ...this.$route.params, type: CategoryWithProgram(this.category, program) },\n })\n }\n this.setCurrentStoreProgram({ program })\n }\n\n clearTypeProgram() {\n if (this.category != 'coaches') {\n this.currentProgram = ''\n }\n }\n\n get combinedCategoryAndProgram() {\n return CategoryWithProgram(this.category, this.currentProgram)\n }\n\n private get interfaceToggles(): ControlToggles {\n return tabToInterfaceMap[this.category] ?? noControlsOn\n }\n\n private transferActive = false\n transfer() {\n this.transferActive = true\n }\n\n private existingVolunteerSearchActive = false\n private category: VolunteerSectionTypes = VolunteerSectionTypes.ALL\n /***\n * Route changing logic, looking at handling delete, and index, Existing mostly,\n * for delete we need a volunteer id.\n */\n @Watch('$route', { immediate: true, deep: true })\n async routeChange(to: Route) {\n this.category = CategoryNameToCategory(getRouteCategoryName(to))\n this.leagueid = to?.params.id\n try {\n if (to?.params.id) {\n this.refreshVolunteers(true)\n }\n if (to?.params?.vid) {\n await this.setCurrentVolunteerByID({ id: parseInt(to.params.vid) })\n }\n } catch (e) {\n await this.$router.push('../' + this.category)\n throw new Error(e.message)\n }\n\n if (to.name == `delete-volunteer-${this.routeType}` && to.params?.vid) {\n this.deleteVolunteer()\n return\n }\n if (to.name?.startsWith('transfer-volunteer')) {\n this.transfer()\n return\n }\n if (to.name?.startsWith(`search-volunteer`)) {\n this.emailPhoneParticipantSearch()\n return\n }\n if (to.name == `former-volunteer-${this.routeType}`) {\n this.existingVolunteerSearchActive = true\n return\n }\n //else...\n this.existingVolunteerSearchActive = false\n }\n /**\n * Gives an array of roles based on the category selected\n */\n get rolesByProgram() {\n return categoryToRoles(this.category)\n }\n\n async volunteerFound(vs: VolunteerSearchInfo) {\n try {\n await this.setCurrentVolunteerByID({ id: vs.individualID })\n await this.$router.push({\n name: `edit-volunteer-${this.routeType}`,\n params: { vid: vs.individualID.toString(), ...this.$route.params },\n })\n } catch (error) {\n // not an existing volunteer\n await this.$router.push({\n name: `copy-volunteer-${this.routeType}`,\n params: { vid: vs.individualID.toString(), ...this.$route.params },\n })\n }\n }\n /**\n * Invite icon is clicked.\n */\n async invite(l: VolunteerListInfo) {\n await this.setCurrentVolunteerByID({ id: l.individualID }) //this will retrieve full volunteer info\n this.pendingInviteVolunteer = { ...this.listToListInfo(this.currentVolunteer) }\n\n if (l.invitationStatus == InvitationStatusEnum.EMPTY) {\n this.showInviteConfirm = true\n } else {\n this.showResendInviteConfirm = true\n }\n }\n\n private showEmailInviteSent = false\n private showSmsInviteSent = false\n private smsInviteSentNumber = ''\n private showInviteStatusError = false\n\n async onResendInviteConfirm(payload: ResendInvitePayload) {\n if (!this.pendingInviteVolunteer) {\n return\n }\n\n if (payload.medium === ResendInvitePayloadMedium.EMAIL) {\n await this.setAllInvited({\n ids: [this.vol2contact(this.pendingInviteVolunteer)],\n leagueID: this.leagueid || '',\n })\n this.showEmailInviteSent = true\n\n return\n }\n\n if (payload.medium === ResendInvitePayloadMedium.SMS) {\n const inviteContact = this.vol2contact(this.pendingInviteVolunteer)\n\n if (payload.phoneNumber) {\n // Allow the user to override the phone number using the control within the modal\n inviteContact.phone = payload.phoneNumber\n this.smsInviteSentNumber = formatPhoneNumber(payload.phoneNumber)\n } else {\n this.smsInviteSentNumber = formatPhoneNumber(inviteContact.phone)\n }\n\n await this.setAllInvitedViaSms({\n ids: [inviteContact],\n leagueID: this.leagueid || '',\n })\n this.showSmsInviteSent = true\n\n return\n }\n }\n\n public onShowInviteStatusErrorClick() {\n if (this.showInviteStatusError) {\n this.showInviteStatusError = false\n } else {\n this.showInviteStatusError = true\n }\n }\n\n /**\n * On send invite there is a confirmation.\n * we'll call this on confirm if the modal is confirmed,\n * invite will call this function directly if confirm is not\n * required.\n */\n async onInviteConfirm(payload: SendInvitePayload) {\n if (!this.pendingInviteVolunteer) {\n return\n }\n\n if (payload.medium === SendInvitePayloadMedium.EMAIL) {\n await this.setAllInvited({\n ids: [this.vol2contact(this.pendingInviteVolunteer)],\n leagueID: this.leagueid || '',\n })\n this.showEmailInviteSent = true\n\n return\n }\n\n if (payload.medium === SendInvitePayloadMedium.SMS) {\n const inviteContact = this.vol2contact(this.pendingInviteVolunteer)\n\n if (payload.phoneNumber) {\n // Allow the user to override the phone number using the control within the modal\n inviteContact.phone = payload.phoneNumber\n this.smsInviteSentNumber = formatPhoneNumber(payload.phoneNumber)\n } else {\n this.smsInviteSentNumber = formatPhoneNumber(inviteContact.phone)\n }\n\n await this.setAllInvitedViaSms({\n ids: [inviteContact],\n leagueID: this.leagueid || '',\n })\n this.showSmsInviteSent = true\n\n return\n }\n }\n\n /**\n * Converts a VLI to IC to send an invite.\n */\n vol2contact(i: VolunteerListInfo): InviteContact {\n return {\n id: i.individualID,\n accountNumber: i.accountNumber ?? '',\n name: `${i.firstName} ${i.lastName}`,\n email: getFirstEmailInfo(i).emailAddress || '',\n phone: '',\n roles: (i.roles || []).map((x) => x.roleID),\n }\n }\n\n showInviteConfirm = false\n showResendInviteConfirm = false\n pendingInviteVolunteer: VolunteerListInfo | null = null\n showConfirmBatchInvite = false\n showBatchInviteSent = false\n batchInviteLastSentList: VolunteerListInfo[] = []\n /**\n * Batch invite was clicked. */\n batchInvite() {\n this.showConfirmBatchInvite = true\n }\n /***\n * Identifies folks that need to get a batch invite\n */\n async onBatchConfirm(actionConfirmed: boolean) {\n this.showConfirmBatchInvite = false\n if (!actionConfirmed) {\n return\n }\n this.showBatchInviteSent = true\n let batchInvitableList = await Promise.all(\n this.visibleVolunteers\n .filter((x) => x.approved && !x.inviteExpireDate && x.inviteAllowed)\n .map(async (x) =>\n this.listToListInfo(\n (await volunteersClient.getFullVolunteerInfo(this.leagueid, x.individualID)) ?? x\n )\n )\n )\n batchInvitableList = batchInvitableList.filter((x) => (x.emailAddresses?.length ?? 0) > 0)\n this.batchInviteLastSentList = cloneDeep(uniq(batchInvitableList))\n actionConfirmed &&\n (await this.setAllInvited({\n ids: batchInvitableList.map((x) => this.vol2contact(x)),\n leagueID: this.leagueid || '',\n }))\n }\n\n get batchInviteButtonDisable() {\n return (\n this.visibleVolunteers.filter((x) => x.approved && !x.inviteExpireDate && x.inviteAllowed).length == 0\n )\n }\n\n get account() {\n return credentialsService.getPrimaryAccountFromCredentials(jwtService.getCredentialsFromStoredAuthToken())\n }\n\n /***\n * Visible volunteers are influenced by the current tab\n */\n get visibleVolunteers(): VolunteerListInfo[] {\n return this.volunteers\n .filter(\n (x) =>\n x.firstName &&\n x.lastName &&\n `${x.firstName} ${x.lastName!}`.toLocaleLowerCase().search(this.searchTerm.toLocaleLowerCase()) !=\n -1\n )\n .sort((a, b) => (`${a.lastName}, ${a.firstName}` > `${b.lastName}, ${b.firstName}` ? 1 : -1))\n .map(this.listToListInfo)\n }\n\n invitationStatus(v: LeagueVolunteerInfo) {\n //invalid email addresses, should show an invalid status to user\n\n if (v.inviteAcceptDate) {\n return InvitationStatusEnum.ACCEPTED\n }\n\n if (!v.inviteExpireDate) {\n return InvitationStatusEnum.EMPTY\n }\n\n if (dayjs(v.inviteExpireDate).diff(dayjs()) < 0) {\n return InvitationStatusEnum.EXPIRED\n }\n return InvitationStatusEnum.SENT\n }\n\n listToListInfo(v: LeagueVolunteerInfo): VolunteerListInfo {\n return {\n ...v,\n approved: v.roles?.find((x) => x.roleID == this.approveRoleID)?.approved ?? true,\n invitationStatus: this.invitationStatus(v),\n prettyName: `${v.lastName}, ${v.firstName}`,\n roles_text:\n v.roles?.map((x) => roleById(x.roleID, this.currentItem?.roles ?? [])?.description)?.join(',') ?? '',\n }\n }\n\n private currentRoleInfo() {\n return roleById(Number(this.approveRoleID.valueOf()), this.currentItem?.roles ?? [])\n }\n\n private currentRoleAllowsOPR() {\n const roleInfo = this.currentRoleInfo()\n if (roleInfo) {\n return roleInfo.allowInOPR\n } else return false\n }\n\n private currentRoleAllowsOVR() {\n const roleInfo = this.currentRoleInfo()\n if (roleInfo) {\n return roleInfo.allowInOVR\n } else return false\n }\n\n private programHasOPR() {\n return this.currentItem?.isOPRLeague\n }\n\n deleteVolunteer() {\n this.showDelete = true\n }\n\n async editVolunteer(individualId: number) {\n await this.$router.push(\n `/programs/${this.routeType}/${this.leagueid}/volunteers/edit/${this.volunteerType}/${individualId}`\n )\n }\n\n /***\n * User confirmed a delete\n */\n deletingId = 0\n async confirmDeleteVolunteer() {\n this.deletingId = this.currentVolunteer.individualID\n // this store will call into the client and then process the last-role logic\n // specifically we will remove all roles from the volunteer and then call delete on the volunteer\n // if all roles have been removed.\n try {\n await this.removeVolunteer({\n upwardLeagueID: this.leagueid || '',\n id: this.currentVolunteer.individualID,\n roles: intersection(\n this.rolesByProgram,\n this.currentVolunteer.roles?.map((x) => x.roleID)\n ),\n })\n } finally {\n this.deletingId = 0\n }\n }\n cancelDeleteVolunteer() {\n this.showDelete = false\n }\n private teamInfo: DivisionTeamInfo[] = []\n async setLocalCurrentVolunteerID(id: VolunteerIDType) {\n await this.setCurrentVolunteerByID({ id })\n this.teamInfo = await teamsClient.retrieveTeamInfo({\n leagueID: this.leagueid ?? '',\n individualId: id,\n })\n }\n\n rowSelected(x: DataTableSelection) {\n const id = VolunteerID(x.item)\n if (id) {\n this.setLocalCurrentVolunteerID(id)\n }\n }\n async rowDoubleClicked(x: DataTableSelection) {\n await this.$router.push({\n name: `edit-volunteer-${this.routeType}`,\n params: { vid: VolunteerID(x.item).toString(), ...this.$router.currentRoute.params },\n })\n }\n\n mount() {\n this.setAllApproved = store.dispatch.volunteers.setAllApproved\n this.setAllInvited = store.dispatch.volunteers.setAllInvited\n this.removeVolunteer = store.dispatch.volunteers.removeVolunteer\n this.loadLeanVolunteersByProgramRole = store.dispatch.volunteers.loadLeanVolunteersByProgramRole\n this.setCurrentVolunteerByID = store.dispatch.volunteers.setCurrentVolunteerByID\n this.setCurrentStoreProgram = store.commit.volunteers.setCurrentProgram\n this.clearCurrentVolunteer = store.commit.volunteers.clearCurrent\n this.clearVolunteerUnderEdit = store.commit.volunteers.clearVolunteerUnderEdit\n }\n\n destroyed() {\n this.clearCurrentVolunteer()\n this.clearVolunteerUnderEdit()\n }\n\n emailPhoneParticipantSearch() {\n this.emailPhoneVolunteerSearchActive = true\n }\n\n get addButtonEnabled(): boolean {\n if (this.category !== VolunteerSectionTypes.CHEERDIRECTOR) {\n return true\n }\n return this.visibleVolunteers.length === 0\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VolunteerView.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VolunteerView.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./VolunteerView.vue?vue&type=template&id=3d9d8be3&\"\nimport script from \"./VolunteerView.vue?vue&type=script&lang=ts&\"\nexport * from \"./VolunteerView.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","interface CoachAssistantLink {\n id: number\n coach1IndividualID: number\n coach2IndividualID: number\n pendingIndividualID: number\n pendingFirstName: string | null\n pendingLastName: string | null\n}\nconst empty = (): CoachAssistantLink => {\n return {\n id: 0,\n coach1IndividualID: 0,\n coach2IndividualID: 0,\n pendingIndividualID: 0,\n pendingFirstName: '',\n pendingLastName: '',\n }\n}\n\nexport { empty, CoachAssistantLink }\n","import { Route } from 'vue-router'\nimport { LeagueVolunteerInfo } from '@/GeneratedTypes/ListInfo/LeagueVolunteerInfo'\nimport { RuntimeException } from '@/lib/common/exceptions/RuntimeException'\nimport { LeagueVolunteer } from '@/GeneratedTypes/LeagueVolunteer'\nimport { getEmptyLeagueVolunteer, LeagueVolunteerSeedInfo } from '@/lib/support/models/LeagueVolunteer/data'\nimport { leagueVolunteerInfoToLeagueVolunteer } from '@/lib/support/models/LeagueVolunteer/leagueVolunteerInfoToLeagueVolunteer'\nimport { newPlayerID } from '@/lib/support/models/LeaguePlayerInfo/data'\n\nclass VolunteerRouteRuntimeException extends RuntimeException {\n name = 'Volunteer Route Error'\n}\n\n/***\n * Takes the route name (edit,copy,new) and produces a volunteer model for initial edit.\n * @param routeName\n * @param currentVolunteer\n */\n\nexport function routeActionToVolunteer(\n routeName: string | null | undefined,\n currentVolunteer: LeagueVolunteerInfo\n): LeagueVolunteer {\n if (routeName?.startsWith('new-volunteer')) {\n return getEmptyLeagueVolunteer(new LeagueVolunteerSeedInfo())\n }\n\n if (routeName?.startsWith('edit-volunteer')) {\n return {\n ...getEmptyLeagueVolunteer(new LeagueVolunteerSeedInfo()),\n ...leagueVolunteerInfoToLeagueVolunteer(currentVolunteer),\n }\n }\n\n if (routeName?.startsWith('copy-volunteer')) {\n return {\n ...getEmptyLeagueVolunteer(new LeagueVolunteerSeedInfo()),\n ...leagueVolunteerInfoToLeagueVolunteer(currentVolunteer),\n individualID: newPlayerID(),\n }\n }\n\n throw new VolunteerRouteRuntimeException('expected a valid routeName, got ' + routeName)\n}\n\n/**\n * Takes a URL our route and returns the category name part\n * @param routepath\n */\nexport function getRouteCategoryName(routepath: Route | string) {\n if (typeof routepath == 'string') {\n const matches = routepath.match(/volunteers\\/(\\S+)\\/(\\S+)/)\n if (matches?.length == 3) {\n return matches[2]\n }\n return ''\n }\n return routepath.params['type'] ?? ''\n}\n\n/**\n * Takes a URL our route and returns the category name part\n * @param routepath\n */\nexport function getLeagueType(routepath: Route | string) {\n if (typeof routepath == 'string') {\n const routeParts = routepath.split('/')\n if (routeParts?.length > 3) {\n return routeParts[2]\n }\n return ''\n }\n return ''\n}\n"],"sourceRoot":""}