Added the job progression API
This commit is contained in:
parent
6b8ba85a31
commit
aa604f4d9e
@ -2,6 +2,7 @@
|
|||||||
using Marco.Pms.Model.Dtos.Attendance;
|
using Marco.Pms.Model.Dtos.Attendance;
|
||||||
using Marco.Pms.Model.Entitlements;
|
using Marco.Pms.Model.Entitlements;
|
||||||
using Marco.Pms.Model.Expenses;
|
using Marco.Pms.Model.Expenses;
|
||||||
|
using Marco.Pms.Model.ServiceProject;
|
||||||
using Marco.Pms.Model.Utilities;
|
using Marco.Pms.Model.Utilities;
|
||||||
using Marco.Pms.Model.ViewModels.DashBoard;
|
using Marco.Pms.Model.ViewModels.DashBoard;
|
||||||
using Marco.Pms.Services.Service;
|
using Marco.Pms.Services.Service;
|
||||||
@ -1075,78 +1076,110 @@ namespace Marco.Pms.Services.Controllers
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//[HttpGet("job/progression")]
|
[HttpGet("job/progression")]
|
||||||
//public async Task<IActionResult> GetJobProgressionAsync([FromQuery] Guid? projectId)
|
public async Task<IActionResult> GetJobProgressionAsync([FromQuery] Guid? projectId)
|
||||||
//{
|
{
|
||||||
// Guid AssignedStatus = Guid.Parse("cfa1886d-055f-4ded-84c6-42a2a8a14a66");
|
Guid AssignedStatus = Guid.Parse("cfa1886d-055f-4ded-84c6-42a2a8a14a66");
|
||||||
// Guid InProgressStatus = Guid.Parse("5a6873a5-fed7-4745-a52f-8f61bf3bd72d");
|
Guid InProgressStatus = Guid.Parse("5a6873a5-fed7-4745-a52f-8f61bf3bd72d");
|
||||||
// Guid ReviewDoneStatus = Guid.Parse("ed10ab57-dbaa-4ca5-8ecd-56745dcbdbd7");
|
Guid ReviewDoneStatus = Guid.Parse("ed10ab57-dbaa-4ca5-8ecd-56745dcbdbd7");
|
||||||
// Guid ClosedStatus = Guid.Parse("3ddeefb5-ae3c-4e10-a922-35e0a452bb69");
|
Guid ClosedStatus = Guid.Parse("3ddeefb5-ae3c-4e10-a922-35e0a452bb69");
|
||||||
|
|
||||||
// if (tenantId == Guid.Empty)
|
if (tenantId == Guid.Empty)
|
||||||
// {
|
{
|
||||||
// _logger.LogWarning("Invalid request: TenantId is empty on progression endpoint");
|
_logger.LogWarning("Invalid request: TenantId is empty on progression endpoint");
|
||||||
// return BadRequest(ApiResponse<object>.ErrorResponse("Invalid TenantId", "Provided Invalid TenantId", 400));
|
return BadRequest(ApiResponse<object>.ErrorResponse("Invalid TenantId", "Provided Invalid TenantId", 400));
|
||||||
// }
|
}
|
||||||
|
|
||||||
// var loggedInEmployee = await _userHelper.GetCurrentEmployeeAsync();
|
var loggedInEmployee = await _userHelper.GetCurrentEmployeeAsync();
|
||||||
// var jobIds = await _context.JobEmployeeMappings
|
var jobIds = await _context.JobEmployeeMappings
|
||||||
// .Where(jem => jem.AssigneeId == loggedInEmployee.Id && jem.TenantId == tenantId)
|
.Where(jem => jem.AssigneeId == loggedInEmployee.Id && jem.TenantId == tenantId)
|
||||||
// .Select(jem => jem.JobTicketId)
|
.Select(jem => jem.JobTicketId)
|
||||||
// .ToListAsync();
|
.ToListAsync();
|
||||||
|
|
||||||
// if (projectId.HasValue)
|
var query = _context.JobTickets
|
||||||
// {
|
.Include(jt => jt.Project)
|
||||||
// var hasPermission = await _permissionServices.HasServiceProjectPermission(loggedInEmployee.Id, projectId.Value);
|
.Include(jt => jt.CreatedBy).ThenInclude(e => e!.JobRole)
|
||||||
// if (!hasPermission)
|
.Where(jt => jt.StatusId != ReviewDoneStatus
|
||||||
// {
|
&& jt.StatusId != ClosedStatus
|
||||||
// return StatusCode(403,
|
&& jt.Project != null
|
||||||
// ApiResponse<object>.ErrorResponse("You do not have permission to access this resource", "You do not have permission to access this resource", 403));
|
&& jt.CreatedBy != null
|
||||||
// }
|
&& jt.TenantId == tenantId);
|
||||||
// var jobs = await _context.JobTickets
|
|
||||||
// .Include(jt => jt.Project)
|
|
||||||
// .Include(jt => jt.CreatedBy).ThenInclude(e => e!.JobRole)
|
|
||||||
// .Where(jt => jt.ProjectId == projectId.Value
|
|
||||||
// && jt.StatusId != ReviewDoneStatus
|
|
||||||
// && jt.StatusId != ClosedStatus
|
|
||||||
// && jt.Project != null
|
|
||||||
// && jt.CreatedBy != null
|
|
||||||
// && jt.TenantId == tenantId)
|
|
||||||
// .ToListAsync();
|
|
||||||
|
|
||||||
// var inProgressJobIds = jobs.Where(jt => jt.StatusId == InProgressStatus).Select(jt => jt.Id).ToList();
|
if (projectId.HasValue)
|
||||||
|
{
|
||||||
|
var hasPermission = await _permissionServices.HasServiceProjectPermission(loggedInEmployee.Id, projectId.Value);
|
||||||
|
if (!hasPermission)
|
||||||
|
{
|
||||||
|
return StatusCode(403,
|
||||||
|
ApiResponse<object>.ErrorResponse("You do not have permission to access this resource", "You do not have permission to access this resource", 403));
|
||||||
|
}
|
||||||
|
query = query.Where(jt => jt.ProjectId == projectId.Value);
|
||||||
|
}
|
||||||
|
var jobs = await query
|
||||||
|
.ToListAsync();
|
||||||
|
|
||||||
// var latestTagIns = await _context.JobAttendance
|
var inProgressJobIds = jobs.Where(jt => jt.StatusId == InProgressStatus).Select(jt => jt.Id).ToList();
|
||||||
// .Include(ja => ja.Employee)
|
|
||||||
// .Where(ja => inProgressJobIds.Contains(ja.JobTicketId)
|
|
||||||
// && ja.Action == TAGGING_MARK_TYPE.TAG_IN
|
|
||||||
// && ja.TaggedOutAt == null
|
|
||||||
// && ja.TenantId == tenantId)
|
|
||||||
// .GroupBy(ja => ja.JobTicketId)
|
|
||||||
// .Select(g => new
|
|
||||||
// {
|
|
||||||
// JobTicketId = g.Key,
|
|
||||||
// Employee = g.Select(ja => ja.Employee).FirstOrDefault(),
|
|
||||||
// TagInAt = g.Max(ja => ja.TaggedInAt)
|
|
||||||
// })
|
|
||||||
// .ToListAsync();
|
|
||||||
|
|
||||||
// var assignedJobs = jobs
|
var latestTagIns = await _context.JobAttendance
|
||||||
// .Where(jt => jt.StatusId == AssignedStatus)
|
.Include(ja => ja.Employee)
|
||||||
// .Take(5)
|
.Where(ja => inProgressJobIds.Contains(ja.JobTicketId)
|
||||||
// .Select(jt => new
|
&& ja.Action == TAGGING_MARK_TYPE.TAG_IN
|
||||||
// {
|
&& ja.TaggedOutAt == null
|
||||||
// Project = jt.Project!.Name,
|
&& ja.TenantId == tenantId)
|
||||||
// AssignedBy = jt.CreatedBy!.FirstName + " " + jt.CreatedBy.LastName,
|
.GroupBy(ja => ja.JobTicketId)
|
||||||
// Title = jt.Title,
|
.Select(g => new
|
||||||
// AssignedAt = jt.CreatedAt,
|
{
|
||||||
|
JobTicketId = g.Key,
|
||||||
|
Employee = g.Select(ja => ja.Employee).FirstOrDefault(),
|
||||||
|
TagInAt = g.Max(ja => ja.TaggedInAt)
|
||||||
|
})
|
||||||
|
.ToListAsync();
|
||||||
|
|
||||||
// })
|
var assignedJobs = jobs
|
||||||
// .ToList();
|
.Where(jt => jt.StatusId == AssignedStatus)
|
||||||
// var inProgressJobs = jobs.Where(jt => jt.StatusId == InProgressStatus).Take(5).ToList();
|
.Take(5)
|
||||||
// var selfAssignedJobs = jobs.Where(jt => jobIds.Contains(jt.Id)).Take(5).ToList();
|
.Select(jt => new
|
||||||
// }
|
{
|
||||||
// return Ok();
|
Project = jt.Project!.Name,
|
||||||
//}
|
AssignedBy = jt.CreatedBy!.FirstName + " " + jt.CreatedBy.LastName,
|
||||||
|
Title = jt.Title,
|
||||||
|
AssignedAt = jt.CreatedAt,
|
||||||
|
|
||||||
|
})
|
||||||
|
.ToList();
|
||||||
|
var inProgressJobs = jobs
|
||||||
|
.Where(jt => jt.StatusId == InProgressStatus)
|
||||||
|
.Take(5)
|
||||||
|
.Select(jt => new
|
||||||
|
{
|
||||||
|
Project = jt.Project!.Name,
|
||||||
|
AssignedBy = jt.CreatedBy!.FirstName + " " + jt.CreatedBy.LastName,
|
||||||
|
Title = jt.Title,
|
||||||
|
AssignedAt = jt.CreatedAt,
|
||||||
|
|
||||||
|
})
|
||||||
|
.ToList();
|
||||||
|
var selfAssignedJobs = jobs
|
||||||
|
.Where(jt => jobIds.Contains(jt.Id))
|
||||||
|
.Take(5)
|
||||||
|
.Select(jt => new
|
||||||
|
{
|
||||||
|
Project = jt.Project!.Name,
|
||||||
|
AssignedBy = jt.CreatedBy!.FirstName + " " + jt.CreatedBy.LastName,
|
||||||
|
Title = jt.Title,
|
||||||
|
AssignedAt = jt.CreatedAt,
|
||||||
|
|
||||||
|
})
|
||||||
|
.ToList();
|
||||||
|
|
||||||
|
var response = new
|
||||||
|
{
|
||||||
|
AssignedJobs = assignedJobs,
|
||||||
|
InProgressJobs = inProgressJobs,
|
||||||
|
AllJobs = selfAssignedJobs
|
||||||
|
};
|
||||||
|
|
||||||
|
return Ok(ApiResponse<object>.SuccessResponse(response, "job progression fetched successfully", 200));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user