using Distribution.Data; using Distribution.Models; using Microsoft.EntityFrameworkCore; namespace Distribution.Features.ChequeBook; public class ChequeBookRepository(AppDBContext context) : IChequeBookRepository { public async Task GetByNoAsync(string chequeBookNo, bool includePages) { var query = context.ChequeBooks.AsQueryable(); if (includePages) query = query.Include(b => b.Pages); return await query.FirstOrDefaultAsync(b => b.ChequeBookNo == chequeBookNo); } public async Task<(List Items, int TotalCount)> ListAsync( Guid? bankAccountId, int? branchId, ChequeBookStatus? status, int page, int pageSize) { var query = context.ChequeBooks.AsQueryable(); if (bankAccountId is not null) query = query.Where(b => b.FK_BankAccountId == bankAccountId); if (branchId is not null) query = query.Where(b => b.BranchId == branchId); if (status is not null) query = query.Where(b => b.Status == status); var total = await query.CountAsync(); var items = await query .OrderByDescending(b => b.CreatedAt) .Skip((page - 1) * pageSize) .Take(pageSize) .ToListAsync(); return (items, total); } public async Task BookNoExistsAsync(string chequeBookNo) => await context.ChequeBooks.AnyAsync(b => b.ChequeBookNo == chequeBookNo); public async Task AddAsync(Models.ChequeBook book) => await context.ChequeBooks.AddAsync(book); public void Update(Models.ChequeBook book) => context.ChequeBooks.Update(book); public async Task GetPageByNoAsync(string chequeNo) => await context.ChequePages .Include(p => p.ChequeBook) .FirstOrDefaultAsync(p => p.ChequeNo == chequeNo); public void UpdatePage(Models.ChequePage page) => context.ChequePages.Update(page); }