using AsbCloudApp.Data; using AsbCloudApp.Services; using AsbCloudDb.Model; using AsbCloudInfrastructure.Services.Cache; using Mapster; using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; namespace AsbCloudInfrastructure.Services { public class ScheduleService : CrudServiceBase, IScheduleService { public ScheduleService(IAsbCloudDbContext context) : base(context) { Includes.Add(nameof(ScheduleItem.Driller)); } public async Task DeleteAsync(int id, CancellationToken dto) { return await base.DeleteAsync(id,dto); } public async Task> GetAllAsync(CancellationToken token) { return await base.GetAllAsync(token); } public async Task GetAsync(int id, CancellationToken token) { var res= await base.GetAsync(id,token) .ConfigureAwait(false); return res; } public async Task GetSchedule(int idWell, DateTimeOffset workTime, CancellationToken token = default) { IQueryable query = context.Set(); foreach (var include in Includes) query = query.Include(include); var entires = query.Where(e => e.IdWell==idWell && e.DrillStart <= workTime && e.DrillEnd >= workTime) .FirstOrDefault(); if (entires is null) return null; return entires.Driller.Adapt(); } public async Task InsertAsync(ScheduleDto dto, CancellationToken token) { return await base.InsertAsync(dto,token); } public async Task UpdateAsync(int id, ScheduleDto dto, CancellationToken token) { return await base.UpdateAsync(id,dto,token); } } }