using Microsoft.EntityFrameworkCore; using PARR.DAL.Context; using PARR.DAL.Models.Base; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace PARR.DAL.Models.Unit { [Table("Units", Schema = DataContextSettings.Unit)] [Comment("Таблица с ЭК")] [Index(nameof(Name), IsUnique = true)] public class Unit : IBase { [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 UnitFields { get; set; } = new HashSet(); 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