using AsbCloudApp.Data;
using AsbCloudApp.Services;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
namespace AsbCloudWebApi.Controllers
{
///
/// Контроллер статистики вручную внесенных операций на кусту
///
[Route("api/cluster")]
[ApiController]
[Authorize]
public class ClusterOperationStatController : ControllerBase
{
private readonly IWellOperationService operationService;
private readonly IWellService wellService;
private readonly IWellOperationImportService wellOperationImportService;
public ClusterOperationStatController(IWellOperationService operationService,
IWellService wellService, IWellOperationImportService wellOperationImportService)
{
this.operationService = operationService;
this.wellService = wellService;
this.wellOperationImportService = wellOperationImportService;
}
///
/// Формирует данные по среднему и максимальному МСП на кусту
///
/// id скважины с данного куста (через нее будут полуены данные)
///
/// Возвращает данные по среднему и максимальному МСП на кусту
[HttpGet("{idWell}/ropStat")]
[ProducesResponseType(typeof(ClusterRopStatDto), (int)System.Net.HttpStatusCode.OK)]
public async Task GetClusterRopStatAsync([FromRoute] int idWell,
CancellationToken token = default)
{
if (!await CanUserAccessToWellAsync(idWell, token).ConfigureAwait(false))
return Forbid();
// var result = await operationService.GetOperationsAsync(
// idWell, token).ConfigureAwait(false);
var result = new ClusterRopStatDto()
{
RopMax = 3.2,
RopAverage = 1.1
};
return Ok(result);
}
private async Task CanUserAccessToWellAsync(int idWell, CancellationToken token = default)
{
int? idCompany = User.GetCompanyId();
return idCompany is not null && await wellService.IsCompanyInvolvedInWellAsync((int)idCompany,
idWell, token).ConfigureAwait(false);
}
}
}