diff --git a/AsbCloudApp/Data/DailyReport/DailyReportDto.cs b/AsbCloudApp/Data/DailyReport/DailyReportDto.cs index 0caeea30..7c1a1ea1 100644 --- a/AsbCloudApp/Data/DailyReport/DailyReportDto.cs +++ b/AsbCloudApp/Data/DailyReport/DailyReportDto.cs @@ -64,7 +64,7 @@ public class DailyReportDto : IId, /// /// Дата формирования отчёта /// - public DateTime Date { get; set; } + public DateOnly Date { get; set; } /// /// Дата последнего обновления diff --git a/AsbCloudApp/Repositories/IDailyReportRepository.cs b/AsbCloudApp/Repositories/IDailyReportRepository.cs index 6e59941d..39de97e5 100644 --- a/AsbCloudApp/Repositories/IDailyReportRepository.cs +++ b/AsbCloudApp/Repositories/IDailyReportRepository.cs @@ -29,5 +29,5 @@ public interface IDailyReportRepository : ICrudRepository /// /// /// - Task GetOrDefaultAsync(int idWell, DateTime date, CancellationToken cancellationToken); + Task GetOrDefaultAsync(int idWell, DateOnly date, CancellationToken cancellationToken); } \ No newline at end of file diff --git a/AsbCloudApp/Services/DailyReport/IDailyReportExportService.cs b/AsbCloudApp/Services/DailyReport/IDailyReportExportService.cs index fb9a897a..eb09874a 100644 --- a/AsbCloudApp/Services/DailyReport/IDailyReportExportService.cs +++ b/AsbCloudApp/Services/DailyReport/IDailyReportExportService.cs @@ -14,8 +14,8 @@ public interface IDailyReportExportService /// Экспортировать /// /// - /// + /// /// /// - Task<(string FileName, Stream File)> ExportAsync(int idWell, DateTime dailyReportDateStart, CancellationToken cancellationToken); + Task<(string FileName, Stream File)> ExportAsync(int idWell, DateOnly dailyReportDate, CancellationToken cancellationToken); } \ No newline at end of file diff --git a/AsbCloudApp/Services/DailyReport/IDailyReportService.cs b/AsbCloudApp/Services/DailyReport/IDailyReportService.cs index 44283a44..f0318025 100644 --- a/AsbCloudApp/Services/DailyReport/IDailyReportService.cs +++ b/AsbCloudApp/Services/DailyReport/IDailyReportService.cs @@ -21,7 +21,7 @@ public interface IDailyReportService /// /// /// - Task UpdateOrInsertAsync(int idWell, DateTime dateDailyReport, int idUser, TBlock editableBlock, + Task UpdateOrInsertAsync(int idWell, DateOnly dateDailyReport, int idUser, TBlock editableBlock, CancellationToken cancellationToken) where TBlock : ItemInfoDto; @@ -32,7 +32,7 @@ public interface IDailyReportService /// /// /// - Task GetAsync(int idWell, DateTime dateDailyReport, CancellationToken cancellationToken); + Task GetAsync(int idWell, DateOnly dateDailyReport, CancellationToken cancellationToken); /// /// Получить список суточных отчётов по скважине diff --git a/AsbCloudInfrastructure/Repository/DailyReportRepository.cs b/AsbCloudInfrastructure/Repository/DailyReportRepository.cs index fff15138..b82b0ce1 100644 --- a/AsbCloudInfrastructure/Repository/DailyReportRepository.cs +++ b/AsbCloudInfrastructure/Repository/DailyReportRepository.cs @@ -33,25 +33,14 @@ public class DailyReportRepository : CrudRepositoryBase d.IdWell == idWell); if (request.GeDate.HasValue) - { - var geDate = request.GeDate.Value.ToDateTime(TimeOnly.MinValue, DateTimeKind.Utc); - query = query.Where(d => d.Date >= geDate); - } - + query = query.Where(d => d.Date >= request.GeDate.Value); + if (request.LeDate.HasValue) - { - var leDate = request.LeDate.Value.ToDateTime(TimeOnly.MinValue, DateTimeKind.Utc); - query = query.Where(d => d.Date <= leDate); - } + query = query.Where(d => d.Date <= request.LeDate.Value); - if (request.SortFields?.Any() == true) - { - query = query.SortBy(request.SortFields); - } - else - { - query = query.OrderBy(d => d.Date); - } + query = request.SortFields?.Any() == true ? + query.SortBy(request.SortFields) : + query.OrderBy(d => d.Date); var entities = await query .Skip(skip) @@ -64,7 +53,7 @@ public class DailyReportRepository : CrudRepositoryBase GetOrDefaultAsync(int idWell, DateTime date, CancellationToken cancellationToken) + public async Task GetOrDefaultAsync(int idWell, DateOnly date, CancellationToken cancellationToken) { var entity = await GetQuery() .AsNoTracking() diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportExportService.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportExportService.cs index 7c1cb1bb..3148fbf3 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportExportService.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportExportService.cs @@ -89,9 +89,9 @@ public class DailyReportExportService : IDailyReportExportService this.dailyReportService = dailyReportService; } - public async Task<(string FileName, Stream File)> ExportAsync(int idWell, DateTime dailyReportDateStart, CancellationToken cancellationToken) + public async Task<(string FileName, Stream File)> ExportAsync(int idWell, DateOnly dailyReportDate, CancellationToken cancellationToken) { - var dailyReport = await dailyReportService.GetAsync(idWell, dailyReportDateStart, cancellationToken); + var dailyReport = await dailyReportService.GetAsync(idWell, dailyReportDate, cancellationToken); var stream = await GenerateFileAsync(dailyReport, cancellationToken); @@ -236,12 +236,16 @@ public class DailyReportExportService : IDailyReportExportService private static void AddFactWellOperationBlockToSheet(IXLWorksheet sheet, WellOperationBlockDto factWellOperationBlock) { + var rowCurrent = rowStartFactWellOperationBlock; + sheet.Cell(cellSectionDrillingHours).Value = factWellOperationBlock.SectionDrillingHours; foreach (var factOperation in factWellOperationBlock.WellOperations.OrderBy(w => w.CategoryName)) { - sheet.Cell(rowStartFactWellOperationBlock, columnWellOperationCategory).Value = factOperation.CategoryName; - sheet.Cell(rowStartFactWellOperationBlock, columnWellOperationDurationHours).Value = factOperation.DurationHours; + sheet.Cell(rowCurrent, columnWellOperationCategory).Value = factOperation.CategoryName; + sheet.Cell(rowCurrent, columnWellOperationDurationHours).Value = factOperation.DurationHours; + + rowCurrent++; } } diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportService.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportService.cs index 78e7f67e..0a3d6df4 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportService.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportService.cs @@ -51,7 +51,7 @@ public class DailyReportService : IDailyReportService this.detectedOperationService = detectedOperationService; } - public async Task UpdateOrInsertAsync(int idWell, DateTime dateDailyReport, int idUser, TBlock editableBlock, + public async Task UpdateOrInsertAsync(int idWell, DateOnly dateDailyReport, int idUser, TBlock editableBlock, CancellationToken cancellationToken) where TBlock : ItemInfoDto { @@ -91,7 +91,7 @@ public class DailyReportService : IDailyReportService return await dailyReportRepository.UpdateAsync(dailyReport, cancellationToken); } - public async Task GetAsync(int idWell, DateTime dateDailyReport, CancellationToken cancellationToken) + public async Task GetAsync(int idWell, DateOnly dateDailyReport, CancellationToken cancellationToken) { var well = await wellService.GetOrDefaultAsync(idWell, cancellationToken) ?? throw new ArgumentNullException(nameof(idWell), $"Скважина с Id: {idWell} не найдена"); @@ -102,16 +102,19 @@ public class DailyReportService : IDailyReportService var dailyReport = await dailyReportRepository.GetOrDefaultAsync(idWell, dateDailyReport, cancellationToken) ?? new DailyReportDto { - Date = dateDailyReport.Date, + Date = dateDailyReport, IdWell = well.Id }; + var geDate = dailyReport.Date.ToDateTime(TimeOnly.MinValue, DateTimeKind.Unspecified); + var ltDate = dailyReport.Date.AddDays(1).ToDateTime(TimeOnly.MinValue, DateTimeKind.Unspecified); + var factOperationRequest = new WellOperationRequest { IdWell = idWell, OperationType = WellOperation.IdOperationTypeFact, - GeDate = dateDailyReport, - LtDate = dateDailyReport.AddHours(24) + GeDate = geDate, + LtDate = ltDate }; var factWellOperations = (await wellOperationRepository.GetAsync(factOperationRequest, cancellationToken)) @@ -197,7 +200,7 @@ public class DailyReportService : IDailyReportService { for (var day = result.Skip; day - result.Skip < result.Take && datesRange.To.AddDays(-day) >= datesRange.From; day++) { - var dateDailyReport = datesRange.To.AddDays(-day).Date; + var dateDailyReport = DateOnly.FromDateTime(datesRange.To.AddDays(-day)); AddDailyReport(dateDailyReport); } @@ -206,7 +209,7 @@ public class DailyReportService : IDailyReportService { for (var day = result.Skip; day - result.Skip < result.Take && datesRange.From.AddDays(day) <= datesRange.To; day++) { - var dateDailyReport = datesRange.From.AddDays(day).Date; + var dateDailyReport = DateOnly.FromDateTime(datesRange.From.AddDays(day)); AddDailyReport(dateDailyReport); } @@ -216,7 +219,7 @@ public class DailyReportService : IDailyReportService return result; - void AddDailyReport(DateTime date) + void AddDailyReport(DateOnly date) { var dailyReport = existingDailyReports.FirstOrDefault(d => d.IdWell == idWell && d.Date == date) ?? new DailyReportDto @@ -225,7 +228,11 @@ public class DailyReportService : IDailyReportService IdWell = idWell }; - var factWellOperationPerDay = factWellOperations.Where(o => o.DateStart.Date >= date && o.DateStart.Date <= date.AddDays(1)); + var geDate = date.ToDateTime(TimeOnly.MinValue, DateTimeKind.Unspecified); + var leDate = date.AddDays(1).ToDateTime(TimeOnly.MinValue, DateTimeKind.Unspecified); + + var factWellOperationPerDay = factWellOperations.Where(o => o.DateStart.Date >= geDate && + o.DateStart.Date <= leDate); AddFactWellOperationBlock(dailyReport, factWellOperationPerDay); @@ -235,16 +242,29 @@ public class DailyReportService : IDailyReportService public async Task GetDatesRangeAsync(int idWell, CancellationToken cancellationToken) { + var timezone = wellService.GetTimezone(idWell); + var currentDate = DateTimeOffset.UtcNow.ToRemoteDateTime(timezone.Hours); + var factOperationDatesRange = await wellOperationRepository.GetDatesRangeAsync(idWell, WellOperation.IdOperationTypeFact, cancellationToken); if (factOperationDatesRange is null) return null; - + + var from = (factOperationDatesRange.From.AddDays(1) <= DateTime.UtcNow ? + factOperationDatesRange.From : + currentDate.AddDays(-1)) + .Date; + + var to = (factOperationDatesRange.To.AddDays(1) <= DateTime.UtcNow ? + factOperationDatesRange.To : + currentDate.AddDays(-1)) + .Date; + return new DatesRangeDto { - From = factOperationDatesRange.From.AddDays(1) <= DateTime.UtcNow ? factOperationDatesRange.From : DateTime.UtcNow.Date.AddDays(-1), - To = factOperationDatesRange.To.AddDays(1) <= DateTime.UtcNow ? factOperationDatesRange.To : DateTime.UtcNow.Date.AddDays(-1) + From = from, + To = to }; } @@ -258,13 +278,16 @@ public class DailyReportService : IDailyReportService dailyReport.TimeBalanceBlock.SectionName = wellOperationRepository.GetSectionTypes() .FirstOrDefault(s => s.Id == dailyReport.TimeBalanceBlock.IdSection)?.Caption; + var geDateStart = dailyReport.Date.ToDateTime(TimeOnly.MinValue, DateTimeKind.Unspecified); + var leDateEnd = dailyReport.Date.AddDays(1).ToDateTime(TimeOnly.MinValue, DateTimeKind.Unspecified); + dailyReport.TimeBalanceBlock.WellOperationSlipsTimeCount = (await detectedOperationService.GetAsync( new DetectedOperationRequest { IdsCategories = new[] { idWellOperationSlipsTime }, IdWell = dailyReport.IdWell, - GeDateStart = dailyReport.Date, - LeDateEnd = dailyReport.Date.AddHours(24) + GeDateStart = geDateStart, + LeDateEnd = leDateEnd }, cancellationToken))?.Stats.Sum(s => s.Count); dailyReport.TimeBalanceBlock.WellDepth.Fact = factWellOperations @@ -275,11 +298,14 @@ public class DailyReportService : IDailyReportService private async Task AddTrajectoryBlockAsync(DailyReportDto dailyReport, CancellationToken cancellationToken) { + var geDate = dailyReport.Date.ToDateTime(TimeOnly.MinValue, DateTimeKind.Utc); + var leDate = dailyReport.Date.AddDays(1).ToDateTime(TimeOnly.MinValue, DateTimeKind.Utc); + var trajectory = (await trajectoryFactNnbRepository.GetByRequestAsync(new TrajectoryRequest { IdWell = dailyReport.IdWell, - GeDate = dailyReport.Date, - LeDate = dailyReport.Date.AddHours(24) + GeDate = geDate, + LeDate = leDate }, cancellationToken)).MaxBy(t => t.WellboreDepth); dailyReport.TrajectoryBlock = new TrajectoryBlockDto @@ -291,8 +317,11 @@ public class DailyReportService : IDailyReportService }; } - private async Task AddScheduleBlockAsync(DailyReportDto dailyReport, CancellationToken cancellationToken) => - dailyReport.ScheduleBlock = (await scheduleRepository.GetAsync(dailyReport.IdWell, dailyReport.Date, cancellationToken)) + private async Task AddScheduleBlockAsync(DailyReportDto dailyReport, CancellationToken cancellationToken) + { + var workDate = dailyReport.Date.ToDateTime(TimeOnly.MinValue, DateTimeKind.Unspecified); + + dailyReport.ScheduleBlock = (await scheduleRepository.GetAsync(dailyReport.IdWell, workDate, cancellationToken)) .Select(s => new ScheduleRecordDto { ShiftStart = s.ShiftStart, @@ -301,6 +330,7 @@ public class DailyReportService : IDailyReportService Surname = s.Driller?.Surname, Patronymic = s.Driller?.Patronymic }); + } private async Task UpdateSubsystemBlockAsync(DailyReportDto dailyReport, CancellationToken cancellationToken) { @@ -315,11 +345,14 @@ public class DailyReportService : IDailyReportService IdWell = dailyReport.IdWell }, cancellationToken); + var geDate = dailyReport.Date.ToDateTime(TimeOnly.MinValue, DateTimeKind.Unspecified); + var leDate = dailyReport.Date.AddDays(1).ToDateTime(TimeOnly.MinValue, DateTimeKind.Unspecified); + var subsystemsStatPerDay = await subsystemService.GetStatAsync(new SubsystemRequest { IdWell = dailyReport.IdWell, - GeDate = dailyReport.Date, - LeDate = dailyReport.Date.AddHours(24) + GeDate = geDate, + LeDate = leDate }, cancellationToken); var subsystems = subsystemsStatPerWell @@ -339,9 +372,11 @@ public class DailyReportService : IDailyReportService private async Task AddProcessMapWellDrillingBlockAsync(DailyReportDto dailyReport, CancellationToken cancellationToken) { + var geDate = dailyReport.Date.ToDateTime(TimeOnly.MinValue, DateTimeKind.Unspecified); + var leDate = dailyReport.Date.AddDays(1).ToDateTime(TimeOnly.MinValue, DateTimeKind.Unspecified); + dailyReport.ProcessMapWellDrillingBlock = (await processMapReportWellDrillingService.GetAsync(dailyReport.IdWell, - cancellationToken)).Where(p => p.DateStart >= dailyReport.Date && - p.DateStart <= dailyReport.Date.AddHours(24)) + cancellationToken)).Where(p => p.DateStart >= geDate && p.DateStart <= leDate) .GroupBy(p => p.DrillingMode) .Select(g => new ProcessMapWellDrillingRecordDto { @@ -362,7 +397,7 @@ public class DailyReportService : IDailyReportService dailyReport.FactWellOperationBlock = new WellOperationBlockDto { - WellOperations = factWellOperations.GroupBy(o => o.IdParentCategory) + WellOperations = factWellOperations.GroupBy(o => o.IdCategory) .Select(g => new WellOperationRecordDto { CategoryName = g.First().CategoryName, @@ -375,10 +410,16 @@ public class DailyReportService : IDailyReportService }; } - private async Task IsDateDailyReportInRangeAsync(int idWell, DateTime dateDailyReport, CancellationToken cancellationToken) + private async Task IsDateDailyReportInRangeAsync(int idWell, DateOnly dateDailyReport, CancellationToken cancellationToken) { var datesRange = await GetDatesRangeAsync(idWell, cancellationToken); - return dateDailyReport >= datesRange?.From && dateDailyReport <= datesRange.To; + if (datesRange is null) + return false; + + var from = DateOnly.FromDateTime(datesRange.From); + var to = DateOnly.FromDateTime(datesRange.To); + + return from >= dateDailyReport && dateDailyReport <= to; } } \ No newline at end of file diff --git a/AsbCloudWebApi.Tests/UnitTests/Services/DailyReportServiceTest.cs b/AsbCloudWebApi.Tests/UnitTests/Services/DailyReportServiceTest.cs index 567f6437..c11dda49 100644 --- a/AsbCloudWebApi.Tests/UnitTests/Services/DailyReportServiceTest.cs +++ b/AsbCloudWebApi.Tests/UnitTests/Services/DailyReportServiceTest.cs @@ -28,9 +28,7 @@ public class DailyReportServiceTest private const int idDailyReport = 1; private const int idUser = 3; private const int idWell = 2; - - private readonly DateTime dateDailyReport = new DateOnly(2023, 10, 26).ToDateTime(TimeOnly.MinValue); - + private readonly SubsystemBlockDto fakeSubsystemBlock = new() { IdUser = idUser, @@ -219,7 +217,7 @@ public class DailyReportServiceTest { Id = idDailyReport, IdWell = idWell, - Date = dateDailyReport, + Date = new(2023, 10, 26), DateLastUpdate = null }; @@ -251,7 +249,7 @@ public class DailyReportServiceTest dailyReportRepositoryMock.InsertAsync(Arg.Any(), Arg.Any()) .ReturnsForAnyArgs(idDailyReport); - dailyReportRepositoryMock.GetOrDefaultAsync(Arg.Any(), Arg.Any(), Arg.Any()) + dailyReportRepositoryMock.GetOrDefaultAsync(Arg.Any(), Arg.Any(), Arg.Any()) .ReturnsForAnyArgs(fakeDailyReport); dailyReportRepositoryMock.UpdateAsync(Arg.Any(), Arg.Any()) @@ -278,10 +276,10 @@ public class DailyReportServiceTest subsystemServiceMock.GetStatAsync(Arg.Any(), Arg.Any()) .ReturnsForAnyArgs(new[] { fakeSubsystemsStat }); - scheduleRepositoryMock.GetAsync(idWell, dateDailyReport, Arg.Any()) + scheduleRepositoryMock.GetAsync(Arg.Any(), Arg.Any(), Arg.Any()) .ReturnsForAnyArgs(new[] { fakeShedule }); - processMapReportWellDrillingServiceMock.GetAsync(idWell, Arg.Any()) + processMapReportWellDrillingServiceMock.GetAsync(Arg.Any(), Arg.Any()) .ReturnsForAnyArgs(new[] { fakeProcessMapReportWellDrilling }); } @@ -289,7 +287,7 @@ public class DailyReportServiceTest public async Task UpdateOrInsertAsync_ShouldReturn_UpdatedSubsystemBlock() { //act - var result = await dailyReportService.UpdateOrInsertAsync(idWell, dateDailyReport, idUser, fakeSubsystemBlock, CancellationToken.None); + var result = await dailyReportService.UpdateOrInsertAsync(idWell, fakeDailyReport.Date, idUser, fakeSubsystemBlock, CancellationToken.None); //assert Assert.NotNull(fakeSubsystemBlock.LastUpdateDate); @@ -300,14 +298,13 @@ public class DailyReportServiceTest } [Theory] - [InlineData("2090.01.01")] - [InlineData("2000.01.01")] - public async Task UpdateOrInsertAsync_ShouldReturn_UnableToUpdateDailyReport(DateTime dateDaileReport) + [MemberData(nameof(DateDailyReport))] + public async Task UpdateOrInsertAsync_ShouldReturn_UnableToUpdateDailyReport(DateOnly dateDailyReport) { //act var result = await Assert.ThrowsAsync(() => dailyReportService.UpdateOrInsertAsync( idWell, - dateDaileReport, + dateDailyReport, idUser, fakeSignBlock, CancellationToken.None)); @@ -320,7 +317,7 @@ public class DailyReportServiceTest public async Task UpdateOrInsertAsync_ShouldReturn_UpdatedSignBlock() { //act - var result = await dailyReportService.UpdateOrInsertAsync(idWell, dateDailyReport, idUser, fakeSignBlock, CancellationToken.None); + var result = await dailyReportService.UpdateOrInsertAsync(idWell, fakeDailyReport.Date, idUser, fakeSignBlock, CancellationToken.None); //assert Assert.NotNull(fakeSignBlock.LastUpdateDate); @@ -334,7 +331,7 @@ public class DailyReportServiceTest public async Task UpdateOrInsertAsync_ShouldReturn_UpdatedTimeBalanceBlock() { //act - var result = await dailyReportService.UpdateOrInsertAsync(idWell, dateDailyReport, idUser, fakeTimeBalanceBlock, + var result = await dailyReportService.UpdateOrInsertAsync(idWell, fakeDailyReport.Date, idUser, fakeTimeBalanceBlock, CancellationToken.None); //assert @@ -346,13 +343,12 @@ public class DailyReportServiceTest } [Theory] - [InlineData("2090.01.01")] - [InlineData("2000.01.01")] - public async Task GetAsync_ShouldReturn_UnableToGetDailyReport(DateTime dateDaileReport) + [MemberData(nameof(DateDailyReport))] + public async Task GetAsync_ShouldReturn_UnableToGetDailyReport(DateOnly dateDailyReport) { //act var result = await Assert.ThrowsAsync(() => dailyReportService.GetAsync(idWell, - dateDaileReport, + dateDailyReport, CancellationToken.None)); //assert @@ -363,7 +359,7 @@ public class DailyReportServiceTest public async Task GetAsync_ShouldReturn_AddedWellInfo() { //act - var result = await dailyReportService.GetAsync(idWell, dateDailyReport, CancellationToken.None); + var result = await dailyReportService.GetAsync(idWell, fakeDailyReport.Date, CancellationToken.None); //assert Assert.Equal(result.IdWell, fakeWell.Id); @@ -381,7 +377,7 @@ public class DailyReportServiceTest public async Task GetAsync_ShouldReturn_AddedTrajectoryBlock() { //act - var result = await dailyReportService.GetAsync(idWell, dateDailyReport, CancellationToken.None); + var result = await dailyReportService.GetAsync(idWell, fakeDailyReport.Date, CancellationToken.None); //assert Assert.Equal(fakeLastFactTrajectory.WellboreDepth, result.TrajectoryBlock.WellboreDepth); @@ -394,7 +390,7 @@ public class DailyReportServiceTest public async Task GetAsync_ShouldReturn_AddedFactWellOperationBlock() { //act - var result = await dailyReportService.GetAsync(idWell, dateDailyReport, CancellationToken.None); + var result = await dailyReportService.GetAsync(idWell, fakeDailyReport.Date, CancellationToken.None); //assert Assert.Equal(16, result.FactWellOperationBlock.SectionDrillingHours); @@ -410,7 +406,7 @@ public class DailyReportServiceTest public async Task GetAsync_ShouldReturn_AddedScheduleBlock() { //act - var result = await dailyReportService.GetAsync(idWell, dateDailyReport, CancellationToken.None); + var result = await dailyReportService.GetAsync(idWell, fakeDailyReport.Date, CancellationToken.None); //assert Assert.Single(result.ScheduleBlock); @@ -431,7 +427,7 @@ public class DailyReportServiceTest fakeDailyReport.TimeBalanceBlock = fakeTimeBalanceBlock; //act - var result = await dailyReportService.GetAsync(idWell, dateDailyReport, CancellationToken.None); + var result = await dailyReportService.GetAsync(idWell, fakeDailyReport.Date, CancellationToken.None); //assert Assert.NotNull(result.TimeBalanceBlock); @@ -446,7 +442,7 @@ public class DailyReportServiceTest public async Task GetAsync_ShouldReturn_AddedProcessMapWellDrillingBlock() { //act - var result = await dailyReportService.GetAsync(idWell, dateDailyReport, CancellationToken.None); + var result = await dailyReportService.GetAsync(idWell, fakeDailyReport.Date, CancellationToken.None); //assert Assert.Single(result.ProcessMapWellDrillingBlock); @@ -467,7 +463,7 @@ public class DailyReportServiceTest fakeDailyReport.SubsystemBlock = fakeSubsystemBlock; //act - var result = await dailyReportService.GetAsync(idDailyReport, dateDailyReport, CancellationToken.None); + var result = await dailyReportService.GetAsync(idDailyReport, fakeDailyReport.Date, CancellationToken.None); //assert Assert.NotNull(result.SubsystemBlock); @@ -526,6 +522,15 @@ public class DailyReportServiceTest Assert.True(result.To < DateTime.UtcNow.Date); } + public static IEnumerable DateDailyReport() + { + yield return new object[] + { + new DateOnly(2090, 01, 01), + new DateOnly(2000, 01, 01) + }; + } + public static IEnumerable FactWellOperationDatesRange() { yield return new object[] diff --git a/AsbCloudWebApi/Controllers/DailyReportController.cs b/AsbCloudWebApi/Controllers/DailyReportController.cs index 93d2fbe3..e36868f1 100644 --- a/AsbCloudWebApi/Controllers/DailyReportController.cs +++ b/AsbCloudWebApi/Controllers/DailyReportController.cs @@ -175,8 +175,7 @@ public class DailyReportController : ControllerBase { await AssertUserAccessToWell(idWell, cancellationToken); - var dailyReport = await dailyReportExportService.ExportAsync(idWell, - dateDailyReport.ToDateTime(TimeOnly.MinValue, DateTimeKind.Utc), cancellationToken); + var dailyReport = await dailyReportExportService.ExportAsync(idWell, dateDailyReport, cancellationToken); return File(dailyReport.File, "application/octet-stream", dailyReport.FileName); } @@ -187,8 +186,7 @@ public class DailyReportController : ControllerBase { await AssertUserAccessToWell(idWell, cancellationToken); - var id = await dailyReportService.UpdateOrInsertAsync(idWell, dateDailyReport.ToDateTime(TimeOnly.MinValue, DateTimeKind.Utc), IdUser, - block, cancellationToken); + var id = await dailyReportService.UpdateOrInsertAsync(idWell, dateDailyReport, IdUser, block, cancellationToken); return Ok(id); }