using AutoMapper; using FaKrosnoEfDataModel.Dtos; using FaKrosnoEfDataModel.Entities; using FaKrosnoEfDataModel.Queries; using Microsoft.EntityFrameworkCore; namespace FaKrosnoEfDataModel.Services { public class ScheduleOrderService : ServiceBase, IScheduleOrderService { public ScheduleOrderService(FaKrosnoDbContext context, IMapper mapper) : base(context, mapper) { } public override async Task GetById(int id) { var scheduleOrder = await Task.FromResult(ScheduleOrderQueries.GetById(Context, id)); return scheduleOrder != null ? Mapper.Map(scheduleOrder) : null; } public async Task> GetByRecipientId(int recipientId) { IList scheduleOrders = (await GetAll()).ToList(); return scheduleOrders.Where(x => x?.RecipientID == recipientId); } public async Task> GetByPurchaserId(int purchaserId) { IEnumerable scheduleOrders = (await Task.FromResult(ScheduleOrderQueries.GetEntitiesByPurchaser(Context, purchaserId))).ToList(); return scheduleOrders.Select(x => Mapper.Map(x)); } public async Task> GetByRecipientAndLastUpdateDate(int recipientId, DateTime date) { IList scheduleOrders = (await GetEntitiesByLastUpdateDate(date)).ToList(); return scheduleOrders.Where(x => x?.RecipientID == recipientId && x.LastUpdateDate >= date); } public async Task> GetEntities() { IList scheduleOrders = await Context.ScheduleOrders.Include(x => x.ScheduleOrderDetails).Include(x => x.Recipient) .ThenInclude(x => x.Purchaser).ToListAsync(); return Mapper.Map>(scheduleOrders); } public async Task> GetEntitiesByLastUpdateDate(DateTime date) { IList scheduleOrders = (await Task.FromResult(ScheduleOrderQueries.GetEntitiesByDate(Context, date))).ToList(); return Mapper.Map>(scheduleOrders); } } }