using System.ComponentModel.DataAnnotations; using Microsoft.AspNetCore.Mvc.Rendering; using Nop.Core.Domain.Catalog; using Nop.Web.Framework.Models; using Nop.Web.Framework.Mvc.ModelBinding; namespace Nop.Web.Areas.Admin.Models.Customers; /// /// Represents a customer model /// public partial record CustomerModel : BaseNopEntityModel, IAclSupportedModel { #region Ctor public CustomerModel() { AvailableTimeZones = new List(); SendEmail = new SendEmailModel() { SendImmediately = true }; SendPm = new SendPmModel(); SelectedCustomerRoleIds = new List(); AvailableCustomerRoles = new List(); AvailableCountries = new List(); AvailableStates = new List(); AvailableVendors = new List(); CustomerAttributes = new List(); AvailableNewsletterSubscriptionStores = new List(); SelectedNewsletterSubscriptionStoreIds = new List(); AddRewardPoints = new AddRewardPointsToCustomerModel(); CustomerRewardPointsSearchModel = new CustomerRewardPointsSearchModel(); CustomerAddressSearchModel = new CustomerAddressSearchModel(); CustomerOrderSearchModel = new CustomerOrderSearchModel(); CustomerShoppingCartSearchModel = new CustomerShoppingCartSearchModel(); CustomerActivityLogSearchModel = new CustomerActivityLogSearchModel(); CustomerBackInStockSubscriptionSearchModel = new CustomerBackInStockSubscriptionSearchModel(); CustomerAssociatedExternalAuthRecordsSearchModel = new CustomerAssociatedExternalAuthRecordsSearchModel(); } #endregion #region Properties public bool UsernamesEnabled { get; set; } [NopResourceDisplayName("Admin.Customers.Customers.Fields.Username")] public string Username { get; set; } [DataType(DataType.EmailAddress)] [NopResourceDisplayName("Admin.Customers.Customers.Fields.Email")] public string Email { get; set; } [NopResourceDisplayName("Admin.Customers.Customers.Fields.Password")] [DataType(DataType.Password)] public string Password { get; set; } [NopResourceDisplayName("Admin.Customers.Customers.Fields.Vendor")] public int VendorId { get; set; } public IList AvailableVendors { get; set; } //form fields & properties public bool GenderEnabled { get; set; } [NopResourceDisplayName("Admin.Customers.Customers.Fields.Gender")] public string Gender { get; set; } public bool NeutralGenderEnabled { get; set; } public bool FirstNameEnabled { get; set; } [NopResourceDisplayName("Admin.Customers.Customers.Fields.FirstName")] public string FirstName { get; set; } public bool LastNameEnabled { get; set; } [NopResourceDisplayName("Admin.Customers.Customers.Fields.LastName")] public string LastName { get; set; } [NopResourceDisplayName("Admin.Customers.Customers.Fields.FullName")] public string FullName { get; set; } public bool DateOfBirthEnabled { get; set; } [UIHint("DateNullable")] [NopResourceDisplayName("Admin.Customers.Customers.Fields.DateOfBirth")] public DateTime? DateOfBirth { get; set; } public bool CompanyEnabled { get; set; } [NopResourceDisplayName("Admin.Customers.Customers.Fields.Company")] public string Company { get; set; } public bool StreetAddressEnabled { get; set; } [NopResourceDisplayName("Admin.Customers.Customers.Fields.StreetAddress")] public string StreetAddress { get; set; } public bool StreetAddress2Enabled { get; set; } [NopResourceDisplayName("Admin.Customers.Customers.Fields.StreetAddress2")] public string StreetAddress2 { get; set; } public bool ZipPostalCodeEnabled { get; set; } [NopResourceDisplayName("Admin.Customers.Customers.Fields.ZipPostalCode")] public string ZipPostalCode { get; set; } public bool CityEnabled { get; set; } [NopResourceDisplayName("Admin.Customers.Customers.Fields.City")] public string City { get; set; } public bool CountyEnabled { get; set; } [NopResourceDisplayName("Admin.Customers.Customers.Fields.County")] public string County { get; set; } public bool CountryEnabled { get; set; } [NopResourceDisplayName("Admin.Customers.Customers.Fields.Country")] public int CountryId { get; set; } public IList AvailableCountries { get; set; } public bool StateProvinceEnabled { get; set; } [NopResourceDisplayName("Admin.Customers.Customers.Fields.StateProvince")] public int StateProvinceId { get; set; } public IList AvailableStates { get; set; } public bool PhoneEnabled { get; set; } [DataType(DataType.PhoneNumber)] [NopResourceDisplayName("Admin.Customers.Customers.Fields.Phone")] public string Phone { get; set; } public bool FaxEnabled { get; set; } [DataType(DataType.PhoneNumber)] [NopResourceDisplayName("Admin.Customers.Customers.Fields.Fax")] public string Fax { get; set; } public List CustomerAttributes { get; set; } [NopResourceDisplayName("Admin.Customers.Customers.Fields.RegisteredInStore")] public string RegisteredInStore { get; set; } [NopResourceDisplayName("Admin.Customers.Customers.Fields.AdminComment")] public string AdminComment { get; set; } [NopResourceDisplayName("Admin.Customers.Customers.Fields.IsTaxExempt")] public bool IsTaxExempt { get; set; } [NopResourceDisplayName("Admin.Customers.Customers.Fields.Active")] public bool Active { get; set; } [NopResourceDisplayName("Admin.Customers.Customers.Fields.Affiliate")] public int AffiliateId { get; set; } [NopResourceDisplayName("Admin.Customers.Customers.Fields.Affiliate")] public string AffiliateName { get; set; } //time zone [NopResourceDisplayName("Admin.Customers.Customers.Fields.TimeZoneId")] public string TimeZoneId { get; set; } public bool AllowCustomersToSetTimeZone { get; set; } public IList AvailableTimeZones { get; set; } //EU VAT [NopResourceDisplayName("Admin.Customers.Customers.Fields.VatNumber")] public string VatNumber { get; set; } public string VatNumberStatusNote { get; set; } public bool DisplayVatNumber { get; set; } public bool DisplayRegisteredInStore { get; set; } //registration date [NopResourceDisplayName("Admin.Customers.Customers.Fields.CreatedOn")] public DateTime CreatedOn { get; set; } [NopResourceDisplayName("Admin.Customers.Customers.Fields.LastActivityDate")] public DateTime LastActivityDate { get; set; } //IP address [NopResourceDisplayName("Admin.Customers.Customers.Fields.IPAddress")] public string LastIpAddress { get; set; } [NopResourceDisplayName("Admin.Customers.Customers.Fields.LastVisitedPage")] public string LastVisitedPage { get; set; } //customer roles [NopResourceDisplayName("Admin.Customers.Customers.Fields.CustomerRoles")] public string CustomerRoleNames { get; set; } //binding with multi-factor authentication provider [NopResourceDisplayName("Admin.Customers.Customers.Fields.MultiFactorAuthenticationProvider")] public string MultiFactorAuthenticationProvider { get; set; } [NopResourceDisplayName("Admin.Customers.Customers.Fields.MustChangePassword")] public bool MustChangePassword { get; set; } public IList AvailableCustomerRoles { get; set; } [NopResourceDisplayName("Admin.Customers.Customers.Fields.CustomerRoles")] public IList SelectedCustomerRoleIds { get; set; } //newsletter subscriptions (per store) [NopResourceDisplayName("Admin.Customers.Customers.Fields.Newsletter")] public IList AvailableNewsletterSubscriptionStores { get; set; } [NopResourceDisplayName("Admin.Customers.Customers.Fields.Newsletter")] public IList SelectedNewsletterSubscriptionStoreIds { get; set; } //reward points history public bool DisplayRewardPointsHistory { get; set; } public AddRewardPointsToCustomerModel AddRewardPoints { get; set; } public CustomerRewardPointsSearchModel CustomerRewardPointsSearchModel { get; set; } //send email model public SendEmailModel SendEmail { get; set; } //send PM model public SendPmModel SendPm { get; set; } //send a private message public bool AllowSendingOfPrivateMessage { get; set; } //send the welcome message public bool AllowSendingOfWelcomeMessage { get; set; } //re-send the activation message public bool AllowReSendingOfActivationMessage { get; set; } //GDPR enabled public bool GdprEnabled { get; set; } public string AvatarUrl { get; set; } public CustomerAddressSearchModel CustomerAddressSearchModel { get; set; } public CustomerOrderSearchModel CustomerOrderSearchModel { get; set; } public CustomerShoppingCartSearchModel CustomerShoppingCartSearchModel { get; set; } public CustomerActivityLogSearchModel CustomerActivityLogSearchModel { get; set; } public CustomerBackInStockSubscriptionSearchModel CustomerBackInStockSubscriptionSearchModel { get; set; } public CustomerAssociatedExternalAuthRecordsSearchModel CustomerAssociatedExternalAuthRecordsSearchModel { get; set; } #endregion #region Nested classes public partial record SendEmailModel : BaseNopModel { [NopResourceDisplayName("Admin.Customers.Customers.SendEmail.Subject")] public string Subject { get; set; } [NopResourceDisplayName("Admin.Customers.Customers.SendEmail.Body")] public string Body { get; set; } [NopResourceDisplayName("Admin.Customers.Customers.SendEmail.SendImmediately")] public bool SendImmediately { get; set; } [NopResourceDisplayName("Admin.Customers.Customers.SendEmail.DontSendBeforeDate")] [UIHint("DateTimeNullable")] public DateTime? DontSendBeforeDate { get; set; } } public partial record SendPmModel : BaseNopModel { [NopResourceDisplayName("Admin.Customers.Customers.SendPM.Subject")] public string Subject { get; set; } [NopResourceDisplayName("Admin.Customers.Customers.SendPM.Message")] public string Message { get; set; } } public partial record CustomerAttributeModel : BaseNopEntityModel { public CustomerAttributeModel() { Values = new List(); } public string Name { get; set; } public bool IsRequired { get; set; } /// /// Default value for textboxes /// public string DefaultValue { get; set; } public AttributeControlType AttributeControlType { get; set; } public IList Values { get; set; } } public partial record CustomerAttributeValueModel : BaseNopEntityModel { public string Name { get; set; } public bool IsPreSelected { get; set; } } #endregion }