using System.ComponentModel.DataAnnotations; using AutoMapper; using LeafWeb.Core.DAL; namespace LeafWeb.Web.ViewModels.LeafInput { public class CreateViewModel { private static readonly IMapper Mapper; [Display(Name = "Your name")] [Required(ErrorMessage = "Name required")] [RegularExpression(@"[A-Za-z().]+(\s+[A-Za-z().]+)+", ErrorMessage = "Please provide your full name")] public string Name { get; set; } [Display(Name = "Your email address")] [Required(ErrorMessage = "An email address is required")] [DataType(DataType.EmailAddress)] [RegularExpression(@"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}", ErrorMessage = "Must be an email address")] public string Email { get; set; } [Display(Name = "Confirm email address")] [Required(ErrorMessage = "Enter email exactly as above")] [Compare("Email")] public string EmailConfirm { get; set; } [Display(Name = "A unique identifier for this data")] [Required(ErrorMessage = "A unique identifier is required")] public string Identifier { get; set; } [Display(Name = "The site's name/Fluxnet ID, if known")] [Required(ErrorMessage = "The site's name is required")] public string SiteId { get; set; } [Display(Name = "Photosynthetic Pathways")] [Required(ErrorMessage = "A photosynthesis pathway must be chosen")] public SelectListViewModel PhotosynthesisType { get; set; } static CreateViewModel() { var config = new MapperConfiguration(cfg => { cfg.CreateMap() .ForMember(dest => dest.PhotosynthesisType, opt => opt.Ignore()); }); Mapper = config.CreateMapper(); } public Core.Models.LeafInput GetFileInput(DataService db) { var leafInput = new Core.Models.LeafInput(); Mapper.Map(this, leafInput); leafInput.PhotosynthesisType = db.GetPhotosynthesisType(PhotosynthesisType.Selected); return leafInput; } } }