แก้ไขจัดสรรเครื่องราช

This commit is contained in:
Kittapath 2023-08-20 07:46:52 +07:00
parent 16e55269dc
commit 9a0e68b0f8
6 changed files with 171 additions and 4 deletions

View file

@ -5,6 +5,7 @@ using BMA.EHR.Domain.Common;
using BMA.EHR.Domain.Models.Insignias;
using BMA.EHR.Domain.Shared;
using BMA.EHR.Infrastructure.Persistence;
using BMA.EHR.Insignia.Service.Requests;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
@ -441,7 +442,7 @@ namespace BMA.EHR.Insignia.Service.Controllers
}
/// <summary>
/// คำนวราชชื่อผู้ได้รับเครื่องราช
/// คำนวราชชื่อผู้ได้รับเครื่องราช
/// </summary>
/// <param name="insigniaPeriodId">Id รอบเครื่องราช</param>
/// <returns></returns>
@ -591,6 +592,9 @@ namespace BMA.EHR.Insignia.Service.Controllers
if (insigniaRequestProfile == null)
return Error(GlobalMessages.InsigniaPeriodNotFound);
insigniaRequestProfile.Status = "REJECT";
insigniaRequestProfile.LastUpdateFullName = FullName ?? "System Administrator";
insigniaRequestProfile.LastUpdateUserId = UserId ?? "";
insigniaRequestProfile.LastUpdatedAt = DateTime.Now;
_context.SaveChanges();
return Success();
}
@ -615,6 +619,9 @@ namespace BMA.EHR.Insignia.Service.Controllers
if (insigniaRequestProfile == null)
return Error(GlobalMessages.InsigniaPeriodNotFound);
insigniaRequestProfile.Status = "DELETE";
insigniaRequestProfile.LastUpdateFullName = FullName ?? "System Administrator";
insigniaRequestProfile.LastUpdateUserId = UserId ?? "";
insigniaRequestProfile.LastUpdatedAt = DateTime.Now;
_context.SaveChanges();
return Success();
}
@ -682,5 +689,128 @@ namespace BMA.EHR.Insignia.Service.Controllers
return Success();
}
/// <summary>
/// หน่วยงานที่อยู่ปัจจุบัน
/// </summary>
/// <returns></returns>
/// <response code="200"></response>
/// <response code="400">ค่าตัวแปรที่ส่งมาไม่ถูกต้อง</response>
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
[HttpGet("agency")]
public async Task<ActionResult<ResponseObject>> GetOrgAgency()
{
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)
return Error(GlobalMessages.DataNotFound);
var orgProfile = await _context.ProfilePositions
.Where(x => x.Profile == profile)
.Where(x => x.OrganizationPosition != null)
.Where(x => x.OrganizationPosition.Organization != null)
.Where(x => x.OrganizationPosition.Organization.OrganizationAgencyId != null)
.Select(x => x.OrganizationPosition.Organization.OrganizationAgencyId)
.FirstOrDefaultAsync();
return Success(orgProfile);
}
/// <summary>
/// เพิ่มราชชื่อผู้ได้รับเครื่องราช
/// </summary>
/// <returns></returns>
/// <response code="200"></response>
/// <response code="400">ค่าตัวแปรที่ส่งมาไม่ถูกต้อง</response>
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
[HttpPost()]
public async Task<ActionResult<ResponseObject>> AddUserToRequestInsignia([FromBody] AddUserRequestInsigniaRequest req)
{
var insigniaPeriod = await _context.InsigniaPeriods.FirstOrDefaultAsync(x => x.Id == req.insigniaPeriodId);
if (insigniaPeriod == null)
return Error(GlobalMessages.InsigniaRequestNotFound);
var profile = await _context.Profiles.FirstOrDefaultAsync(x => x.Id == req.ProfileId);
if (profile == null)
return Error(GlobalMessages.DataNotFound);
var insignia = await _context.Insignias.FirstOrDefaultAsync(x => x.Id == req.insigniaId);
if (insignia == null)
return Error(GlobalMessages.InsigniaNotFound);
var insigniaRequestProfile = await _context.InsigniaRequestProfiles.FirstOrDefaultAsync(x => x.Profile == profile && x.Request.Period == insigniaPeriod);
if (insigniaRequestProfile != null)
return Error(GlobalMessages.InsigniaRequestProfileDupicate);
var insigniaRequest = await _context.InsigniaRequests.FirstOrDefaultAsync(x => x.Period == insigniaPeriod);
if (insigniaRequest == null)
{
var orgProfile = await _context.ProfilePositions
.Where(x => x.Profile == profile)
.Where(x => x.OrganizationPosition != null)
.Where(x => x.OrganizationPosition.Organization != null)
.Where(x => x.OrganizationPosition.Organization.OrganizationAgencyId != null)
.Select(x => x.OrganizationPosition.Organization.OrganizationAgencyId)
.FirstOrDefaultAsync();
var org = await _context.Organizations
.FirstOrDefaultAsync(x => x.Id == orgProfile);
if (org == null)
return Error(GlobalMessages.OrganizationNotFound);
insigniaRequest = new InsigniaRequest
{
Period = insigniaPeriod,
Organization = org,
RequestStatus = "st1",
RequestNote = "",
CreatedUserId = FullName ?? "",
CreatedFullName = UserId ?? "System Administrator",
CreatedAt = DateTime.Now,
LastUpdateFullName = FullName ?? "System Administrator",
LastUpdateUserId = UserId ?? "",
LastUpdatedAt = DateTime.Now,
};
}
await _context.AddAsync(new InsigniaRequestProfile
{
Status = "PENDING",
Profile = profile,
RequestInsignia = insignia,
Request = insigniaRequest,
RequestDate = DateTime.Now,
MatchingConditions = System.Text.Json.JsonSerializer.Serialize(new List<dynamic>()), // serialize to string
CreatedUserId = FullName ?? "",
CreatedFullName = UserId ?? "System Administrator",
CreatedAt = DateTime.Now,
LastUpdateFullName = FullName ?? "System Administrator",
LastUpdateUserId = UserId ?? "",
LastUpdatedAt = DateTime.Now,
});
await _context.SaveChangesAsync();
return Success();
}
/// <summary>
/// แก้ไขราชชื่อผู้ได้รับเครื่องราช
/// </summary>
/// <returns></returns>
/// <response code="200"></response>
/// <response code="400">ค่าตัวแปรที่ส่งมาไม่ถูกต้อง</response>
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
[HttpPut("{insigniaRequestProfileId:length(36)}")]
public async Task<ActionResult<ResponseObject>> UpdateUserToRequestInsignia([FromBody] UpdateUserRequestInsigniaRequest req, Guid insigniaRequestProfileId)
{
var insigniaRequestProfile = await _context.InsigniaRequestProfiles.FirstOrDefaultAsync(x => x.Id == insigniaRequestProfileId);
if (insigniaRequestProfile == null)
return Error(GlobalMessages.InsigniaRequestProfileNotFound);
var insignia = await _context.Insignias.FirstOrDefaultAsync(x => x.Id == req.insigniaId);
if (insignia == null)
return Error(GlobalMessages.InsigniaNotFound);
insigniaRequestProfile.RequestInsignia = insignia;
insigniaRequestProfile.LastUpdateFullName = FullName ?? "System Administrator";
insigniaRequestProfile.LastUpdateUserId = UserId ?? "";
insigniaRequestProfile.LastUpdatedAt = DateTime.Now;
await _context.SaveChangesAsync();
return Success();
}
}
}