using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using AutoMapper; using MileageTraker.Web.Attributes; using MileageTraker.Web.DAL; using MileageTraker.Web.Models; namespace MileageTraker.Web.ViewModels.User { public class CreateUserViewModel { [Required] [StringLength(64)] [InputSize("small")] public string Username { get; set; } [Required] [DataType(DataType.EmailAddress)] [RegularExpression(@"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}", ErrorMessage = "Must be an email address")] [InputSize("large")] public string Email { get; set; } [Required] [StringLength(128)] [RegularExpression(@"[A-Za-z().]+(\s+[A-Za-z().]+)+", ErrorMessage = "Need complete name")] [InputSize("medium")] public string FullName { get; set; } [Required, DataType(DataType.Password)] [StringLength(16, MinimumLength = 6)] public string Password { get; set; } public string[] Roles { get; set; } public IList AvailableRoles { get; set; } public IList SelectedRoles { get; set; } static CreateUserViewModel() { Mapper.CreateMap(); Mapper.CreateMap() .ConvertUsing( roleName => { using (var ds = new DataService()) { return ds.GetRoleByName(roleName); } }); } public Models.User ToUser() { var user = new Models.User(); Mapper.Map(this, user); return user; } } }