From 3bd38f3c68d2de9823c42f1227f97686cf99cc72 Mon Sep 17 00:00:00 2001 From: "ashutosh.nehete" Date: Mon, 6 Oct 2025 16:10:58 +0530 Subject: [PATCH] Changed the logic in API to get Attendance logs by employee --- .../Controllers/AttendanceController.cs | 42 +++++++++++-------- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/Marco.Pms.Services/Controllers/AttendanceController.cs b/Marco.Pms.Services/Controllers/AttendanceController.cs index cdcd71c..4a66a99 100644 --- a/Marco.Pms.Services/Controllers/AttendanceController.cs +++ b/Marco.Pms.Services/Controllers/AttendanceController.cs @@ -36,6 +36,7 @@ namespace MarcoBMS.Services.Controllers private readonly ILoggingService _logger; private readonly IHubContext _signalR; private readonly IFirebaseService _firebase; + private readonly Guid tenantId; public AttendanceController( ApplicationDbContext context, EmployeeHelper employeeHelper, IProjectServices projectServices, UserHelper userHelper, @@ -50,6 +51,7 @@ namespace MarcoBMS.Services.Controllers _permission = permission; _signalR = signalR; _firebase = firebase; + tenantId = userHelper.GetTenantId(); } private Guid GetTenantId() @@ -85,30 +87,34 @@ namespace MarcoBMS.Services.Controllers } [HttpGet("log/employee/{employeeId}")] - public async Task GetAttendanceLogByEmployeeId(Guid employeeId, [FromQuery] string? dateFrom = null, [FromQuery] string? dateTo = null) + public async Task GetAttendanceLogByEmployeeId(Guid employeeId, [FromQuery] DateTime? dateFrom = null, [FromQuery] DateTime? dateTo = null) { - Guid TenantId = GetTenantId(); - DateTime fromDate = new DateTime(); - DateTime toDate = new DateTime(); - - if (dateFrom != null && DateTime.TryParse(dateFrom, out fromDate) == false) - { - _logger.LogWarning("User sent Invalid from Date while featching attendance logs"); - return BadRequest(ApiResponse.ErrorResponse("Invalid Date", "Invalid Date", 400)); - } - if (dateTo != null && DateTime.TryParse(dateTo, out toDate) == false) - { - _logger.LogWarning("User sent Invalid to Date while featching attendance logs"); - return BadRequest(ApiResponse.ErrorResponse("Invalid Date", "Invalid Date", 400)); - } - if (employeeId == Guid.Empty) { _logger.LogWarning("The employee Id sent by user is empty"); return BadRequest(ApiResponse.ErrorResponse("Employee ID is required and must not be Empty.", "Employee ID is required and must not be empty.", 400)); } - List attendances = await _context.Attendes.Where(c => c.EmployeeId == employeeId && c.TenantId == TenantId && c.AttendanceDate.Date >= fromDate && c.AttendanceDate.Date <= toDate).ToListAsync(); - Employee? employee = await _context.Employees.Include(e => e.JobRole).FirstOrDefaultAsync(e => e.Id == employeeId && e.TenantId == TenantId && e.IsActive); + + Employee? employee = await _context.Employees.Include(e => e.JobRole).FirstOrDefaultAsync(e => e.Id == employeeId && e.TenantId == tenantId); + if (employee == null) + { + _logger.LogWarning("Employee {EmployeeId} not found", employeeId); + return NotFound(ApiResponse.ErrorResponse("Employee not found", "Employee not found in database", 404)); + } + + if (!dateFrom.HasValue) + { + dateFrom = DateTime.UtcNow; + } + if (!dateTo.HasValue) + { + var days = 0 - 7; + dateTo = dateFrom.Value.AddDays(days); + } + + List attendances = await _context.Attendes + .Where(c => c.EmployeeId == employeeId && c.TenantId == tenantId && c.AttendanceDate.Date >= dateFrom && c.AttendanceDate.Date <= dateTo).ToListAsync(); + List results = new List(); if (employee != null)