47 lines
1.7 KiB
C#
47 lines
1.7 KiB
C#
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<int> SaveTransferAsync(ActivityTransferAction activityTransferAction)
|
|
{
|
|
await _context.ActivityTransferActions.AddAsync(activityTransferAction);
|
|
return activityTransferAction.Id;
|
|
}
|
|
|
|
public async Task<ActivityTransferAction> GetTransferActionById(int id)
|
|
{
|
|
return await _context.ActivityTransferActions
|
|
.Include(x => x.RequestedActivity)
|
|
.FirstOrDefaultAsync(x => x.Id == id);
|
|
}
|
|
|
|
public async Task<ActivityTransferAction> GetRequestedTransferActionByActivityId(int requestedActivityId)
|
|
{
|
|
return await _context.ActivityTransferActions
|
|
.FirstOrDefaultAsync(x => x.RequestedActivityId == requestedActivityId
|
|
&& x.State == ActivityTransferState.Requested);
|
|
}
|
|
|
|
public async Task<IReadOnlyCollection<ActivityTransferAction>> GetActiveTransfersForStateAsync(
|
|
ActivityState state)
|
|
{
|
|
return await _context.ActivityTransferActions
|
|
.Include(x => x.RequestedActivity)
|
|
.Where(x => x.ActivityStateBeforeTransfer == state
|
|
&& x.State == ActivityTransferState.Requested)
|
|
.ToListAsync();
|
|
}
|
|
}
|