Я пытался найти лучший способ смоделировать эту сущность, и я застреваю.Вот основной вариант использования / история:
У нас есть оборудование, прибывающее на место.Мы не узнаем, что это за оборудование, пока оно не прибудет.Как только оборудование прибывает на место, оно должно быть зарегистрировано как прибывающее, и было ли оно бездействующим или активным.Если он активен, пользователь должен отметить работу, выполненную оборудованием.Когда оборудование покидает площадку, это должно быть отмечено.
Я должен быть в состоянии легко спросить, есть ли какое-либо оборудование на площадке, какое оборудование ранее было на площадке и т. Д.
IЗастреваю на свидании.Я стараюсь не полагаться на выполнение задачи cron и отмечать оборудование как простаивающее, если оно не было помечено как простаивающее в определенную дату.Такое ощущение, что должен быть способ сделать это.Вот что я придумал:
public class Equipment {
public int Id { get; set; }
public Site Site { get; set; }
public DateTime Arrival { get; set; }
public DateTime Departure { get; set; }
public IList<EquipmentUtilization> EquipmentUtilizations { get; set; }
}
public class EquipmentUtilization {
public int Id { get; set; }
public Equipment Equipment { get; set; }
public DateTime ReportDate { get; set; }
public string WorkPerformed { get; set; }
}
Идея заключалась в том, что я мог бы выполнить запрос наподобие Site.Equipment.Where(x=>x.Departure == null)
, чтобы увидеть, какое оборудование все еще находится на месте.Если для определенной даты нет использования оборудования, предполагается, что оно не используется.Затем я мог бы установить DateTimeEnumerator:
public class DateTimeEnumerator : System.Collections.IEnumerable
{
private DateTime begin;
private DateTime end;
public DateTimeEnumerator ( DateTime begin , DateTime end )
{
this.begin = begin;
this.end = end;
}
public System.Collections.IEnumerator GetEnumerator()
{
for(DateTime date = begin; date < end; date = date.AddDays(1))
{
yield return date;
}
}
}
Построить список дат от даты прибытия до DateTime.Now или DepatureDate, если это не равно нулю.По некоторым причинам это кажется уродливым.Должен ли я поместить перечислитель DateTime внутрь объекта Equipment?Такое ощущение, что все это должно быть вместе или сделано каким-то другим способом, хотя это работает, если я его запустил.Предложения?