refactor finance.
This commit is contained in:
@@ -27,12 +27,24 @@ public class ExpenseService : IExpenseService
|
||||
|
||||
public async Task<PagedResult<ExpenseListItemDto>> GetPagedAsync(
|
||||
int page, int pageSize, string? search, int? ministryId,
|
||||
int? categoryGroupId, string? status, DateOnly? from, DateOnly? to)
|
||||
int? categoryGroupId, string? status, DateOnly? from, DateOnly? to,
|
||||
int? subCategoryId = null, string? statuses = null)
|
||||
{
|
||||
var query = _db.Expenses.AsNoTracking().AsQueryable();
|
||||
if (ministryId.HasValue) query = query.Where(e => e.MinistryId == ministryId.Value);
|
||||
if (categoryGroupId.HasValue) query = query.Where(e => e.CategoryGroupId == categoryGroupId.Value);
|
||||
if (!string.IsNullOrWhiteSpace(status)) query = query.Where(e => e.Status == status);
|
||||
if (subCategoryId.HasValue) query = query.Where(e => e.SubCategoryId == subCategoryId.Value);
|
||||
// `statuses` (comma-separated) takes precedence over single `status`; lets the dashboard
|
||||
// request the Paid+Approved set in one call.
|
||||
if (!string.IsNullOrWhiteSpace(statuses))
|
||||
{
|
||||
var set = statuses.Split(',', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries);
|
||||
query = query.Where(e => set.Contains(e.Status));
|
||||
}
|
||||
else if (!string.IsNullOrWhiteSpace(status))
|
||||
{
|
||||
query = query.Where(e => e.Status == status);
|
||||
}
|
||||
if (from.HasValue) query = query.Where(e => e.ExpenseDate >= from.Value);
|
||||
if (to.HasValue) query = query.Where(e => e.ExpenseDate <= to.Value);
|
||||
if (!string.IsNullOrWhiteSpace(search))
|
||||
@@ -41,6 +53,7 @@ public class ExpenseService : IExpenseService
|
||||
query = query.Where(e =>
|
||||
e.Description.ToLower().Contains(s) ||
|
||||
(e.VendorName != null && e.VendorName.ToLower().Contains(s)) ||
|
||||
(e.CheckNumber != null && e.CheckNumber.ToLower().Contains(s)) ||
|
||||
(e.Member != null && (
|
||||
(e.Member.FirstName_en + " " + e.Member.LastName_en).ToLower().Contains(s) ||
|
||||
(e.Member.FirstName_zh != null && e.Member.FirstName_zh.Contains(term)) ||
|
||||
@@ -80,6 +93,7 @@ public class ExpenseService : IExpenseService
|
||||
MemberName = e.MemberId != null ? memNames.GetValueOrDefault(e.MemberId.Value) : null,
|
||||
ExpenseDate = e.ExpenseDate.ToString("yyyy-MM-dd"),
|
||||
HasReceipt = e.ReceiptBlobPath != null,
|
||||
CheckNumber = e.CheckNumber,
|
||||
}).ToList();
|
||||
|
||||
return new PagedResult<ExpenseListItemDto> { Items = items, TotalCount = total, Page = page, PageSize = pageSize };
|
||||
|
||||
Reference in New Issue
Block a user