Updated the API to get employee list with current advance payment balance

This commit is contained in:
ashutosh.nehete 2025-11-19 10:31:21 +05:30
parent 03ee834505
commit a7a9fb4012

View File

@ -3368,26 +3368,42 @@ namespace Marco.Pms.Services.Service
try
{
// Base query: select employees who have advance payment transactions for the tenant
var employeeQuery = _context.AdvancePaymentTransactions
var advancePaymentQuery = _context.AdvancePaymentTransactions
.Include(apt => apt.Employee)
.ThenInclude(e => e!.JobRole)
.Where(apt => apt.TenantId == tenantId && apt.Employee != null)
.Select(apt => apt.Employee!);
.Where(apt => apt.TenantId == tenantId && apt.Employee != null && apt.Employee.JobRole != null);
// Apply search filter if provided (concatenate first and last name for full name search)
if (!string.IsNullOrWhiteSpace(searchString))
{
employeeQuery = employeeQuery.Where(e =>
(e.FirstName + " " + e.LastName).Contains(searchString));
advancePaymentQuery = advancePaymentQuery.Where(apt =>
(apt.Employee!.FirstName + " " + apt.Employee.LastName).Contains(searchString));
}
// Fetch distinct employees matching criteria
var employees = await employeeQuery
.Distinct()
var employees = await advancePaymentQuery
.ToListAsync();
// Map to response view model
var response = _mapper.Map<List<BasicEmployeeVM>>(employees);
var response = employees
.GroupBy(apt => apt.EmployeeId)
.Select(g => new
{
EmployeeId = g.Key,
Employee = g.OrderByDescending(apt => apt.CreatedAt).Select(apt => new
{
Id = apt.Employee!.Id,
FirstName = apt.Employee.FirstName,
LastName = apt.Employee.LastName,
JobRoleName = apt.Employee.JobRole!.Name,
BalanceAmount = apt.CurrentBalance
}).FirstOrDefault()
})
.Where(e => e.Employee != null)
.Select(e => e.Employee!)
.OrderBy(e => e.FirstName).ThenBy(e => e.LastName)
.ToList();
_logger.LogInfo("Fetched {Count} employees with advance payments for TenantId: {TenantId}", employees.Count, tenantId);
@ -3406,6 +3422,7 @@ namespace Marco.Pms.Services.Service
}
}
#endregion
#region =================================================================== Helper Functions ===================================================================