diff --git a/PARR.API/Contracts/V1/Responses/DistributionPeriodResponse.cs b/PARR.API/Contracts/V1/Responses/DistributionPeriodResponse.cs new file mode 100644 index 00000000..bbffb3bf --- /dev/null +++ b/PARR.API/Contracts/V1/Responses/DistributionPeriodResponse.cs @@ -0,0 +1,13 @@ +namespace PARR.API.Contracts.V1.Responses +{ + public class DistributionPeriodResponse + { + public Guid Id { get; set; } + + public required string Name { get; set; } + + public required string Duration { get; set; } + + public required string Type { get; set; } + } +} diff --git a/PARR.API/Contracts/V1/Responses/JobGroupDistributionConfigResponse.cs b/PARR.API/Contracts/V1/Responses/JobGroupDistributionConfigResponse.cs new file mode 100644 index 00000000..5c9a2b57 --- /dev/null +++ b/PARR.API/Contracts/V1/Responses/JobGroupDistributionConfigResponse.cs @@ -0,0 +1,11 @@ +namespace PARR.API.Contracts.V1.Responses +{ + public class JobGroupDistributionConfigResponse + { + public bool IsExcludeWeekends { get; set; } + + public bool IsGroupingByWorkGroup { get; set; } + + public DistributionPeriodResponse? Period { get; set; } + } +} diff --git a/PARR.API/Contracts/V1/Responses/JobGroupResponse.cs b/PARR.API/Contracts/V1/Responses/JobGroupResponse.cs index 5965b33b..6cba2dae 100644 --- a/PARR.API/Contracts/V1/Responses/JobGroupResponse.cs +++ b/PARR.API/Contracts/V1/Responses/JobGroupResponse.cs @@ -25,7 +25,10 @@ /// public FieldResponse? GroupingUnitField { get; set; } - // public bool IsAutoDistributionEnabled { get; set; } + /// + /// Включено автораспределение + /// + public bool IsAutoDistributionEnabled { get; set; } // public bool IsAgent { get; set; } @@ -55,6 +58,11 @@ /// public ScheduleExcludeTypeCalendarResponse? ScheduleExcludeTypeCalendar { get; set; } + /// + /// Настройки автораспределения + /// + public JobGroupDistributionConfigResponse? DistributionConfig { get; set; } + } public class JobGroupScheduleResponse @@ -65,4 +73,6 @@ public List? Values { get; set; } } + + } diff --git a/PARR.API/Contracts/V1/Responses/TemplateResponse.cs b/PARR.API/Contracts/V1/Responses/TemplateResponse.cs index a5d848b7..a21d5af8 100644 --- a/PARR.API/Contracts/V1/Responses/TemplateResponse.cs +++ b/PARR.API/Contracts/V1/Responses/TemplateResponse.cs @@ -75,5 +75,7 @@ public int OrderCount { get; set; } public TemplateStatusTypeResponse? StatusType { get; set; } + + public JobGroupDistributionConfigResponse? DistributionConfig { get; set; } } } diff --git a/PARR.API/Controllers/V1/JobGroupController.cs b/PARR.API/Controllers/V1/JobGroupController.cs index 09a4441a..68e8b4b5 100644 --- a/PARR.API/Controllers/V1/JobGroupController.cs +++ b/PARR.API/Controllers/V1/JobGroupController.cs @@ -86,7 +86,9 @@ namespace PARR.API.Controllers.V1 query = query.Where(t => t.GroupName.ToLower().Contains(filter.Name.ToLower())); if (filter.IsFull) - query = query.Include(t => t.Jobs).ThenInclude(t => t.Tnk); + query = query + .Include(t => t.Jobs).ThenInclude(t => t.Tnk) + .Include(t => t.DistributionConfig).ThenInclude(t => t.DistributionPeriod); var jobGroups = await groupService.GetPage(query, paginationFilter).ToListAsync(); @@ -119,6 +121,7 @@ namespace PARR.API.Controllers.V1 .Include(t => t.GroupingUnitField) .Include(t => t.ScheduleExcludeType) .Include(t => t.ScheduleExcludeTypeCalendar) + .Include(t => t.DistributionConfig).ThenInclude(t => t.DistributionPeriod) .FirstOrDefaultAsync(t => t.Id == id); if (jobGroup == null) @@ -187,6 +190,7 @@ namespace PARR.API.Controllers.V1 .Include(t => t.GroupingUnitField) .Include(t => t.ScheduleExcludeType) .Include(t => t.ScheduleExcludeTypeCalendar) + .Include(t => t.DistributionConfig).ThenInclude(t => t.DistributionPeriod) .FirstAsync(t => t.Id == jobGroup.Id); var locationUri = uriService.GetUri(ApiRoutes.JobGroup.Get, ApiRoutes.JobGroup.getParam, createdJobGroup.Id); @@ -290,6 +294,7 @@ namespace PARR.API.Controllers.V1 .Include(t => t.GroupingUnitField) .Include(t => t.ScheduleExcludeType) .Include(t => t.ScheduleExcludeTypeCalendar) + .Include(t => t.DistributionConfig).ThenInclude(t => t.DistributionPeriod) .FirstAsync(t => t.Id == orig.Id); var response = mapper.Map(updatedJobGroup); diff --git a/PARR.API/MappingProfiles/DomainToResponseProfile.cs b/PARR.API/MappingProfiles/DomainToResponseProfile.cs index 9286450b..b1772e7c 100644 --- a/PARR.API/MappingProfiles/DomainToResponseProfile.cs +++ b/PARR.API/MappingProfiles/DomainToResponseProfile.cs @@ -43,6 +43,7 @@ namespace PARR.API.MappingProfiles .ForMember(d => d.StatusType, o => o.MapFrom(s => s.StatusType)) .ForMember(d => d.ScheduleExcludeType, o => o.MapFrom(s => s.Job!.Group!.ScheduleExcludeType)) .ForMember(d => d.ScheduleExcludeTypeCalendar, o => o.MapFrom(s => s.Job!.Group!.ScheduleExcludeTypeCalendar)) + .ForMember(d => d.DistributionConfig, o => o.MapFrom(s => s.Job.Group.DistributionConfig)) ; // === Template === @@ -330,7 +331,6 @@ namespace PARR.API.MappingProfiles #endregion - #region Job CreateMap() @@ -368,9 +368,19 @@ namespace PARR.API.MappingProfiles CreateMap() .ForMember(d => d.ScheduleExcludeType, o => o.MapFrom(s => s.ScheduleExcludeType)) - .ForMember(d => d.ScheduleExcludeTypeCalendar, o => o.MapFrom(s => s.ScheduleExcludeTypeCalendar)); + .ForMember(d => d.ScheduleExcludeTypeCalendar, o => o.MapFrom(s => s.ScheduleExcludeTypeCalendar)) + .ForMember(d => d.DistributionConfig, o => o.MapFrom(s => s.DistributionConfig)); + #endregion + + #region JobGroupDistributionConfig + + CreateMap() + .ForMember(d => d.Period, o => o.MapFrom(s => s.DistributionPeriod)); + + CreateMap(); + #endregion #region ScheduleExcludeTypeCalendarResponse diff --git a/PARR.DAL/Services/Implementations/TemplateService.cs b/PARR.DAL/Services/Implementations/TemplateService.cs index d101f53e..afcad1d1 100644 --- a/PARR.DAL/Services/Implementations/TemplateService.cs +++ b/PARR.DAL/Services/Implementations/TemplateService.cs @@ -48,7 +48,11 @@ namespace PARR.DAL.Services.Implementations .ThenInclude(p => p!.Process) .Include(t => t.Job) .ThenInclude(t => t!.Group) - .ThenInclude(t => t!.GroupType); + .ThenInclude(t => t!.GroupType) + .Include(t => t.Job) + .ThenInclude(t => t!.Group) + .ThenInclude(t => t.DistributionConfig) + .ThenInclude(t => t.DistributionPeriod); } public override Task CreateAsync(Template obj)