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
};
}
}
}