Добавление и обновление скважины

При создании и обновлении скважины добавил проверку на то, что указанная телеметрия не принадлежит другой скважине.
This commit is contained in:
parent 386de8968f
commit 7480b63ccb

View File

@ -126,8 +126,11 @@ namespace AsbCloudInfrastructure.Services
return wells;
}
public override async Task<int> InsertAsync(WellDto dto, CancellationToken token = default)
public override async Task<int> InsertAsync(WellDto dto, CancellationToken token)
{
if (await IsExistingTelemetryAsync(dto.IdTelemetry, token))
throw new ArgumentInvalidException("Телеметрия уже была привязана к другой скважине.", nameof(dto));
if (dto.IdWellType is < 1 or > 2)
throw new ArgumentInvalidException("Тип скважины указан неправильно.", nameof(dto));
@ -158,8 +161,11 @@ namespace AsbCloudInfrastructure.Services
}
public override async Task<int> UpdateAsync(WellDto dto,
CancellationToken token = default)
CancellationToken token)
{
if (await IsExistingTelemetryAsync(dto.IdTelemetry, token))
throw new ArgumentInvalidException("Телеметрия уже была привязана к другой скважине.", nameof(dto));
if (dto.IdWellType is < 1 or > 2)
throw new ArgumentInvalidException("Тип скважины указан неправильно.", nameof(dto));
@ -335,6 +341,15 @@ namespace AsbCloudInfrastructure.Services
throw new Exception($"Can't find timezone for well {wellDto.Caption} id: {wellDto.Id}");
}
private Task<bool> IsExistingTelemetryAsync(int? idTelemetry, CancellationToken cancellationToken)
{
if (!idTelemetry.HasValue)
return Task.FromResult(false);
return dbSet.AnyAsync(x => x.IdTelemetry ==
idTelemetry.Value, cancellationToken);
}
private static AsbCloudDb.Model.IMapPoint GetCoordinates(Well well)
{
if (well is null)