forked from ddrilling/AsbCloudServer
CS2-84 При формировании статистики по кусту нет фильтра по доступным скважинам
This commit is contained in:
parent
b800759a09
commit
50c3cca8b8
@ -7,7 +7,7 @@ namespace AsbCloudApp.Services
|
||||
{
|
||||
public interface IWellOperationsStatService
|
||||
{
|
||||
Task<StatClusterDto> GetStatClusterAsync(int idCluster, CancellationToken token = default);
|
||||
Task<StatClusterDto> GetStatClusterAsync(int idCluster, int idCompany, CancellationToken token = default);
|
||||
Task<StatWellDto> GetStatWellAsync(int idWell, CancellationToken token = default);
|
||||
Task<IEnumerable<PlanFactPredictBase<WellOperationDto>>> GetTvdAsync(int idWell, CancellationToken token);
|
||||
Task<IEnumerable<StatWellDto>> GetWellsStatAsync(IEnumerable<int> idWells, CancellationToken token);
|
||||
|
@ -40,21 +40,20 @@ namespace AsbCloudInfrastructure.Services.WellOperationService
|
||||
cacheCluster = cache.GetCachedTable<Cluster>((DbContext)db);
|
||||
}
|
||||
|
||||
public async Task<StatClusterDto> GetStatClusterAsync(int idCluster, CancellationToken token = default)
|
||||
public async Task<StatClusterDto> GetStatClusterAsync(int idCluster, int idCompany, CancellationToken token = default)
|
||||
{
|
||||
var allWellsByCompany = await wellService.GetWellsByCompanyAsync(idCompany, token).ConfigureAwait(false);
|
||||
|
||||
var idWellsByCompany = allWellsByCompany.Select(w=>w.Id).Distinct();
|
||||
|
||||
var wells = await db.Wells
|
||||
.Include(w => w.WellOperations)
|
||||
.Where(o => o.IdCluster == idCluster)
|
||||
.AsNoTracking()
|
||||
.Where(w => idWellsByCompany.Contains(w.Id))
|
||||
.Select(w => w.Id)
|
||||
.ToListAsync(token);
|
||||
|
||||
var statsWells = new List<StatWellDto>(wells.Count());
|
||||
|
||||
foreach (var well in wells)
|
||||
{
|
||||
var statWellDto = await CalcStatWellAsync(well, token);
|
||||
statsWells.Add(statWellDto);
|
||||
}
|
||||
var statsWells = await GetWellsStatAsync(wells, token).ConfigureAwait(false);
|
||||
|
||||
var cluster = await cacheCluster.FirstOrDefaultAsync(c => c.Id == idCluster, token);
|
||||
var statClusterDto = new StatClusterDto
|
||||
|
@ -38,11 +38,16 @@ namespace AsbCloudWebApi.Controllers
|
||||
public async Task<IActionResult> GetStatClusterAsync(int idCluster,
|
||||
CancellationToken token = default)
|
||||
{
|
||||
int? idCompanyOrNull = User.GetCompanyId();
|
||||
if(idCompanyOrNull is null)
|
||||
return Forbid();
|
||||
|
||||
int idCompany = idCompanyOrNull ?? 0;
|
||||
// TODO: Fix next commented lines
|
||||
//if (!await CanUserAccessToWellAsync(idCluster, token).ConfigureAwait(false))
|
||||
// return Forbid();
|
||||
|
||||
var result = await operationsStatService.GetStatClusterAsync(idCluster, token)
|
||||
var result = await operationsStatService.GetStatClusterAsync(idCluster, idCompany, token)
|
||||
.ConfigureAwait(false);
|
||||
return Ok(result);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user