public void Should_have_error_when_company_is_null_or_empty_based_on_required_setting() { var model = new CustomerInfoModel(); //required var validator = new CustomerInfoValidator(_localizationService, _stateProvinceService, new CustomerSettings { CompanyEnabled = true, CompanyRequired = true }); model.Company = null; validator.ShouldHaveValidationErrorFor(x => x.Company, model); model.Company = ""; validator.ShouldHaveValidationErrorFor(x => x.Company, model); //not required validator = new CustomerInfoValidator(_localizationService, _stateProvinceService, new CustomerSettings { CompanyEnabled = true, CompanyRequired = false }); model.Company = null; validator.ShouldNotHaveValidationErrorFor(x => x.Company, model); model.Company = ""; validator.ShouldNotHaveValidationErrorFor(x => x.Company, model); }
public void Should_have_error_when_email_is_null_or_empty() { var model = new CustomerInfoModel(); model.Email = null; _validator.ShouldHaveValidationErrorFor(x => x.Email, model); model.Email = ""; _validator.ShouldHaveValidationErrorFor(x => x.Email, model); }
public void Should_have_error_when_lastName_is_null_or_empty() { var model = new CustomerInfoModel(); model.LastName = null; _validator.ShouldHaveValidationErrorFor(x => x.LastName, model); model.LastName = ""; _validator.ShouldHaveValidationErrorFor(x => x.LastName, model); }
public void Should_not_have_error_when_email_is_correct_format() { var validator = new CustomerInfoValidator(_localizationService, new CustomerSettings()); var model = new CustomerInfoModel(); model.Email = "*****@*****.**"; validator.ShouldNotHaveValidationErrorFor(x => x.Email, model); }
public void Should_not_have_error_when_firstName_is_specified() { var customerSettings = new CustomerSettings(); var validator = new CustomerInfoValidator(_localizationService, customerSettings); var model = new CustomerInfoModel(); model.FirstName = "John"; validator.ShouldNotHaveValidationErrorFor(x => x.FirstName, model); }
public void Should_have_error_when_email_is_wrong_format() { var customerSettings = new CustomerSettings(); var validator = new CustomerInfoValidator(_localizationService, customerSettings); var model = new CustomerInfoModel(); model.Email = "adminexample.com"; validator.ShouldHaveValidationErrorFor(x => x.Email, model); }
public void Should_not_have_error_when_lastName_is_specified() { var validator = new CustomerInfoValidator(_localizationService, new CustomerSettings()); var model = new CustomerInfoModel(); model.LastName = "Smith"; validator.ShouldNotHaveValidationErrorFor(x => x.LastName, model); }
public void Should_have_error_when_email_is_null_or_empty() { var customerSettings = new CustomerSettings(); var validator = new CustomerInfoValidator(_localizationService, customerSettings); var model = new CustomerInfoModel(); model.Email = null; validator.ShouldHaveValidationErrorFor(x => x.Email, model); model.Email = ""; validator.ShouldHaveValidationErrorFor(x => x.Email, model); }
public void Should_have_error_when_lastName_is_null_or_empty() { var validator = new CustomerInfoValidator(_localizationService, new CustomerSettings()); var model = new CustomerInfoModel(); model.LastName = null; validator.ShouldHaveValidationErrorFor(x => x.LastName, model); model.LastName = ""; validator.ShouldHaveValidationErrorFor(x => x.LastName, model); }
public void Should_have_error_when_email_is_null_or_empty() { _stateProvinceService = MockRepository.GenerateMock<IStateProvinceService>(); var validator = new CustomerInfoValidator(_localizationService, _stateProvinceService, new CustomerSettings()); var model = new CustomerInfoModel(); model.Email = null; validator.ShouldHaveValidationErrorFor(x => x.Email, model); model.Email = ""; validator.ShouldHaveValidationErrorFor(x => x.Email, model); }
public void Should_have_error_when_city_is_null_or_empty_based_on_required_setting() { var customerSettings = new CustomerSettings() { CityEnabled = true }; var validator = new CustomerInfoValidator(_localizationService, customerSettings); var model = new CustomerInfoModel(); //required customerSettings.CityRequired = true; model.City = null; validator.ShouldHaveValidationErrorFor(x => x.City, model); model.City = ""; validator.ShouldHaveValidationErrorFor(x => x.City, model); //not required customerSettings.CityRequired = false; model.City = null; validator.ShouldNotHaveValidationErrorFor(x => x.City, model); model.City = ""; validator.ShouldNotHaveValidationErrorFor(x => x.City, model); }
public void Should_not_have_error_when_email_is_correct_format() { var model = new CustomerInfoModel(); model.Email = "*****@*****.**"; _validator.ShouldNotHaveValidationErrorFor(x => x.Email, model); }
public void Should_not_have_error_when_streetaddress_is_specified() { var validator = new CustomerInfoValidator(_localizationService, _stateProvinceService, new CustomerSettings { StreetAddressEnabled = true }); var model = new CustomerInfoModel(); model.StreetAddress = "Street address"; validator.ShouldNotHaveValidationErrorFor(x => x.StreetAddress, model); }
public void Should_not_have_error_when_zippostalcode_is_specified() { var validator = new CustomerInfoValidator(_localizationService, _stateProvinceService, new CustomerSettings { StreetAddress2Enabled = true }); var model = new CustomerInfoModel(); model.ZipPostalCode = "zip"; validator.ShouldNotHaveValidationErrorFor(x => x.ZipPostalCode, model); }
public void Should_not_have_error_when_company_is_specified() { var validator = new CustomerInfoValidator(_localizationService, _stateProvinceService, new CustomerSettings { CompanyEnabled = true }); var model = new CustomerInfoModel(); model.Company = "Company"; validator.ShouldNotHaveValidationErrorFor(x => x.Company, model); }
public void Should_not_have_error_when_phone_is_specified() { var validator = new CustomerInfoValidator(_localizationService, _stateProvinceService, new CustomerSettings { PhoneEnabled = true }); var model = new CustomerInfoModel(); model.Phone = "Phone"; validator.ShouldNotHaveValidationErrorFor(x => x.Phone, model); }
public void Should_have_error_when_streetaddress_is_null_or_empty_based_on_required_setting() { var model = new CustomerInfoModel(); //required var validator = new CustomerInfoValidator(_localizationService, _stateProvinceService, new CustomerSettings { StreetAddressEnabled = true, StreetAddressRequired = true }); model.StreetAddress = null; validator.ShouldHaveValidationErrorFor(x => x.StreetAddress, model); model.StreetAddress = ""; validator.ShouldHaveValidationErrorFor(x => x.StreetAddress, model); //not required validator = new CustomerInfoValidator(_localizationService, _stateProvinceService, new CustomerSettings { StreetAddressEnabled = true, StreetAddressRequired = false }); model.StreetAddress = null; validator.ShouldNotHaveValidationErrorFor(x => x.StreetAddress, model); model.StreetAddress = ""; validator.ShouldNotHaveValidationErrorFor(x => x.StreetAddress, model); }
public void Should_have_error_when_zippostalcode_is_null_or_empty_based_on_required_setting() { var model = new CustomerInfoModel(); //required var validator = new CustomerInfoValidator(_localizationService, _stateProvinceService, new CustomerSettings { ZipPostalCodeEnabled = true, ZipPostalCodeRequired = true }); model.ZipPostalCode = null; validator.ShouldHaveValidationErrorFor(x => x.ZipPostalCode, model); model.ZipPostalCode = ""; validator.ShouldHaveValidationErrorFor(x => x.ZipPostalCode, model); //not required validator = new CustomerInfoValidator(_localizationService, _stateProvinceService, new CustomerSettings { ZipPostalCodeEnabled = true, ZipPostalCodeRequired = false }); model.ZipPostalCode = null; validator.ShouldNotHaveValidationErrorFor(x => x.ZipPostalCode, model); model.ZipPostalCode = ""; validator.ShouldNotHaveValidationErrorFor(x => x.ZipPostalCode, model); }
public void Should_not_have_error_when_streetaddress2_is_specified() { var customerSettings = new CustomerSettings() { StreetAddress2Enabled = true }; var validator = new CustomerInfoValidator(_localizationService, customerSettings); var model = new CustomerInfoModel(); model.StreetAddress2 = "Street address 2"; validator.ShouldNotHaveValidationErrorFor(x => x.StreetAddress2, model); }
public void Should_not_have_error_when_city_is_specified() { var validator = new CustomerInfoValidator(_localizationService, new CustomerSettings() { CityEnabled = true }); var model = new CustomerInfoModel(); model.City = "City"; validator.ShouldNotHaveValidationErrorFor(x => x.City, model); }
public void Should_not_have_error_when_lastName_is_specified() { var model = new CustomerInfoModel(); model.LastName = "Smith"; _validator.ShouldNotHaveValidationErrorFor(x => x.LastName, model); }
public ActionResult Info() { if (!_workContext.CurrentCustomer.IsRegistered()) return new HttpUnauthorizedResult(); var customer = _workContext.CurrentCustomer; var model = new CustomerInfoModel(); PrepareCustomerInfoModel(model, customer, false); return View(model); }
protected virtual void PrepareCustomerInfoModel(CustomerInfoModel model, Customer customer, bool excludeProperties) { if (model == null) throw new ArgumentNullException("model"); if (customer == null) throw new ArgumentNullException("customer"); model.AllowCustomersToSetTimeZone = _dateTimeSettings.AllowCustomersToSetTimeZone; foreach (var tzi in _dateTimeHelper.GetSystemTimeZones()) model.AvailableTimeZones.Add(new SelectListItem() { Text = tzi.DisplayName, Value = tzi.Id, Selected = (excludeProperties ? tzi.Id == model.TimeZoneId : tzi.Id == _dateTimeHelper.CurrentTimeZone.Id) }); if (!excludeProperties) { model.VatNumber = customer.GetAttribute<string>(SystemCustomerAttributeNames.VatNumber); model.FirstName = customer.GetAttribute<string>(SystemCustomerAttributeNames.FirstName); model.LastName = customer.GetAttribute<string>(SystemCustomerAttributeNames.LastName); model.Gender = customer.GetAttribute<string>(SystemCustomerAttributeNames.Gender); var dateOfBirth = customer.GetAttribute<DateTime?>(SystemCustomerAttributeNames.DateOfBirth); if (dateOfBirth.HasValue) { model.DateOfBirthDay = dateOfBirth.Value.Day; model.DateOfBirthMonth = dateOfBirth.Value.Month; model.DateOfBirthYear = dateOfBirth.Value.Year; } model.Company = customer.GetAttribute<string>(SystemCustomerAttributeNames.Company); model.StreetAddress = customer.GetAttribute<string>(SystemCustomerAttributeNames.StreetAddress); model.StreetAddress2 = customer.GetAttribute<string>(SystemCustomerAttributeNames.StreetAddress2); model.ZipPostalCode = customer.GetAttribute<string>(SystemCustomerAttributeNames.ZipPostalCode); model.City = customer.GetAttribute<string>(SystemCustomerAttributeNames.City); model.CountryId = customer.GetAttribute<int>(SystemCustomerAttributeNames.CountryId); model.StateProvinceId = customer.GetAttribute<int>(SystemCustomerAttributeNames.StateProvinceId); model.Phone = customer.GetAttribute<string>(SystemCustomerAttributeNames.Phone); model.Fax = customer.GetAttribute<string>(SystemCustomerAttributeNames.Fax); //newsletter var newsletter = _newsLetterSubscriptionService.GetNewsLetterSubscriptionByEmailAndStoreId(customer.Email, _storeContext.CurrentStore.Id); model.Newsletter = newsletter != null && newsletter.Active; model.Signature = customer.GetAttribute<string>(SystemCustomerAttributeNames.Signature); model.Email = customer.Email; model.Username = customer.Username; } else { if (_customerSettings.UsernamesEnabled && !_customerSettings.AllowUsersToChangeUsernames) model.Username = customer.Username; } //countries and states if (_customerSettings.CountryEnabled) { model.AvailableCountries.Add(new SelectListItem() { Text = _localizationService.GetResource("Address.SelectCountry"), Value = "0" }); foreach (var c in _countryService.GetAllCountries()) { model.AvailableCountries.Add(new SelectListItem() { Text = c.GetLocalized(x => x.Name), Value = c.Id.ToString(), Selected = c.Id == model.CountryId }); } if (_customerSettings.StateProvinceEnabled) { //states var states = _stateProvinceService.GetStateProvincesByCountryId(model.CountryId).ToList(); if (states.Count > 0) { foreach (var s in states) model.AvailableStates.Add(new SelectListItem() { Text = s.GetLocalized(x => x.Name), Value = s.Id.ToString(), Selected = (s.Id == model.StateProvinceId) }); } else model.AvailableStates.Add(new SelectListItem() { Text = _localizationService.GetResource("Address.OtherNonUS"), Value = "0" }); } } model.DisplayVatNumber = _taxSettings.EuVatEnabled; model.VatNumberStatusNote = ((VatNumberStatus)customer.GetAttribute<int>(SystemCustomerAttributeNames.VatNumberStatusId)) .GetLocalizedEnum(_localizationService, _workContext); model.GenderEnabled = _customerSettings.GenderEnabled; model.DateOfBirthEnabled = _customerSettings.DateOfBirthEnabled; model.CompanyEnabled = _customerSettings.CompanyEnabled; model.CompanyRequired = _customerSettings.CompanyRequired; model.StreetAddressEnabled = _customerSettings.StreetAddressEnabled; model.StreetAddressRequired = _customerSettings.StreetAddressRequired; model.StreetAddress2Enabled = _customerSettings.StreetAddress2Enabled; model.StreetAddress2Required = _customerSettings.StreetAddress2Required; model.ZipPostalCodeEnabled = _customerSettings.ZipPostalCodeEnabled; model.ZipPostalCodeRequired = _customerSettings.ZipPostalCodeRequired; model.CityEnabled = _customerSettings.CityEnabled; model.CityRequired = _customerSettings.CityRequired; model.CountryEnabled = _customerSettings.CountryEnabled; model.StateProvinceEnabled = _customerSettings.StateProvinceEnabled; model.PhoneEnabled = _customerSettings.PhoneEnabled; model.PhoneRequired = _customerSettings.PhoneRequired; model.FaxEnabled = _customerSettings.FaxEnabled; model.FaxRequired = _customerSettings.FaxRequired; model.NewsletterEnabled = _customerSettings.NewsletterEnabled; model.UsernamesEnabled = _customerSettings.UsernamesEnabled; model.AllowUsersToChangeUsernames = _customerSettings.AllowUsersToChangeUsernames; model.CheckUsernameAvailabilityEnabled = _customerSettings.CheckUsernameAvailabilityEnabled; model.SignatureEnabled = _forumSettings.ForumsEnabled && _forumSettings.SignaturesEnabled; //external authentication model.NumberOfExternalAuthenticationProviders = _openAuthenticationService .LoadActiveExternalAuthenticationMethods(_storeContext.CurrentStore.Id) .Count; foreach (var ear in _openAuthenticationService.GetExternalIdentifiersFor(customer)) { var authMethod = _openAuthenticationService.LoadExternalAuthenticationMethodBySystemName(ear.ProviderSystemName); if (authMethod == null || !authMethod.IsMethodActive(_externalAuthenticationSettings)) continue; model.AssociatedExternalAuthRecords.Add(new CustomerInfoModel.AssociatedExternalAuthModel() { Id = ear.Id, Email = ear.Email, ExternalIdentifier = ear.ExternalIdentifier, AuthMethodName = authMethod.GetLocalizedFriendlyName(_localizationService, _workContext.WorkingLanguage.Id) }); } #region Custom customer attributes var customerAttributes = _customerAttributeService.GetAllCustomerAttributes(); foreach (var attribute in customerAttributes) { var caModel = new CustomerAttributeModel() { Id = attribute.Id, Name = attribute.GetLocalized(x => x.Name), IsRequired = attribute.IsRequired, AttributeControlType = attribute.AttributeControlType, }; if (attribute.ShouldHaveValues()) { //values var caValues = _customerAttributeService.GetCustomerAttributeValues(attribute.Id); foreach (var caValue in caValues) { var caValueModel = new CustomerAttributeValueModel() { Id = caValue.Id, Name = caValue.GetLocalized(x => x.Name), IsPreSelected = caValue.IsPreSelected }; caModel.Values.Add(caValueModel); } } //set already selected attributes string selectedCustomerAttributes = customer.GetAttribute<string>(SystemCustomerAttributeNames.CustomCustomerAttributes, _genericAttributeService); switch (attribute.AttributeControlType) { case AttributeControlType.DropdownList: case AttributeControlType.RadioList: case AttributeControlType.Checkboxes: { if (!String.IsNullOrEmpty(selectedCustomerAttributes)) { //clear default selection foreach (var item in caModel.Values) item.IsPreSelected = false; //select new values var selectedCaValues = _customerAttributeParser.ParseCustomerAttributeValues(selectedCustomerAttributes); foreach (var caValue in selectedCaValues) foreach (var item in caModel.Values) if (caValue.Id == item.Id) item.IsPreSelected = true; } } break; case AttributeControlType.ReadonlyCheckboxes: { //do nothing //values are already pre-set } break; case AttributeControlType.TextBox: case AttributeControlType.MultilineTextbox: { if (!String.IsNullOrEmpty(selectedCustomerAttributes)) { var enteredText = _customerAttributeParser.ParseValues(selectedCustomerAttributes, attribute.Id); if (enteredText.Count > 0) caModel.DefaultValue = enteredText[0]; } } break; case AttributeControlType.ColorSquares: case AttributeControlType.Datepicker: case AttributeControlType.FileUpload: default: //not supported attribute control types break; } model.CustomerAttributes.Add(caModel); } #endregion model.NavigationModel = GetCustomerNavigationModel(customer); model.NavigationModel.SelectedTab = CustomerNavigationEnum.Info; }
protected virtual void PrepareCustomerInfoModel(CustomerInfoModel model, Customer customer, bool excludeProperties, string overrideCustomCustomerAttributesXml = "") { if (model == null) throw new ArgumentNullException("model"); if (customer == null) throw new ArgumentNullException("customer"); model.AllowCustomersToSetTimeZone = _dateTimeSettings.AllowCustomersToSetTimeZone; foreach (var tzi in _dateTimeHelper.GetSystemTimeZones()) model.AvailableTimeZones.Add(new SelectListItem { Text = tzi.DisplayName, Value = tzi.Id, Selected = (excludeProperties ? tzi.Id == model.TimeZoneId : tzi.Id == _dateTimeHelper.CurrentTimeZone.Id) }); if (!excludeProperties) { model.VatNumber = customer.GetAttribute<string>(SystemCustomerAttributeNames.VatNumber); model.FirstName = customer.GetAttribute<string>(SystemCustomerAttributeNames.FirstName); model.LastName = customer.GetAttribute<string>(SystemCustomerAttributeNames.LastName); model.Gender = customer.GetAttribute<string>(SystemCustomerAttributeNames.Gender); var dateOfBirth = customer.GetAttribute<DateTime?>(SystemCustomerAttributeNames.DateOfBirth); if (dateOfBirth.HasValue) { model.DateOfBirthDay = dateOfBirth.Value.Day; model.DateOfBirthMonth = dateOfBirth.Value.Month; model.DateOfBirthYear = dateOfBirth.Value.Year; } model.Company = customer.GetAttribute<string>(SystemCustomerAttributeNames.Company); model.StreetAddress = customer.GetAttribute<string>(SystemCustomerAttributeNames.StreetAddress); model.StreetAddress2 = customer.GetAttribute<string>(SystemCustomerAttributeNames.StreetAddress2); model.ZipPostalCode = customer.GetAttribute<string>(SystemCustomerAttributeNames.ZipPostalCode); model.City = customer.GetAttribute<string>(SystemCustomerAttributeNames.City); model.CountryId = customer.GetAttribute<int>(SystemCustomerAttributeNames.CountryId); model.StateProvinceId = customer.GetAttribute<int>(SystemCustomerAttributeNames.StateProvinceId); model.Phone = customer.GetAttribute<string>(SystemCustomerAttributeNames.Phone); model.Fax = customer.GetAttribute<string>(SystemCustomerAttributeNames.Fax); //newsletter var newsletter = _newsLetterSubscriptionService.GetNewsLetterSubscriptionByEmailAndStoreId(customer.Email, _storeContext.CurrentStore.Id); model.Newsletter = newsletter != null && newsletter.Active; model.Signature = customer.GetAttribute<string>(SystemCustomerAttributeNames.Signature); model.Email = customer.Email; model.Username = customer.Username; } else { if (_customerSettings.UsernamesEnabled && !_customerSettings.AllowUsersToChangeUsernames) model.Username = customer.Username; } //countries and states if (_customerSettings.CountryEnabled) { model.AvailableCountries.Add(new SelectListItem { Text = _localizationService.GetResource("Address.SelectCountry"), Value = "0" }); foreach (var c in _countryService.GetAllCountries(_workContext.WorkingLanguage.Id)) { model.AvailableCountries.Add(new SelectListItem { Text = c.GetLocalized(x => x.Name), Value = c.Id.ToString(), Selected = c.Id == model.CountryId }); } if (_customerSettings.StateProvinceEnabled) { //states var states = _stateProvinceService.GetStateProvincesByCountryId(model.CountryId, _workContext.WorkingLanguage.Id).ToList(); if (states.Count > 0) { model.AvailableStates.Add(new SelectListItem { Text = _localizationService.GetResource("Address.SelectState"), Value = "0" }); foreach (var s in states) { model.AvailableStates.Add(new SelectListItem { Text = s.GetLocalized(x => x.Name), Value = s.Id.ToString(), Selected = (s.Id == model.StateProvinceId) }); } } else { bool anyCountrySelected = model.AvailableCountries.Any(x => x.Selected); model.AvailableStates.Add(new SelectListItem { Text = _localizationService.GetResource(anyCountrySelected ? "Address.OtherNonUS" : "Address.SelectState"), Value = "0" }); } } } model.DisplayVatNumber = _taxSettings.EuVatEnabled; model.VatNumberStatusNote = ((VatNumberStatus)customer.GetAttribute<int>(SystemCustomerAttributeNames.VatNumberStatusId)) .GetLocalizedEnum(_localizationService, _workContext); model.GenderEnabled = _customerSettings.GenderEnabled; model.DateOfBirthEnabled = _customerSettings.DateOfBirthEnabled; model.DateOfBirthRequired = _customerSettings.DateOfBirthRequired; model.CompanyEnabled = _customerSettings.CompanyEnabled; model.CompanyRequired = _customerSettings.CompanyRequired; model.StreetAddressEnabled = _customerSettings.StreetAddressEnabled; model.StreetAddressRequired = _customerSettings.StreetAddressRequired; model.StreetAddress2Enabled = _customerSettings.StreetAddress2Enabled; model.StreetAddress2Required = _customerSettings.StreetAddress2Required; model.ZipPostalCodeEnabled = _customerSettings.ZipPostalCodeEnabled; model.ZipPostalCodeRequired = _customerSettings.ZipPostalCodeRequired; model.CityEnabled = _customerSettings.CityEnabled; model.CityRequired = _customerSettings.CityRequired; model.CountryEnabled = _customerSettings.CountryEnabled; model.CountryRequired = _customerSettings.CountryRequired; model.StateProvinceEnabled = _customerSettings.StateProvinceEnabled; model.StateProvinceRequired = _customerSettings.StateProvinceRequired; model.PhoneEnabled = _customerSettings.PhoneEnabled; model.PhoneRequired = _customerSettings.PhoneRequired; model.FaxEnabled = _customerSettings.FaxEnabled; model.FaxRequired = _customerSettings.FaxRequired; model.NewsletterEnabled = _customerSettings.NewsletterEnabled; model.UsernamesEnabled = _customerSettings.UsernamesEnabled; model.AllowUsersToChangeUsernames = _customerSettings.AllowUsersToChangeUsernames; model.CheckUsernameAvailabilityEnabled = _customerSettings.CheckUsernameAvailabilityEnabled; model.SignatureEnabled = _forumSettings.ForumsEnabled && _forumSettings.SignaturesEnabled; //external authentication model.NumberOfExternalAuthenticationProviders = _openAuthenticationService .LoadActiveExternalAuthenticationMethods(_storeContext.CurrentStore.Id) .Count; foreach (var ear in _openAuthenticationService.GetExternalIdentifiersFor(customer)) { var authMethod = _openAuthenticationService.LoadExternalAuthenticationMethodBySystemName(ear.ProviderSystemName); if (authMethod == null || !authMethod.IsMethodActive(_externalAuthenticationSettings)) continue; model.AssociatedExternalAuthRecords.Add(new CustomerInfoModel.AssociatedExternalAuthModel { Id = ear.Id, Email = ear.Email, ExternalIdentifier = ear.ExternalIdentifier, AuthMethodName = authMethod.GetLocalizedFriendlyName(_localizationService, _workContext.WorkingLanguage.Id) }); } //custom customer attributes var customAttributes = PrepareCustomCustomerAttributes(customer, overrideCustomCustomerAttributesXml); customAttributes.ForEach(model.CustomerAttributes.Add); }
public void Should_have_error_when_fax_is_null_or_empty_based_on_required_setting() { var model = new CustomerInfoModel(); //required var validator = new CustomerInfoValidator(_localizationService, new CustomerSettings() { FaxEnabled = true, FaxRequired = true }); model.Fax = null; validator.ShouldHaveValidationErrorFor(x => x.Fax, model); model.Fax = ""; validator.ShouldHaveValidationErrorFor(x => x.Fax, model); //not required validator = new CustomerInfoValidator(_localizationService, new CustomerSettings() { FaxEnabled = true, FaxRequired = false }); model.Fax = null; validator.ShouldNotHaveValidationErrorFor(x => x.Fax, model); model.Fax = ""; validator.ShouldNotHaveValidationErrorFor(x => x.Fax, model); }
public ActionResult Info(CustomerInfoModel model, FormCollection form) { if (!_workContext.CurrentCustomer.IsRegistered()) return new HttpUnauthorizedResult(); var customer = _workContext.CurrentCustomer; //custom customer attributes var customerAttributesXml = ParseCustomCustomerAttributes(form); var customerAttributeWarnings = _customerAttributeParser.GetAttributeWarnings(customerAttributesXml); foreach (var error in customerAttributeWarnings) { ModelState.AddModelError("", error); } try { if (ModelState.IsValid) { //username if (_customerSettings.UsernamesEnabled && this._customerSettings.AllowUsersToChangeUsernames) { if (!customer.Username.Equals(model.Username.Trim(), StringComparison.InvariantCultureIgnoreCase)) { //change username _customerRegistrationService.SetUsername(customer, model.Username.Trim()); //re-authenticate _authenticationService.SignIn(customer, true); } } //email if (!customer.Email.Equals(model.Email.Trim(), StringComparison.InvariantCultureIgnoreCase)) { //change email _customerRegistrationService.SetEmail(customer, model.Email.Trim()); //re-authenticate (if usernames are disabled) if (!_customerSettings.UsernamesEnabled) { _authenticationService.SignIn(customer, true); } } //properties if (_dateTimeSettings.AllowCustomersToSetTimeZone) { _genericAttributeService.SaveAttribute(customer, SystemCustomerAttributeNames.TimeZoneId, model.TimeZoneId); } //VAT number if (_taxSettings.EuVatEnabled) { var prevVatNumber = customer.GetAttribute<string>(SystemCustomerAttributeNames.VatNumber); _genericAttributeService.SaveAttribute(customer, SystemCustomerAttributeNames.VatNumber, model.VatNumber); if (prevVatNumber != model.VatNumber) { string vatName; string vatAddress; var vatNumberStatus = _taxService.GetVatNumberStatus(model.VatNumber, out vatName, out vatAddress); _genericAttributeService.SaveAttribute(customer, SystemCustomerAttributeNames.VatNumberStatusId, (int)vatNumberStatus); //send VAT number admin notification if (!String.IsNullOrEmpty(model.VatNumber) && _taxSettings.EuVatEmailAdminWhenNewVatSubmitted) _workflowMessageService.SendNewVatSubmittedStoreOwnerNotification(customer, model.VatNumber, vatAddress, _localizationSettings.DefaultAdminLanguageId); } } //form fields if (_customerSettings.GenderEnabled) _genericAttributeService.SaveAttribute(customer, SystemCustomerAttributeNames.Gender, model.Gender); _genericAttributeService.SaveAttribute(customer, SystemCustomerAttributeNames.FirstName, model.FirstName); _genericAttributeService.SaveAttribute(customer, SystemCustomerAttributeNames.LastName, model.LastName); if (_customerSettings.DateOfBirthEnabled) { DateTime? dateOfBirth = model.ParseDateOfBirth(); _genericAttributeService.SaveAttribute(customer, SystemCustomerAttributeNames.DateOfBirth, dateOfBirth); } if (_customerSettings.CompanyEnabled) _genericAttributeService.SaveAttribute(customer, SystemCustomerAttributeNames.Company, model.Company); if (_customerSettings.StreetAddressEnabled) _genericAttributeService.SaveAttribute(customer, SystemCustomerAttributeNames.StreetAddress, model.StreetAddress); if (_customerSettings.StreetAddress2Enabled) _genericAttributeService.SaveAttribute(customer, SystemCustomerAttributeNames.StreetAddress2, model.StreetAddress2); if (_customerSettings.ZipPostalCodeEnabled) _genericAttributeService.SaveAttribute(customer, SystemCustomerAttributeNames.ZipPostalCode, model.ZipPostalCode); if (_customerSettings.CityEnabled) _genericAttributeService.SaveAttribute(customer, SystemCustomerAttributeNames.City, model.City); if (_customerSettings.CountryEnabled) _genericAttributeService.SaveAttribute(customer, SystemCustomerAttributeNames.CountryId, model.CountryId); if (_customerSettings.CountryEnabled && _customerSettings.StateProvinceEnabled) _genericAttributeService.SaveAttribute(customer, SystemCustomerAttributeNames.StateProvinceId, model.StateProvinceId); if (_customerSettings.PhoneEnabled) _genericAttributeService.SaveAttribute(customer, SystemCustomerAttributeNames.Phone, model.Phone); if (_customerSettings.FaxEnabled) _genericAttributeService.SaveAttribute(customer, SystemCustomerAttributeNames.Fax, model.Fax); //newsletter if (_customerSettings.NewsletterEnabled) { //save newsletter value var newsletter = _newsLetterSubscriptionService.GetNewsLetterSubscriptionByEmailAndStoreId(customer.Email, _storeContext.CurrentStore.Id); if (newsletter != null) { if (model.Newsletter) { newsletter.Active = true; _newsLetterSubscriptionService.UpdateNewsLetterSubscription(newsletter); } else _newsLetterSubscriptionService.DeleteNewsLetterSubscription(newsletter); } else { if (model.Newsletter) { _newsLetterSubscriptionService.InsertNewsLetterSubscription(new NewsLetterSubscription { NewsLetterSubscriptionGuid = Guid.NewGuid(), Email = customer.Email, Active = true, StoreId = _storeContext.CurrentStore.Id, CreatedOnUtc = DateTime.UtcNow }); } } } if (_forumSettings.ForumsEnabled && _forumSettings.SignaturesEnabled) _genericAttributeService.SaveAttribute(customer, SystemCustomerAttributeNames.Signature, model.Signature); //save customer attributes _genericAttributeService.SaveAttribute(_workContext.CurrentCustomer, SystemCustomerAttributeNames.CustomCustomerAttributes, customerAttributesXml); return RedirectToRoute("CustomerInfo"); } } catch (Exception exc) { ModelState.AddModelError("", exc.Message); } //If we got this far, something failed, redisplay form PrepareCustomerInfoModel(model, customer, true, customerAttributesXml); return View(model); }
public void Should_not_have_error_when_fax_is_specified() { var validator = new CustomerInfoValidator(_localizationService, new CustomerSettings() { FaxEnabled = true }); var model = new CustomerInfoModel(); model.Fax = "Fax"; validator.ShouldNotHaveValidationErrorFor(x => x.Fax, model); }