using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using LCU.API.Internal.Operations.IncentiveApiLib.Persistence; using LCU.Library.Internal.IncentiveApiModels.Entities; using LCU.Library.Internal.IncentiveApiModels.Enums; using Microsoft.EntityFrameworkCore; namespace LCU.API.Internal.Operations.IncentiveApiLib.Repositories; public class ActivityTransferActionRepository : BaseRepository, IActivityTransferActionRepository { public ActivityTransferActionRepository(IApplicationDbContext context) : base(context) { } public async Task SaveTransferAsync(ActivityTransferAction activityTransferAction) { await _context.ActivityTransferActions.AddAsync(activityTransferAction); return activityTransferAction.Id; } public async Task GetTransferActionById(int id) { return await _context.ActivityTransferActions .Include(x => x.RequestedActivity) .FirstOrDefaultAsync(x => x.Id == id); } public async Task GetRequestedTransferActionByActivityId(int requestedActivityId) { return await _context.ActivityTransferActions .FirstOrDefaultAsync(x => x.RequestedActivityId == requestedActivityId && x.State == ActivityTransferState.Requested); } public async Task> GetActiveTransfersForStateAsync( ActivityState state) { return await _context.ActivityTransferActions .Include(x => x.RequestedActivity) .Where(x => x.ActivityStateBeforeTransfer == state && x.State == ActivityTransferState.Requested) .ToListAsync(); } }