Changed the logic in API to get Attendance logs by employee
This commit is contained in:
parent
2e29dc9946
commit
3bd38f3c68
@ -36,6 +36,7 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
private readonly ILoggingService _logger;
|
private readonly ILoggingService _logger;
|
||||||
private readonly IHubContext<MarcoHub> _signalR;
|
private readonly IHubContext<MarcoHub> _signalR;
|
||||||
private readonly IFirebaseService _firebase;
|
private readonly IFirebaseService _firebase;
|
||||||
|
private readonly Guid tenantId;
|
||||||
|
|
||||||
public AttendanceController(
|
public AttendanceController(
|
||||||
ApplicationDbContext context, EmployeeHelper employeeHelper, IProjectServices projectServices, UserHelper userHelper,
|
ApplicationDbContext context, EmployeeHelper employeeHelper, IProjectServices projectServices, UserHelper userHelper,
|
||||||
@ -50,6 +51,7 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
_permission = permission;
|
_permission = permission;
|
||||||
_signalR = signalR;
|
_signalR = signalR;
|
||||||
_firebase = firebase;
|
_firebase = firebase;
|
||||||
|
tenantId = userHelper.GetTenantId();
|
||||||
}
|
}
|
||||||
|
|
||||||
private Guid GetTenantId()
|
private Guid GetTenantId()
|
||||||
@ -85,30 +87,34 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("log/employee/{employeeId}")]
|
[HttpGet("log/employee/{employeeId}")]
|
||||||
public async Task<IActionResult> GetAttendanceLogByEmployeeId(Guid employeeId, [FromQuery] string? dateFrom = null, [FromQuery] string? dateTo = null)
|
public async Task<IActionResult> 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<object>.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<object>.ErrorResponse("Invalid Date", "Invalid Date", 400));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (employeeId == Guid.Empty)
|
if (employeeId == Guid.Empty)
|
||||||
{
|
{
|
||||||
_logger.LogWarning("The employee Id sent by user is empty");
|
_logger.LogWarning("The employee Id sent by user is empty");
|
||||||
return BadRequest(ApiResponse<object>.ErrorResponse("Employee ID is required and must not be Empty.", "Employee ID is required and must not be empty.", 400));
|
return BadRequest(ApiResponse<object>.ErrorResponse("Employee ID is required and must not be Empty.", "Employee ID is required and must not be empty.", 400));
|
||||||
}
|
}
|
||||||
List<Attendance> 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<object>.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<Attendance> attendances = await _context.Attendes
|
||||||
|
.Where(c => c.EmployeeId == employeeId && c.TenantId == tenantId && c.AttendanceDate.Date >= dateFrom && c.AttendanceDate.Date <= dateTo).ToListAsync();
|
||||||
|
|
||||||
List<EmployeeAttendanceVM> results = new List<EmployeeAttendanceVM>();
|
List<EmployeeAttendanceVM> results = new List<EmployeeAttendanceVM>();
|
||||||
|
|
||||||
if (employee != null)
|
if (employee != null)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user