using Distribution.Data; using Distribution.Models; using Microsoft.EntityFrameworkCore; namespace Distribution.Features.Ride; public class RideCancelRequestRepository(AppDBContext context) : IRideCancelRequestRepository { public async Task GetByIdAsync(Guid id) => await context.RideCancelRequests.FirstOrDefaultAsync(r => r.Id == id); public async Task GetByRideIdAsync(Guid rideId) => await context.RideCancelRequests .Where(r => r.FK_RideId == rideId) .OrderByDescending(r => r.RequestedAt) .FirstOrDefaultAsync(); public async Task GetPendingByRideIdAsync(Guid rideId) => await context.RideCancelRequests .FirstOrDefaultAsync(r => r.FK_RideId == rideId && r.Status == CancelRequestStatus.Pending); public async Task> 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 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); }