{"version":3,"file":"sm.portal.vm.personInformation.min.js","names":["jQuery","undefined","sm","window","SelectedProvincialNumber","options","self","this","Identifier","ko","observable","AgencyAssignedID","AgencyName","Name","BusinessMeaningName","GID","ID","extend","required","params","message","portal","utility","getResourceValue","smapi","constant","validate_FieldRequired_Key","pattern","resources","portalResource","getValue","maxLength","formatString","validate_0CharactersOrLess_Key","isModified","ModelErrors","validation","group","IsVMValid","length","vm","PersonalInformationViewModel","data","validatedObservable","FirstName","MiddleName","LastName","PreferredName","DateOfBirth","GenderID","TaxID","SIN","IdentifierID","IdentifierGID","ASN","SalutationID","PrimaryEmailAddressGID","PrimaryEmailAddressID","PrimaryEmailAddress","GetTaxIdRegex","getTaxIdRegex","ConfirmEmail","PersonalConfirmEmailTemplate","SetBirthDateRequired","HideTaxId","HideSIN","HideASN","SummaryPersonTemplate","PersonalSectionUpdate","FirstNameUpdated","PreferredNameUpdated","PersonalSectionPreferredName","PersonalSectionMiddleName","PersonalSectionLastName","PersonalSectionFullName","PersonalSectionDOB","HideCoreFieldsPersonalSection","IsDOBRequired","IsMiddleNameRequired","IsGenderRequired","IsSINRequired","IsCustomisedUK","ProvincialNumbers","observableArray","IsDuplicateProvincialBMN","ProvincialBMN","SelectedProvincialNumbers","displayValidationError","keyType","keyVal","selectionStart","selectionEnd","isMouseClicked","isShiftKeyPressedFirstTime","isShiftKeyPressed","setValidationError","formattedTaxID","computed","read","str","mask","n","slice","replace","MaskCharacter","toString","write","value","setCaretPosition","input","pos","document","getElementById","setSelectionRange","focus","createTextRange","range","collapse","moveEnd","moveStart","select","substring","a","b","Math","abs","owner","changetaxid","e","shiftKey","keyCode","key","selectedText","handleMouseSelection","button","Salutations","Genders","DataLoaded","DataLoading","DataContainer","Touched","DataLoadErrorCount","custom","setCustomLocalizeKey","FullName","name","isNullOrEmpty","AnythingPopulated","SchemaDict","SchemaFields","container","Payload","Schema","Fields","i","field","FieldName","UpdateSelectedProvincialNumbers","provincialBMN","HandleProvincialBMNChange","forEach","provincialNumber","push","enteredProvincialBMN","DeleteProvincialNumber","remove","LoadModel","Config","viewModel","SetSectionsConfigData","access","loadListItemModels","ListData","Salutation","Gender","ProvincialTerritorialStudentNumbersFull","ProvincialTerritorialStudentNumbers","BasicPerson","loadPersonData","callCustomization","dateFormat","toUpperCase","moment","Date","format","apaspersoninformation","isAPASFeatureEnabled","Email","PrimaryEmailID","PrimaryEmailGID","PrimaryEmail","ApplicationID","FullAttempt","keyStr","prop","schemaDef","validator","addMethod","element","re","RegExp","ValidationExpression","optional","test","InvalidMessage","applicationDebugFlag","console","log","GetModelData","blockui","applicationMID","personMID","callback","allCustomData","BirthDate","isCanadaFeatureEnabled","SocialSecurityNumber","customData","BlockContainer","url","_baseApiUri","ajax","type","dataType","contentType","headers","processData","crossDomain","xhrFields","withCredentials","success","textStatus","jqXHR","page","application","modelDataResponseHandler","error","exception","modelErrorHandler","handleErrorWithMessages","InitializeOnUserCreated","block","UnBlockContainer","unblock","SetFocus","ProcessOnServer","ExtractATO","stdEmail","community","ElectronicAddressModel","ContactID","Value","EffectiveFromJS","EffectiveToJS","DoNotContact","NoContactReasonID","AddressTimingTypeID","personATO","Person","atoModel","PersonModel","Surname","GivenName","PreferredGivenName","IDs","eupersoninformation","isEUFeatureEnabled","ukpersoninformation","isUKFeatureEnabled","min","validate_MustBeNumeric_Key","max","number","onlyIf","smLocalDate","validate_MustBeADate_Key","smDateOfBirth","Validate_MustBeProperDateOfBirth_Key","email","validate_ErrorInFormat0_Key","val","duplicatedEmail","AjaxGet","async","validate_DuplicateEmail_Key","validate_DuplicateProvincialBMNEntry_Key","GetTaxIdValidationRegex","getNationalIdentificationRegex","taxIdValidationRegex","getNationalIdentificationValidation","ValidateCanadaSIN","patternMessage","maxLengthParams","maxLengthMessage","IsSelectedProvincialNumberVMValid","isValid","Completed"],"sources":["assets/js/viewmodels/admissions/sm.portal.vm.personInformation.js"],"mappings":"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","ignoreList":[],"sourcesContent":["/// \r\n\r\n(function (jQuery, undefined) {\r\n var sm = window.sm = window.sm || {};\r\n var windowProxy;\r\n var actionQueue = [];\r\n \r\n if (typeof sm.portal === \"undefined\") {\r\n jQuery.extend(sm, { portal: {} });\r\n }\r\n if (typeof sm.portal.vm === \"undefined\") {\r\n jQuery.extend(sm.portal, { vm: {} });\r\n }\r\n\r\n /**************************************/\r\n // Personal Information View Model \r\n // Holds the Person Data\r\n /**************************************/\r\n function PersonalInformationViewModel(data) {\r\n\r\n // Self-Identification\r\n var self = this;\r\n\r\n /*** PROPERTIES ***/\r\n // [EXTEND] Add any properties here that are captured from the view\r\n this.ID = ko.validatedObservable();\r\n this.FirstName = ko.validatedObservable();\r\n this.MiddleName = ko.validatedObservable();\r\n this.LastName = ko.validatedObservable();\r\n this.PreferredName = ko.validatedObservable();\r\n this.DateOfBirth = ko.validatedObservable();\r\n this.GenderID = ko.validatedObservable();\r\n this.TaxID = ko.validatedObservable();\r\n this.SIN = ko.validatedObservable();\r\n this.IdentifierID = ko.validatedObservable();\r\n this.IdentifierGID = ko.validatedObservable();\r\n this.ASN = ko.validatedObservable();\r\n this.SalutationID = ko.validatedObservable();\r\n this.PrimaryEmailAddressGID = ko.observable();\r\n this.PrimaryEmailAddressID = ko.observable();\r\n this.PrimaryEmailAddress = ko.validatedObservable();\r\n this.GetTaxIdRegex = data && data.getTaxIdRegex;\r\n this.ConfirmEmail = ko.validatedObservable();\r\n this.PersonalConfirmEmailTemplate = ko.observable('');\r\n this.SetBirthDateRequired = ko.observable(false);\r\n this.HideTaxId = ko.observable(false);\r\n this.HideSIN = ko.observable(false);\r\n this.HideASN = ko.observable(false);\r\n this.SummaryPersonTemplate = ko.observable('');\r\n this.PersonalSectionUpdate = ko.observable('');\r\n this.FirstNameUpdated = ko.observable('');\r\n this.PreferredNameUpdated = ko.observable('');\r\n this.PersonalSectionPreferredName = ko.observable('');\r\n this.PersonalSectionMiddleName = ko.observable('');\r\n this.PersonalSectionLastName = ko.observable('');\r\n this.PersonalSectionFullName = ko.observable('');\r\n this.PersonalSectionDOB = ko.observable('');\r\n this.HideCoreFieldsPersonalSection = ko.observable(false);\r\n this.IsDOBRequired = ko.observable(false);\r\n this.IsMiddleNameRequired = ko.observable(false);\r\n this.IsGenderRequired = ko.observable(false);\r\n this.IsSINRequired = ko.observable(false);\r\n this.IsCustomisedUK = ko.observable(false);\r\n this.ProvincialNumbers = ko.observableArray();\r\n this.IsDuplicateProvincialBMN = ko.observable(false);\r\n this.ProvincialBMN = ko.observable();\r\n this.SelectedProvincialNumbers = ko.observableArray();\r\n\r\n /* code for handling masked sin start */\r\n this.displayValidationError = ko.observable(false);\r\n this.keyType = ko.observable(null);\r\n this.keyVal = ko.observable(null);\r\n this.selectionStart = ko.observable(0);\r\n this.selectionEnd = ko.observable(null);\r\n this.isMouseClicked = ko.observable(false);\r\n this.isShiftKeyPressedFirstTime = ko.observable(true);\r\n this.isShiftKeyPressed = ko.observable(false);\r\n this.setValidationError = function() {\r\n self.displayValidationError(true);\r\n }\r\n \r\n this.formattedTaxID = ko.computed({\r\n read: function () {\r\n if(this.SIN()) {\r\n function MaskCharacter(str, mask, n = 1) {\r\n \r\n // Slice the string and replace with\r\n // mask then add remaining string\r\n return ('' + str).slice(0, -n)\r\n .replace(/./g, mask)\r\n + ('' + str).slice(-n);\r\n }\r\n return MaskCharacter(this.SIN().toString(),\"X\", 3)\r\n }\r\n },\r\n write: function (value) {\r\n function setSelectionRange(input, selectionStart, selectionEnd) {\r\n var input = document.getElementById(input)\r\n if (input.setSelectionRange) {\r\n input.focus();\r\n input.setSelectionRange(selectionStart, selectionEnd);\r\n }\r\n else if (input.createTextRange) {\r\n var range = input.createTextRange();\r\n range.collapse(true);\r\n range.moveEnd('character', selectionEnd);\r\n range.moveStart('character', selectionStart);\r\n range.select();\r\n }\r\n }\r\n\r\n function setCaretPosition (input, pos) {\r\n setSelectionRange(input, pos, pos);\r\n }\r\n\r\n if(this.keyType() == 'backSpace') {\r\n if(self.isShiftKeyPressed()) {\r\n if(self.selectionEnd() == 0) {\r\n this.SIN(this.SIN().toString().slice(self.selectionStart()))\r\n self.selectionStart(0);\r\n self.selectionEnd(0)\r\n } else if(self.selectionEnd() == this.SIN().toString().length) {\r\n this.SIN(this.SIN().substring(0, this.selectionStart()))\r\n self.selectionStart(this.SIN().toString().length);\r\n self.selectionEnd(this.SIN().toString().length);\r\n } else if(this.selectionStart() > this.selectionEnd()) {\r\n var a = this.SIN().substring(0, this.selectionEnd());\r\n var b = this.SIN().substring(this.selectionStart());\r\n self.selectionStart(this.selectionEnd());\r\n self.selectionEnd(this.selectionEnd());\r\n self.SIN(a+b);\r\n } else if(this.selectionStart() < this.selectionEnd()) {\r\n var a = this.SIN().substring(0, this.selectionStart());\r\n var b = this.SIN().substring(this.selectionEnd());\r\n self.selectionStart(this.selectionEnd());\r\n self.selectionEnd(this.selectionEnd());\r\n self.SIN(a+b);\r\n } else if(Math.abs(self.selectionStart() - self.selectionEnd()) == 9) {\r\n self.SIN(\"\");\r\n }\r\n setCaretPosition(\"PersonSIN\", self.selectionEnd())\r\n self.isShiftKeyPressed(false);\r\n self.isShiftKeyPressedFirstTime(true);\r\n\r\n } else if(self.isMouseClicked() == false) {\r\n if(self.selectionStart() == 0) {\r\n self.SIN(self.SIN().substring(1));\r\n setCaretPosition(\"PersonSIN\", 0);\r\n } else {\r\n let a = this.SIN().slice(0, self.selectionStart() - 1);\r\n let b = this.SIN().slice(self.selectionStart());\r\n self.SIN(a+b);\r\n self.selectionStart(self.selectionStart() - 1)\r\n setCaretPosition(\"PersonSIN\", self.selectionStart())\r\n }\r\n } else {\r\n if(self.selectionEnd() == 0) {\r\n this.SIN(this.SIN().toString().slice(self.selectionStart()))\r\n self.selectionStart(0);\r\n self.selectionEnd(0)\r\n } else if(self.selectionEnd() == this.SIN().toString().length) {\r\n this.SIN(this.SIN().substring(0, this.selectionStart()))\r\n self.selectionStart(this.SIN().toString().length);\r\n self.selectionEnd(this.SIN().toString().length);\r\n } else if(this.selectionStart() > this.selectionEnd()) {\r\n var a = this.SIN().substring(0, this.selectionEnd());\r\n var b = this.SIN().substring(this.selectionStart());\r\n self.selectionStart(this.selectionStart());\r\n self.selectionEnd(this.selectionStart());\r\n self.SIN(a+b);\r\n } else if(this.selectionStart() < this.selectionEnd()) {\r\n var a = this.SIN().substring(0, this.selectionStart());\r\n var b = this.SIN().substring(this.selectionEnd());\r\n self.selectionStart(this.selectionStart());\r\n self.selectionEnd(this.selectionStart());\r\n self.SIN(a+b);\r\n } else if(Math.abs(self.selectionStart() - self.selectionEnd()) == 9) {\r\n self.SIN(\"\");\r\n }\r\n setCaretPosition(\"PersonSIN\", self.selectionEnd())\r\n self.isMouseClicked(false);\r\n }\r\n \r\n } \r\n if(this.keyType() == 'numeric') {\r\n if(this.SIN() == null) {\r\n this.SIN(\"\");\r\n }\r\n if(this.SIN().toString().length < 9) {\r\n if(self.selectionStart() == 0) {\r\n self.SIN(this.keyVal().toString() + self.SIN());\r\n this.selectionStart(this.selectionStart() + 1);\r\n this.selectionEnd(this.selectionStart());\r\n setCaretPosition(\"PersonSIN\", self.selectionStart())\r\n } else {\r\n let a = this.SIN().slice(0, self.selectionStart());\r\n let b = this.SIN().slice(self.selectionStart());\r\n self.SIN(a + this.keyVal() + b);\r\n this.selectionStart(this.selectionStart() + 1);\r\n this.selectionEnd(this.selectionStart());\r\n setCaretPosition(\"PersonSIN\", self.selectionStart())\r\n }\r\n }\r\n }\r\n if(this.keyType() == 'delete') {\r\n if(self.isShiftKeyPressed() == true) {\r\n if(self.selectionEnd() == 0) {\r\n this.SIN(this.SIN().toString().slice(self.selectionStart()))\r\n self.selectionStart(0);\r\n self.selectionEnd(0)\r\n } else if(self.selectionEnd() == this.SIN().toString().length) {\r\n this.SIN(this.SIN().substring(0, this.selectionStart()))\r\n self.selectionStart(this.SIN().toString().length);\r\n self.selectionEnd(this.SIN().toString().length);\r\n } else if(this.selectionStart() > this.selectionEnd()) {\r\n var a = this.SIN().substring(0, this.selectionEnd());\r\n var b = this.SIN().substring(this.selectionStart());\r\n self.selectionStart(this.selectionEnd());\r\n self.selectionEnd(this.selectionEnd());\r\n self.SIN(a+b);\r\n } else if(this.selectionStart() < this.selectionEnd()) {\r\n var a = this.SIN().substring(0, this.selectionStart());\r\n var b = this.SIN().substring(this.selectionEnd());\r\n self.selectionStart(this.selectionStart());\r\n self.selectionEnd(this.selectionStart());\r\n self.SIN(a+b);\r\n } else if(Math.abs(self.selectionStart() - self.selectionEnd()) == 9) {\r\n self.SIN(\"\");\r\n }\r\n self.isShiftKeyPressed(false);\r\n \r\n setCaretPosition(\"PersonSIN\", self.selectionEnd())\r\n\r\n \r\n } else if(self.isMouseClicked() == false) {\r\n let a = this.SIN().slice(0, self.selectionStart());\r\n let b = this.SIN().slice(self.selectionStart() + 1);\r\n self.SIN(a+b);\r\n setCaretPosition(\"PersonSIN\", self.selectionStart())\r\n } else {\r\n if(self.selectionEnd() == 0) {\r\n this.SIN(this.SIN().toString().slice(self.selectionStart()))\r\n self.selectionStart(0);\r\n self.selectionEnd(0)\r\n } else if(self.selectionEnd() == this.SIN().toString().length) {\r\n this.SIN(this.SIN().substring(0, this.selectionStart()))\r\n self.selectionStart(this.SIN().toString().length);\r\n self.selectionEnd(this.SIN().toString().length);\r\n } else if(this.selectionStart() > this.selectionEnd()) {\r\n var a = this.SIN().substring(0, this.selectionEnd());\r\n var b = this.SIN().substring(this.selectionStart());\r\n self.selectionStart(this.selectionStart());\r\n self.selectionEnd(this.selectionStart());\r\n self.SIN(a+b);\r\n } else if(this.selectionStart() < this.selectionEnd()) {\r\n var a = this.SIN().substring(0, this.selectionStart());\r\n var b = this.SIN().substring(this.selectionEnd());\r\n self.selectionStart(this.selectionStart());\r\n self.selectionEnd(this.selectionStart());\r\n self.SIN(a+b);\r\n } else if(Math.abs(self.selectionStart() - self.selectionEnd()) == 9) {\r\n self.SIN(\"\");\r\n }\r\n setCaretPosition(\"PersonSIN\", self.selectionEnd())\r\n self.isMouseClicked(false);\r\n }\r\n } \r\n if(this.keyType() == 'arrowLeft') {\r\n self.isShiftKeyPressed(false);\r\n self.isShiftKeyPressedFirstTime(false);\r\n var input = document.getElementById('PersonSIN');\r\n if(self.selectionStart() > 0) {\r\n self.selectionStart(self.selectionStart() - 1)\r\n self.selectionEnd(self.selectionStart())\r\n setCaretPosition(\"PersonSIN\", self.selectionStart())\r\n }\r\n } \r\n if(this.keyType() == 'arrowRight') {\r\n self.isShiftKeyPressed(false);\r\n self.isShiftKeyPressedFirstTime(false);\r\n if(self.selectionStart() < self.SIN().length) {\r\n self.selectionStart(self.selectionStart() + 1)\r\n self.selectionEnd(self.selectionStart())\r\n setCaretPosition(\"PersonSIN\", self.selectionStart())\r\n } \r\n } \r\n if(this.keyType() == 'shiftPlusLeft') {\r\n var input = document.getElementById('PersonSIN');\r\n input.setSelectionRange(self.selectionEnd(), self.selectionStart());\r\n } \r\n if(this.keyType() == 'shiftPlusRight') {\r\n var input = document.getElementById('PersonSIN');\r\n input.setSelectionRange(self.selectionStart(), self.selectionEnd());\r\n } \r\n },\r\n owner: this\r\n });\r\n \r\n this.changetaxid = function(data, e) {\r\n \r\n if(e.shiftKey) {\r\n if(e.keyCode == 37) {\r\n self.isShiftKeyPressed(true)\r\n self.keyType('shiftPlusLeft');\r\n var input = document.getElementById('PersonSIN');\r\n if(self.isShiftKeyPressedFirstTime()) {\r\n self.selectionStart(input.selectionStart); \r\n self.selectionEnd(input.selectionStart - 1); \r\n self.isShiftKeyPressedFirstTime(false);\r\n } else {\r\n if(self.selectionEnd() > 0) \r\n self.selectionEnd(self.selectionEnd() - 1)\r\n }\r\n } \r\n\r\n if(e.keyCode == 39) {\r\n self.isShiftKeyPressed(true)\r\n self.keyType('shiftPlusRight');\r\n var input = document.getElementById('PersonSIN');\r\n if(self.isShiftKeyPressedFirstTime()) {\r\n self.selectionStart(input.selectionStart); \r\n self.selectionEnd(input.selectionStart + 1); \r\n self.isShiftKeyPressedFirstTime(false);\r\n } else {\r\n if(self.selectionEnd() <= self.SIN().toString().length)\r\n self.selectionEnd(self.selectionEnd() + 1)\r\n }\r\n } \r\n } else if(e.keyCode == 8) {\r\n self.keyType('backSpace')\r\n } else if((e.keyCode >= 48 && e.keyCode <= 57) || (e.keyCode >= 96 && e.keyCode <= 105)) {\r\n self.keyType('numeric')\r\n self.keyVal(e.key);\r\n } else if(e.keyCode == 46) {\r\n self.keyType('delete')\r\n } else if(e.keyCode == 37) {\r\n self.keyType('arrowLeft')\r\n } else if(e.keyCode == 39) {\r\n self.keyType('arrowRight')\r\n } else {\r\n return;\r\n }\r\n };\r\n\r\n this.selectedText = function(data, e) {\r\n if(self.isShiftKeyPressed() == false) {\r\n var input = document.getElementById('PersonSIN');\r\n self.selectionStart(input.selectionStart);\r\n self.selectionEnd(input.selectionEnd)\r\n self.keyType('mouseClick');\r\n if(self.selectionStart() != self.selectionEnd()) {\r\n self.isMouseClicked(true);\r\n } \r\n }\r\n }\r\n\r\n this.handleMouseSelection = function(data, e) {\r\n if(e.button == 0) {\r\n var input = document.getElementById('PersonSIN');\r\n self.selectionStart(input.selectionStart);\r\n self.selectionEnd(input.selectionEnd)\r\n self.keyType('mouseClick');\r\n if(self.selectionStart() != self.selectionEnd()) {\r\n self.isMouseClicked(true);\r\n }\r\n }\r\n var input = document.getElementById('PersonSIN');\r\n self.selectionStart(input.selectionStart);\r\n self.selectionEnd(input.selectionEnd)\r\n \r\n } \r\n /* code for handling masked sin end */\r\n \r\n \r\n /*** PROPERTIES ***/\r\n\r\n /*** LIST DATA PROPERTIES ***/\r\n this.Salutations = ko.observableArray([]);\r\n this.Genders = ko.observableArray([]);\r\n /*** LIST DATA PROPERTIES ***/\r\n\r\n /*** SECTION PROPERTIES ***/\r\n this.DataLoaded = ko.observable(false);\r\n this.DataLoading = ko.observable(false);\r\n this.DataContainer = ko.observable(\"BasicPersonContainer\");\r\n this.Touched = ko.observable(false);\r\n this.DataLoadErrorCount = ko.observable(0);\r\n /*** SECTION PROPERTIES ***/\r\n\r\n sm.portal.vm.custom.setCustomLocalizeKey(self);\r\n\r\n /*** COMPUTED PROPERTIES ***/\r\n this.FullName = ko.computed(function () {\r\n var name = '';\r\n if (!sm.portal.utility.isNullOrEmpty(this.FirstName())) {\r\n name += this.FirstName();\r\n }\r\n if (!sm.portal.utility.isNullOrEmpty(this.MiddleName())) {\r\n name += ' ' + this.MiddleName();\r\n }\r\n if (!sm.portal.utility.isNullOrEmpty(this.LastName())) {\r\n name += ' ' + this.LastName();\r\n }\r\n return name;\r\n }, this);\r\n this.AnythingPopulated = ko.computed(function () {\r\n return true; // required section\r\n }, this);\r\n /*** COMPUTED PROPERTIES ***/\r\n\r\n /*** SECTION METHODS ***/\r\n this.SchemaDict = {};\r\n this.SchemaFields = function (container) {\r\n if (container !== undefined && container.Payload.Schema != null && container.Payload.Schema.Fields != null) {\r\n for (var i = 0; i < container.Payload.Schema.Fields.length; i++) {\r\n var field = container.Payload.Schema.Fields[i];\r\n\r\n if (field != null && field.FieldName != null) {\r\n //hardcode this so only TaxID is added in the future need to add more\r\n var key = \"TaxID\";\r\n if (field.FieldName == key) {\r\n this.SchemaDict[key] = field;\r\n\r\n }\r\n }\r\n }\r\n\r\n }\r\n };\r\n\r\n this.UpdateSelectedProvincialNumbers = function(provincialBMN){\r\n self.HandleProvincialBMNChange(provincialBMN);\r\n self.ProvincialNumbers().forEach(function(provincialNumber){\r\n if(!self.IsDuplicateProvincialBMN() && provincialNumber.BusinessMeaningName == provincialBMN){\r\n self.SelectedProvincialNumbers.push(new SelectedProvincialNumber(provincialNumber));\r\n self.ProvincialBMN(null);\r\n }\r\n })\r\n }\r\n\r\n this.HandleProvincialBMNChange = function(provincialBMN){\r\n var enteredProvincialBMN = ko.observable(provincialBMN); \r\n self.IsDuplicateProvincialBMN(false); \r\n self.SelectedProvincialNumbers().forEach(function(provincialNumber){\r\n if(provincialNumber.BusinessMeaningName() == enteredProvincialBMN()){\r\n self.IsDuplicateProvincialBMN(true);\r\n }\r\n })\r\n }\r\n\r\n this.DeleteProvincialNumber = function(provincialBMN){;\r\n self.SelectedProvincialNumbers.remove(function(provincialNumber){\r\n return provincialNumber.BusinessMeaningName() == provincialBMN();\r\n });\r\n self.HandleProvincialBMNChange(provincialBMN());\r\n }\r\n\r\n this.LoadModel = function (container) {\r\n // update application section configurations\r\n if (container && container.Payload && container.Payload.Config) {\r\n viewModel.SetSectionsConfigData(\"BasicPerson\", container.Payload.Config);\r\n }\r\n\r\n // Standard List Data\r\n self.Salutations = smapi.access.loadListItemModels(container.Payload.ListData.Salutation, self.Salutations);\r\n self.Genders = smapi.access.loadListItemModels(container.Payload.ListData.Gender, self.Genders);\r\n self.ProvincialNumbers(container.Payload.ProvincialTerritorialStudentNumbersFull);\r\n if(container && container.Payload && container.Payload.ProvincialTerritorialStudentNumbers){\r\n for(var i = 0; i < container.Payload.ProvincialTerritorialStudentNumbers.length; i++){\r\n self.SelectedProvincialNumbers.push(new SelectedProvincialNumber(container.Payload.ProvincialTerritorialStudentNumbers[i]));\r\n }\r\n }\r\n self.SchemaFields(container);\r\n\r\n if (container.Payload.BasicPerson != null) {\r\n\r\n self.ID(container.Payload.BasicPerson.ID);\r\n self.SalutationID(container.Payload.BasicPerson.SalutationID);\r\n self.FirstName(container.Payload.BasicPerson.FirstName);\r\n self.MiddleName(container.Payload.BasicPerson.MiddleName);\r\n self.LastName(container.Payload.BasicPerson.LastName);\r\n self.PreferredName(container.Payload.BasicPerson.PreferredName);\r\n \r\n var loadPersonData = {\r\n container: container,\r\n self: self,\r\n viewModel: viewModel\r\n } \r\n sm.portal.vm.custom.callCustomization('LoadPersonInformationData', loadPersonData,\r\n function () {\r\n if (container.Payload.BasicPerson.DateOfBirth != null && container.Payload.BasicPerson.DateOfBirth != undefined) {\r\n var dateFormat = sm.resources.portalResource.getValue('DateFormatExample').toUpperCase();\r\n \r\n self.DateOfBirth(moment(new Date(container.Payload.BasicPerson.DateOfBirth)).format(dateFormat));\r\n } else {\r\n self.DateOfBirth(container.Payload.BasicPerson.DateOfBirth);\r\n } self.GenderID(container.Payload.BasicPerson.GenderID);\r\n \r\n self.TaxID(container.Payload.BasicPerson.TaxID);\r\n self.SIN(container.Payload.BasicPerson.SIN);\r\n \r\n \r\n if (typeof sm.portal.vm.apaspersoninformation !== 'undefined' && sm.portal.utility.isAPASFeatureEnabled()) {\r\n self = sm.portal.vm.apaspersoninformation.LoadModel(self, container);\r\n }\r\n \r\n self.PrimaryEmailAddressID(container.Payload.BasicPerson.Email.PrimaryEmailID);\r\n self.PrimaryEmailAddressGID(container.Payload.BasicPerson.Email.PrimaryEmailGID);\r\n self.PrimaryEmailAddress(container.Payload.BasicPerson.Email.PrimaryEmail);\r\n \r\n // Pull the Application ID into the View Model (since it doesn't have it's own GetData routing.\r\n viewModel.ApplicationID(container.Payload.FullAttempt.ID);\r\n }\r\n );\r\n }\r\n\r\n //loop through the schema dictionary\r\n for (key in this.SchemaDict) {\r\n var keyStr = key;\r\n for (prop in self) {\r\n if (prop === keyStr) {\r\n\r\n var schemaDef = self.SchemaDict[prop];\r\n\r\n jQuery.validator.addMethod(\"ssnInput\", function (value, element) {\r\n var re = new RegExp(schemaDef.ValidationExpression);\r\n return this.optional(element) || re.test(value);\r\n }, schemaDef.InvalidMessage);\r\n\r\n }\r\n }\r\n\r\n }\r\n\r\n //can we push this to our validation\r\n\r\n self.DataLoading(false);\r\n self.DataLoaded(true);\r\n if (smapi.constant.applicationDebugFlag) { console.log('[PersonalVM] Data Loaded'); }\r\n };\r\n\r\n this.GetModelData = function (blockui, applicationMID, personMID, callback) {\r\n \r\n if (!self.DataLoaded() && !self.DataLoading()) {\r\n\r\n self.DataLoading(true);\r\n if(!sm.portal.utility.isNullOrEmpty(viewModel.allCustomData())) {\r\n self.LoadModel(viewModel.allCustomData().BasicPerson);\r\n self.IsDOBRequired(viewModel.allCustomData().BasicPerson.Payload.Config.BirthDate);\r\n self.IsGenderRequired(viewModel.allCustomData().BasicPerson.Payload.Config.Gender);\r\n self.IsMiddleNameRequired(viewModel.allCustomData().BasicPerson.Payload.Config.MiddleName);\r\n if(!(sm.portal.utility.isCanadaFeatureEnabled() || sm.portal.utility.isAPASFeatureEnabled())) {\r\n self.IsSINRequired(viewModel.allCustomData().BasicPerson.Payload.Config.SocialSecurityNumber);\r\n }\r\n var customData = {\r\n data: viewModel.allCustomData().BasicPerson,\r\n self: self\r\n }\r\n sm.portal.vm.custom.callCustomization('LoadPersonInformation', customData,\r\n function () {\r\n callback && callback(viewModel.allCustomData().BasicPerson); \r\n }\r\n );\r\n return;\r\n }\r\n if (blockui) { self.BlockContainer() }\r\n var url = _baseApiUri + sm.portal.utility.formatString('api/studentportal/getapplicationsection?sectionName=person&attemptmid={0}', applicationMID);\r\n\r\n jQuery.ajax({\r\n url: url,\r\n type: 'GET',\r\n dataType: 'json',\r\n contentType: 'application/json; charset=utf-8',\r\n headers: {\r\n \"x-api-version\": '1' //,\r\n },\r\n processData: false,\r\n crossDomain: true,\r\n\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n success: function (data, textStatus, jqXHR) {\r\n sm.portal.page.application.modelDataResponseHandler(self, data, applicationMID, personMID);\r\n self.IsDOBRequired(data.Payload.Config.BirthDate);\r\n self.IsGenderRequired(data.Payload.Config.Gender);\r\n self.IsMiddleNameRequired(data.Payload.Config.MiddleName);\r\n if(!(sm.portal.utility.isCanadaFeatureEnabled() || sm.portal.utility.isAPASFeatureEnabled())) {\r\n self.IsSINRequired(data.Payload.Config.SocialSecurityNumber);\r\n }\r\n var customData = {\r\n data: data,\r\n self: self\r\n }\r\n sm.portal.vm.custom.callCustomization('LoadPersonInformation', customData,\r\n function () {\r\n callback && callback(data); \r\n }\r\n );\r\n },\r\n error: function (jqXHR, exception) {\r\n sm.portal.page.application.modelErrorHandler(self, jqXHR);\r\n sm.portal.page.application.handleErrorWithMessages(self, jqXHR, 'fetch');\r\n callback && callback();\r\n }\r\n });\r\n } else {\r\n callback && callback();\r\n }\r\n };\r\n\r\n this.InitializeOnUserCreated = function (container) {\r\n\r\n // Set the appropriate variables\r\n this.PrimaryEmailAddressID(container.PrimaryEmailID);\r\n this.PrimaryEmailAddressGID(container.PrimaryEmailGID);\r\n };\r\n this.BlockContainer = function () {\r\n jQuery(\"#\" + self.DataContainer()).block({ message: sm.portal.utility.getResourceValue('Loading') });\r\n };\r\n this.UnBlockContainer = function () {\r\n jQuery(\"#\" + self.DataContainer()).unblock();\r\n viewModel.SetFocus();\r\n };\r\n this.ProcessOnServer = function () {\r\n return true;\r\n };\r\n \r\n\r\n this.ExtractATO = function () {\r\n var stdEmail = new smapi.community.ElectronicAddressModel({\r\n ContactID: 0,\r\n Value: self.PrimaryEmailAddress(),\r\n EffectiveFromJS: null,\r\n EffectiveToJS: null,\r\n DoNotContact: false,\r\n NoContactReasonID: 0,\r\n AddressTimingTypeID: 0,\r\n ID: self.PrimaryEmailAddressID(),\r\n GID: self.PrimaryEmailAddressGID()\r\n });\r\n\r\n var personATO = sm.portal.vm.custom.callCustomization('ExtractPersonalATO', self);\r\n\r\n if (personATO) {\r\n return {\r\n Person: personATO\r\n };\r\n }\r\n\r\n // [EXTEND] New fields added to view model need to be updated here and should match the Client Toolkit Model definition\r\n var personModel = new smapi.community.PersonModel({\r\n Surname: self.LastName(),\r\n GivenName: self.FirstName(),\r\n MiddleName: self.MiddleName(),\r\n TaxID: sm.portal.utility.isNullOrEmpty(self.TaxID()) ? null : self.TaxID(),\r\n SIN: self.SIN(),\r\n GenderID: self.GenderID(),\r\n DateOfBirth: self.DateOfBirth(),\r\n ID: self.ID(),\r\n PreferredGivenName: self.PreferredName(),\r\n Email: stdEmail,\r\n IDs: self.SelectedProvincialNumbers()\r\n });\r\n\r\n var atoModel = {\r\n Person: personModel,\r\n Email: stdEmail\r\n };\r\n\r\n if (typeof sm.portal.vm.apaspersoninformation !== 'undefined' && sm.portal.utility.isAPASFeatureEnabled()) {\r\n atoModel.PersonModel = sm.portal.vm.apaspersoninformation.ExtractATO(self);\r\n }\r\n if (typeof sm.portal.vm.eupersoninformation !== 'undefined' && sm.portal.utility.isEUFeatureEnabled()) {\r\n atoModel.PersonModel = sm.portal.vm.eupersoninformation.ExtractATO(self);\r\n }\r\n if (typeof sm.portal.vm.ukpersoninformation !== 'undefined' && sm.portal.utility.isUKFeatureEnabled()) {\r\n atoModel.PersonModel = sm.portal.vm.ukpersoninformation.ExtractATO(self);\r\n }\r\n return atoModel;\r\n };\r\n /*** SECTION METHODS ***/\r\n sm.portal.vm.custom.callCustomization('SetPersonProperties', self);\r\n sm.portal.vm.custom.callCustomization('OverridePersonInfoValidation', self);\r\n\r\n /*** VALIDATION METHODS ***/\r\n this.ID.extend({\r\n min: {\r\n params: -9223372036854775808,\r\n message: sm.portal.utility.getResourceValue(smapi.constant.validate_MustBeNumeric_Key)\r\n },\r\n max: {\r\n params: 9223372036854775807,\r\n message: sm.portal.utility.getResourceValue(smapi.constant.validate_MustBeNumeric_Key)\r\n },\r\n number: {\r\n params: true,\r\n message: sm.portal.utility.getResourceValue(smapi.constant.validate_MustBeNumeric_Key)\r\n }\r\n });\r\n this.FirstName.extend({\r\n required: {\r\n params: true,\r\n message: sm.portal.utility.getResourceValue(smapi.constant.validate_FieldRequired_Key)\r\n },\r\n maxLength: {\r\n params: 100,\r\n message: sm.portal.utility.formatString(sm.portal.utility.getResourceValue(smapi.constant.validate_0CharactersOrLess_Key), '100')\r\n }\r\n });\r\n this.MiddleName.extend({\r\n required: {\r\n message: sm.portal.utility.getResourceValue(smapi.constant.validate_FieldRequired_Key),\r\n onlyIf: function () {\r\n return self.IsMiddleNameRequired();\r\n }\r\n },\r\n maxLength: {\r\n params: 100,\r\n message: sm.portal.utility.formatString(sm.portal.utility.getResourceValue(smapi.constant.validate_0CharactersOrLess_Key), '100')\r\n }\r\n });\r\n this.LastName.extend({\r\n required: {\r\n params: true,\r\n message: sm.portal.utility.getResourceValue(smapi.constant.validate_FieldRequired_Key)\r\n },\r\n maxLength: {\r\n params: 100,\r\n message: sm.portal.utility.formatString(sm.portal.utility.getResourceValue(smapi.constant.validate_0CharactersOrLess_Key), '100')\r\n }\r\n });\r\n this.PreferredName.extend({\r\n maxLength: {\r\n params: 100,\r\n message: sm.portal.utility.formatString(sm.portal.utility.getResourceValue(smapi.constant.validate_0CharactersOrLess_Key), '100')\r\n }\r\n });\r\n this.DateOfBirth.extend({\r\n required: {\r\n message: sm.portal.utility.getResourceValue(smapi.constant.validate_FieldRequired_Key),\r\n onlyIf: function () {\r\n return self.IsDOBRequired();\r\n }\r\n },\r\n smLocalDate: {\r\n params: true,\r\n message: sm.portal.utility.getResourceValue(smapi.constant.validate_MustBeADate_Key)\r\n },\r\n smDateOfBirth: {\r\n params: true,\r\n message: sm.portal.utility.getResourceValue(smapi.constant.Validate_MustBeProperDateOfBirth_Key)\r\n }\r\n });\r\n this.SalutationID.extend({\r\n min: {\r\n params: -9223372036854775808,\r\n message: sm.portal.utility.getResourceValue(smapi.constant.validate_MustBeNumeric_Key)\r\n },\r\n max: {\r\n params: 9223372036854775807,\r\n message: sm.portal.utility.getResourceValue(smapi.constant.validate_MustBeNumeric_Key)\r\n },\r\n number: {\r\n params: true,\r\n message: sm.portal.utility.getResourceValue(smapi.constant.validate_MustBeNumeric_Key)\r\n }\r\n });\r\n this.GenderID.extend({\r\n required: {\r\n message: sm.portal.utility.getResourceValue(smapi.constant.validate_FieldRequired_Key),\r\n onlyIf: function () {\r\n if(sm.portal.utility.isUKFeatureEnabled()){\r\n return false;\r\n }else return self.IsGenderRequired();\r\n }\r\n },\r\n min: {\r\n params: -9223372036854775808,\r\n message: sm.portal.utility.getResourceValue(smapi.constant.validate_MustBeNumeric_Key)\r\n },\r\n max: {\r\n params: 9223372036854775807,\r\n message: sm.portal.utility.getResourceValue(smapi.constant.validate_MustBeNumeric_Key)\r\n },\r\n number: {\r\n params: true,\r\n message: sm.portal.utility.getResourceValue(smapi.constant.validate_MustBeNumeric_Key)\r\n }\r\n });\r\n this.PrimaryEmailAddress.extend({\r\n required: {\r\n params: true,\r\n message: sm.portal.utility.getResourceValue(smapi.constant.validate_FieldRequired_Key)\r\n },\r\n email: {\r\n message: sm.portal.utility.formatString(sm.portal.utility.getResourceValue(smapi.constant.validate_ErrorInFormat0_Key), 'Example@domain.com')\r\n },\r\n maxLength: {\r\n params: 250,\r\n message: sm.portal.utility.formatString(sm.portal.utility.getResourceValue(smapi.constant.validate_0CharactersOrLess_Key), '250')\r\n },\r\n validation: {\r\n validator: function (val) {\r\n if(!sm.portal.utility.isNullOrEmpty(val)) {\r\n var url = _baseApiUri + 'api/studentportal/DuplicatedEmail?email=' + val;\r\n\r\n var duplicatedEmail;\r\n\r\n var successCallback = function (data) {\r\n duplicatedEmail = data;\r\n };\r\n\r\n var options = {\r\n async: false\r\n };\r\n\r\n sm.portal.utility.AjaxGet(url, successCallback, null, null, options);\r\n if (duplicatedEmail)\r\n return false;\r\n\r\n return true;\r\n }\r\n return true;\r\n },\r\n message: sm.portal.utility.getResourceValue(smapi.constant.validate_DuplicateEmail_Key)\r\n }\r\n });\r\n this.ProvincialBMN.extend({\r\n validation: {\r\n validator:function(val){\r\n return !self.IsDuplicateProvincialBMN();\r\n },\r\n message: sm.portal.utility.getResourceValue(smapi.constant.validate_DuplicateProvincialBMNEntry_Key),\r\n onlyIf: function () {\r\n return self.IsDuplicateProvincialBMN();\r\n }\r\n }\r\n });\r\n\r\n // Get regex validation for TaxId and SIN\r\n this.GetTaxIdValidationRegex = function () {\r\n if (this.GetTaxIdRegex) {\r\n sm.portal.utility.getNationalIdentificationRegex(function (taxIdValidationRegex) {\r\n self.GetTaxIdRegex = false;\r\n var validation = sm.portal.utility.getNationalIdentificationValidation();\r\n \r\n if(sm.portal.utility.isCanadaFeatureEnabled() || sm.portal.utility.isAPASFeatureEnabled()) {\r\n self.formattedTaxID.extend({\r\n required: {\r\n message: sm.portal.utility.getResourceValue(smapi.constant.validate_FieldRequired_Key),\r\n onlyIf: function () {\r\n return self.IsSINRequired();\r\n }\r\n },\r\n validation:{\r\n validator: function(){ \r\n if(self.displayValidationError()) {\r\n self.displayValidationError(false);\r\n return sm.portal.utility.ValidateCanadaSIN(self.SIN())\r\n } else {\r\n return true;\r\n }\r\n },\r\n message: sm.portal.utility.formatString(sm.portal.utility.getResourceValue(smapi.constant.validate_ErrorInFormat0_Key), '#########'),\r\n params: self.SIN\r\n },\r\n });\r\n } else {\r\n self.TaxID.extend({\r\n required: {\r\n message: sm.portal.utility.getResourceValue(smapi.constant.validate_FieldRequired_Key),\r\n onlyIf: function () {\r\n if(self.IsCustomisedUK()){\r\n return false\r\n }else return self.IsSINRequired();\r\n }\r\n },\r\n pattern: {\r\n params: taxIdValidationRegex,\r\n message: validation.patternMessage\r\n },\r\n maxLength: {\r\n params: validation.maxLengthParams,\r\n message: validation.maxLengthMessage\r\n }\r\n });\r\n }\r\n });\r\n }\r\n };\r\n \r\n this.IdentifierID.extend({\r\n min: {\r\n params: -9223372036854775808,\r\n message: sm.portal.utility.getResourceValue(smapi.constant.validate_MustBeNumeric_Key)\r\n },\r\n max: {\r\n params: 9223372036854775807,\r\n message: sm.portal.utility.getResourceValue(smapi.constant.validate_MustBeNumeric_Key)\r\n },\r\n number: {\r\n params: true,\r\n message: sm.portal.utility.getResourceValue(smapi.constant.validate_MustBeNumeric_Key)\r\n }\r\n });\r\n if (typeof sm.portal.vm.apaspersoninformation !== 'undefined' && sm.portal.utility.isAPASFeatureEnabled()) {\r\n this.ASN.extend({\r\n required: {\r\n params: true,\r\n message: sm.portal.utility.getResourceValue(smapi.constant.validate_FieldRequired_Key)\r\n },\r\n pattern: {\r\n params: \"^[0-9]{9}$\",\r\n message: sm.portal.utility.formatString(sm.portal.utility.getResourceValue(smapi.constant.validate_ErrorInFormat0_Key), '#########')\r\n },\r\n maxLength: {\r\n params: 9,\r\n message: sm.portal.utility.formatString(sm.portal.utility.getResourceValue(smapi.constant.validate_ErrorInFormat0_Key), '#########')\r\n }\r\n });\r\n }\r\n\r\n this.IsSelectedProvincialNumberVMValid = ko.computed(function(){\r\n var isValid = true;\r\n self.SelectedProvincialNumbers().forEach(function(provincialNumber){\r\n if(!provincialNumber.IsVMValid()){\r\n isValid = false;\r\n }\r\n })\r\n return isValid;\r\n });\r\n\r\n // Set Model Grouping for validation\r\n this.ModelErrors = ko.validation.group(this);\r\n // Check if Model is valid \r\n // (will NOT validate attached models, unless we\r\n // init that in ui.js - currently it has performance problems)\r\n this.IsVMValid = function () {\r\n if (this.ModelErrors().length == 0) {\r\n if(sm.portal.utility.isAPASFeatureEnabled()){\r\n return this.IsSelectedProvincialNumberVMValid();\r\n }\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n };\r\n this.Completed = ko.computed(function () {\r\n\r\n var isCompleted = this.IsVMValid();\r\n return isCompleted;\r\n\r\n }, this);\r\n\r\n // Get regex validation for TaxId and SIN\r\n if(sm.portal.utility.isNullOrEmpty(sm.portal.vm.custom.callCustomization('IsRequiredApi'))) {\r\n this.GetTaxIdValidationRegex();\r\n }\r\n /*** VALIDATION METHODS ***/\r\n\r\n return self;\r\n };\r\n\r\n function SelectedProvincialNumber(options){\r\n var self = this;\r\n self.Identifier = ko.observable(options.AgencyAssignedID);\r\n self.AgencyName = ko.observable(options.AgencyName || options.Name);\r\n self.BusinessMeaningName = ko.observable(options.BusinessMeaningName);\r\n self.GID = ko.observable(options.GID);\r\n self.ID = ko.observable(options.ID || 0);\r\n self.Name = ko.observable(options.AgencyName || options.Name);\r\n\r\n this.Identifier.extend({\r\n required: {\r\n params: true,\r\n message: sm.portal.utility.getResourceValue(smapi.constant.validate_FieldRequired_Key),\r\n },\r\n pattern: {\r\n params: /^[A-Za-z0-9]+$/g,\r\n message: sm.resources.portalResource.getValue('Validate_Alphanumeric')\r\n },\r\n maxLength: {\r\n params: 15,\r\n message: sm.portal.utility.formatString(sm.portal.utility.getResourceValue(smapi.constant.validate_0CharactersOrLess_Key), '15')\r\n }\r\n });\r\n\r\n this.Identifier.isModified(true);\r\n\r\n this.ModelErrors = ko.validation.group(this);\r\n // Check if Model is valid \r\n // (will NOT validate attached models, unless we\r\n // init that in ui.js - currently it has performance problems)\r\n this.IsVMValid = function () {\r\n if (this.ModelErrors().length == 0) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n };\r\n }\r\n\r\n jQuery.extend(true, sm.portal.vm, {\r\n PersonalInformationViewModel: PersonalInformationViewModel,\r\n });\r\n\r\n})(jQuery);"]}