diff --git a/PARR.DAL/TransformServices/EsppScheduleTransformService.cs b/PARR.DAL/TransformServices/EsppScheduleTransformService.cs index dcbf24d2..bfc3e8fa 100644 --- a/PARR.DAL/TransformServices/EsppScheduleTransformService.cs +++ b/PARR.DAL/TransformServices/EsppScheduleTransformService.cs @@ -1,4 +1,5 @@ -using Microsoft.Extensions.Logging; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Logging; using PARR.Constants; using PARR.DAL.Contracts; using PARR.DAL.DomainModels; @@ -134,13 +135,17 @@ namespace PARR.DAL.TransformServices public async Task GetNextDateAsync(Guid applicationInWorkId, DateTimeOffset lastRun) { - var appInWork = await applicationsInWorkService.GetAsync(applicationInWorkId); + var appInWork = await applicationsInWorkService.Get() + .Include(aiw => aiw.EsppSchValues) + .ThenInclude(esv => esv.EsppSchTypeValue) + .ThenInclude(etv => etv!.DistributionPeriod) + .FirstOrDefaultAsync(t => t.Id == applicationInWorkId); var esppSchedule = await GetEsppScheduleAsync(applicationInWorkId); if (appInWork!.IsAutoDistributionEnabled) { - var period = esppSchedule!.Values.FirstOrDefault()!.Value!.DistributionPeriod; + var period = appInWork.EsppSchValues.FirstOrDefault()?.EsppSchTypeValue?.DistributionPeriod; var periodType = ParseDistributionPeriodType(period!.Type); return GetNextDateForDistributionRun(lastRun, periodType, period.Duration); diff --git a/PARR.TemplateDistributor/TemplateDistributor.cs b/PARR.TemplateDistributor/TemplateDistributor.cs index ba3ce3e4..bd4cd3ae 100644 --- a/PARR.TemplateDistributor/TemplateDistributor.cs +++ b/PARR.TemplateDistributor/TemplateDistributor.cs @@ -46,7 +46,7 @@ namespace PARR.TemplateDistributor // сохранить в БД //applicationInWorkId = Guid.Parse("bdfefd77-bce3-4f62-a484-5042c06f4467"); - //var appInWork = await applicationsInWorkService.Get() + var appInWork = await applicationsInWorkService.GetAsync(applicationInWorkId ); // .Include(aiw => aiw.EsppSchValues) // .ThenInclude(esv => esv.EsppSchTypeValue) // .ThenInclude(etv => etv!.DistributionPeriod) @@ -69,6 +69,13 @@ namespace PARR.TemplateDistributor if (!values.Any()) continue; + //Обновляем сразу время при необходимости + values.ForEach(t=>{ + if (t.NextRun.TimeOfDay != appInWork!.ReferenceDate.TimeOfDay) + t.NextRun = new DateTimeOffset(t.NextRun.DateTime, new TimeSpan(appInWork!.ReferenceDate.Hour, appInWork!.ReferenceDate.Minute, appInWork!.ReferenceDate.Second)); + }); + + var distrTemplates = await DistributeTemplateAsync(values, applicationInWorkId, wgId); } @@ -108,7 +115,10 @@ namespace PARR.TemplateDistributor if (existingTemplates.Count > 0) templateToDistrib = GetTemplatesToDistribute(ref distrPlan, existingTemplates); - templateToDistrib.AddRange(templates); + templateToDistrib.AddRange(templates.Where(t=>existingTemplates.Any(et=>et.Id==t.Id)==false)); + + if (!templateToDistrib.Any()) + return new List