เครื่องราชเช็คตามรายการ

This commit is contained in:
kittapath 2024-11-14 11:00:22 +07:00
parent 2efc1910f6
commit a951378b1f
21 changed files with 57711 additions and 61 deletions

View file

@ -1,7 +1,9 @@
using BMA.EHR.Application.Repositories;
using BMA.EHR.Application.Repositories.MessageQueue;
using BMA.EHR.Application.Repositories.Reports;
using BMA.EHR.Application.Requests;
using BMA.EHR.Application.Responses.Insignias;
using BMA.EHR.Application.Responses.Organizations;
using BMA.EHR.Domain.Common;
using BMA.EHR.Domain.Extensions;
using BMA.EHR.Domain.Models.Insignias;
@ -44,6 +46,8 @@ namespace BMA.EHR.Insignia.Service.Controllers
private const string INSIGNIA_QUEUE = "bma_insignia_request";
private readonly InsigniaPeriodsRepository _insigniaPeriodRepository;
private readonly InsigniaReportRepository _insigniaReportRepository;
private readonly IConfiguration _configuration;
private readonly PermissionRepository _permission;
/// <summary>
@ -66,6 +70,7 @@ namespace BMA.EHR.Insignia.Service.Controllers
IHttpContextAccessor httpContextAccessor,
UserProfileRepository userProfileRepository,
InsigniaPeriodsRepository insigniaPeriodRepository,
InsigniaReportRepository insigniaReportRepository,
IConfiguration configuration,
PermissionRepository permission)
{
@ -79,17 +84,13 @@ namespace BMA.EHR.Insignia.Service.Controllers
_insigniaPeriodRepository = insigniaPeriodRepository;
_configuration = configuration;
_permission = permission;
_insigniaReportRepository = insigniaReportRepository;
}
#region " Properties "
private string? UserId => _httpContextAccessor?.HttpContext?.User?.FindFirst(ClaimTypes.NameIdentifier)?.Value;
private string? FullName => _httpContextAccessor?.HttpContext?.User?.FindFirst("name")?.Value;
private bool? RoleAdmin => _httpContextAccessor?.HttpContext?.User?.IsInRole("admin");
private bool? RoleInsignia1 => _httpContextAccessor?.HttpContext?.User?.IsInRole("insignia1");
private bool? RoleInsignia2 => _httpContextAccessor?.HttpContext?.User?.IsInRole("insignia2");
private string? AccessToken => _httpContextAccessor?.HttpContext?.Request.Headers["Authorization"];
#endregion
@ -347,12 +348,12 @@ namespace BMA.EHR.Insignia.Service.Controllers
[HttpGet("{insigniaPeriodId:length(36)}/{ocId:length(36)}/{role}/{status}")]
public async Task<ActionResult<ResponseObject>> GetInsignaiRequestBkk(Guid insigniaPeriodId, Guid ocId, string role, string status)
{
var getPermission = await _permission.GetPermissionAPIAsync("LIST", "SYS_INSIGNIA_MANAGE");
var jsonData = JsonConvert.DeserializeObject<JObject>(getPermission);
if (jsonData["status"]?.ToString() != "200")
{
return Error(jsonData["message"]?.ToString(), StatusCodes.Status403Forbidden);
}
// var getPermission = await _permission.GetPermissionAPIAsync("LIST", "SYS_INSIGNIA_MANAGE");
// var jsonData = JsonConvert.DeserializeObject<JObject>(getPermission);
// if (jsonData["status"]?.ToString() != "200")
// {
// return Error(jsonData["message"]?.ToString(), StatusCodes.Status403Forbidden);
// }
var result = await _repository.GetInsigniaRequest(insigniaPeriodId, ocId);
if (result != null)
{
@ -376,9 +377,10 @@ namespace BMA.EHR.Insignia.Service.Controllers
Document = result.Document,
Items = new List<InsigniaRequestItem>()
};
if (RoleAdmin == true && result.RequestStatus != "st6")
GetIsOfficerDto RoleInsignia = await _userProfileRepository.GetIsOfficerRootAsync(AccessToken, "INSIGNIA");
if (RoleInsignia.isOfficer == true && result.RequestStatus != "st6")
return Success(resend);
if (RoleInsignia2 == true && (result.RequestStatus == "st1" || result.RequestStatus == "st2"))
if (RoleInsignia.isDirector == true && (result.RequestStatus == "st1" || result.RequestStatus == "st2"))
return Success(resend);
// Jack Remark Remove เพื่อให้เรียกขข้อมูลออกมาเร็สวขึ้น
@ -594,7 +596,7 @@ namespace BMA.EHR.Insignia.Service.Controllers
if (requestStatus == null)
{
// บันทึกรายชื่อ
await _repository.InsertCandidate(period, organization.Id, candidate);
await _repository.InsertCandidate(period, organization.Id,organization.OrgRootName, candidate);
}
}
}
@ -962,25 +964,22 @@ namespace BMA.EHR.Insignia.Service.Controllers
[HttpGet("dashboard/{insigniaPeriodId:length(36)}")]
public async Task<ActionResult<ResponseObject>> DashboardInsigniaPeriod(Guid insigniaPeriodId)
{
var getWorkflow = await _permission.GetPermissionAPIWorkflowAsync(insigniaPeriodId.ToString(), "SYS_INSIGNIA_MANAGE");
if (getWorkflow == false)
{
var getPermission = await _permission.GetPermissionAPIAsync("GET", "SYS_INSIGNIA_MANAGE");
var jsonData = JsonConvert.DeserializeObject<JObject>(getPermission);
if (jsonData["status"]?.ToString() != "200")
{
return Error(jsonData["message"]?.ToString(), StatusCodes.Status403Forbidden);
}
}
// var getPermission = await _permission.GetPermissionAPIAsync("GET", "SYS_INSIGNIA_MANAGE");
// var jsonData = JsonConvert.DeserializeObject<JObject>(getPermission);
// if (jsonData["status"]?.ToString() != "200")
// {
// return Error(jsonData["message"]?.ToString(), StatusCodes.Status403Forbidden);
// }
var insigniaPeriod = await _context.InsigniaPeriods.FirstOrDefaultAsync(x => x.Id == insigniaPeriodId);
if (insigniaPeriod == null)
return Error(GlobalMessages.InsigniaRequestNotFound);
var orgAllCount = await _context.InsigniaRequests
.Where(x => x.Period == insigniaPeriod)
.ToListAsync();
GetIsOfficerDto RoleInsignia = await _userProfileRepository.GetIsOfficerRootAsync(AccessToken, "INSIGNIA");
var allUserUser = await _context.InsigniaRequests
.Where(x => x.Period == insigniaPeriod)
.Where(x => RoleAdmin == true ? x.RequestStatus == "st6" : (RoleInsignia2 == true ? (x.RequestStatus != "st1" && x.RequestStatus != "st2") : x.Id != null))
.Where(x => RoleInsignia.isOfficer == true ? x.RequestStatus == "st6" : (RoleInsignia.isDirector == true ? (x.RequestStatus != "st1" && x.RequestStatus != "st2") : x.Id != null))
.Select(x => x.RequestProfiles.Count(x => x.Status != "DELETE" && x.Status != "REJECT"))
.SumAsync();
@ -1040,6 +1039,7 @@ namespace BMA.EHR.Insignia.Service.Controllers
[HttpGet("agency")]
public async Task<ActionResult<ResponseObject>> GetOrgAgency()
{
await _insigniaReportRepository.CalInsignaiRequestBkk();
//var profile = await _context.Profiles.AsQueryable()
// .FirstOrDefaultAsync(x => x.KeycloakId == (UserId != null && UserId != "" ? Guid.Parse(UserId) : Guid.Parse("00000000-0000-0000-0000-000000000000")));
//if (profile == null)