using AutoMapper; using PARR.API.Authentication.Models; using PARR.API.Contracts.V1.Responses; using PARR.API.MappingProfiles.Resolvers; using PARR.Common.Domain; using PARR.DAL.DomainModels; using PARR.DAL.Models; using PARR.DAL.Models.Job; using PARR.DAL.Models.Unit; namespace PARR.API.MappingProfiles { public class DomainToResponseProfile : Profile { public DomainToResponseProfile() { #region Template // --- Template --- CreateMap() .ForMember(d => d.Job, o => o.MapFrom(s => s.Job)) .ForMember(d => d.Unit, o => o.MapFrom(s => s.Unit)) .ForMember(d => d.Process, o => o.MapFrom(s => s.Job!.Tnk!.Subprocess!.Process)) .ForMember(d => d.Subprocess, o => o.MapFrom(s => s.Job!.Tnk!.Subprocess)) .ForMember(d => d.Tnk, o => o.MapFrom(s => s.Job!.Tnk)) .ForMember(d => d.ShortDescription, o => o.MapFrom(s => s.Job!.Group!.ShortDescription)) .ForMember(d => d.FullDescription, o => o.MapFrom(s => s.Job!.Group!.FullDescription)) .ForMember(d => d.Solution, o => o.MapFrom(s => s.Job!.Group!.Solution)) .ForMember(d => d.TemplateDuration, o => o.MapFrom(s => s.Job!.Group!.TemplateDuration)) .ForMember(d => d.Initiator, o => o.MapFrom()) .ForMember(d => d.ClosingCode, o => o.MapFrom()) .ForMember(d => d.Category, o => o.MapFrom()) .ForMember(d => d.SyncStatus, o => o.MapFrom(s => s.RobotConfigurations.OrderBy(t => t.RobotCode))) .ForMember(d => d.Schedule, o => o.MapFrom()) .ForMember(d => d.Agent, o => o.MapFrom(s => s.Job!.Group!)) //.ForMember(d => d.NextRun, o => o.MapFrom(s => s.ApplicationsInWork!.NextRun)) //.ForMember(d => d.LastRun, o => o.MapFrom(s => s.ApplicationsInWork!.LastRun)) .ForMember(d => d.NextRun, o => o.MapFrom(s => s.NextRun)) .ForMember(d => d.LastRun, o => o.MapFrom(s => s.LastRun)) .ForMember(d => d.OrderCount, o => o.MapFrom(s => s.Orders.Count())) .ForMember(d => d.IsAutoDistributionEnabled, o => o.MapFrom(s => s.Job!.Group!.IsAutoDistributionEnabled)) .ForMember(d => d.StatusType, o => o.MapFrom(s => s.StatusType)); // === Template === CreateMap(); #endregion CreateMap() .ForMember(d => d.IsAgent, o => o.MapFrom(s => s.IsAgent)) .ForMember(d => d.Name, o => o.MapFrom(s => s.AgentName)) .ForMember(d => d.Script, o => o.MapFrom(s => s.AgentScript)) .ForMember(d => d.TimeOutSec, o => o.MapFrom(s => s.AgentTimeOutSec)); CreateMap(); #region StatusTypeResponse CreateMap(); #endregion #region Tnk CreateMap(); CreateMap() .Include(); CreateMap(); CreateMap() .Include(); CreateMap(); //CreateMap() // .Include(); //CreateMap(); #endregion CreateMap() .ForMember(t => t.Type, o => o.MapFrom(s => s.ApplicationType)); CreateMap(); #region Host CreateMap() .Include() .Include() .ForMember(d => d.Status, o => o.MapFrom(s => s.EkStatus!.Name)) .ForMember(d => d.EkStatus, o => o.MapFrom(s => s.EkStatus)) .ForMember(d => d.ResponseArea, o => o.MapFrom(s => s.ResponseArea!.Name)) .ForMember(d => d.WorkGroupName, o => o.MapFrom(s => s.WorkGroup!.Name)) .ForMember(d => d.WorkGroup, o => o.MapFrom(s => s.WorkGroup)) .ForMember(d => d.EkResponseArea, o => o.MapFrom(s => s.ResponseArea)); CreateMap(); CreateMap() .ForMember(d => d.Applications, o => o.MapFrom(s => s.ApplicationsInHosts.Select(t => t.Application).OrderBy(t => t.Name))); #endregion #region Unit CreateMap(); CreateMap() .ForMember(d => d.Name, o => o.MapFrom(s => (string.IsNullOrEmpty(s.DisplayName)) ? s.AihitName : s.DisplayName)); CreateMap(); CreateMap() .Include() .Include() .ForMember(d => d.Name, o => o.MapFrom(s => s.Name)); CreateMap() .Include() .ForMember(d => d.Attributes, o => o.MapFrom(s => s.UnitValues.GroupBy(g => g.Field) .Select(fieldGroup => new AttributeResponse { Field = new FieldResponse { Id = fieldGroup.Key!.Id, Name = string.IsNullOrEmpty(fieldGroup.Key.DisplayName) ? fieldGroup.Key.AihitName : fieldGroup.Key.DisplayName, IsMultipleValue = fieldGroup.Key.IsMultipleValue, Code = fieldGroup.Key.Code }, Values = fieldGroup.Select(s => new UnitFieldValueResponse { Id = s.ValueId, Value = s.Value!.Value }).ToList() } ).OrderBy(o => o.Field.Name) )); CreateMap() .ForMember(d => d.Childrens, o => o.MapFrom(s => s.ChildUnits.Select(t => t.ChildUnit).OrderBy(t => t.Name))) .ForMember(d => d.Parents, o => o.MapFrom(s => s.ParentUnits.Select(t => t.ParentUnit).OrderBy(t => t.Name))); //.ForMember(d => d.Attributes, o => o.MapFrom(s => s.UnitValues.GroupBy(g => g.Field) // .Select(fieldGroup => new AttributeResponse // { // Field = new FieldResponse // { // Id = fieldGroup.Key!.Id, // Name = string.IsNullOrEmpty(fieldGroup.Key.DisplayName) ? fieldGroup.Key.AihitName : fieldGroup.Key.DisplayName, // IsMultipleValue = fieldGroup.Key.IsMultipleValue // }, // Values = fieldGroup.Select(s => new UnitFieldValueResponse { Id = s.ValueId, Value = s.Value!.Value }).ToList() // } // ).OrderBy(o => o.Field.Name) //)); #endregion #region WorkGroup CreateMap(); #endregion #region Robot CreateMap(); CreateMap(); CreateMap() .ForMember(d => d.Level, o => o.MapFrom(s => s.RobotHistoryLevel)) .ForMember(d => d.Date, o => o.MapFrom(s => s.DateCreated)) .ForMember(d => d.TaskId, o => o.MapFrom(s => s.RobotConfigurationId)) .ForMember(d => d.TaskStatus, o => o.MapFrom(s => s.StatusTask)) .ForMember(d => d.TemplateId, o => o.MapFrom(s => s.RobotConfiguration!.TemplateId)) .ForMember(d => d.TemplateName, o => o.MapFrom(s => s.RobotConfiguration!.Template!.Name)) .ForMember(d => d.Robot, o => o.MapFrom(s => s.RobotConfiguration!.Robot)); #endregion #region RobotConfiguration // --- RobotConfiguration --- CreateMap() .Include() .Include() .ForMember(d => d.TaskId, o => o.MapFrom(s => s.Id)); CreateMap() .ForMember(d => d.IsActive, o => o.MapFrom(s => s.Template!.IsActiveTemplate)) .ForMember(d => d.ClosingCode, o => o.MapFrom()) .ForMember(d => d.FullDescription, o => o.MapFrom(s => s.Template!.Job!.Group!.FullDescription)) .ForMember(d => d.ShortDescription, o => o.MapFrom(s => s.Template!.Job!.Group!.ShortDescription)) .ForMember(d => d.Solution, o => o.MapFrom(s => s.Template!.Job!.Group!.Solution)) //.ForMember(d => d.ResponseArea, o => o.MapFrom(s => s.Template!.Host!.ResponseArea!.Name)) //ЗО берем у группы а не у хоста .ForMember(d => d.ResponseArea, o => o.MapFrom(s => s.Template!.Unit!.BaseFields!.ResponseArea)) .ForMember(d => d.TemplateDuration, o => o.MapFrom(s => s.Template!.Job!.Group!.TemplateDuration)) .ForMember(d => d.Initiator, o => o.MapFrom()) .ForMember(d => d.Category, o => o.MapFrom()) .ForMember(d => d.WorkGroup, o => o.MapFrom(s => s.Template!.Job!.WorkGroupMask)) .ForMember(d => d.Ek, o => o.MapFrom(s => s.Template!.Unit!.Name)) .ForMember(d => d.Name, o => o.MapFrom(s => s.Template!.Name)) .ForMember(d => d.ProcessName, o => o.MapFrom(s => s.Template!.Job!.Tnk!.Subprocess!.Process!.Name)) .ForMember(d => d.ProcessEsppId, o => o.MapFrom(s => s.Template!.Job!.Tnk!.Subprocess!.Process!.EsppId)) .ForMember(d => d.SubprocessName, o => o.MapFrom(s => s.Template!.Job!.Tnk!.Subprocess!.Name)) .ForMember(d => d.SubprocessEsppId, o => o.MapFrom(s => s.Template!.Job!.Tnk!.Subprocess!.EsppId)) .ForMember(d => d.TnkName, o => o.MapFrom(s => s.Template!.Job!.Tnk!.Name)) .ForMember(d => d.TnkEsppId, o => o.MapFrom(s => s.Template!.Job!.Tnk!.EsppId.HasValue ? s.Template!.Job!.Tnk!.EsppId.Value.ToString() : string.Empty )) .ForMember(d => d.WorkName, o => o.MapFrom(s => s.Template!.Job!.WorkName)) //.ForMember(d => d.WorkEsppId, o => o.MapFrom(s => s.Template!.Job!.EsppId)) .ForMember(d => d.ScheduleEsppId, o => o.MapFrom(s => s.Template!.ScheduleEsppId)); CreateMap() .ForMember(d => d.EsppId, o => o.MapFrom(s => s.Template!.ScheduleEsppId)) .ForMember(d => d.ScheduleName, o => o.MapFrom(s => s.Template!.Name)) .ForMember(d => d.IsActive, o => o.MapFrom(s => s.Template!.IsActiveSchedule)) .ForMember(d => d.ResponseArea, o => o.MapFrom(s => s.Template!.Unit!.BaseFields!.ResponseArea)) .ForMember(d => d.TemplateName, o => o.MapFrom(s => s.Template!.Name)) .ForMember(d => d.TemplateId, o => o.MapFrom(s => s.Template!.Id)) .ForMember(d => d.WorkGroup, o => o.MapFrom(s => s.Template!.Job!.WorkGroupMask)) .ForMember(d => d.Exclude, o => o.MapFrom()) .ForMember(d => d.ExcludeCalendar, o => o.MapFrom()) .ForMember(d => d.Timezone, o => o.MapFrom()) .ForMember(d => d.RepeatRange, o => o.MapFrom()) //todo: GenerationTime //.ForMember(d => d.GenerationTime, o => o.MapFrom(s => EsppScheduleHelpers.GetGenerationTime(s.Template!.NextRun))) .ForMember(d => d.GenerationTime, o => o.MapFrom()) //.ForMember(d => d.NextStart, o => o.MapFrom(s => EsppScheduleHelpers.GetNextRun(s.Template!.NextRun))) .ForMember(d => d.NextStart, o => o.MapFrom()) .ForMember(d => d.ScheduleType, o => o.MapFrom(s => s.Template!.Job!.Group!.EsppSchValues!.First()!.EsppSchTypeConfig!.EsppSchTypeSchedule!.Description)) .ForMember(d => d.ScheduleTypeCode, o => o.MapFrom(s => s.Template!.Job!.Group!.EsppSchValues!.First()!.EsppSchTypeConfig!.EsppSchTypeSchedule!.Id)) .ForMember(d => d.Schedule, o => o.MapFrom()); CreateMap(); CreateMap(); CreateMap() .ForMember(d => d.Robot, o => o.MapFrom(s => s.Robot)) .ForMember(d => d.TaskStatus, o => o.MapFrom(s => s.TaskStatus)) .ForMember(d => d.RobotStatus, o => o.MapFrom(s => s.RobotStatus)); // === RobotConfiguration === #endregion #region EsppSch CreateMap() .Include(); CreateMap() .ForMember(d => d.Configs, o => o.MapFrom(s => s.EsppSchTypeConfigs.OrderBy(t => t.Order))); CreateMap() .ForMember(d => d.Type, o => o.MapFrom(s => s.EsppSchType)); CreateMap() .Include(); CreateMap() .ForMember(d => d.Values, o => o.MapFrom(s => s.EsppSchTypeValues.OrderBy(t => t.Order))); CreateMap(); CreateMap() .ForMember(d => d.Order, o => o.MapFrom(s => s.Order)) .ForMember(d => d.Value, o => o.MapFrom(s => s.Value)) .ForMember(d => d.Type, o => o.MapFrom(s => s.Type)); #endregion EsppSch #region AgentHistory CreateMap(); CreateMap() .ForMember(d => d.Date, o => o.MapFrom(s => s.DateCreated)) .ForMember(d => d.Level, o => o.MapFrom(s => s.AgentHistoryLevel)) .ForMember(d => d.TemplateName, o => o.MapFrom(s => s.Template!.Name)); #endregion #region User CreateMap() .Include(); CreateMap(); CreateMap() .ForMember(t => t.Roles, o => o.MapFrom(s => s.Roles.Select(t => t.Role).OrderBy(t => t!.Description))); CreateMap(); CreateMap(); #endregion #region Order CreateMap(); CreateMap() .Include() .Include(); CreateMap() .ForMember(s => s.Status, o => o.MapFrom(s => s.OrderStatus)) .ForMember(s => s.NextStatus, o => o.MapFrom(s => s.NextStatus)); CreateMap() .ForMember(s => s.Status, o => o.MapFrom(s => s.OrderStatus)) .ForMember(s => s.NextStatus, o => o.MapFrom(s => s.NextStatus)); #endregion #region Job CreateMap() .Include(); CreateMap() .ForMember(d => d.AutoControl, o => o.MapFrom(s => s.AutoControl)); CreateMap() .ForMember(d => d.UnitFilterMask, o => o.MapFrom(s => s.UnitFilter)) .ForMember(d => d.FieldFilters, o => o.MapFrom(s => s.FieldFilters.OrderBy(o => o.UnitField!.AihitName))) .ForMember(d => d.RelationshipFilters, o => o.MapFrom(s => s.RelationshipFilters.OrderBy(o => o.UnitField!.AihitName))); CreateMap(); CreateMap() .ForMember(d => d.Field, o => o.MapFrom(s => s.UnitField)); CreateMap() .ForMember(d => d.Field, o => o.MapFrom(s => s.UnitField)); CreateMap(); #endregion #region JobGroup CreateMap() .Include() .ForMember(d => d.GroupType, o => o.MapFrom(s => s.GroupType)); CreateMap() .ForMember(d => d.Name, o => o.MapFrom(s => s.GroupName)); CreateMap(); #endregion #region JobGroupType CreateMap(); #endregion //#region JobAutoControl //CreateMap() // .Include(); //CreateMap() // .ForMember(d => d.EkMasks, o => o.MapFrom(s => s.JobEkMasks.OrderBy(t => t.Name))) // .ForMember(d => d.EnabledEkStatuses, o => o.MapFrom(s => s.JobAutoControlInEkStatuses.Select(t => t.EkStatus).OrderBy(t => t.Name))) // .ForMember(d => d.WorkGroups, o => o.MapFrom(s => s.ApplicationsInWork!.WorkGroups.Select(t => t.WorkGroup).OrderBy(t => t.Name))); //#endregion #region ResponseArea CreateMap(); #endregion //CreateMap(); CreateMap(); CreateMap(); #region TemplateHistory CreateMap() .ForMember(d => d.TemplateId, o => o.MapFrom(s => s.ParentId)) .ForMember(d => d.Initiator, o => o.MapFrom(s => s)); #endregion #region Initiator CreateMap() .ForMember(d => d.Ip, o => o.MapFrom(s => s.InitiatorIp)) .ForMember(d => d.Comment, o => o.MapFrom(s => s.InitiatorComment)) .ForMember(d => d.ParrComponentId, o => o.MapFrom(s => s.InitiatorParrComponentId)) .ForMember(d => d.ParrComponent, o => o.MapFrom()) .ForMember(d => d.User, o => o.MapFrom()); #endregion } } }