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_have_error_when_email_is_null_or_empty() { var validator = new CustomerInfoValidator(_localizationService, 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_email_is_wrong_format() { var validator = new CustomerInfoValidator(_localizationService, new CustomerSettings()); var model = new CustomerInfoModel(); model.Email = "adminexample.com"; validator.ShouldHaveValidationErrorFor(x => x.Email, model); }
public void Should_not_have_error_when_streetaddress_is_specified() { var validator = new CustomerInfoValidator(_localizationService, 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, new CustomerSettings() { StreetAddress2Enabled = true }); var model = new CustomerInfoModel(); model.ZipPostalCode = "zip"; validator.ShouldNotHaveValidationErrorFor(x => x.ZipPostalCode, 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_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_company_is_specified() { var validator = new CustomerInfoValidator(_localizationService, new CustomerSettings() { CompanyEnabled = true }); var model = new CustomerInfoModel(); model.Company = "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_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_have_error_when_streetaddress_is_null_or_empty_based_on_required_setting() { var model = new CustomerInfoModel(); //required var validator = new CustomerInfoValidator(_localizationService, 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, new CustomerSettings() { StreetAddressEnabled = true, StreetAddressRequired = false }); model.StreetAddress = null; validator.ShouldNotHaveValidationErrorFor(x => x.StreetAddress, model); model.StreetAddress = ""; validator.ShouldNotHaveValidationErrorFor(x => x.StreetAddress, 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 required."); //username if (_customerSettings.UsernamesEnabled && this._customerSettings.AllowUsersToChangeUsernames) { if (String.IsNullOrEmpty(model.Username)) ModelState.AddModelError("", "Username is required."); } 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 = 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) { //save newsletter value var newsletter = _newsLetterSubscriptionService.GetNewsLetterSubscriptionByEmail(customer.Email); 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, CreatedOnUtc = DateTime.UtcNow }); } } } if (_forumSettings.ForumsEnabled && _forumSettings.SignaturesEnabled) _genericAttributeService.SaveAttribute(customer, SystemCustomerAttributeNames.Signature, model.Signature); return RedirectToRoute("CustomerInfo"); } } 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); //newsletter var newsletter = _newsLetterSubscriptionService.GetNewsLetterSubscriptionByEmail(customer.Email); 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 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) }); } model.NavigationModel = GetCustomerNavigationModel(customer); model.NavigationModel.SelectedTab = CustomerNavigationEnum.Info; }