get บรรจุ ตามตำแหน่ง

This commit is contained in:
Kittapath 2023-07-06 14:37:13 +07:00
parent 85bc0fd359
commit c9e36b1792
6 changed files with 10505 additions and 18 deletions

View file

@ -5,17 +5,19 @@ using BMA.EHR.Domain.Models.Placement;
using BMA.EHR.Domain.Shared;
using BMA.EHR.Infrastructure.Persistence;
using BMA.EHR.Placement.Service.Requests;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Swashbuckle.AspNetCore.Annotations;
using System.Security.Claims;
using System.Security.Cryptography;
namespace BMA.EHR.Placement.Service.Controllers
{
[Route("api/[controller]/placement")]
[ApiController]
[Produces("application/json")]
//[Authorize]
[Authorize]
[SwaggerTag("ระบบบรรจุ")]
public class PlacementController : BaseController
{
@ -41,6 +43,8 @@ namespace BMA.EHR.Placement.Service.Controllers
private string? FullName => _httpContextAccessor?.HttpContext?.User?.FindFirst("name")?.Value;
private bool? PlacementAdmin => _httpContextAccessor?.HttpContext?.User?.IsInRole("placement1");
#endregion
[HttpGet]
@ -92,23 +96,54 @@ namespace BMA.EHR.Placement.Service.Controllers
[HttpGet("pass/{examId:length(36)}")]
public async Task<ActionResult<ResponseObject>> GetExamByPlacement(Guid examId)
{
var data = await _context.PlacementProfiles.Where(x => x.Placement.Id == examId).Select(x => new
if (PlacementAdmin == true)
{
PersonalId = x.Id,
FullName = x.Prefix == null ? null : x.Prefix.Name + $"{x.Firstname} {x.Lastname}",
IdCard = x.CitizenId,
ProfilePhoto = x.Id,
OrganizationName = x.OrganizationPosition == null ? null : (x.OrganizationPosition.Organization == null ? null : (x.OrganizationPosition.Organization.OrganizationOrganization == null ? null : x.OrganizationPosition.Organization.OrganizationOrganization.Name)),////
OrganizationShortName = x.OrganizationPosition == null ? null : (x.OrganizationPosition.Organization == null ? null : (x.OrganizationPosition.Organization.OrganizationShortName == null ? null : x.OrganizationPosition.Organization.OrganizationShortName.Name)),////
PositionNumber = x.PositionNumber == null ? null : x.PositionNumber.Name,
PositionPath = x.PositionPath == null ? null : x.PositionPath.Name,
ReportingDate = x.ReportingDate,
BmaOfficer = x.IsOfficer,
StatusId = x.PlacementStatus,
Disclaim = x.IsRelief,
}).ToListAsync();
return Success(data);
var data = await _context.PlacementProfiles.Where(x => x.Placement.Id == examId).Select(x => new
{
PersonalId = x.Id,
FullName = x.Prefix == null ? null : x.Prefix.Name + $"{x.Firstname} {x.Lastname}",
IdCard = x.CitizenId,
ProfilePhoto = x.Id,
OrganizationName = x.OrganizationPosition == null ? null : (x.OrganizationPosition.Organization == null ? null : (x.OrganizationPosition.Organization.OrganizationOrganization == null ? null : x.OrganizationPosition.Organization.OrganizationOrganization.Name)),////
OrganizationShortName = x.OrganizationPosition == null ? null : (x.OrganizationPosition.Organization == null ? null : (x.OrganizationPosition.Organization.OrganizationShortName == null ? null : x.OrganizationPosition.Organization.OrganizationShortName.Name)),////
PositionNumber = x.PositionNumber == null ? null : x.PositionNumber.Name,
PositionPath = x.PositionPath == null ? null : x.PositionPath.Name,
ReportingDate = x.ReportingDate,
BmaOfficer = x.IsOfficer,
StatusId = x.PlacementStatus,
Disclaim = x.IsRelief,
}).ToListAsync();
return Success(data);
}
else
{
var profileOrg = await _context.Profiles.FirstOrDefaultAsync(x => x.KeycloakId == Guid.Parse(UserId ?? "00000000-0000-0000-0000-000000000000"));
if (profileOrg == null)
return Error(GlobalMessages.DataNotFound, 404);
// var ocIdList = _documentService.GetAllIdByRoot(profileOrg.OcId == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : profileOrg.OcId);
var ocIdList = _documentService.GetAllIdByRoot(profileOrg.OcId);
var data = await _context.PlacementProfiles
.Where(x => x.Placement.Id == examId)
.Where(x => x.OrganizationPosition != null)
.Where(x => x.OrganizationPosition.Organization != null)
.Where(x => ocIdList.Contains(x.OrganizationPosition.Organization.Id))
.Select(x => new
{
PersonalId = x.Id,
FullName = x.Prefix == null ? null : x.Prefix.Name + $"{x.Firstname} {x.Lastname}",
IdCard = x.CitizenId,
ProfilePhoto = x.Id,
OrganizationName = x.OrganizationPosition == null ? null : (x.OrganizationPosition.Organization == null ? null : (x.OrganizationPosition.Organization.OrganizationOrganization == null ? null : x.OrganizationPosition.Organization.OrganizationOrganization.Name)),////
OrganizationShortName = x.OrganizationPosition == null ? null : (x.OrganizationPosition.Organization == null ? null : (x.OrganizationPosition.Organization.OrganizationShortName == null ? null : x.OrganizationPosition.Organization.OrganizationShortName.Name)),////
PositionNumber = x.PositionNumber == null ? null : x.PositionNumber.Name,
PositionPath = x.PositionPath == null ? null : x.PositionPath.Name,
ReportingDate = x.ReportingDate,
BmaOfficer = x.IsOfficer,
StatusId = x.PlacementStatus,
Disclaim = x.IsRelief,
}).ToListAsync();
return Success(data);
}
}
[HttpGet("personal/{personalId:length(36)}")]
@ -279,7 +314,7 @@ namespace BMA.EHR.Placement.Service.Controllers
person.IsRelief = true;
person.ReliefReason = Request.Form.ContainsKey("note") ? Request.Form["note"] : "";
person.PlacementStatus = "UN-CONTAIN";
person.PlacementStatus = "PREPARE-CONTAIN";
if (Request.Form.Files != null && Request.Form.Files.Count != 0)
{
var file = Request.Form.Files[0];
@ -405,6 +440,7 @@ namespace BMA.EHR.Placement.Service.Controllers
person.MouthSalaryAmount = req.MouthSalaryAmount;
person.PositionSalaryAmount = req.PositionSalaryAmount;
person.RecruitDate = req.ContainDate;
person.PlacementStatus = "PREPARE-CONTAIN";
person.LastUpdateFullName = FullName ?? "System Administrator";
person.LastUpdateUserId = UserId ?? "";
person.LastUpdatedAt = DateTime.Now;