40 lines
1.6 KiB
C#
40 lines
1.6 KiB
C#
using Distribution.Data;
|
|
using Distribution.Models;
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
namespace Distribution.Features.Ride;
|
|
|
|
public class RideCancelRequestRepository(AppDBContext context) : IRideCancelRequestRepository
|
|
{
|
|
public async Task<RideCancelRequest?> GetByIdAsync(Guid id) =>
|
|
await context.RideCancelRequests.FirstOrDefaultAsync(r => r.Id == id);
|
|
|
|
public async Task<RideCancelRequest?> GetByRideIdAsync(Guid rideId) =>
|
|
await context.RideCancelRequests
|
|
.Where(r => r.FK_RideId == rideId)
|
|
.OrderByDescending(r => r.RequestedAt)
|
|
.FirstOrDefaultAsync();
|
|
|
|
public async Task<RideCancelRequest?> GetPendingByRideIdAsync(Guid rideId) =>
|
|
await context.RideCancelRequests
|
|
.FirstOrDefaultAsync(r => r.FK_RideId == rideId && r.Status == CancelRequestStatus.Pending);
|
|
|
|
public async Task<List<RideCancelRequest>> GetAllAsync(CancelRequestStatus? status, int page, int pageSize) =>
|
|
await context.RideCancelRequests
|
|
.Where(r => status == null || r.Status == status)
|
|
.OrderByDescending(r => r.RequestedAt)
|
|
.Skip((page - 1) * pageSize)
|
|
.Take(pageSize)
|
|
.ToListAsync();
|
|
|
|
public async Task<int> GetCountAsync(CancelRequestStatus? status) =>
|
|
await context.RideCancelRequests
|
|
.CountAsync(r => status == null || r.Status == status);
|
|
|
|
public async Task AddAsync(RideCancelRequest request) =>
|
|
await context.RideCancelRequests.AddAsync(request);
|
|
|
|
public void Update(RideCancelRequest request) =>
|
|
context.RideCancelRequests.Update(request);
|
|
}
|