using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Web; using EnVisage.Code; namespace EnVisage.Models { public class ViewModel : IBaseModel { public Guid Id { get; set; } [Required] [MaxLength(100)] [Display(Name="Name")] public string Name { get; set; } [Display(Name = "Number of Teams")] public int TeamCount { get; set; } public string backController{ get; set; } public string backAction { get; set; } [Required] [UIHint("MultipleSelect")] [Display(Name = "Watchers")] public IList Watchers { get; set; } [EitherOfRequired("Companies", "At least one Team or Business Unit must me selected", "", true)] [UIHint("MultipleSelect")] [Display(Name = "Teams")] public IList Teams { get; set; } [UIHint("MultipleSelect")] [Display(Name = "Business Units")] public IList Companies { get; set; } public IEnumerable AvailableUsers { get { EnVisageEntities DbContext = new EnVisageEntities(); return DbContext.AspNetUsers; } } public ViewModel() { this.Watchers = new List(); this.Teams = new List(); this.Companies = new List(); } /// /// Casts a obect to the object of type . /// /// A object. /// A object filled with data from db. public static explicit operator ViewModel(View obj) { if (obj == null) return null; var model = new ViewModel { Id = obj.Id, Name = obj.Name, TeamCount = obj.Team2View.Count }; model.TrimStringProperties(); return model; } /// /// Copies data from model to DAL object. /// /// A target DAL object. public void CopyTo(View dbObj) { if (dbObj == null) throw new ArgumentNullException(); dbObj.Name = Name; } } /// /// An UI representation of client to be displayed as list items /// public class ViewListModel { public Guid Id { get; set; } public string Name { get; set; } /// /// Gets or sets a value indicating that View is virtual. It is set only if this is an virtual company view, otherwise it is null. /// public Guid? CompanyId { get; set; } } }