using Microsoft.EntityFrameworkCore;
using PARR.Domain.Entities.Base;
using PARR.Domain.Entities.RobotEntities;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace PARR.Domain.Entities
{
[Table("RobotConfigurations")]
[Index(nameof(TemplateId), nameof(RobotCode), IsUnique = true)]
[Index(nameof(TemplateId), nameof(TaskStatusCode))]
[Index(nameof(TemplateId), nameof(RobotStatusCode))]
public class RobotConfiguration : IBaseEntity
{
[Key]
public Guid Id { get; set; }
public DateTimeOffset DateCreated { get; set; }
[NotMapped]
public DateTimeOffset? DateModified { get; set; }
public Guid TemplateId { get; set; }
///
/// Идентификатор робота
///
public int RobotCode { get; set; }
///
/// Статус. Что нужно сделать роботу
///
public int TaskStatusCode { get; set; }
///
/// Статус работы робота
///
public int RobotStatusCode { get; set; }
///
/// Количество попыток выполнения задания роботом
///
public int AttemptsNumber { get; set; }
///
/// Последняя дата обновления статуса RobotStatusCode роботом
///
public DateTimeOffset? LastRobotStatusUpdated { get; set; }
[ForeignKey(nameof(TemplateId))]
public Template? Template { get; set; }
[ForeignKey(nameof(RobotCode))]
public Robot? Robot { get; set; }
[ForeignKey(nameof(TaskStatusCode))]
public RobotEntities.TaskStatus? TaskStatus { get; set; }
[ForeignKey(nameof(RobotStatusCode))]
public RobotStatus? RobotStatus { get; set; }
public ICollection RobotHistories { get; set; } = new HashSet();
}
}