//using AsbCloudApp.Data; //using AsbCloudApp.Exceptions; //using AsbCloudApp.Repositories; //using AsbCloudApp.Services; //using AsbCloudDb.Model; //using Mapster; //using Microsoft.EntityFrameworkCore; //using System; //using System.Collections.Generic; //using System.Linq; //using System.Threading; //using System.Threading.Tasks; //namespace AsbCloudInfrastructure.Repository //{ // internal class TrajectoryFactRepository : ITrajectoryEditableRepository // { // private readonly IAsbCloudDbContext db; // private readonly IWellService wellService; // public TrajectoryFactRepository(IAsbCloudDbContext db, IWellService wellService) // { // this.db = db; // this.wellService = wellService; // } // public async Task AddAsync(TrajectoryGeoFactDto importedFactTrajectoryRow, CancellationToken token) // { // var offsetHours = wellService.GetTimezone(importedFactTrajectoryRow.IdWell).Hours; // var entity = Convert(importedFactTrajectoryRow, offsetHours); // entity.Id = 0; // db.FactTrajectories.Add(entity); // return await db.SaveChangesAsync(token) // .ConfigureAwait(false); // } // public async Task AddRangeAsync(IEnumerable trajectoryRows, CancellationToken token) // { // var idWell = trajectoryRows.First().IdWell; // if (!trajectoryRows.All(r => r.IdWell == idWell)) // throw new ArgumentInvalidException(nameof(trajectoryRows), "Все строки должны относиться к одной скважине"); // var offsetHours = wellService.GetTimezone(idWell).Hours; // var entities = trajectoryRows // .Select(e => // { // var entity = Convert(e, offsetHours); // entity.Id = 0; // return entity; // }); // db.FactTrajectories.AddRange(entities); // return await db.SaveChangesAsync(token) // .ConfigureAwait(false); // } // public async Task DeleteByIdWellAsync(int idWell, CancellationToken token) // { // var query = db.FactTrajectories // .Where(e => e.IdWell == idWell); // db.FactTrajectories.RemoveRange(query); // return await db.SaveChangesAsync(token) // .ConfigureAwait(false); // } // public async Task DeleteRangeAsync(IEnumerable ids, CancellationToken token) // { // var query = db.FactTrajectories // .Where(e => ids.Contains(e.Id)); // db.FactTrajectories.RemoveRange(query); // return await db.SaveChangesAsync(token) // .ConfigureAwait(false); // } // public async Task> GetAsync(int idWell, CancellationToken token) // { // var well = wellService.GetOrDefault(idWell) // ?? throw new ArgumentInvalidException(nameof(idWell), "idWell doesn`t exist"); // var offsetHours = well.Timezone.Hours; // var query = db.FactTrajectories // .AsNoTracking() // .Where(x => x.IdWell == idWell); // var entities = await query // .OrderBy(e => e.WellboreDepth) // .ToArrayAsync(token); // var result = entities // .Select(r => Convert(r, offsetHours)); // return result; // } // public async Task UpdateAsync(TrajectoryGeoFactDto row, CancellationToken token) // { // var offsetHours = wellService.GetTimezone(row.IdWell).Hours; // var entity = Convert(row, offsetHours); // db.FactTrajectories.Update(entity); // return await db.SaveChangesAsync(token) // .ConfigureAwait(false); // } // private TrajectoryGeoFactDto Convert(FactTrajectory entity, double offsetHours) // { // var dto = entity.Adapt(); // dto.UpdateDate = entity.UpdateDate.ToRemoteDateTime(offsetHours); // return dto; // } // private FactTrajectory Convert(TrajectoryGeoFactDto dto, double offsetHours) // { // var entity = dto.Adapt(); // entity.UpdateDate = DateTime.Now.ToUtcDateTimeOffset(offsetHours); // return entity; // } // } //}