Added the API to get list of employee with advance payments
This commit is contained in:
parent
8b44fb6f39
commit
7a80345c64
@ -292,6 +292,15 @@ namespace Marco.Pms.Services.Controllers
|
|||||||
return StatusCode(response.StatusCode, response);
|
return StatusCode(response.StatusCode, response);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[HttpGet("get/advance-payment/employee/list")]
|
||||||
|
public async Task<IActionResult> GetAdavncePaymentEmployeeList([FromQuery] string? searchString)
|
||||||
|
{
|
||||||
|
var loggedInEmployee = await _userHelper.GetCurrentEmployeeAsync();
|
||||||
|
var response = await _expensesService.GetAdvancePaymentEmployeeListAsync(searchString, loggedInEmployee, tenantId);
|
||||||
|
|
||||||
|
return StatusCode(response.StatusCode, response);
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3194,6 +3194,51 @@ namespace Marco.Pms.Services.Service
|
|||||||
_logger.LogInfo("End GetAdvancePaymentTransactionAsync called by EmployeeId: {EmployeeId}", loggedInEmployee.Id);
|
_logger.LogInfo("End GetAdvancePaymentTransactionAsync called by EmployeeId: {EmployeeId}", loggedInEmployee.Id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public async Task<ApiResponse<object>> GetAdvancePaymentEmployeeListAsync(string? searchString, Employee loggedInEmployee, Guid tenantId)
|
||||||
|
{
|
||||||
|
_logger.LogInfo("Start GetAdvancePaymentEmployeeListAsync called by EmployeeId: {EmployeeId} for TenantId: {TenantId} with SearchString: {SearchString}",
|
||||||
|
loggedInEmployee.Id, tenantId, string.IsNullOrWhiteSpace(searchString) ? "NULL or Empty" : searchString);
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// Base query: select employees who have advance payment transactions for the tenant
|
||||||
|
var employeeQuery = _context.AdvancePaymentTransactions
|
||||||
|
.Include(apt => apt.Employee)
|
||||||
|
.ThenInclude(e => e!.JobRole)
|
||||||
|
.Where(apt => apt.TenantId == tenantId && apt.Employee != null)
|
||||||
|
.Select(apt => apt.Employee!);
|
||||||
|
|
||||||
|
// 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));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fetch distinct employees matching criteria
|
||||||
|
var employees = await employeeQuery
|
||||||
|
.Distinct()
|
||||||
|
.ToListAsync();
|
||||||
|
|
||||||
|
// Map to response view model
|
||||||
|
var response = _mapper.Map<List<BasicEmployeeVM>>(employees);
|
||||||
|
|
||||||
|
_logger.LogInfo("Fetched {Count} employees with advance payments for TenantId: {TenantId}", employees.Count, tenantId);
|
||||||
|
|
||||||
|
return ApiResponse<object>.SuccessResponse(response, "List of employees having advance payments fetched successfully.", 200);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "Error in GetAdvancePaymentEmployeeListAsync called by EmployeeId: {EmployeeId} for TenantId: {TenantId}: {Message}",
|
||||||
|
loggedInEmployee.Id, tenantId, ex.Message);
|
||||||
|
|
||||||
|
return ApiResponse<object>.ErrorResponse("An error occurred while fetching employees with advance payments.", ex.Message, 500);
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
_logger.LogInfo("End GetAdvancePaymentEmployeeListAsync called by EmployeeId: {EmployeeId}", loggedInEmployee.Id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|||||||
@ -39,6 +39,7 @@ namespace Marco.Pms.Services.Service.ServiceInterfaces
|
|||||||
|
|
||||||
#region =================================================================== Advance Payment Functions ===================================================================
|
#region =================================================================== Advance Payment Functions ===================================================================
|
||||||
Task<ApiResponse<object>> GetAdvancePaymentTransactionAsync(Guid id, Employee loggedInEmployee, Guid tenantId);
|
Task<ApiResponse<object>> GetAdvancePaymentTransactionAsync(Guid id, Employee loggedInEmployee, Guid tenantId);
|
||||||
|
Task<ApiResponse<object>> GetAdvancePaymentEmployeeListAsync(string? searchString, Employee loggedInEmployee, Guid tenantId);
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user