{"version":3,"file":"sm.portal.vm.payment.min.js","names":["jQuery","sm","window","portal","extend","vm","PaymentViewModel","self","this","AccountTypeID","ko","validatedObservable","CardNumber","ExpirationDate","CCV","FirstName","LastName","CouponCode","UsesMailingAddress","observable","BillingAddress","MailingAddressViewModel","BillingAddressDataLoaded","IsRequired","DataLoaded","DataLoading","DataContainer","Touched","DataLoadErrorCount","CardNumberMasked","computed","masked","utility","isNullOrEmpty","trim","substr","length","AnythingPopulated","UseMailingAddressChanged","basicContactModel","viewModel","GetSectionModel","LoadAddressModelFromAddressModel","PrimaryMailingAddress","Initialize","personSecData","LoadModel","container","smapi","constant","applicationDebugFlag","console","log","GetModelData","blockui","applicationMID","personMID","blockUI","url","_baseApiUri","formatString","ajax","type","dataType","contentType","headers","processData","crossDomain","xhrFields","withCredentials","success","data","textStatus","jqXHR","page","application","modelDataResponseHandler","error","exception","modelErrorHandler","handleErrorWithMessages","CheckInclusion","access","ApiContainerModel","Status","Payload","ValidationTitle","ValidationMessages","result","InclusionResult","sectionsToAdd","Array","sectionsToRemove","push","section","required","MaintainSections","BlockContainer","block","message","getResourceValue","UnBlockContainer","unblock","SetFocus","ProcessOnServer","ExtractATO","JSON","stringify","encodedAddress","HTMLValue","AddressHtmlValue","replace","AddressTextValue","TEXTValue","statusText","responseMsg","responseText","parseJSON","Message","admissions","AdmissionsPaymentInformationModel","SurName","Expiration","VerificationCode","UseApplicationAddress","params","validate_FieldRequired_Key","min","validate_MustBeNumeric_Key","max","number","maxLength","validate_0CharactersOrLess_Key","ModelErrors","validation","group","IsVMValid","Completed","isCompleted"],"sources":["assets/js/viewmodels/admissions/sm.portal.vm.payment.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 // Payment View Model\r\n // Holds Payment Processing Information\r\n /**************************************/\r\n function PaymentViewModel() {\r\n\r\n // Self-Identification\r\n var self = this;\r\n\r\n /*** PROPERTIES ***/\r\n this.AccountTypeID = ko.validatedObservable();\r\n this.CardNumber = ko.validatedObservable();\r\n this.ExpirationDate = ko.validatedObservable();\r\n this.CCV = ko.validatedObservable();\r\n this.FirstName = ko.validatedObservable();\r\n this.LastName = ko.validatedObservable();\r\n this.CouponCode = ko.validatedObservable();\r\n\r\n this.UsesMailingAddress = ko.observable(true);\r\n this.BillingAddress = ko.validatedObservable(new sm.portal.vm.MailingAddressViewModel());\r\n\r\n this.BillingAddressDataLoaded = ko.observable(false);\r\n\r\n this.IsRequired = ko.observable(false);\r\n /*** 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(\"PaymentContainer\");\r\n this.Touched = ko.observable(false);\r\n this.DataLoadErrorCount = ko.observable(0);\r\n /*** SECTION PROPERTIES ***/\r\n\r\n /*** COMPUTED PROPERTIES ***/\r\n this.CardNumberMasked = ko.computed(function () {\r\n\r\n var masked = this.CardNumber();\r\n if (!sm.portal.utility.isNullOrEmpty(masked)) {\r\n masked = masked.trim();\r\n masked = masked.substr(masked.length - 4);\r\n\r\n masked = '****-****-****-' + masked;\r\n\r\n return masked;\r\n }\r\n return '';\r\n }, this);\r\n this.AnythingPopulated = ko.computed(function () {\r\n if (!sm.portal.utility.isNullOrEmpty(this.AccountTypeID())) return true;\r\n if (!sm.portal.utility.isNullOrEmpty(this.CardNumber())) return true;\r\n if (!sm.portal.utility.isNullOrEmpty(this.ExpirationDate())) return true;\r\n if (!sm.portal.utility.isNullOrEmpty(this.CCV())) return true;\r\n if (!sm.portal.utility.isNullOrEmpty(this.FirstName())) return true;\r\n if (!sm.portal.utility.isNullOrEmpty(this.LastName())) return true;\r\n return false;\r\n }, this); \r\n /*** COMPUTED PROPERTIES ***/\r\n\r\n \r\n\r\n /*** METHODS ***/\r\n this.UseMailingAddressChanged = function () {\r\n var basicContactModel = viewModel.GetSectionModel('BasicContact');\r\n\r\n if (basicContactModel != null && !sm.portal.utility.isNullOrEmpty(self.UsesMailingAddress())) {\r\n if (self.UsesMailingAddress()) {\r\n // copy data from Primary Mailing Address\r\n self.BillingAddress().LoadAddressModelFromAddressModel(basicContactModel.PrimaryMailingAddress());\r\n\r\n } else {\r\n // Clear Data completely.\r\n self.BillingAddress().LoadAddressModelFromAddressModel(new sm.portal.vm.MailingAddressViewModel());\r\n\r\n }\r\n }\r\n return true;\r\n };\r\n /*** METHODS ***/\r\n\r\n /*** SECTION METHODS ***/\r\n this.Initialize = function () {\r\n\r\n // Bring in the Names \r\n var personSecData = viewModel.GetSectionModel('BasicPerson');\r\n this.FirstName(personSecData.FirstName());\r\n this.LastName(personSecData.LastName());\r\n\r\n // Check the UsesMailingAddress and load data if necesary\r\n self.UseMailingAddressChanged();\r\n };\r\n this.LoadModel = function (container) {\r\n\r\n this.DataLoading(false);\r\n this.DataLoaded(true);\r\n if (smapi.constant.applicationDebugFlag) { console.log('[PaymentVM] Data Loaded'); }\r\n };\r\n this.GetModelData = function (blockui, applicationMID, personMID) {\r\n\r\n if (!this.DataLoaded() && !this.DataLoading()) {\r\n\r\n this.DataLoading(true);\r\n if (blockui) { jQuery.blockUI(); }\r\n var url = _baseApiUri + sm.portal.utility.formatString('api/studentportal/getapplicationsection?sectionName=payment&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 },\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 }\r\n });\r\n }\r\n };\r\n this.CheckInclusion = function (applicationMID, personMID) {\r\n\r\n var url = _baseApiUri + sm.portal.utility.formatString('api/studentportal/CheckApplicationSectionInclusion?sectionName=payment&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\r\n var container = new smapi.access.ApiContainerModel(data.Status, data.Payload, data.ValidationTitle, data.ValidationMessages);\r\n if (data.Status == 'success') {\r\n var result = container.Payload.InclusionResult;\r\n var sectionsToAdd = Array();\r\n var sectionsToRemove = Array();\r\n\r\n console.log('Inclusion Result for Payment: ' + result);\r\n switch (result) {\r\n case \"Included\":\r\n sectionsToAdd.push({ section: 'Payment', required: false });\r\n self.IsRequired(false);\r\n break;\r\n case \"Required\":\r\n sectionsToAdd.push({ section: 'Payment', required: true });\r\n self.IsRequired(true);\r\n break;\r\n case \"Exclude\":\r\n sectionsToRemove.push('Payment');\r\n self.IsRequired(false);\r\n break;\r\n }\r\n console.log('Calling Maintain Sections');\r\n viewModel.MaintainSections(sectionsToAdd, sectionsToRemove);\r\n }\r\n },\r\n error: function (jqXHR, exception) {\r\n sm.portal.page.application.modelErrorHandler(self, jqXHR);\r\n }\r\n });\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\r\n if (!this.UsesMailingAddress()) { // Only submit if it's different.\r\n\r\n // Submit an entered address to the server to construct TEXT and HTML Values\r\n var data = this.BillingAddress().ExtractATO();\r\n\r\n var url = _baseApiUri + 'api/studentportal/processaddress';\r\n jQuery.ajax({\r\n url: url,\r\n type: 'POST',\r\n dataType: 'json',\r\n data: JSON.stringify(data),\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 var container = new smapi.access.ApiContainerModel(data.Status, data.Payload, data.ValidationTitle, data.ValidationMessages);\r\n\r\n if (data.Status == 'success') {\r\n\r\n // Set the HTML and Text Values\r\n var encodedAddress = container.Payload.HTMLValue;\r\n if (!sm.portal.utility.isNullOrEmpty(encodedAddress)) {\r\n self.BillingAddress().AddressHtmlValue(encodedAddress.replace(/</g, '<').replace(/>/g, '>'));\r\n } else {\r\n self.BillingAddress().AddressHtmlValue('');\r\n }\r\n self.BillingAddress().AddressTextValue(container.Payload.TEXTValue);\r\n }\r\n },\r\n error: function (jqXHR, exception) {\r\n\r\n var statusText = jqXHR.statusText;\r\n var responseMsg = sm.portal.utility.getResourceValue('UnknownError');\r\n if (jqXHR != null && jqXHR.responseText != null) {\r\n responseMsg = jQuery.parseJSON(jqXHR.responseText).Message;\r\n }\r\n var messageToUser = sm.portal.utility.formatString(\"{0} - {1}\", statusText, responseMsg);\r\n self.UnBlockContainer();\r\n }\r\n });\r\n }\r\n };\r\n this.ExtractATO = function () {\r\n // [EXTEND] New fields added to view model need to be updated here\r\n return new smapi.admissions.AdmissionsPaymentInformationModel({\r\n AccountTypeID: self.AccountTypeID(),\r\n FirstName: self.FirstName(),\r\n SurName: self.LastName(),\r\n CardNumber: self.CardNumber(),\r\n Expiration: self.ExpirationDate(),\r\n VerificationCode: self.CCV(),\r\n UseApplicationAddress: self.UsesMailingAddress()\r\n });\r\n };\r\n /*** SECTION METHODS ***/\r\n\r\n /*** VALIDATION METHODS ***/\r\n this.AccountTypeID.extend({\r\n required: {\r\n params: true,\r\n message: sm.portal.utility.getResourceValue(smapi.constant.validate_FieldRequired_Key)\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.CardNumber.extend({\r\n required: {\r\n params: true,\r\n message: sm.portal.utility.getResourceValue(smapi.constant.validate_FieldRequired_Key)\r\n },\r\n //TODO Pattern based on CC Type\r\n //pattern: {\r\n // params: ,\r\n // message: sm.portal.utility.getResourceValue(smapi.constant.validate_MustBeADate_Key)\r\n //}\r\n });\r\n this.ExpirationDate.extend({\r\n required: {\r\n params: true,\r\n message: sm.portal.utility.getResourceValue(smapi.constant.validate_FieldRequired_Key)\r\n }\r\n // date: {\r\n // params: true,\r\n // message: sm.portal.utility.getResourceValue(smapi.constant.validate_MustBeADate_Key)\r\n // }\r\n });\r\n this.CCV.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: 3,\r\n message: sm.portal.utility.formatString(sm.portal.utility.getResourceValue(smapi.constant.validate_0CharactersOrLess_Key), '3')\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.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\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 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 = true;\r\n if (!this.IsRequired()) {\r\n return isCompleted;\r\n }\r\n isCompleted = this.IsVMValid();\r\n if (!this.BillingAddress().IsVMValid()) isCompleted = false;\r\n\r\n return isCompleted;\r\n\r\n }, this);\r\n /*** VALIDATION METHODS ***/\r\n\r\n\r\n return self;\r\n };\r\n\r\n jQuery.extend(true, sm.portal.vm, {\r\n PaymentViewModel: PaymentViewModel,\r\n });\r\n\r\n})(jQuery);"]}