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_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_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 ActionResult Info(CustomerInfoModel model) { if (!IsCurrentUserRegistered()) return new HttpUnauthorizedResult(); var customer = _workContext.CurrentCustomer; //email if (String.IsNullOrEmpty(model.Email)) ModelState.AddModelError("", "Email is not provided."); //username if (_customerSettings.UsernamesEnabled && this._customerSettings.AllowUsersToChangeUsernames) { if (String.IsNullOrEmpty(model.Username)) ModelState.AddModelError("", "Username is not provided."); } try { if (ModelState.IsValid) { //username if (_customerSettings.UsernamesEnabled && _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); } if (_customerSettings.CustomerNumberMethod != CustomerNumberMethod.Disabled) { var customerNumbers = _genericAttributeService.GetAttributes(SystemCustomerAttributeNames.CustomerNumber, "customer"); var currentCustomerNumber = customer.GetAttribute<string>(SystemCustomerAttributeNames.CustomerNumber); if (model.CustomerNumber != currentCustomerNumber && customerNumbers.Where(x => x.Value == model.CustomerNumber).Any()) { NotifyError("Common.CustomerNumberAlreadyExists"); } else { _genericAttributeService.SaveAttribute(customer, SystemCustomerAttributeNames.CustomerNumber, model.CustomerNumber); } } _genericAttributeService.SaveAttribute(customer, SystemCustomerAttributeNames.FirstName, model.FirstName); _genericAttributeService.SaveAttribute(customer, SystemCustomerAttributeNames.LastName, model.LastName); if (_customerSettings.DateOfBirthEnabled) { DateTime? dateOfBirth = null; try { dateOfBirth = new DateTime(model.DateOfBirthYear.Value, model.DateOfBirthMonth.Value, model.DateOfBirthDay.Value); } catch { } _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) { _newsLetterSubscriptionService.AddNewsLetterSubscriptionFor(model.Newsletter, customer.Email, _storeContext.CurrentStore.Id); } if (_forumSettings.ForumsEnabled && _forumSettings.SignaturesEnabled) { _genericAttributeService.SaveAttribute(customer, SystemCustomerAttributeNames.Signature, model.Signature); } return RedirectToAction("Info"); } } catch (Exception exc) { ModelState.AddModelError("", exc.Message); } //If we got this far, something failed, redisplay form PrepareCustomerInfoModel(model, customer, true); return View(model); }
public ActionResult Info() { if (!IsCurrentUserRegistered()) return new HttpUnauthorizedResult(); var customer = _workContext.CurrentCustomer; var model = new CustomerInfoModel(); PrepareCustomerInfoModel(model, customer, false); return View(model); }
protected 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); model.CustomerNumber = customer.GetAttribute<string>(SystemCustomerAttributeNames.CustomerNumber); //newsletter var newsletter = _newsLetterSubscriptionService.GetNewsLetterSubscriptionByEmail(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; model.DisplayCustomerNumber = _customerSettings.CustomerNumberMethod != CustomerNumberMethod.Disabled && _customerSettings.CustomerNumberVisibility != CustomerNumberVisibility.None; if (_customerSettings.CustomerNumberMethod != CustomerNumberMethod.Disabled && (_customerSettings.CustomerNumberVisibility == CustomerNumberVisibility.Editable || (_customerSettings.CustomerNumberVisibility == CustomerNumberVisibility.EditableIfEmpty && String.IsNullOrEmpty(model.CustomerNumber)))) { model.CustomerNumberEnabled = true; } else { model.CustomerNumberEnabled = false; } //external authentication 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 = _pluginMediator.GetLocalizedFriendlyName(authMethod.Metadata, _workContext.WorkingLanguage.Id) }); } model.NavigationModel = GetCustomerNavigationModel(customer); model.NavigationModel.SelectedTab = CustomerNavigationEnum.Info; }
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, 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, 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_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); }
public void Should_not_have_error_when_phone_is_specified() { var validator = new CustomerInfoValidator(_localizationService, new CustomerSettings() { PhoneEnabled = true }); var model = new CustomerInfoModel(); model.Phone = "Phone"; validator.ShouldNotHaveValidationErrorFor(x => x.Phone, 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_zippostalcode_is_specified() { var validator = new CustomerInfoValidator(_localizationService, new CustomerSettings() { StreetAddress2Enabled = true }); var model = new CustomerInfoModel(); model.ZipPostalCode = "zip"; validator.ShouldNotHaveValidationErrorFor(x => x.ZipPostalCode, 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, 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, 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 validator = new CustomerInfoValidator(_localizationService, new CustomerSettings() { StreetAddress2Enabled = true }); var model = new CustomerInfoModel(); model.StreetAddress2 = "Street address 2"; validator.ShouldNotHaveValidationErrorFor(x => x.StreetAddress2, model); }
public void Should_have_error_when_streetaddress2_is_null_or_empty_based_on_required_setting() { var model = new CustomerInfoModel(); //required var validator = new CustomerInfoValidator(_localizationService, new CustomerSettings() { StreetAddress2Enabled = true, StreetAddress2Required = true }); model.StreetAddress2 = null; validator.ShouldHaveValidationErrorFor(x => x.StreetAddress2, model); model.StreetAddress2 = ""; validator.ShouldHaveValidationErrorFor(x => x.StreetAddress2, model); //not required validator = new CustomerInfoValidator(_localizationService, new CustomerSettings() { StreetAddress2Enabled = true, StreetAddress2Required = false }); model.StreetAddress2 = null; validator.ShouldNotHaveValidationErrorFor(x => x.StreetAddress2, model); model.StreetAddress2 = ""; validator.ShouldNotHaveValidationErrorFor(x => x.StreetAddress2, model); }