using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Web; using EnVisage.Code; using System.Web.Mvc; namespace EnVisage.Models { [Bind(Include = "Id,UserName,FirstName,LastName,Email,Phone,PreferredResourceAllocation,Discriminator")] public class UserModel :IBaseModel { public UserModel() { this.PasswordResetRequests = new HashSet(); this.User2Team = new HashSet(); this.AspNetRoles = new HashSet(); } public UserModel(AspNetUser dbObj) { if (dbObj == null) { Id = Guid.Empty; return; } if (!string.IsNullOrEmpty(dbObj.Id)) { Id = Guid.Parse(dbObj.Id); } else { Id = Guid.Empty; } UserName = dbObj.UserName; FirstName = dbObj.FirstName; LastName = dbObj.LastName; Email = dbObj.Email; PasswordHash = dbObj.PasswordHash; Phone = dbObj.Phone; PreferredResourceAllocation = dbObj.PreferredResourceAllocation; AspNetRoles = dbObj.AspNetRoles; Discriminator = dbObj.Discriminator; PasswordResetRequests = dbObj.PasswordResetRequests; PreferredTotalsDisplaying = dbObj.PreferredTotalsDisplaying; SecurityStamp = dbObj.SecurityStamp; Type = dbObj.Type; User2Team = dbObj.User2Team; } [Display(Name = "User Name")] [Required] [Remote("IsUnique", "User", HttpMethod = "POST", AdditionalFields = "Id", ErrorMessage = "The user name entered is already in use please try a different user name")] [RegularExpression(@"^[0-9a-zA-Z]+$", ErrorMessage = "Please use alphanumeric characters only.")] public string UserName { get; set; } public Guid Id { get; set; } public string PasswordHash { get; set; } public string SecurityStamp { get; set; } public string Discriminator { get; set; } [Required] [Display(Name = "Email Address")] [EmailAddress(ErrorMessage = "Invalid Email Address")] public string Email { get; set; } [Display(Name = "Phone Number")] public string Phone { get; set; } public short Type { get; set; } public bool PreferredResourceAllocation { get; set; } public bool PreferredTotalsDisplaying { get; set; } [Required] [Display(Name = "First Name")] public string FirstName { get; set; } [Required] [Display(Name = "Last Name")] public string LastName { get; set; } public virtual ICollection PasswordResetRequests { get; set; } public virtual ICollection User2Team { get; set; } public virtual ICollection AspNetRoles { get; set; } /// /// Copies data from model to DAL object. /// /// A target DAL object. public void CopyTo(AspNetUser dbObj) { if (dbObj == null) throw new ArgumentNullException(); string _ID = Id.ToString(); if (Id == Guid.Empty) _ID = null; if (string.IsNullOrEmpty(dbObj.Id) && !string.IsNullOrEmpty(_ID)) dbObj.Id = Id.ToString(); dbObj.UserName = UserName; dbObj.FirstName = FirstName; dbObj.LastName = LastName; dbObj.Email = Email; dbObj.PasswordHash = PasswordHash; dbObj.Phone = Phone; dbObj.PreferredResourceAllocation = PreferredResourceAllocation; dbObj.AspNetRoles = AspNetRoles; dbObj.Discriminator = Discriminator; dbObj.PasswordResetRequests = PasswordResetRequests; dbObj.PreferredTotalsDisplaying = PreferredTotalsDisplaying; dbObj.SecurityStamp = SecurityStamp; dbObj.Type = Type; dbObj.User2Team = User2Team; } } }