diff --git a/BMA.EHR.Application/Repositories/Commands/CommandRepository.cs b/BMA.EHR.Application/Repositories/Commands/CommandRepository.cs
index 4135b44d..ef3c4184 100644
--- a/BMA.EHR.Application/Repositories/Commands/CommandRepository.cs
+++ b/BMA.EHR.Application/Repositories/Commands/CommandRepository.cs
@@ -16,9 +16,7 @@ using Microsoft.AspNetCore.Http;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Newtonsoft.Json;
-using System.Linq;
using System.Net.Http.Headers;
-using System.Text;
using Command = BMA.EHR.Domain.Models.Commands.Core.Command;
using Profile = BMA.EHR.Domain.Models.HR.Profile;
@@ -146,6 +144,12 @@ namespace BMA.EHR.Application.Repositories.Commands
case "C-PM-21":
result = await GetReceiver21Async(command);
break;
+ case "C-PM-22":
+ result = await GetReceiver22Async(command);
+ break;
+ case "C-PM-23":
+ result = await GetReceiver23Async(command);
+ break;
default: throw new Exception(GlobalMessages.MethodForCommandTypeNotImplement);
}
@@ -1202,6 +1206,7 @@ namespace BMA.EHR.Application.Repositories.Commands
.ThenInclude(x => x.Prefix)
//.Where(x => x.OrganizationPosition!.Organization!.Id == command.OwnerGovId)
.Where(x => !otherCommandReceivers.Contains(x.Profile!.CitizenId!))
+ .Where(x => x.Profile.ProfileType == "officer")
.Where(x => x.Status.Trim().ToUpper() == "REPORT")
.OrderBy(x => x.Profile!.CitizenId)
.ToListAsync();
@@ -1464,6 +1469,129 @@ namespace BMA.EHR.Application.Repositories.Commands
}
}
+
+ ///
+ /// C-PM-22 - คำสั่งจ้างและแต่งตั้งลูกจ้างประจำ
+ ///
+ /// object ของรายการคำสั่ง
+ ///
+ private async Task> GetReceiver22Async(Command command)
+ {
+ try
+ {
+ var result = new List();
+ // TODO : ต้องมา list คนตามประเภทอีกครั้งนึง
+
+ // 1. หารายชื่อที่ถูกเลือกไปแล้ว ในประเภทเดียวกัน
+ var otherCommandReceivers = await _dbContext.Set()
+ .Include(x => x.Command)
+ .ThenInclude(x => x.CommandType)
+ .Where(x => x.Command.CommandType.CommandCode.Trim().ToUpper() == "C-PM-22")
+ .Where(x => x.Command.Id != command.Id)
+ .Select(x => x.CitizenId)
+ .ToListAsync();
+
+ // 2. Query
+ var appointPeople = await _dbContext.Set()
+ .Include(x => x.CommandType)
+ .Include(x => x.Prefix)
+ .Include(x => x.OrganizationPosition)
+ .ThenInclude(x => x!.Organization)
+ .Include(x => x.Profile)
+ //.Where(x => x.OrganizationPosition!.Organization!.Id == command.OwnerGovId)
+ .Where(x => !otherCommandReceivers.Contains(x.CitizenId!))
+ .Where(x => x.Status.Trim().ToUpper() == "REPORT")
+ .Where(x => x.CommandType!.Id == command.CommandType!.Id)
+ .Where(x => x.Profile.ProfileType == "employee")
+ .OrderBy(x => x.CitizenId)
+ .ToListAsync();
+
+ // 3. Create new Record
+ var seq = 1;
+ foreach (var item in appointPeople)
+ {
+ var receiver = new CommandReceiver
+ {
+ Sequence = seq,
+ CitizenId = item.CitizenId!,
+ Prefix = item.Prefix!.Name,
+ FirstName = item.Firstname!,
+ LastName = item.Lastname!,
+ RefPlacementProfileId = item.Id,
+ Amount = item.AmountOld,
+ };
+ seq++;
+
+ result.Add(receiver);
+ }
+
+ return result;
+ }
+ catch
+ {
+ throw;
+ }
+ }
+
+ ///
+ /// C-PM-23 - คำสั่งให้ลูกจ้างออกจากราชการ
+ ///
+ /// object ของรายการคำสั่ง
+ ///
+ private async Task> GetReceiver23Async(Command command)
+ {
+ try
+ {
+ var result = new List();
+ // TODO : ต้องมา list คนตามประเภทอีกครั้งนึง
+
+ // 1. หารายชื่อที่ถูกเลือกไปแล้ว ในประเภทเดียวกัน
+ var otherCommandReceivers = await _dbContext.Set()
+ .Include(x => x.Command)
+ .ThenInclude(x => x.CommandType)
+ .Where(x => x.Command.CommandType.CommandCode.Trim().ToUpper() == "C-PM-23")
+ .Where(x => x.Command.Id != command.Id)
+ .Select(x => x.CitizenId)
+ .ToListAsync();
+
+ // 2. Query
+ var appointPeople = await _dbContext.Set()
+ .Include(x => x.Profile)
+ .ThenInclude(x => x.Prefix)
+ //.Where(x => x.OrganizationPosition!.Organization!.Id == command.OwnerGovId)
+ .Where(x => !otherCommandReceivers.Contains(x.Profile!.CitizenId!))
+ .Where(x => x.Profile.ProfileType == "employee")
+ .Where(x => x.Status.Trim().ToUpper() == "REPORT")
+ .OrderBy(x => x.Profile!.CitizenId)
+ .ToListAsync();
+
+ // 3. Create new Record
+ var seq = 1;
+ foreach (var item in appointPeople)
+ {
+ var receiver = new CommandReceiver
+ {
+ Sequence = seq,
+ CitizenId = item.Profile!.CitizenId!,
+ Prefix = item.Profile!.Prefix!.Name,
+ FirstName = item.Profile!.FirstName!,
+ LastName = item.Profile!.LastName!,
+ RefPlacementProfileId = item.Id,
+ Amount = item.AmountOld,
+ };
+ seq++;
+
+ result.Add(receiver);
+ }
+
+ return result;
+ }
+ catch
+ {
+ throw;
+ }
+ }
+
#endregion
#region " Execute and Deploy "
@@ -5905,6 +6033,11 @@ namespace BMA.EHR.Application.Repositories.Commands
}
}
+ #endregion
+
+ #region " Regenerate Json File "
+
+
#endregion
#endregion
diff --git a/BMA.EHR.Command.Service/Controllers/OrderController.cs b/BMA.EHR.Command.Service/Controllers/OrderController.cs
index cc144a26..127c81c2 100644
--- a/BMA.EHR.Command.Service/Controllers/OrderController.cs
+++ b/BMA.EHR.Command.Service/Controllers/OrderController.cs
@@ -260,6 +260,8 @@ namespace BMA.EHR.Command.Service.Controllers
case "C-PM-19":
case "C-PM-20":
case "C-PM-21":
+ case "C-PM-22":
+ case "C-PM-23":
{
if (command.CommandNo != "" &&
command.CommandYear != null &&
@@ -2636,6 +2638,188 @@ namespace BMA.EHR.Command.Service.Controllers
#endregion
+ #region " C-PM-22 "
+
+ ///
+ /// PM7-22 : สร้างข้อมูลรายละเอียดการออกคำสั่ง C-PM-22
+ ///
+ ///
+ /// เมื่อทำการอ่านข้อมูลจาก Relational Database สำเร็จ
+ /// ไม่ได้ Login เข้าระบบ
+ /// เมื่อเกิดข้อผิดพลาดในการทำงาน
+ [HttpPost("c-pm-22/detail")]
+ [ProducesResponseType(StatusCodes.Status200OK)]
+ [ProducesResponseType(StatusCodes.Status401Unauthorized)]
+ [ProducesResponseType(StatusCodes.Status500InternalServerError)]
+ public async Task> PostType22Async([FromBody] CreateCommandGroup0Request req)
+ {
+ try
+ {
+ var commandType = await _commandTypeRepository.GetByIdAsync(req.orderTypeValue);
+
+ var inserted = new Domain.Models.Commands.Core.Command
+ {
+ CommandNo = req.orderNo,
+ CommandYear = req.orderYear.ToString(),
+ CommandSubject = req.orderTitle,
+ CommandTypeId = req.orderTypeValue,
+ IssuerOrganizationId = req.orderBy,
+ IssuerOrganizationName = req.orderByOrganizationName,
+ AuthorizedUserFullName = req.signatoryBy,
+ AuthorizedPosition = req.signatoryPosition,
+
+ CommandAffectDate = req.orderDate,
+ OwnerGovId = OcId,
+ };
+
+ var result = await _repository.AddAsync(inserted);
+
+ return Success(result);
+ }
+ catch
+ {
+ throw;
+ }
+ }
+
+ ///
+ /// PM7-23 : แก้ไขข้อมูลรายละเอียดการออกคำสั่ง C-PM-22
+ ///
+ /// Record Id ของคำสั่ง
+ ///
+ /// เมื่อทำการอ่านข้อมูลจาก Relational Database สำเร็จ
+ /// ไม่ได้ Login เข้าระบบ
+ /// เมื่อเกิดข้อผิดพลาดในการทำงาน
+ [HttpPut("c-pm-22/detail/{orderId}")]
+ [ProducesResponseType(StatusCodes.Status200OK)]
+ [ProducesResponseType(StatusCodes.Status401Unauthorized)]
+ [ProducesResponseType(StatusCodes.Status500InternalServerError)]
+ public async Task> PutType22Async(Guid orderId, [FromBody] CreateCommandGroup0Request req)
+ {
+ try
+ {
+ var order = await _repository.GetByIdAsync(orderId);
+ if (order == null)
+ throw new Exception(GlobalMessages.CommandNotFound);
+
+
+ var commandType = await _commandTypeRepository.GetByIdAsync(req.orderTypeValue);
+ var status = await _commandStatusRepository.GetByIdAsync(order.CommandStatusId);
+
+ order.CommandNo = req.orderNo;
+ order.CommandYear = req.orderYear.ToString();
+ order.CommandSubject = req.orderTitle;
+ order.CommandType = commandType!;
+ order.IssuerOrganizationId = req.orderBy;
+ order.IssuerOrganizationName = req.orderByOrganizationName;
+ order.AuthorizedUserFullName = req.signatoryBy;
+ order.AuthorizedPosition = req.signatoryPosition;
+ order.CommandStatus = status!;
+ order.CommandAffectDate = req.orderDate;
+
+ var result = await _repository.UpdateAsync(order);
+
+ return Success(result);
+ }
+ catch
+ {
+ throw;
+ }
+ }
+
+ #endregion
+
+ #region " C-PM-23 "
+
+ ///
+ /// PM7-22 : สร้างข้อมูลรายละเอียดการออกคำสั่ง C-PM-23
+ ///
+ ///
+ /// เมื่อทำการอ่านข้อมูลจาก Relational Database สำเร็จ
+ /// ไม่ได้ Login เข้าระบบ
+ /// เมื่อเกิดข้อผิดพลาดในการทำงาน
+ [HttpPost("c-pm-23/detail")]
+ [ProducesResponseType(StatusCodes.Status200OK)]
+ [ProducesResponseType(StatusCodes.Status401Unauthorized)]
+ [ProducesResponseType(StatusCodes.Status500InternalServerError)]
+ public async Task> PostType23Async([FromBody] CreateCommandGroup0Request req)
+ {
+ try
+ {
+ var commandType = await _commandTypeRepository.GetByIdAsync(req.orderTypeValue);
+
+ var inserted = new Domain.Models.Commands.Core.Command
+ {
+ CommandNo = req.orderNo,
+ CommandYear = req.orderYear.ToString(),
+ CommandSubject = req.orderTitle,
+ CommandTypeId = req.orderTypeValue,
+ IssuerOrganizationId = req.orderBy,
+ IssuerOrganizationName = req.orderByOrganizationName,
+ AuthorizedUserFullName = req.signatoryBy,
+ AuthorizedPosition = req.signatoryPosition,
+
+ CommandAffectDate = req.orderDate,
+ OwnerGovId = OcId,
+ };
+
+ var result = await _repository.AddAsync(inserted);
+
+ return Success(result);
+ }
+ catch
+ {
+ throw;
+ }
+ }
+
+ ///
+ /// PM7-23 : แก้ไขข้อมูลรายละเอียดการออกคำสั่ง C-PM-23
+ ///
+ /// Record Id ของคำสั่ง
+ ///
+ /// เมื่อทำการอ่านข้อมูลจาก Relational Database สำเร็จ
+ /// ไม่ได้ Login เข้าระบบ
+ /// เมื่อเกิดข้อผิดพลาดในการทำงาน
+ [HttpPut("c-pm-23/detail/{orderId}")]
+ [ProducesResponseType(StatusCodes.Status200OK)]
+ [ProducesResponseType(StatusCodes.Status401Unauthorized)]
+ [ProducesResponseType(StatusCodes.Status500InternalServerError)]
+ public async Task> PutType23Async(Guid orderId, [FromBody] CreateCommandGroup0Request req)
+ {
+ try
+ {
+ var order = await _repository.GetByIdAsync(orderId);
+ if (order == null)
+ throw new Exception(GlobalMessages.CommandNotFound);
+
+
+ var commandType = await _commandTypeRepository.GetByIdAsync(req.orderTypeValue);
+ var status = await _commandStatusRepository.GetByIdAsync(order.CommandStatusId);
+
+ order.CommandNo = req.orderNo;
+ order.CommandYear = req.orderYear.ToString();
+ order.CommandSubject = req.orderTitle;
+ order.CommandType = commandType!;
+ order.IssuerOrganizationId = req.orderBy;
+ order.IssuerOrganizationName = req.orderByOrganizationName;
+ order.AuthorizedUserFullName = req.signatoryBy;
+ order.AuthorizedPosition = req.signatoryPosition;
+ order.CommandStatus = status!;
+ order.CommandAffectDate = req.orderDate;
+
+ var result = await _repository.UpdateAsync(order);
+
+ return Success(result);
+ }
+ catch
+ {
+ throw;
+ }
+ }
+
+ #endregion
+
#endregion
///
diff --git a/BMA.EHR.Command.Service/SeedCommand.xlsx b/BMA.EHR.Command.Service/SeedCommand.xlsx
index 2a463821..0a3032ad 100644
Binary files a/BMA.EHR.Command.Service/SeedCommand.xlsx and b/BMA.EHR.Command.Service/SeedCommand.xlsx differ
diff --git a/BMA.EHR.Domain/Models/Commands/Core/CommandReceiver.cs b/BMA.EHR.Domain/Models/Commands/Core/CommandReceiver.cs
index 40b5e52d..75ff4f1c 100644
--- a/BMA.EHR.Domain/Models/Commands/Core/CommandReceiver.cs
+++ b/BMA.EHR.Domain/Models/Commands/Core/CommandReceiver.cs
@@ -30,6 +30,9 @@ namespace BMA.EHR.Domain.Models.Commands.Core
[Column(TypeName = "text"), Comment("หมายเหตุ")]
public string Comment { get; set; } = string.Empty;
+ [Column(TypeName = "text"), Comment("หมายเหตุแนวนอน")]
+ public string Comment2 { get; set; } = string.Empty;
+
[Comment("รหัสอ้างอิงไปยังข้อมูลผู้บรรจุ")]
public Guid? RefPlacementProfileId { get; set; }