using AutoMapper; using PARR.API.Authentication.Models; using PARR.API.Contracts.V1.Responses; using PARR.API.MappingProfiles.Resolvers; using PARR.Common.Domain; using PARR.Constants.Shortcodes; using PARR.DAL.DomainModels; using PARR.DAL.Extensions; using PARR.DAL.Models; namespace PARR.API.MappingProfiles { public class DomainToResponseProfile : Profile { public DomainToResponseProfile() { #region Template // --- Template --- CreateMap() .ForMember(d => d.Work, o => o.MapFrom(s => s.ApplicationsInWork!.Work)) .ForMember(d => d.Host, o => o.MapFrom(s => s.Host)) .ForMember(d => d.Process, o => o.MapFrom(s => s.ApplicationsInWork!.Work!.Tnk!.Subprocess!.Process)) .ForMember(d => d.Subprocess, o => o.MapFrom(s => s.ApplicationsInWork!.Work!.Tnk!.Subprocess)) .ForMember(d => d.Tnk, o => o.MapFrom(s => s.ApplicationsInWork!.Work!.Tnk)) .ForMember(d => d.ShortDescription, o => o.MapFrom(s => s.ApplicationsInWork!.ShortDescription)) .ForMember(d => d.FullDescription, o => o.MapFrom(s => s.ApplicationsInWork!.FullDescription)) .ForMember(d => d.Solution, o => o.MapFrom(s => s.ApplicationsInWork!.Solution)) .ForMember(d => d.TemplateDuration, o => o.MapFrom(s => s.ApplicationsInWork!.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.ApplicationsInWork)) //.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.ApplicationsInWork!.IsAutoDistributionEnabled)); // === 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 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 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!.ApplicationsInWork!.FullDescription)) .ForMember(d => d.ShortDescription, o => o.MapFrom(s => s.Template!.ApplicationsInWork!.ShortDescription.ApplyShortcode(ShortcodeEnum.EK, s.Template!.Host!.Ek))) .ForMember(d => d.Solution, o => o.MapFrom(s => s.Template!.ApplicationsInWork!.Solution)) //.ForMember(d => d.ResponseArea, o => o.MapFrom(s => s.Template!.Host!.ResponseArea!.Name)) //ЗО берем у группы а не у хоста .ForMember(d => d.ResponseArea, o => o.MapFrom(s => s.Template!.Host!.WorkGroup!.ResponseArea!.Name)) .ForMember(d => d.TemplateDuration, o => o.MapFrom(s => s.Template!.ApplicationsInWork!.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!.Host!.WorkGroup!.Name)) .ForMember(d => d.Ek, o => o.MapFrom(s => s.Template!.Host!.Ek)) .ForMember(d => d.Name, o => o.MapFrom(s => s.Template!.Name)) .ForMember(d => d.ProcessName, o => o.MapFrom(s => s.Template!.ApplicationsInWork!.Work!.Tnk!.Subprocess!.Process!.Name)) .ForMember(d => d.ProcessEsppId, o => o.MapFrom(s => s.Template!.ApplicationsInWork!.Work!.Tnk!.Subprocess!.Process!.EsppId)) .ForMember(d => d.SubprocessName, o => o.MapFrom(s => s.Template!.ApplicationsInWork!.Work!.Tnk!.Subprocess!.Name)) .ForMember(d => d.SubprocessEsppId, o => o.MapFrom(s => s.Template!.ApplicationsInWork!.Work!.Tnk!.Subprocess!.EsppId)) .ForMember(d => d.TnkName, o => o.MapFrom(s => s.Template!.ApplicationsInWork!.Work!.Tnk!.Name.ApplyShortcode(ShortcodeEnum.EK, s.Template!.Host!.Ek))) .ForMember(d => d.TnkEsppId, o => o.MapFrom(s => s.Template!.ApplicationsInWork!.Work!.Tnk!.EsppId)) .ForMember(d => d.WorkName, o => o.MapFrom(s => s.Template!.ApplicationsInWork!.Work!.Name.ApplyShortcode(ShortcodeEnum.EK, s.Template!.Host!.Ek))) .ForMember(d => d.WorkEsppId, o => o.MapFrom(s => s.Template!.ApplicationsInWork!.Work!.EsppId)); 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!.Host!.ResponseArea!.Name)) .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!.Host!.WorkGroup!.Name)) .ForMember(d => d.Exclude, 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!.ApplicationsInWork!.EsppSchValues!.First()!.EsppSchTypeConfig!.EsppSchTypeSchedule!.Description)) .ForMember(d => d.ScheduleTypeCode, o => o.MapFrom(s => s.Template!.ApplicationsInWork!.EsppSchValues!.First()!.EsppSchTypeConfig!.EsppSchTypeSchedule!.Id)) .ForMember(d => d.Schedule, o => o.MapFrom()); // === RobotConfiguration === #endregion 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)); #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 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)); #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 ApplicationInWork CreateMap() .Include() .ForMember(d => d.Application, o => o.MapFrom(s => s.Application)); CreateMap(); CreateMap() .ForMember(d => d.Work, o => o.MapFrom(s => s.Work)) .ForMember(d => d.TemplatesCount, o => o.MapFrom(s => s.Templates.Count())) .ForMember(d => d.Schedule, o => o.MapFrom()) .ForMember(d => d.WorkGroups, o => o.MapFrom(s => s.WorkGroups.OrderBy(t => t.WorkGroup.Name).Select(t => t.WorkGroup))) .ForMember(d => d.AutoControl, o => o.MapFrom(s => s.JobAutoControl)); #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 } } }