From 1ec76e812f697dd2bdd7fdaa8285c0502d2e8dda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A5=D0=B0=D1=80=D1=87=D0=B5=D0=BD=D0=BA=D0=BE=20=D0=92?= =?UTF-8?q?=D0=BB=D0=B0=D0=B4=D0=B8=D0=BC=D0=B8=D1=80?= Date: Tue, 21 Dec 2021 16:36:28 +0500 Subject: [PATCH] CS2-99: Fixed well fact end date depending on well state --- AsbCloudApp/Data/StatOperationsDto.cs | 4 ++-- .../OperationsStatService.cs | 16 ++++++++++------ 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/AsbCloudApp/Data/StatOperationsDto.cs b/AsbCloudApp/Data/StatOperationsDto.cs index ac4496f1..90f221ac 100644 --- a/AsbCloudApp/Data/StatOperationsDto.cs +++ b/AsbCloudApp/Data/StatOperationsDto.cs @@ -7,12 +7,12 @@ namespace AsbCloudApp.Data /// /// Дата и время начала /// - public DateTime Start { get; set; } + public DateTime? Start { get; set; } /// /// Дата и время окончания /// - public DateTime End { get; set; } + public DateTime? End { get; set; } /// /// Глубина, м diff --git a/AsbCloudInfrastructure/Services/WellOperationService/OperationsStatService.cs b/AsbCloudInfrastructure/Services/WellOperationService/OperationsStatService.cs index 687788c7..4ec0ddd9 100644 --- a/AsbCloudInfrastructure/Services/WellOperationService/OperationsStatService.cs +++ b/AsbCloudInfrastructure/Services/WellOperationService/OperationsStatService.cs @@ -186,7 +186,7 @@ namespace AsbCloudInfrastructure.Services.WellOperationService return statWellDto; statWellDto.Sections = CalcSectionsStats(wellOperations); - statWellDto.Total = GetStatTotal(wellOperations); + statWellDto.Total = GetStatTotal(wellOperations, well.IdState); return statWellDto; } @@ -219,14 +219,18 @@ namespace AsbCloudInfrastructure.Services.WellOperationService return sections; } - private static PlanFactBase GetStatTotal(IEnumerable operations) + private static PlanFactBase GetStatTotal(IEnumerable operations, + int idWellState) { var operationsPlan = operations.Where(o => o.IdType == idOperationTypePlan); var operationsFact = operations.Where(o => o.IdType == idOperationTypeFact); + var factEnd = CalcStat(operationsFact); + if (idWellState != 2) + factEnd.End = null; var section = new PlanFactBase { Plan = CalcStat(operationsPlan), - Fact = CalcStat(operationsFact), + Fact = factEnd, }; return section; } @@ -240,7 +244,7 @@ namespace AsbCloudInfrastructure.Services.WellOperationService return CalcStat(sectionOperations); } - + private static StatOperationsDto CalcStat(IEnumerable operations) { if (!operations.Any()) @@ -250,8 +254,8 @@ namespace AsbCloudInfrastructure.Services.WellOperationService var section = new StatOperationsDto { - Start = operations.First().DateStart, - End = operations.Max(o => (o.DateStart.AddHours(o.DurationHours))), + Start = operations.FirstOrDefault()?.DateStart, + End = operations.Max(o => o.DateStart.AddHours(o.DurationHours)), WellDepthStart = operations.Min(o => o.DepthStart), WellDepthEnd = operations.Max(o => o.DepthStart), Rop = CalcROP(operations),