From 8b44fb6f3949f79aed590781fedd21c26c5e747d Mon Sep 17 00:00:00 2001 From: "ashutosh.nehete" Date: Fri, 7 Nov 2025 18:01:31 +0530 Subject: [PATCH] Added the API to get list of advance payment transaction --- .../Controllers/ExpenseController.cs | 10 +++- Marco.Pms.Services/Service/ExpensesService.cs | 47 ++++++++++++++++++- .../ServiceInterfaces/IExpensesService.cs | 4 +- 3 files changed, 57 insertions(+), 4 deletions(-) diff --git a/Marco.Pms.Services/Controllers/ExpenseController.cs b/Marco.Pms.Services/Controllers/ExpenseController.cs index 458ac14..502b726 100644 --- a/Marco.Pms.Services/Controllers/ExpenseController.cs +++ b/Marco.Pms.Services/Controllers/ExpenseController.cs @@ -281,9 +281,17 @@ namespace Marco.Pms.Services.Controllers } #endregion - #region =================================================================== Payment Request Functions =================================================================== + #region =================================================================== Advance Payment Functions =================================================================== + [HttpGet("get/transactions/{employeeId}")] + public async Task GetAdvancePaymentTransaction(Guid employeeId) + { + var loggedInEmployee = await _userHelper.GetCurrentEmployeeAsync(); + var response = await _expensesService.GetAdvancePaymentTransactionAsync(employeeId, loggedInEmployee, tenantId); + return StatusCode(response.StatusCode, response); + + } #endregion } } diff --git a/Marco.Pms.Services/Service/ExpensesService.cs b/Marco.Pms.Services/Service/ExpensesService.cs index 90e5e0f..d4d8994 100644 --- a/Marco.Pms.Services/Service/ExpensesService.cs +++ b/Marco.Pms.Services/Service/ExpensesService.cs @@ -3147,8 +3147,53 @@ namespace Marco.Pms.Services.Service } #endregion - #region =================================================================== Payment Request Functions =================================================================== + #region =================================================================== Advance Payment Functions =================================================================== + public async Task> GetAdvancePaymentTransactionAsync(Guid employeeId, Employee loggedInEmployee, Guid tenantId) + { + _logger.LogInfo("Start GetAdvancePaymentTransactionAsync called by EmployeeId: {EmployeeId} for TenantId: {TenantId} and EmployeeId param: {ParamEmployeeId}", + loggedInEmployee.Id, tenantId, employeeId); + try + { + // Fetch advance payment transactions for specified employee, including related navigation properties + var transactions = await _context.AdvancePaymentTransactions + .Include(apt => apt.Project) + .Include(apt => apt.Employee).ThenInclude(e => e!.JobRole) + .Include(apt => apt.CreatedBy).ThenInclude(e => e!.JobRole) + .Where(apt => apt.EmployeeId == employeeId && apt.TenantId == tenantId && apt.IsActive) + .OrderByDescending(apt => apt.CreatedAt) + .ToListAsync(); + + // Check if any transactions found + if (transactions == null || !transactions.Any()) + { + _logger.LogWarning("No advance payment transactions found for EmployeeId: {EmployeeId} in TenantId: {TenantId}.", employeeId, tenantId); + return ApiResponse.ErrorResponse("No advance payment transactions found.", null, 404); + } + + // Map transactions to view model with formatted FinanceUId + var response = transactions.Select(transaction => + { + var result = _mapper.Map(transaction); + result.FinanceUId = $"{transaction.FinanceUIdPrefix}/{transaction.FinanceUIdPostfix:D5}"; + return result; + }).ToList(); + + _logger.LogInfo("Fetched {Count} advance payment transactions for EmployeeId: {EmployeeId} in TenantId: {TenantId}.", response.Count, employeeId, tenantId); + + return ApiResponse.SuccessResponse(response, "Advance payment transactions fetched successfully.", 200); + } + catch (Exception ex) + { + _logger.LogError(ex, "Exception occurred in GetAdvancePaymentTransactionAsync for EmployeeId: {EmployeeId} in TenantId: {TenantId}: {Message}", + employeeId, tenantId, ex.Message); + return ApiResponse.ErrorResponse("Internal exception occurred.", ExceptionMapper(ex), 500); + } + finally + { + _logger.LogInfo("End GetAdvancePaymentTransactionAsync called by EmployeeId: {EmployeeId}", loggedInEmployee.Id); + } + } #endregion diff --git a/Marco.Pms.Services/Service/ServiceInterfaces/IExpensesService.cs b/Marco.Pms.Services/Service/ServiceInterfaces/IExpensesService.cs index 1af25c4..3c1f637 100644 --- a/Marco.Pms.Services/Service/ServiceInterfaces/IExpensesService.cs +++ b/Marco.Pms.Services/Service/ServiceInterfaces/IExpensesService.cs @@ -37,8 +37,8 @@ namespace Marco.Pms.Services.Service.ServiceInterfaces Task> EditRecurringPaymentAsync(Guid id, UpdateRecurringTemplateDto model, Employee loggedInEmployee, Guid tenantId); #endregion - #region =================================================================== Payment Request Functions =================================================================== - + #region =================================================================== Advance Payment Functions =================================================================== + Task> GetAdvancePaymentTransactionAsync(Guid id, Employee loggedInEmployee, Guid tenantId); #endregion