forked from ddrilling/AsbCloudServer
изменена модель возвращаемая методом
изменен алгоритм внутри метоа
This commit is contained in:
parent
cc75bcf4f9
commit
17c7392542
@ -14,7 +14,7 @@ namespace AsbCloudApp.Requests
|
||||
public class SubsystemOperationTimeRequest: RequestBase
|
||||
{
|
||||
/// <summary>
|
||||
/// идентификатор скважины, может не указыватся пользователем
|
||||
/// идентификатор скважины
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int IdWell { get; set; }
|
||||
|
@ -1,4 +1,5 @@
|
||||
using AsbCloudApp.Data.Subsystems;
|
||||
using AsbCloudApp.Data;
|
||||
using AsbCloudApp.Data.Subsystems;
|
||||
using AsbCloudApp.Requests;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
@ -45,7 +46,7 @@ namespace AsbCloudApp.Services.Subsystems
|
||||
/// <param name="request"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<IEnumerable<(DateTimeOffset, DateTimeOffset)>?> GetDateRangeOperationTimeAsync(SubsystemOperationTimeRequest request, CancellationToken token);
|
||||
Task<DatesRangeDto?> GetDateRangeOperationTimeAsync(SubsystemOperationTimeRequest request, CancellationToken token);
|
||||
}
|
||||
#nullable disable
|
||||
}
|
||||
|
@ -186,28 +186,22 @@ namespace AsbCloudInfrastructure.Services.Subsystems
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
public async Task<IEnumerable<(DateTimeOffset, DateTimeOffset)>?> GetDateRangeOperationTimeAsync(SubsystemOperationTimeRequest request, CancellationToken token)
|
||||
{
|
||||
if (request.IdsSubsystems is null)
|
||||
return null;
|
||||
List<(DateTimeOffset dateFirst, DateTimeOffset dateLast)> result = new();
|
||||
var dateRanges = await db.SubsystemOperationTimes
|
||||
.Where(o => request.IdsSubsystems.Contains(o.IdSubsystem))
|
||||
.GroupBy(o => o.IdSubsystem)
|
||||
.Select(g => new
|
||||
{
|
||||
DateFirst = g.Min(o => o.DateStart),
|
||||
DateLast = g.Max(o => o.DateEnd)
|
||||
})
|
||||
.ToListAsync(token);
|
||||
if (dateRanges.Any() != true)
|
||||
return null;
|
||||
foreach (var dateRange in dateRanges)
|
||||
public async Task<DatesRangeDto?> GetDateRangeOperationTimeAsync(SubsystemOperationTimeRequest request, CancellationToken token)
|
||||
{
|
||||
var query = BuildQuery(request);
|
||||
if (query is not null)
|
||||
{
|
||||
var resultItem = (dateRange.DateFirst, dateRange.DateLast);
|
||||
result.Add(resultItem);
|
||||
var result = await query
|
||||
.GroupBy(o => o.IdSubsystem)
|
||||
.Select(g => new DatesRangeDto
|
||||
{
|
||||
From = g.Min(o => o.DateStart).DateTime,
|
||||
To = g.Max(o => o.DateEnd).DateTime
|
||||
})
|
||||
.FirstOrDefaultAsync(token);
|
||||
return result;
|
||||
}
|
||||
return result;
|
||||
return null;
|
||||
}
|
||||
|
||||
private IQueryable<SubsystemOperationTime>? BuildQuery(SubsystemOperationTimeRequest request)
|
||||
|
@ -10,6 +10,7 @@ using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using AsbCloudInfrastructure;
|
||||
using System;
|
||||
using AsbCloudApp.Data;
|
||||
|
||||
namespace AsbCloudWebApi.Controllers.Subsystems
|
||||
{
|
||||
@ -63,11 +64,11 @@ namespace AsbCloudWebApi.Controllers.Subsystems
|
||||
/// получить доступный диапазон дат наработки подсистемы.
|
||||
/// </summary>
|
||||
[HttpGet("rangeDate")]
|
||||
[ProducesResponseType(typeof(IEnumerable<(DateTimeOffset,DateTimeOffset)>), (int)System.Net.HttpStatusCode.OK)]
|
||||
[ProducesResponseType(typeof(DatesRangeDto), (int)System.Net.HttpStatusCode.OK)]
|
||||
public async Task<IActionResult> GetDateRangeOperationTimeAsync([FromQuery] SubsystemOperationTimeRequest request, CancellationToken token = default)
|
||||
{
|
||||
if (!await UserHasAccesToWellAsync(request.IdWell, token))
|
||||
return Forbid();
|
||||
return Forbid();
|
||||
var result = await subsystemOperationTimeService.GetDateRangeOperationTimeAsync(request, token);
|
||||
return Ok(result);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user