EnVisageOnline/Main-RMO/Source/EnVisage/Models/UserModel.cs

121 lines
4.3 KiB
C#

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<AspNetUser>
{
public UserModel()
{
this.PasswordResetRequests = new HashSet<PasswordResetRequest>();
this.User2Team = new HashSet<User2Team>();
this.AspNetRoles = new HashSet<AspNetRole>();
}
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<PasswordResetRequest> PasswordResetRequests { get; set; }
public virtual ICollection<User2Team> User2Team { get; set; }
public virtual ICollection<AspNetRole> AspNetRoles { get; set; }
/// <summary>
/// Copies data from model to DAL object.
/// </summary>
/// <param name="dbObj">A target DAL object.</param>
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;
}
}
}