forked from ddrilling/AsbCloudServer
Правки по ревью
This commit is contained in:
parent
63280b60e2
commit
c129825eaa
@ -12,12 +12,11 @@ namespace AsbCloudApp.Repositories;
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public interface IChangeLogRepository<TDto, TRequest>
|
public interface IChangeLogRepository<TDto, TRequest>
|
||||||
where TDto : AsbCloudApp.Data.IId
|
where TDto : AsbCloudApp.Data.IId
|
||||||
where TRequest : ChangeLogBaseRequest
|
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Добавление записей
|
/// Добавление записей
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="idUser"></param>
|
/// <param name="idUser">пользователь, который добавляет</param>
|
||||||
/// <param name="dtos"></param>
|
/// <param name="dtos"></param>
|
||||||
/// <param name="token"></param>
|
/// <param name="token"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
@ -26,7 +25,7 @@ public interface IChangeLogRepository<TDto, TRequest>
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Редактирование записей
|
/// Редактирование записей
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="idUser"></param>
|
/// <param name="idUser">пользователь, который редактирует</param>
|
||||||
/// <param name="dtos"></param>
|
/// <param name="dtos"></param>
|
||||||
/// <param name="token"></param>
|
/// <param name="token"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
@ -35,17 +34,17 @@ public interface IChangeLogRepository<TDto, TRequest>
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Добавляет Dto у которых id == 0, изменяет dto у которых id != 0
|
/// Добавляет Dto у которых id == 0, изменяет dto у которых id != 0
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="idUser"></param>
|
/// <param name="idUser">пользователь, который редактирует или добавляет</param>
|
||||||
/// <param name="dtos"></param>
|
/// <param name="dtos"></param>
|
||||||
/// <param name="token"></param>
|
/// <param name="token"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task<int> UpdateOrInsertRange(int idUser, IEnumerable<TDto> dtos, CancellationToken token);
|
Task<int> UpdateOrInsertRange(int idUser, IEnumerable<TDto> dtos, CancellationToken token);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Добавление записей с удалением старых (для импорта)
|
/// Помечает записи как удаленные
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="idUser"></param>
|
/// <param name="idUser">пользователь, который чистит</param>
|
||||||
/// <param name="request"></param>
|
/// <param name="request">Фильтр по свойствам конкретной сущности</param>
|
||||||
/// <param name="token"></param>
|
/// <param name="token"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task<int> Clear(int idUser, TRequest request, CancellationToken token);
|
Task<int> Clear(int idUser, TRequest request, CancellationToken token);
|
||||||
@ -87,10 +86,10 @@ public interface IChangeLogRepository<TDto, TRequest>
|
|||||||
Task<IEnumerable<ChangeLogDto<TDto>>> GetChangeLog(TRequest request, DateOnly? date, CancellationToken token);
|
Task<IEnumerable<ChangeLogDto<TDto>>> GetChangeLog(TRequest request, DateOnly? date, CancellationToken token);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Получение записей по параметрам
|
/// Получение текущих сейчас записей по параметрам
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="request"></param>
|
/// <param name="request"></param>
|
||||||
/// <param name="token"></param>
|
/// <param name="token"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task<IEnumerable<TDto>> Get(TRequest request, CancellationToken token);
|
Task<IEnumerable<TDto>> GetCurrent(TRequest request, CancellationToken token);
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
using AsbCloudApp.Data;
|
using AsbCloudApp.Data;
|
||||||
using AsbCloudApp.Data.ProcessMaps;
|
|
||||||
using AsbCloudApp.Exceptions;
|
using AsbCloudApp.Exceptions;
|
||||||
using AsbCloudApp.Repositories;
|
using AsbCloudApp.Repositories;
|
||||||
using AsbCloudApp.Requests;
|
using AsbCloudApp.Requests;
|
||||||
@ -235,28 +234,46 @@ public abstract class ChangeLogRepositoryAbstract<TDto, TEntity, TRequest> : ICh
|
|||||||
query = createdQuery.Union(editedQuery);
|
query = createdQuery.Union(editedQuery);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var dtos = await CreateChangeLogDto(query, offset, token);
|
||||||
|
|
||||||
|
return dtos;
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task<IEnumerable<ChangeLogDto<TDto>>> CreateChangeLogDto(IQueryable<TEntity> query, TimeSpan offset, CancellationToken token)
|
||||||
|
{
|
||||||
var entities = await query
|
var entities = await query
|
||||||
.OrderBy(e => e.Creation)
|
.OrderBy(e => e.Creation)
|
||||||
.ThenBy(e => e.Obsolete)
|
.ThenBy(e => e.Obsolete)
|
||||||
.ThenBy(e => e.Id)
|
.ThenBy(e => e.Id)
|
||||||
.ToListAsync(token);
|
.ToListAsync(token);
|
||||||
|
|
||||||
var dtos = entities.Select(e => ConvertChangeLogDto(e, offset));
|
var dtos = entities.Select(e => ConvertChangeLogDto(e, offset));
|
||||||
|
return dtos;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<IEnumerable<ChangeLogDto<TDto>>> Get(TRequest request, DateTimeOffset? moment, CancellationToken token)
|
||||||
|
{
|
||||||
|
var query = BuildQuery(request);
|
||||||
|
if (moment.HasValue)
|
||||||
|
{
|
||||||
|
var momentUtc = moment.Value.ToUniversalTime();
|
||||||
|
query = query
|
||||||
|
.Where(e => e.Creation <= momentUtc)
|
||||||
|
.Where(e => e.Obsolete == null || e.Obsolete >= momentUtc);
|
||||||
|
}
|
||||||
|
|
||||||
|
TimeSpan offset = GetTimezoneOffset(request);
|
||||||
|
var dtos = await CreateChangeLogDto(query, offset, token);
|
||||||
|
|
||||||
return dtos;
|
return dtos;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<IEnumerable<TDto>> Get(TRequest request, CancellationToken token)
|
public async Task<IEnumerable<TDto>> GetCurrent(TRequest request, CancellationToken token)
|
||||||
{
|
{
|
||||||
var query = BuildQuery(request);
|
var moment = new DateTimeOffset(3000, 1, 1, 0, 0, 0, TimeSpan.Zero);
|
||||||
var entities = await query
|
var entities = await Get(request, moment, token);
|
||||||
.Where(e => e.Obsolete == null)
|
var result = entities.Select(e => e.Item);
|
||||||
.OrderBy(e => e.Creation)
|
return result;
|
||||||
.ThenBy(e => e.Id)
|
|
||||||
.ToArrayAsync(token);
|
|
||||||
|
|
||||||
TimeSpan offset = GetTimezoneOffset(request);
|
|
||||||
var dtos = entities.Select(e => Convert(e, offset));
|
|
||||||
return dtos;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract TimeSpan GetTimezoneOffset(TRequest request);
|
protected abstract TimeSpan GetTimezoneOffset(TRequest request);
|
||||||
@ -268,7 +285,7 @@ public abstract class ChangeLogRepositoryAbstract<TDto, TEntity, TRequest> : ICh
|
|||||||
var entity = dto.Adapt<TEntity>();
|
var entity = dto.Adapt<TEntity>();
|
||||||
entity.Creation = entity.Creation.ToUniversalTime();
|
entity.Creation = entity.Creation.ToUniversalTime();
|
||||||
|
|
||||||
if(entity.Obsolete.HasValue)
|
if (entity.Obsolete.HasValue)
|
||||||
entity.Obsolete = entity.Obsolete.Value.ToUniversalTime();
|
entity.Obsolete = entity.Obsolete.Value.ToUniversalTime();
|
||||||
|
|
||||||
return entity;
|
return entity;
|
||||||
|
@ -37,13 +37,7 @@ public class ProcessMapPlanBaseRepository<TDto, TEntity> : ChangeLogRepositoryAb
|
|||||||
query = query.Where(e => e.Creation >= from || e.Obsolete >= from);
|
query = query.Where(e => e.Creation >= from || e.Obsolete >= from);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (request.Moment.HasValue)
|
|
||||||
{
|
|
||||||
var moment = request.Moment.Value.ToUniversalTime();
|
|
||||||
query = query
|
|
||||||
.Where(e => e.Creation <= moment)
|
|
||||||
.Where(e => e.Obsolete == null || e.Obsolete >= moment);
|
|
||||||
}
|
|
||||||
|
|
||||||
return query;
|
return query;
|
||||||
}
|
}
|
||||||
|
@ -33,7 +33,7 @@ public abstract class ProcessMapPlanExportService<TDto> : ExportExcelService<TDt
|
|||||||
Moment = DateTimeOffset.UtcNow
|
Moment = DateTimeOffset.UtcNow
|
||||||
};
|
};
|
||||||
|
|
||||||
var dtos = await processMapPlanRepository.Get(request, token);
|
var dtos = await processMapPlanRepository.GetCurrent(request, token);
|
||||||
return dtos;
|
return dtos;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -50,7 +50,7 @@ public class WellInfoService
|
|||||||
var processMapPlanWellDrillings = new List<ProcessMapPlanDrillingDto>();
|
var processMapPlanWellDrillings = new List<ProcessMapPlanDrillingDto>();
|
||||||
foreach (var processMapPlanWellDrillingRequest in processMapPlanWellDrillingRequests)
|
foreach (var processMapPlanWellDrillingRequest in processMapPlanWellDrillingRequests)
|
||||||
{
|
{
|
||||||
var processMaps = await processMapPlanWellDrillingRepository.Get(processMapPlanWellDrillingRequest, token);
|
var processMaps = await processMapPlanWellDrillingRepository.GetCurrent(processMapPlanWellDrillingRequest, token);
|
||||||
processMapPlanWellDrillings.AddRange(processMaps);
|
processMapPlanWellDrillings.AddRange(processMaps);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,21 +1,16 @@
|
|||||||
using System;
|
using AsbCloudApp.Data;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Threading;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using AsbCloudApp.Data;
|
|
||||||
using AsbCloudApp.Data.ProcessMaps;
|
using AsbCloudApp.Data.ProcessMaps;
|
||||||
using AsbCloudApp.Data.WellOperation;
|
using AsbCloudApp.Data.WellOperation;
|
||||||
using AsbCloudApp.Repositories;
|
using AsbCloudApp.Repositories;
|
||||||
using AsbCloudApp.Requests;
|
using AsbCloudApp.Requests;
|
||||||
using AsbCloudApp.Services;
|
using AsbCloudApp.Services;
|
||||||
using AsbCloudDb.Model;
|
using AsbCloudDb.Model;
|
||||||
using AsbCloudInfrastructure.Repository;
|
|
||||||
using AsbCloudInfrastructure.Services.ProcessMaps;
|
|
||||||
using AsbCloudInfrastructure.Services.ProcessMaps.Report;
|
using AsbCloudInfrastructure.Services.ProcessMaps.Report;
|
||||||
using DocumentFormat.OpenXml.Bibliography;
|
|
||||||
using DocumentFormat.OpenXml.Spreadsheet;
|
|
||||||
using NSubstitute;
|
using NSubstitute;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Threading;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
||||||
namespace AsbCloudWebApi.Tests.Services.ProcessMaps;
|
namespace AsbCloudWebApi.Tests.Services.ProcessMaps;
|
||||||
@ -42,7 +37,7 @@ public class ProcessMapReportDataSaubStatServiceTest
|
|||||||
private ProcessMapReportDrillingService service;
|
private ProcessMapReportDrillingService service;
|
||||||
|
|
||||||
private readonly static SimpleTimezoneDto timezone = new() { Hours = 2 };
|
private readonly static SimpleTimezoneDto timezone = new() { Hours = 2 };
|
||||||
private static readonly DateTimeOffset dateStart = new (2024, 01, 01, 00, 11, 11, timezone.Offset);
|
private static readonly DateTimeOffset dateStart = new(2024, 01, 01, 00, 11, 11, timezone.Offset);
|
||||||
private readonly static WellDto well = new()
|
private readonly static WellDto well = new()
|
||||||
{
|
{
|
||||||
Id = 1,
|
Id = 1,
|
||||||
@ -259,7 +254,7 @@ public class ProcessMapReportDataSaubStatServiceTest
|
|||||||
wellService.GetOrDefaultAsync(Arg.Any<int>(), Arg.Any<CancellationToken>())
|
wellService.GetOrDefaultAsync(Arg.Any<int>(), Arg.Any<CancellationToken>())
|
||||||
.Returns(well);
|
.Returns(well);
|
||||||
|
|
||||||
processMapPlanBaseRepository.Get(Arg.Any<ProcessMapPlanBaseRequestWithWell>(), Arg.Any<CancellationToken>())
|
processMapPlanBaseRepository.GetCurrent(Arg.Any<ProcessMapPlanBaseRequestWithWell>(), Arg.Any<CancellationToken>())
|
||||||
.Returns(processMapPlan);
|
.Returns(processMapPlan);
|
||||||
|
|
||||||
wellOperationRepository.GetAsync(Arg.Any<WellOperationRequest>(), Arg.Any<CancellationToken>())
|
wellOperationRepository.GetAsync(Arg.Any<WellOperationRequest>(), Arg.Any<CancellationToken>())
|
||||||
|
@ -144,7 +144,7 @@ public abstract class ProcessMapPlanBaseController<TDto> : ControllerBase
|
|||||||
await AssertUserHasAccessToWell(idWell, token);
|
await AssertUserHasAccessToWell(idWell, token);
|
||||||
|
|
||||||
var serviceRequest = new ProcessMapPlanBaseRequestWithWell(idWell);
|
var serviceRequest = new ProcessMapPlanBaseRequestWithWell(idWell);
|
||||||
var result = await repository.Get(serviceRequest, token);
|
var result = await repository.GetCurrent(serviceRequest, token);
|
||||||
return Ok(result);
|
return Ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user