using Microsoft.EntityFrameworkCore; using PARR.Domain.Constants; using PARR.Domain.Entities.Base; using PARR.Domain.Entities.JobEntities; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace PARR.Domain.Entities.Unit { [Table("Units", Schema = DatabaseSchemas.Unit)] [Comment("Таблица с ЭК")] [Index(nameof(Name), IsUnique = true)] public class Unit : IBaseEntity { [Key] public Guid Id { get; set; } public DateTimeOffset DateCreated { get; set; } [NotMapped] public DateTimeOffset? DateModified { get; set; } /// /// ЭК /// public required string Name { get; set; } public DateTimeOffset? LastLogon { get; set; } [NotMapped] public BaseFields? BaseFields { get { if (UnitValues.Any()) { var result = new BaseFields(); result.IP = UnitValues.FirstOrDefault(t => t.Field?.AihitName == "IP_АДРЕС")?.Value?.Value; result.ResponseArea = UnitValues.FirstOrDefault(t => t.Field?.AihitName == "ЗО_РГ")?.Value?.Value; result.WorkGroup = UnitValues.FirstOrDefault(t => t.Field?.AihitName == "РАБОЧАЯ_ГР_ОТВ_ЗА_ЭК")?.Value?.Value; result.Status = UnitValues.FirstOrDefault(t => t.Field?.AihitName == "СТАТУС")?.Value?.Value; result.NotUnique = UnitValues.FirstOrDefault(t => t.Field?.AihitName == "НЕУНИКАЛЬНЫЙ_ЭК")?.Value?.Value; return result; } return null; } } public ICollection UnitValues { get; set; } = new HashSet(); /// /// Получить всех родителей /// [InverseProperty(nameof(UnitInUnit.ChildUnit))] public ICollection ParentUnits { get; set; } = new HashSet(); /// /// Получить детей /// [InverseProperty(nameof(UnitInUnit.ParentUnit))] public ICollection ChildUnits { get; set; } = new HashSet(); /// /// Связь с шаблонами. Один ко многим /// public ICollection