{"version":3,"file":"js/111.efc4f43a.js","mappings":"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","sources":["webpack://marriage-officials/./src/views/Shared/Request/BaseRequest/request.html","webpack://marriage-officials/./src/views/Shared/Forms/RequestAttachments/requestAttachments.ts","webpack://marriage-officials/./src/views/Shared/Request/steps/Attachments/attachments.ts","webpack://marriage-officials/./src/views/Shared/Request/BaseRequest/request.ts","webpack://marriage-officials/./src/views/Shared/Forms/RequestAttachments/requestAttachments.html","webpack://marriage-officials/./src/views/Shared/Request/steps/Attachments/attachments.html"],"sourcesContent":["\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n {{pageTitle}}\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n","import { Inject } from 'vue-di-container';\r\nimport {\r\n Component, Prop, Watch,\r\n} from 'vue-property-decorator';\r\nimport { mixins } from 'vue-class-component';\r\nimport WithRender from './requestAttachments.html';\r\n// Components\r\n// Services\r\nimport { isRequiredAttachment } from '@/services/formValidators';\r\nimport { AttachmentTypeIds, RequestsTypesLinks } from '@/services/staticLookups';\r\nimport { testIds } from '@/services/testAutomation';\r\n// styles\r\nimport styles from '../forms.module.scss';\r\nimport SharePointService from '@/services/attachments';\r\nimport TelemetryService from '@/services/TelemetryService';\r\nimport { deepEqual, isEmptyObject } from '@/utils/global';\r\n\r\n// Models\r\nimport { AttachmentFieldFile, AttachmentFieldValue } from '@/models/files';\r\nimport AttachmentsMixin from '@/mixins/attachments';\r\n\r\n@WithRender\r\n@Component({\r\n diProvide: [\r\n SharePointService,\r\n TelemetryService,\r\n ],\r\n})\r\nexport default class RequestAttachments extends mixins(AttachmentsMixin) {\r\n @Inject(SharePointService) public sharePointService!: SharePointService;\r\n\r\n @Prop({ default: () => [] as AttachmentFieldFile[] })\r\n public details!: AttachmentFieldFile[];\r\n\r\n public attachmentTypeIds = AttachmentTypeIds;\r\n public testIds = testIds.requestAttachments;\r\n public styles = styles;\r\n public acceptedExtentions = 'jpeg,jpg,pdf,png';\r\n public sharepointConfigs = window.$config.sharepoint;\r\n public formValues: { [key: string]: AttachmentFieldFile [] } = {\r\n [AttachmentTypeIds.medicalExamination]: [],\r\n [AttachmentTypeIds.writtenTest]: [],\r\n };\r\n\r\n public formValidators = {\r\n medicalExamination: [isRequiredAttachment],\r\n writtenTest: this.isRenewRequest ? [] : [isRequiredAttachment],\r\n }\r\n\r\n @Watch('formValues', { deep: true })\r\n public updateParent() {\r\n const flattenedFormValues = Object.values(this.formValues).flat();\r\n\r\n this.$emit('update', flattenedFormValues);\r\n }\r\n\r\n @Watch('details', { deep: true })\r\n public updateFormValues() {\r\n const flattenedFormValues = Object.values(this.formValues).flat();\r\n\r\n const shouldUpdate = !deepEqual(this.details, flattenedFormValues);\r\n\r\n if (shouldUpdate) {\r\n const values: { [key: string]: AttachmentFieldFile [] } = {};\r\n\r\n this.details.forEach((attachment) => values[attachment.attachmentTypeId] = [attachment]);\r\n\r\n this.formValues = values;\r\n }\r\n }\r\n\r\n async mounted() {\r\n this.updateFormValues();\r\n }\r\n\r\n public onSelectFiles({ name, value }: AttachmentFieldValue) {\r\n this.formValues = {\r\n ...this.formValues,\r\n [name]: value as AttachmentFieldFile[],\r\n };\r\n }\r\n\r\n public getAttachmentValue(attachmentTypeId: string) {\r\n const isEmpty = isEmptyObject(this.formValues);\r\n\r\n return isEmpty ? [] : this.formValues[attachmentTypeId];\r\n }\r\n\r\n public async downloadMedicalExamination() {\r\n try {\r\n const { medicalExaminationSharepointId } = this.sharepointConfigs;\r\n\r\n if (medicalExaminationSharepointId) {\r\n await this.sharePointService.downloadMedicalReportSample(medicalExaminationSharepointId);\r\n }\r\n } catch (error) {\r\n this.$nToaster.error({ message: this.$t('medicalExaminationError').toString() });\r\n }\r\n }\r\n\r\n public get isRenewRequest(): boolean {\r\n const { path } = this.$route;\r\n return Boolean(path.includes(RequestsTypesLinks.renew));\r\n }\r\n}\r\n","import {\r\n Component, Prop, Vue, Watch,\r\n} from 'vue-property-decorator';\r\nimport WithRender from './attachments.html';\r\n// Components\r\nimport CancelRequestBtn from '@/components/CancelRequestBtn/cancelRequestBtn';\r\nimport RequestAttachments from '@/views/Shared/Forms/RequestAttachments/requestAttachments';\r\n// Services\r\nimport { testIds } from '@/services/testAutomation';\r\n// Models\r\nimport { AttachmentFieldFile } from '@/models/files';\r\nimport { deepEqual } from '@/utils/global';\r\n\r\n@WithRender\r\n@Component({\r\n components: {\r\n RequestAttachments,\r\n CancelRequestBtn,\r\n },\r\n})\r\nexport default class Attachments extends Vue {\r\n @Prop({ default: () => ([] as AttachmentFieldFile[]) })\r\n public payload!: AttachmentFieldFile[];\r\n\r\n public isFormValid = false;\r\n public testIds = testIds.attachments;\r\n\r\n public formValues: { requestAttachments: AttachmentFieldFile[] } = {\r\n requestAttachments: [],\r\n };\r\n\r\n @Watch('payload', { deep: true })\r\n public updateFormValues() {\r\n const shouldUpdate = !deepEqual(this.payload, this.formValues.requestAttachments);\r\n\r\n if (shouldUpdate) {\r\n this.formValues.requestAttachments = this.payload;\r\n }\r\n }\r\n\r\n mounted() {\r\n this.updateFormValues();\r\n }\r\n\r\n public onNavigateToRequests() {\r\n this.$router.push('/');\r\n }\r\n\r\n public moveForward(next: () => void) {\r\n if (this.isFormValid) {\r\n this.$emit('update', this.formValues);\r\n next();\r\n } else {\r\n (this.$refs.form as Vue & { validate: () => void }).validate();\r\n\r\n window.scrollTo({ top: 0, behavior: 'smooth' });\r\n }\r\n }\r\n\r\n public onUpdateRequestAttachments(attachments: AttachmentFieldFile[]) {\r\n this.formValues.requestAttachments = attachments;\r\n }\r\n}\r\n","import { Inject } from 'vue-di-container';\r\nimport {\r\n Component, Prop, Vue, Watch,\r\n} from 'vue-property-decorator';\r\nimport moment from 'moment-hijri';\r\n\r\nimport WithRender from './request.html';\r\n// components\r\nimport RequestLoader from '@/components/RequestLoader/requestLoader';\r\nimport PersonalInfo from '../steps/PersonalInfo/personalInfo';\r\nimport ContactInfo from '../steps/ContactInfo/contactInfo';\r\nimport RequestReview from '../steps/RequestReview/requestReview';\r\nimport RequestStatus from '@/components/RequestStatus/requestStatus';\r\nimport RequestSuccess from '@/components/RequestSuccess/requestSuccess';\r\nimport Qualifications from '../steps/Qualifications/qualifications';\r\n// Services\r\nimport RequestsApiService from '@/services/requests';\r\nimport UserService from '@/services/user';\r\nimport TelemetryService from '@/services/TelemetryService';\r\nimport { failedEvent, successfullEvent } from '@/utils/telemetry';\r\n// Models\r\nimport { UserModel } from '@/models/user';\r\nimport { RequestDetailsDataModel } from '@/models/request-details';\r\nimport { BaseRequestFormValues, SubmitMethodModel } from '@/models/request';\r\nimport { AttachmentTypeIds, LicenseNumberQueryName, RequestStatuses } from '@/services/staticLookups';\r\nimport { getStepperHeaderMeta } from '../utils';\r\nimport { StepperHeaderMeta } from '@/models/stepper';\r\nimport { holidayConfigs } from '@/utils/global';\r\nimport { HolidayConfigs } from '@/models/holidayConfigs';\r\nimport { AttachmentFieldFile } from '@/models/files';\r\nimport Attachments from '../steps/Attachments/attachments';\r\n\r\nmoment.locale('en');\r\n\r\n@WithRender\r\n@Component({\r\n components: {\r\n PersonalInfo,\r\n ContactInfo,\r\n Qualifications,\r\n Attachments,\r\n RequestStatus,\r\n RequestReview,\r\n RequestLoader,\r\n RequestSuccess,\r\n },\r\n diProvide: [\r\n UserService,\r\n RequestsApiService,\r\n TelemetryService,\r\n ],\r\n})\r\n\r\nexport default class BaseRequest extends Vue {\r\n @Inject(UserService) public userService!: UserService;\r\n @Inject(RequestsApiService) public requestsApiService!: RequestsApiService;\r\n @Inject(TelemetryService) public telemetryService!: TelemetryService;\r\n\r\n @Prop({ default: () => ({} as UserModel) })\r\n public user!: UserModel;\r\n\r\n @Prop({ default: true })\r\n public isFetchingUserInfo!: boolean;\r\n\r\n @Prop({ default: true })\r\n public isSubmitting!: boolean;\r\n\r\n @Prop({ default: '' })\r\n public succededRequestNumber!: string;\r\n\r\n @Prop({ default: 0 })\r\n public requestTypeId!: number;\r\n\r\n @Prop({ default: false })\r\n public isSucceded!: boolean;\r\n\r\n public holidayConfigs: HolidayConfigs = holidayConfigs();\r\n public isNewRequest = true;\r\n public isEditMode = false;\r\n public isFetchingRequestDetails = false;\r\n public requestDetails = {} as RequestDetailsDataModel;\r\n public attachmentTypeIds = AttachmentTypeIds;\r\n public requsestPersonalPhoto = {} as AttachmentFieldFile;\r\n public requestPayload = {\r\n id: '',\r\n requestNumber: 0,\r\n requestBasicInformation: {\r\n // ? From Profile\r\n name: '',\r\n socialId: '',\r\n birthDate: '',\r\n birthDateHijri: '',\r\n // ? User specific\r\n mobile: '',\r\n email: '',\r\n twitter: '',\r\n facebook: '',\r\n jobTitle: '',\r\n },\r\n requestContactInformation: [\r\n {\r\n name: '',\r\n mobile: '',\r\n },\r\n {\r\n name: '',\r\n mobile: '',\r\n },\r\n ],\r\n requestContactQualification: [],\r\n requestAttachments: [],\r\n requestContactAddress: {\r\n cityName: '',\r\n districtName: '',\r\n street: '',\r\n buildingNo: '',\r\n additionalNumber: '',\r\n zipCode: '',\r\n phone: '',\r\n unitNumber: 0,\r\n },\r\n } as BaseRequestFormValues;\r\n\r\n public get isLoading(): boolean {\r\n return this.isFetchingRequestDetails || this.isFetchingUserInfo;\r\n }\r\n\r\n public get isPreviewMode(): boolean {\r\n return !this.isEditMode && !this.isNewRequest;\r\n }\r\n\r\n public get stepperHeaderMeta(): StepperHeaderMeta {\r\n const { path } = this.$route;\r\n\r\n return getStepperHeaderMeta(path);\r\n }\r\n\r\n public get pageTitle() {\r\n const { newText, editText, previewText } = this.stepperHeaderMeta;\r\n\r\n if (this.isNewRequest) {\r\n return newText;\r\n }\r\n\r\n if (this.isEditMode) {\r\n return editText;\r\n }\r\n\r\n return previewText;\r\n }\r\n\r\n public get personalInfoPayload() {\r\n const {\r\n requestBasicInformation,\r\n requestContactAddress,\r\n } = this.requestPayload;\r\n\r\n return {\r\n requestBasicInformation,\r\n requestContactAddress,\r\n };\r\n }\r\n\r\n public get applicantPhoneNumber() {\r\n return this.requestPayload.requestBasicInformation.mobile;\r\n }\r\n\r\n public get showStepperHeader() {\r\n return this.isNewRequest || this.isEditMode;\r\n }\r\n\r\n public get readOnlyMode() {\r\n return this.isPreviewMode;\r\n }\r\n\r\n public get steps() {\r\n return [\r\n {\r\n slotName: 'personalInfo',\r\n title: this.$t('personalInfo'),\r\n },\r\n {\r\n slotName: 'contactInfo',\r\n title: this.$t('contactInfo'),\r\n },\r\n {\r\n slotName: 'qualifications',\r\n title: this.$t('qualifications'),\r\n },\r\n {\r\n slotName: 'attachments',\r\n title: this.$t('attachments'),\r\n },\r\n {\r\n slotName: 'requestReview',\r\n title: this.$t('requestReview'),\r\n },\r\n ];\r\n };\r\n\r\n public get profileData() {\r\n const {\r\n givenName, username: socialId, birthDate, birthDateHijri,\r\n } = this.user;\r\n\r\n return {\r\n name: givenName,\r\n socialId,\r\n birthDate: moment(birthDate, 'DDMMYYYY').format('YYYY/MM/DD'),\r\n birthDateHijri,\r\n };\r\n }\r\n\r\n @Watch('user', { deep: true })\r\n public updateWithProfileData() {\r\n this.requestPayload = {\r\n ...this.requestPayload,\r\n requestBasicInformation: {\r\n ...this.requestPayload.requestBasicInformation,\r\n ...this.profileData,\r\n },\r\n };\r\n }\r\n\r\n async mounted() {\r\n const { params, query } = this.$route;\r\n const requestId = params.id || '';\r\n const licenseNumber = query[LicenseNumberQueryName] || '';\r\n this.updateWithProfileData();\r\n\r\n if (requestId && this.user) {\r\n this.fetchRequestDetails(requestId);\r\n }\r\n\r\n if (licenseNumber) {\r\n const decodedLicenseNumber = atob(licenseNumber as string);\r\n\r\n this.requestPayload.licenseNumber = Number(decodedLicenseNumber);\r\n }\r\n }\r\n\r\n public async fetchRequestDetails(requestId: string) {\r\n this.isFetchingRequestDetails = true;\r\n\r\n const {\r\n isSuccess, data,\r\n } = await this.requestsApiService.getRequestDetails(requestId);\r\n\r\n if (isSuccess) {\r\n const licenseRequestStatusId = data.requestStatus.id;\r\n\r\n this.isEditMode = licenseRequestStatusId === RequestStatuses.returnToComplete;\r\n this.pushSuccessfullTelemetryEvent(this.$t('telemetry.fetchRequestDetails') as string);\r\n\r\n this.isNewRequest = false;\r\n this.requestDetails = data;\r\n\r\n this.updateRequestPayload();\r\n } else {\r\n this.pushFailureTelemetryEvent(this.$t('telemetry.fetchRequestDetails') as string);\r\n\r\n this.$nToaster.error({ message: this.$t('serverErrors.NOT_FOUND').toString() });\r\n }\r\n\r\n this.isFetchingRequestDetails = false;\r\n }\r\n\r\n public updateRequestPayload() {\r\n const {\r\n id, requestAttachments, requestBasicInformation, requestContactAddress, requestContactInformation, requestContactQualification, requestNumber, licenseNumber,\r\n } = this.requestDetails;\r\n\r\n this.requestPayload.licenseNumber = licenseNumber;\r\n this.requestPayload.id = id;\r\n this.requestPayload.requestNumber = requestNumber;\r\n this.requestPayload.requestAttachments = requestAttachments.filter((attachment) => attachment.attachmentTypeId !== AttachmentTypeIds.personalPicture) || [] as AttachmentFieldFile[];\r\n this.requestPayload.requestBasicInformation = requestBasicInformation;\r\n this.requestPayload.requestContactAddress = requestContactAddress;\r\n this.requestPayload.requestContactInformation = requestContactInformation;\r\n this.requestPayload.requestContactQualification = requestContactQualification;\r\n this.requsestPersonalPhoto = requestAttachments.find((attachment) => attachment.attachmentTypeId === AttachmentTypeIds.personalPicture) || {} as AttachmentFieldFile;\r\n }\r\n\r\n public onUpdatePersonalPhoto(personalPhoto: AttachmentFieldFile) {\r\n this.requsestPersonalPhoto = personalPhoto;\r\n }\r\n\r\n public onUpdateRequestFormValues(formValues: BaseRequestFormValues) {\r\n this.requestPayload = {\r\n ...this.requestPayload,\r\n ...formValues,\r\n };\r\n }\r\n\r\n public async onSubmitRequest() {\r\n const requestAttachments = this.requestPayload.requestAttachments.filter((attachment) => attachment.attachmentTypeId !== AttachmentTypeIds.personalPicture);\r\n const payload = {\r\n ...this.requestPayload,\r\n requestAttachments: [...requestAttachments, this.requsestPersonalPhoto],\r\n } as BaseRequestFormValues;\r\n\r\n this.$emit('submit', {\r\n payload,\r\n isEditMode: this.isEditMode,\r\n } as SubmitMethodModel);\r\n }\r\n\r\n private pushSuccessfullTelemetryEvent(eventName: string) {\r\n this.telemetryService.trackEvent({\r\n ...successfullEvent,\r\n serviceType: 'Transaction',\r\n eventName,\r\n userInfo: this.user,\r\n });\r\n }\r\n\r\n private pushFailureTelemetryEvent(eventName: string) {\r\n this.telemetryService.trackEvent({\r\n ...failedEvent,\r\n eventName,\r\n serviceType: 'Transaction',\r\n userInfo: this.user,\r\n });\r\n }\r\n}\r\n","\r\n\r\n \r\n \r\n \r\n \r\n {{$t('toCompleteTheRequestAttach')}} :\r\n \r\n \r\n \r\n {{$t('medicalExaminationText')}}\r\n \r\n {{$t('fromHere')}}\r\n \r\n \r\n \r\n {{$t('writtenTestText')}}\r\n \r\n {{$t('fromHere')}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n","\r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n {{ $t('prevText') }}\r\n \r\n\r\n \r\n {{ $t('nextText') }}\r\n \r\n \r\n \r\n \r\n \r\n\r\n"],"names":["RequestAttachments","mixins","AttachmentsMixin","constructor","args","_defineProperty","AttachmentTypeIds","testIds","requestAttachments","styles","window","$config","sharepoint","medicalExamination","writtenTest","isRequiredAttachment","this","isRenewRequest","updateParent","flattenedFormValues","Object","values","formValues","flat","$emit","updateFormValues","shouldUpdate","deepEqual","details","forEach","attachment","attachmentTypeId","mounted","onSelectFiles","name","value","getAttachmentValue","isEmpty","isEmptyObject","downloadMedicalExamination","medicalExaminationSharepointId","sharepointConfigs","sharePointService","downloadMedicalReportSample","error","$nToaster","message","$t","toString","path","$route","Boolean","includes","RequestsTypesLinks","renew","__decorate","Inject","SharePointService","Prop","default","Watch","deep","WithRender","Component","diProvide","TelemetryService","Attachments","Vue","attachments","payload","onNavigateToRequests","$router","push","moveForward","next","isFormValid","$refs","form","validate","scrollTo","top","behavior","onUpdateRequestAttachments","components","CancelRequestBtn","moment","BaseRequest","holidayConfigs","id","requestNumber","requestBasicInformation","socialId","birthDate","birthDateHijri","mobile","email","twitter","facebook","jobTitle","requestContactInformation","requestContactQualification","requestContactAddress","cityName","districtName","street","buildingNo","additionalNumber","zipCode","phone","unitNumber","isLoading","isFetchingRequestDetails","isFetchingUserInfo","isPreviewMode","isEditMode","isNewRequest","stepperHeaderMeta","getStepperHeaderMeta","pageTitle","newText","editText","previewText","personalInfoPayload","requestPayload","applicantPhoneNumber","showStepperHeader","readOnlyMode","steps","slotName","title","profileData","givenName","username","user","format","updateWithProfileData","params","query","requestId","licenseNumber","LicenseNumberQueryName","fetchRequestDetails","decodedLicenseNumber","atob","Number","isSuccess","data","requestsApiService","getRequestDetails","licenseRequestStatusId","requestStatus","RequestStatuses","returnToComplete","pushSuccessfullTelemetryEvent","requestDetails","updateRequestPayload","pushFailureTelemetryEvent","filter","personalPicture","requsestPersonalPhoto","find","onUpdatePersonalPhoto","personalPhoto","onUpdateRequestFormValues","onSubmitRequest","eventName","telemetryService","trackEvent","successfullEvent","serviceType","userInfo","failedEvent","UserService","RequestsApiService","PersonalInfo","ContactInfo","Qualifications","RequestStatus","RequestReview","RequestLoader","RequestSuccess"],"sourceRoot":""}