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)