using System; using DataModel.Models; using Newtonsoft.Json; using Newtonsoft.Json.Converters; namespace DataModel.ViewModels { /// /// View model for search /// public class SearchViewModel { /// /// PK ID of search /// public int ID { get; set; } /// /// User name of user that created search /// public string UserName { get; set; } /// /// User-friendly name for search /// public string Name { get; set; } /// /// Current search status /// [JsonConverter(typeof(StringEnumConverter))] public SearchStatus Status { get; set; } /// /// Timestamp search was submitted /// public DateTime? SubmitDT { get; set; } /// /// Timestamp search was started /// public DateTime? StartDT { get; set; } /// /// Timestamp search was completed /// public DateTime? EndDT { get; set; } /// /// Search critera /// public SearchCriteriaViewModel Criteria { get; set; } /// /// Constructor /// public SearchViewModel() { Criteria = new SearchCriteriaViewModel(); } /// /// Constructor /// /// Search specifications to copy public SearchViewModel(Search search) : this() { if (search == null) { return; } ID = search.ID; UserName = search.UserName; Name = search.Name; Status = search.Status; SubmitDT = search.SubmitDT; StartDT = search.StartDT; EndDT = search.EndDT; Criteria = new SearchCriteriaViewModel(search.Criteria); } /// /// Converts the view model into standard model /// /// Compressed search model public Search ToModel() { return new Search() { ID = ID, UserName = UserName, Name = Name, Status = Status, Criteria = Criteria.ToModel(), SubmitDT = SubmitDT, StartDT = StartDT, EndDT = EndDT }; } } }