diff --git a/.github/workflows/release_Retirement.yaml b/.github/workflows/release_Retirement.yaml
index 173243f4..02bfe31e 100644
--- a/.github/workflows/release_Retirement.yaml
+++ b/.github/workflows/release_Retirement.yaml
@@ -13,8 +13,8 @@ env:
IMAGE_NAME: ehr/bma-ehr-retirement-service
DEPLOY_HOST: frappet.com
DEPLOY_PORT: 10102
- COMPOSE_PATH: /home/frappet/docker/bma-ehr
- # COMPOSE_PATH: /home/frappet/docker/bma/bma-ehr-retirement
+ # COMPOSE_PATH: /home/frappet/docker/bma-ehr
+ COMPOSE_PATH: /home/frappet/docker/bma/bma-ehr-retirement
TOKEN_LINE: uxuK5hDzS2DsoC5piJBrWRLiz8GgY7iMZZldOWsDDF0
jobs:
diff --git a/.github/workflows/release_command.yaml b/.github/workflows/release_command.yaml
index d2870f61..82287b09 100644
--- a/.github/workflows/release_command.yaml
+++ b/.github/workflows/release_command.yaml
@@ -13,8 +13,8 @@ env:
IMAGE_NAME: ehr/bma-ehr-command-service
DEPLOY_HOST: frappet.com
DEPLOY_PORT: 10102
- COMPOSE_PATH: /home/frappet/docker/bma-ehr
- # COMPOSE_PATH: /home/frappet/docker/bma/bma-ehr-command
+ # COMPOSE_PATH: /home/frappet/docker/bma-ehr
+ COMPOSE_PATH: /home/frappet/docker/bma/bma-ehr-command
TOKEN_LINE: uxuK5hDzS2DsoC5piJBrWRLiz8GgY7iMZZldOWsDDF0
jobs:
diff --git a/.github/workflows/release_discipline.yaml b/.github/workflows/release_discipline.yaml
index 5f6f12d2..59f6f5e9 100644
--- a/.github/workflows/release_discipline.yaml
+++ b/.github/workflows/release_discipline.yaml
@@ -13,8 +13,8 @@ env:
IMAGE_NAME: ehr/bma-ehr-discipline-service
DEPLOY_HOST: frappet.com
DEPLOY_PORT: 10102
- COMPOSE_PATH: /home/frappet/docker/bma-ehr
- # COMPOSE_PATH: /home/frappet/docker/bma/bma-ehr-discipline
+ # COMPOSE_PATH: /home/frappet/docker/bma-ehr
+ COMPOSE_PATH: /home/frappet/docker/bma/bma-ehr-discipline
TOKEN_LINE: uxuK5hDzS2DsoC5piJBrWRLiz8GgY7iMZZldOWsDDF0
jobs:
diff --git a/.github/workflows/release_insignia.yaml b/.github/workflows/release_insignia.yaml
index d6408d19..7ffed528 100644
--- a/.github/workflows/release_insignia.yaml
+++ b/.github/workflows/release_insignia.yaml
@@ -13,8 +13,8 @@ env:
IMAGE_NAME: ehr/bma-ehr-insignia-service
DEPLOY_HOST: frappet.com
DEPLOY_PORT: 10102
- COMPOSE_PATH: /home/frappet/docker/bma-ehr
- # COMPOSE_PATH: /home/frappet/docker/bma/bma-ehr-insignia
+ # COMPOSE_PATH: /home/frappet/docker/bma-ehr
+ COMPOSE_PATH: /home/frappet/docker/bma/bma-ehr-insignia
TOKEN_LINE: uxuK5hDzS2DsoC5piJBrWRLiz8GgY7iMZZldOWsDDF0
jobs:
diff --git a/.github/workflows/release_leave.yaml b/.github/workflows/release_leave.yaml
index 4931956a..c24b66e8 100644
--- a/.github/workflows/release_leave.yaml
+++ b/.github/workflows/release_leave.yaml
@@ -13,8 +13,8 @@ env:
IMAGE_NAME: ehr/bma-ehr-leave-service
DEPLOY_HOST: frappet.com
DEPLOY_PORT: 10102
- COMPOSE_PATH: /home/frappet/docker/bma-ehr
- # COMPOSE_PATH: /home/frappet/docker/bma/bma-ehr-leave
+ # COMPOSE_PATH: /home/frappet/docker/bma-ehr
+ COMPOSE_PATH: /home/frappet/docker/bma/bma-ehr-leave
TOKEN_LINE: uxuK5hDzS2DsoC5piJBrWRLiz8GgY7iMZZldOWsDDF0
jobs:
diff --git a/.github/workflows/release_orgEmployee.yaml b/.github/workflows/release_orgEmployee.yaml
index 1dfce9bc..c5874c85 100644
--- a/.github/workflows/release_orgEmployee.yaml
+++ b/.github/workflows/release_orgEmployee.yaml
@@ -13,8 +13,8 @@ env:
IMAGE_NAME: ehr/bma-ehr-org-employee-service
DEPLOY_HOST: frappet.com
DEPLOY_PORT: 10102
- COMPOSE_PATH: /home/frappet/docker/bma-ehr
- # COMPOSE_PATH: /home/frappet/docker/bma/bma-ehr-org-employee
+ # COMPOSE_PATH: /home/frappet/docker/bma-ehr
+ COMPOSE_PATH: /home/frappet/docker/bma/bma-ehr-org-employee
TOKEN_LINE: uxuK5hDzS2DsoC5piJBrWRLiz8GgY7iMZZldOWsDDF0
jobs:
diff --git a/.github/workflows/release_placement.yaml b/.github/workflows/release_placement.yaml
index 1139dda0..53c65a53 100644
--- a/.github/workflows/release_placement.yaml
+++ b/.github/workflows/release_placement.yaml
@@ -13,8 +13,8 @@ env:
IMAGE_NAME: ehr/bma-ehr-placement-service
DEPLOY_HOST: frappet.com
DEPLOY_PORT: 10102
- COMPOSE_PATH: /home/frappet/docker/bma-ehr
- # COMPOSE_PATH: /home/frappet/docker/bma/bma-ehr-placement
+ # COMPOSE_PATH: /home/frappet/docker/bma-ehr
+ COMPOSE_PATH: /home/frappet/docker/bma/bma-ehr-placement
TOKEN_LINE: uxuK5hDzS2DsoC5piJBrWRLiz8GgY7iMZZldOWsDDF0
jobs:
diff --git a/.github/workflows/release_report.yaml b/.github/workflows/release_report.yaml
index a87e741e..adec1217 100644
--- a/.github/workflows/release_report.yaml
+++ b/.github/workflows/release_report.yaml
@@ -13,8 +13,8 @@ env:
IMAGE_NAME: ehr/bma-ehr-report-v2-service
DEPLOY_HOST: frappet.com
DEPLOY_PORT: 10102
- COMPOSE_PATH: /home/frappet/docker/bma-ehr
- # COMPOSE_PATH: /home/frappet/docker/bma/bma-ehr-report-v2
+ # COMPOSE_PATH: /home/frappet/docker/bma-ehr
+ COMPOSE_PATH: /home/frappet/docker/bma/bma-ehr-report-v2
TOKEN_LINE: uxuK5hDzS2DsoC5piJBrWRLiz8GgY7iMZZldOWsDDF0
jobs:
diff --git a/BMA.EHR.Application/Repositories/Commands/CommandRepository.cs b/BMA.EHR.Application/Repositories/Commands/CommandRepository.cs
index 9fbd6824..e82f3dc6 100644
--- a/BMA.EHR.Application/Repositories/Commands/CommandRepository.cs
+++ b/BMA.EHR.Application/Repositories/Commands/CommandRepository.cs
@@ -101,6 +101,9 @@ namespace BMA.EHR.Application.Repositories.Commands
case "C-PM-04":
result = await GetReceiver04Async(command);
break;
+ case "C-PM-39":
+ result = await GetReceiver39Async(command);
+ break;
case "C-PM-05":
result = await GetReceiver05Async(command);
break;
@@ -446,6 +449,65 @@ namespace BMA.EHR.Application.Repositories.Commands
}
}
+ ///
+ /// C-PM-39 - คำสั่งเลื่อน : สำหรับข้าราชการ กทม. เดิม
+ ///
+ /// object ของรายการคำสั่ง
+ ///
+ private async Task> GetReceiver39Async(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-39")
+ .Where(x => x.Command.Id != command.Id)
+ .Select(x => x.CitizenId)
+ .ToListAsync();
+
+ // 2. Query
+ var appointPeople = await _dbContext.Set()
+ .Include(x => x.Placement)
+ .ThenInclude(x => x.PlacementType)
+ .Where(x => x.Placement.Id == command.Placement.Id)
+ .Where(x => !otherCommandReceivers.Contains(x.CitizenId!))
+ .Where(x => x.PlacementStatus.Trim().ToUpper() == "PREPARE-CONTAIN")
+ .Where(x => x.typeCommand.Trim().ToUpper() == "SLIP")
+ .Where(x => x.Draft! == true)
+ .OrderBy(x => x.ExamNumber)
+ .ToListAsync();
+
+ // 3. Create new Record
+ var seq = 1;
+ foreach (var item in appointPeople)
+ {
+ var receiver = new CommandReceiver
+ {
+ Sequence = seq,
+ CitizenId = item.CitizenId == null ? "" : item.CitizenId,
+ Prefix = item.Prefix == null ? "" : item.Prefix,
+ FirstName = item.Firstname == null ? "" : item.Firstname,
+ LastName = item.Lastname == null ? "" : item.Lastname,
+ RefPlacementProfileId = item.Id,
+ };
+ seq++;
+
+ result.Add(receiver);
+ }
+
+ return result;
+ }
+ catch
+ {
+ throw;
+ }
+ }
+
///
/// C-PM-05 - คำสั่งแต่งตั้ง
///
@@ -2626,6 +2688,9 @@ namespace BMA.EHR.Application.Repositories.Commands
case "C-PM-04":
await ExecuteCommand04Async(command, token);
break;
+ case "C-PM-39":
+ await ExecuteCommand39Async(command, token);
+ break;
case "C-PM-05":
await ExecuteCommand05Async(command, token);
break;
@@ -3347,6 +3412,161 @@ namespace BMA.EHR.Application.Repositories.Commands
}
}
+ //
+ /// C-PM-39 - คำสั่งเลื่อน : สำหรับข้าราชการ กทม. เดิม
+ ///
+ /// object ของรายการคำสั่ง
+ ///
+ private async Task ExecuteCommand39Async(Command command, string token = "")
+ {
+ try
+ {
+ // create command payload
+ var payload_attach = command.Documents
+ .Select(x => new PayloadAttachment
+ {
+ name = x.Category == "cover" ? "สำเนาคำสั่ง" : "สำเนาเอกสารแนบท้าย",
+ url = $"{_configuration["API"]}/order/download/attachment/{x.Document.Id}"
+ })
+ .ToList();
+
+ var payload = new CommandPayload()
+ {
+ attachments = payload_attach
+ };
+
+ var payload_str = JsonConvert.SerializeObject(payload);
+
+ foreach (var recv in command.Receivers)
+ {
+ var placementProfile = await _dbContext.Set()
+ .FirstOrDefaultAsync(x => x.Id == recv.RefPlacementProfileId);
+
+ var baseAPI = _configuration["API"];
+ var apiUrlSalary = $"{baseAPI}/org/profile/salary";
+ using (var client = new HttpClient())
+ {
+ client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token.Replace("Bearer ", ""));
+ var _req = new HttpRequestMessage(HttpMethod.Post, apiUrlSalary);
+ var _res = await client.PostAsJsonAsync(apiUrlSalary, new
+ {
+ profileId = placementProfile.profileId,
+ date = command.CommandAffectDate,
+ amount = recv.Amount,
+ positionSalaryAmount = recv.PositionSalaryAmount,
+ mouthSalaryAmount = recv.MouthSalaryAmount,
+ posNo = placementProfile.posMasterNo == null ? "" :
+ placementProfile.node == 4 ? $"{placementProfile.child4ShortName}{placementProfile.posMasterNo}" :
+ placementProfile.node == 3 ? $"{placementProfile.child3ShortName}{placementProfile.posMasterNo}" :
+ placementProfile.node == 2 ? $"{placementProfile.child2ShortName}{placementProfile.posMasterNo}" :
+ placementProfile.node == 1 ? $"{placementProfile.child1ShortName}{placementProfile.posMasterNo}" :
+ placementProfile.node == 0 ? $"{placementProfile.rootShortName}{placementProfile.posMasterNo}" : "",
+ position = placementProfile.positionName,
+ positionLine = "",
+ positionPathSide = "",
+ positionExecutive = "",
+ positionType = placementProfile.posTypeName,
+ positionLevel = placementProfile.posLevelName,
+ refCommandNo = $"{command.CommandNo}/{command.CommandYear.ToInteger().ToThaiYear()}",
+ salaryRef = "คำสั่งเลื่อน คำสั่ง" + command.IssuerOrganizationName + "ที่ " + $"{command.CommandNo}/{command.CommandYear.ToInteger().ToThaiYear()} ลงวันที่ {command.CommandExcecuteDate!.Value.ToThaiFullDate3()}",
+ });
+ var _result = await _res.Content.ReadAsStringAsync();
+ }
+
+ var baseAPIOrg = _configuration["API"];
+ var apiUrlOrg = $"{baseAPIOrg}/org/pos/report/current";
+ using (var client = new HttpClient())
+ {
+ client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token.Replace("Bearer ", ""));
+ var _req = new HttpRequestMessage(HttpMethod.Post, apiUrlOrg);
+ var _res = await client.PostAsJsonAsync(apiUrlOrg, new
+ {
+ posmasterId = placementProfile.posmasterId,
+ positionId = placementProfile.positionId,
+ profileId = placementProfile.profileId,
+ });
+ var _result = await _res.Content.ReadAsStringAsync();
+ }
+
+ // update placementstatus
+ placementProfile.PlacementStatus = "CONTAIN";
+
+ await _dbContext.SaveChangesAsync();
+
+ // TODO: ต้องเปลี่ยนเป็น Email จริงนะ ตอนนี้ Hardcode อยู่
+ // Send noti inbox and email
+ var subject = $"คุณได้รับคำสั่งเลขที่ {command.CommandNo}/{command.CommandYear.ToInteger().ToThaiYear()} ลงวันที่ {command.CommandExcecuteDate.Value.ToThaiFullDate3()}";
+ var body = $"คำสั่งเลื่อน เลขที่ {command.CommandNo}/{command.CommandYear.ToInteger().ToThaiYear()} ลงวันที่ {command.CommandExcecuteDate.Value.ToThaiFullDate3()}";
+ _emailSenderService.SendMail(subject, body, "dev@frappet.com");
+
+
+ var inbox = new Inbox
+ {
+ Subject = $"คุณได้รับคำสั่งเลขที่ {command.CommandNo}/{command.CommandYear.ToInteger().ToThaiYear()} ลงวันที่ {command.CommandExcecuteDate.Value.ToThaiFullDate3()}",
+ Body = $"คำสั่งเลื่อน เลขที่ {command.CommandNo}/{command.CommandYear.ToInteger().ToThaiYear()} ลงวันที่ {command.CommandExcecuteDate.Value.ToThaiFullDate3()}",
+ ReceiverUserId = Guid.Parse(placementProfile.profileId),
+ Payload = payload_str,
+ };
+ _dbContext.Set().Add(inbox);
+
+ var noti = new Notification
+ {
+ Body = $"คำสั่งเลื่อน เลขที่ {command.CommandNo}/{command.CommandYear.ToInteger().ToThaiYear()} ลงวันที่ {command.CommandExcecuteDate.Value.ToThaiFullDate3()}",
+ ReceiverUserId = Guid.Parse(placementProfile.profileId),
+ Type = "LINK",
+ Payload = payload_str,
+ };
+ _dbContext.Set().Add(noti);
+ await _dbContext.SaveChangesAsync();
+ }
+
+ // send cc noti inbox
+ foreach (var cc in command.Deployments)
+ {
+ if (cc.IsSendInbox)
+ {
+ var inbox = new Inbox
+ {
+ Subject = $"คุณได้รับสำเนาคำสั่งเลขที่ {command.CommandNo}/{command.CommandYear.ToInteger().ToThaiYear()} ลงวันที่ {command.CommandExcecuteDate.Value.ToThaiFullDate3()}",
+ Body = $"คำสั่งเลื่อน คำสั่งเลขที่ {command.CommandNo}/{command.CommandYear.ToInteger().ToThaiYear()} ลงวันที่ {command.CommandExcecuteDate.Value.ToThaiFullDate3()}",
+ ReceiverUserId = Guid.Parse(cc.ReceiveUserId),
+ Payload = payload_str,
+ };
+ _dbContext.Set().Add(inbox);
+ }
+
+ if (cc.IsSendMail)
+ {
+ // TODO: ต้องเปลี่ยนเป็น Email จริงนะ ตอนนี้ Hardcode อยู่
+ // Send noti inbox and email
+ var subject = $"คุณได้รับสำเนาคำสั่งเลขที่ {command.CommandNo}/{command.CommandYear.ToInteger().ToThaiYear()} ลงวันที่ {command.CommandExcecuteDate.Value.ToThaiFullDate3()}";
+ var body = $"คำสั่งเลื่อน คำสั่งเลขที่ {command.CommandNo}/{command.CommandYear.ToInteger().ToThaiYear()} ลงวันที่ {command.CommandExcecuteDate.Value.ToThaiFullDate3()}";
+ _emailSenderService.SendMail(subject, body, "dev@frappet.com");
+ }
+
+
+ var noti = new Notification
+ {
+ Body = $"คำสั่งเลื่อน คำสั่งเลขที่ {command.CommandNo}/{command.CommandYear.ToInteger().ToThaiYear()} ลงวันที่ {command.CommandExcecuteDate.Value.ToThaiFullDate3()}",
+ ReceiverUserId = Guid.Parse(cc.ReceiveUserId),
+ Type = "LINK",
+ Payload = payload_str,
+ };
+ _dbContext.Set().Add(noti);
+ }
+
+ // change command status
+ var cmdStatus = await _dbContext.Set().FirstOrDefaultAsync(x => x.Sequence == 5);
+ command.CommandStatusId = cmdStatus!.Id;
+
+ await _dbContext.SaveChangesAsync();
+ }
+ catch
+ {
+ throw;
+ }
+ }
+
//
/// C-PM-05 - คำสั่งแต่งตั้ง
///
@@ -8301,6 +8521,13 @@ namespace BMA.EHR.Application.Repositories.Commands
.Include(x => x.CommandType)
.FirstOrDefaultAsync(x => x.Id == id);
break;
+ case "C-PM-39":
+ command = await _dbContext.Set()
+ .Include(x => x.Placement)
+ .Include(x => x.Receivers)
+ .Include(x => x.CommandType)
+ .FirstOrDefaultAsync(x => x.Id == id);
+ break;
default:
command = await _dbContext.Set()
.Include(x => x.Receivers)
@@ -8337,6 +8564,9 @@ namespace BMA.EHR.Application.Repositories.Commands
case "C-PM-04":
salary = await GetPlacementSalaryAsync(item.RefPlacementProfileId.Value);
break;
+ case "C-PM-39":
+ salary = await GetPlacementSalaryAsync(item.RefPlacementProfileId.Value);
+ break;
default:
salary = await GetCommandReceiverSalary(item.RefPlacementProfileId.Value, item.Amount, item.MouthSalaryAmount, item.PositionSalaryAmount);
break;
diff --git a/BMA.EHR.Command.Service/Controllers/OrderController.cs b/BMA.EHR.Command.Service/Controllers/OrderController.cs
index cc1591d4..9ace7fc6 100644
--- a/BMA.EHR.Command.Service/Controllers/OrderController.cs
+++ b/BMA.EHR.Command.Service/Controllers/OrderController.cs
@@ -1178,6 +1178,116 @@ namespace BMA.EHR.Command.Service.Controllers
#endregion
+ #region " C-PM-39 "
+
+ ///
+ /// PM7-22 : สร้างข้อมูลรายละเอียดการออกคำสั่ง C-PM-39
+ ///
+ ///
+ /// เมื่อทำการอ่านข้อมูลจาก Relational Database สำเร็จ
+ /// ไม่ได้ Login เข้าระบบ
+ /// เมื่อเกิดข้อผิดพลาดในการทำงาน
+ [HttpPost("c-pm-39/detail")]
+ [ProducesResponseType(StatusCodes.Status200OK)]
+ [ProducesResponseType(StatusCodes.Status401Unauthorized)]
+ [ProducesResponseType(StatusCodes.Status500InternalServerError)]
+ public async Task> PostType39Async([FromBody] CreateCommandRequest 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,
+ PositionName = req.registerPosition,
+ CommandTypeId = req.orderTypeValue,
+ IssuerOrganizationId = req.orderBy,
+ IssuerOrganizationName = req.orderByOrganizationName,
+ AuthorizedUserFullName = req.signatoryBy,
+ AuthorizedPosition = req.signatoryPosition,
+
+ CommandAffectDate = req.orderDate,
+ OwnerGovId = OcId,
+
+ // c-pm-01 ถึง c-pm-04
+ PlacementId = req.examRound,
+ ConclusionRegisterNo = req.conclusionRegisterNo ?? "",
+ ConclusionRegisterDate = req.conclusionRegisterDate,
+ ConclusionResultNo = req.conclusionResultNo,
+ ConclusionResultDate = req.conclusionResultDate,
+
+ };
+
+ var result = await _repository.AddAsync(inserted);
+
+ return Success(result);
+ }
+ catch
+ {
+ throw;
+ }
+ }
+
+ ///
+ /// PM7-23 : แก้ไขข้อมูลรายละเอียดการออกคำสั่ง C-PM-39
+ ///
+ /// Record Id ของคำสั่ง
+ ///
+ /// เมื่อทำการอ่านข้อมูลจาก Relational Database สำเร็จ
+ /// ไม่ได้ Login เข้าระบบ
+ /// เมื่อเกิดข้อผิดพลาดในการทำงาน
+ [HttpPut("c-pm-39/detail/{orderId}")]
+ [ProducesResponseType(StatusCodes.Status200OK)]
+ [ProducesResponseType(StatusCodes.Status401Unauthorized)]
+ [ProducesResponseType(StatusCodes.Status500InternalServerError)]
+ public async Task> PutType39Async(Guid orderId, [FromBody] CreateCommandRequest 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.PositionName = req.registerPosition;
+ // 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;
+
+ // c-pm-01 ถึง c-pm-04
+
+ // var placement = await _placementRepository.GetByIdAsync(req.examRound);
+ // order.Placement = placement!;
+ order.ConclusionRegisterNo = req.conclusionRegisterNo;
+ order.ConclusionRegisterDate = req.conclusionRegisterDate;
+ order.ConclusionResultNo = req.conclusionResultNo;
+ order.ConclusionResultDate = req.conclusionResultDate;
+
+ var result = await _repository.UpdateAsync(order);
+
+ return Success(result);
+ }
+ catch
+ {
+ throw;
+ }
+ }
+
+ #endregion
+
#region " C-PM-05 "
///
@@ -4716,6 +4826,17 @@ namespace BMA.EHR.Command.Service.Controllers
}
}
break;
+ case "c-PM-39":
+ {
+ foreach (var r in receivers)
+ {
+ var salary = await _repository.GetPlacementSalaryAsync(r.RefRecordId);
+ r.SalaryAmount = salary.SalaryAmount;
+ r.PositionSalaryAmount = salary.PositionSalaryAmount;
+ r.MonthSalaryAmount = salary.MonthSalaryAmount;
+ }
+ }
+ break;
default:
{
foreach (var r in receivers)
@@ -4788,6 +4909,17 @@ namespace BMA.EHR.Command.Service.Controllers
}
break;
}
+ case "C-PM-39":
+ {
+ foreach (var r in receivers)
+ {
+ var salary = await _repository.GetPlacementSalaryAsync(r.RefRecordId);
+ r.SalaryAmount = salary.SalaryAmount;
+ r.PositionSalaryAmount = salary.PositionSalaryAmount;
+ r.MonthSalaryAmount = salary.MonthSalaryAmount;
+ }
+ break;
+ }
default:
{
foreach (var r in receivers)
@@ -5369,6 +5501,9 @@ namespace BMA.EHR.Command.Service.Controllers
case "C-PM-04":
data = await _repository.GetPlacementSalaryAsync(record!.RefPlacementProfileId!.Value);
break;
+ case "C-PM-39":
+ data = await _repository.GetPlacementSalaryAsync(record!.RefPlacementProfileId!.Value);
+ break;
default:
data = await _repository.GetCommandReceiverSalary(personalId, record.Amount, record.MouthSalaryAmount, record.PositionSalaryAmount);
break;
@@ -5411,6 +5546,9 @@ namespace BMA.EHR.Command.Service.Controllers
case "C-PM-04":
await _repository.UpdatePlacementSalaryAsync(personalId, req);
return Success();
+ case "C-PM-39":
+ await _repository.UpdatePlacementSalaryAsync(personalId, req);
+ return Success();
default:
await _repository.UpdateCommandReceiverSalaryAsync(personalId, req);
return Success();
diff --git a/BMA.EHR.Insignia/appsettings.json b/BMA.EHR.Insignia/appsettings.json
index ec87a6e4..25e790e1 100644
--- a/BMA.EHR.Insignia/appsettings.json
+++ b/BMA.EHR.Insignia/appsettings.json
@@ -12,14 +12,14 @@
"Uri": "http://localhost:9200"
},
"AllowedHosts": "*",
- "ConnectionStrings": {
- //"DefaultConnection": "User Id=sys;Password=P@ssw0rd;DBA Privilege=SYSDBA;Data Source=localhost:1521/ORCLCDB",
- //"DefaultConnection": "server=192.168.1.9;user=root;password=adminVM123;port=3306;database=bma_ehr_demo;Convert Zero Datetime=True;Allow User Variables=true;Pooling=True;"
- "DefaultConnection": "server=192.168.1.80;user=root;password=adminVM123;port=3306;database=bma_ehr_demo;Convert Zero Datetime=True;Allow User Variables=true;Pooling=True;",
- "ExamConnection": "server=192.168.1.80;user=root;password=adminVM123;port=3306;database=bma_ehr_exam_demo;Convert Zero Datetime=True;Allow User Variables=true;Pooling=True;",
- "LeaveConnection": "server=192.168.1.80;user=root;password=adminVM123;port=3306;database=bma_ehr_leave_demo;Convert Zero Datetime=True;Allow User Variables=true;Pooling=True;",
- "DisciplineConnection": "server=192.168.1.80;user=root;password=adminVM123;port=3306;database=bma_ehr_discipline_demo;Convert Zero Datetime=True;Allow User Variables=true;Pooling=True;"
- },
+ "ConnectionStrings": {
+ //"DefaultConnection": "User Id=sys;Password=P@ssw0rd;DBA Privilege=SYSDBA;Data Source=localhost:1521/ORCLCDB",
+ //"DefaultConnection": "server=192.168.1.9;user=root;password=adminVM123;port=3306;database=bma_ehr_demo;Convert Zero Datetime=True;Allow User Variables=true;Pooling=True;"
+ "DefaultConnection": "server=192.168.1.81;user=root;password=adminVM123;port=4063;database=bma_ehr_demo;Convert Zero Datetime=True;Allow User Variables=true;Pooling=True;",
+ "ExamConnection": "server=192.168.1.81;user=root;password=adminVM123;port=4063;database=bma_ehr_exam_demo;Convert Zero Datetime=True;Allow User Variables=true;Pooling=True;",
+ "LeaveConnection": "server=192.168.1.81;user=root;password=adminVM123;port=4063;database=bma_ehr_leave_demo;Convert Zero Datetime=True;Allow User Variables=true;Pooling=True;",
+ "DisciplineConnection": "server=192.168.1.81;user=root;password=adminVM123;port=4063;database=bma_ehr_discipline_demo;Convert Zero Datetime=True;Allow User Variables=true;Pooling=True;"
+ },
"Jwt": {
"Key": "HP-FnQMUj9msHMSD3T9HtdEnphAKoCJLEl85CIqROFI",
"Issuer": "https://id.frappet.synology.me/realms/bma-ehr"
@@ -43,7 +43,7 @@
"Node": {
"API": "https://bma-ehr.frappet.synology.me/api/v1/probation"
},
- "API": "https://bma-ehr.frappet.synology.me/api/v1",
+ "API": "https://bma-ehr.frappet.com/api/v1",
"RabbitMQ" :{
"URL": "localhost",
"UserName": "frappet",
diff --git a/BMA.EHR.Placement.Service/Controllers/NotifyController.cs b/BMA.EHR.Placement.Service/Controllers/NotifyController.cs
index 8024c8fc..03beac67 100644
--- a/BMA.EHR.Placement.Service/Controllers/NotifyController.cs
+++ b/BMA.EHR.Placement.Service/Controllers/NotifyController.cs
@@ -85,27 +85,59 @@ namespace BMA.EHR.Placement.Service.Controllers
// if (profile == null)
// return Error(GlobalMessages.DataNotFound);
- var apiUrl = $"{_configuration["API"]}/org/profile/keycloak/position";
- using (var client = new HttpClient())
+ var apiUrl = $"{_configuration["API"]}/org/profile/keycloakid/position/" + req.ReceiverUserId;
+ using (var client = new HttpClient())
+ {
+ client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token.Replace("Bearer ", ""));
+ var _req = new HttpRequestMessage(HttpMethod.Get, apiUrl);
+ var _res = await client.SendAsync(_req);
+ var _result = await _res.Content.ReadAsStringAsync();
+ var org = JsonConvert.DeserializeObject(_result);
+ if (org != null && org.result != null)
{
- client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token.Replace("Bearer ", ""));
- var _req = new HttpRequestMessage(HttpMethod.Get, apiUrl);
- var _res = await client.SendAsync(_req);
- var _result = await _res.Content.ReadAsStringAsync();
- var org = JsonConvert.DeserializeObject(_result);
- if (org != null && org.result != null)
- {
- await _repositoryNoti.PushNotificationAsync(
- Guid.Parse(org.result.profileId),
- req.Subject,
- req.Body,
- req.Payload,
- req.IsSendInbox,
- req.IsSendMail
- );
- }
- return Success();
+ await _repositoryNoti.PushNotificationAsync(
+ Guid.Parse(org.result.id),
+ req.Subject,
+ req.Body,
+ req.Payload,
+ req.IsSendInbox,
+ req.IsSendMail
+ );
}
+ return Success();
+ }
+
+ return Success();
+ }
+
+ [HttpPost("profile")]
+ public async Task> UpdatePropertyByUserKeycloak([FromBody] NotiRequest req)
+ {
+ // var profile = await _context.Profiles.FirstOrDefaultAsync(x => x.KeycloakId == req.ReceiverUserId);
+ // if (profile == null)
+ // return Error(GlobalMessages.DataNotFound);
+
+ // var apiUrl = $"{_configuration["API"]}/org/profile/profileid/position/" + req.ReceiverUserId;
+ // using (var client = new HttpClient())
+ // {
+ // client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token.Replace("Bearer ", ""));
+ // var _req = new HttpRequestMessage(HttpMethod.Get, apiUrl);
+ // var _res = await client.SendAsync(_req);
+ // var _result = await _res.Content.ReadAsStringAsync();
+ // var org = JsonConvert.DeserializeObject(_result);
+ if (req.ReceiverUserId != null)
+ {
+ await _repositoryNoti.PushNotificationAsync(
+ Guid.Parse(req.ReceiverUserId),
+ req.Subject,
+ req.Body,
+ req.Payload,
+ req.IsSendInbox,
+ req.IsSendMail
+ );
+ }
+ return Success();
+ // }
return Success();
}
@@ -117,28 +149,28 @@ namespace BMA.EHR.Placement.Service.Controllers
if (inbox == null)
return Error(GlobalMessages.DataNotFound);
-
- var apiUrl = $"{_configuration["API"]}/org/profile/keycloak/position/{inbox.CreatedUserId}";
- using (var client = new HttpClient())
+
+ var apiUrl = $"{_configuration["API"]}/org/profile/keycloak/position/{inbox.CreatedUserId}";
+ using (var client = new HttpClient())
+ {
+ client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token.Replace("Bearer ", ""));
+ var _req = new HttpRequestMessage(HttpMethod.Get, apiUrl);
+ var _res = await client.SendAsync(_req);
+ var _result = await _res.Content.ReadAsStringAsync();
+ var org = JsonConvert.DeserializeObject(_result);
+ if (org != null && org.result != null)
{
- client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token.Replace("Bearer ", ""));
- var _req = new HttpRequestMessage(HttpMethod.Get, apiUrl);
- var _res = await client.SendAsync(_req);
- var _result = await _res.Content.ReadAsStringAsync();
- var org = JsonConvert.DeserializeObject(_result);
- if (org != null && org.result != null)
- {
- await _repositoryNoti.PushNotificationAsync(
- Guid.Parse(org.result.id),
- req.Subject,
- req.Body,
- req.Payload,
- req.IsSendInbox,
- req.IsSendMail
- );
- }
- return Success();
+ await _repositoryNoti.PushNotificationAsync(
+ Guid.Parse(org.result.id),
+ req.Subject,
+ req.Body,
+ req.Payload,
+ req.IsSendInbox,
+ req.IsSendMail
+ );
}
+ return Success();
+ }
// var profile = await _context.Profiles.FirstOrDefaultAsync(x => x.KeycloakId == Guid.Parse(inbox.CreatedUserId));
// if (profile == null)
// return Error(GlobalMessages.DataNotFound);
diff --git a/BMA.EHR.Report.Service/Controllers/CommandReportController.cs b/BMA.EHR.Report.Service/Controllers/CommandReportController.cs
index 409cbde4..a701ca8d 100644
--- a/BMA.EHR.Report.Service/Controllers/CommandReportController.cs
+++ b/BMA.EHR.Report.Service/Controllers/CommandReportController.cs
@@ -602,6 +602,78 @@ namespace BMA.EHR.Report.Service.Controllers
#endregion
+ #region " C-PM-39 "
+
+ private async Task*byte[]*/dynamic> GenerateCommandReportType39_Cover(Guid commandId, string exportType)
+ {
+ try
+ {
+ var raw_data = await _repository.GetByIdAsync(commandId);
+ if (raw_data == null)
+ {
+ throw new Exception(GlobalMessages.CommandNotFound);
+ }
+
+ var positionList = await _repository.GetReceiverPositionByCommandIdAsync(commandId);
+
+ var command = new
+ {
+ CommandNo = raw_data.CommandNo.ToThaiNumber(),
+ CommandYear = raw_data.CommandYear.ToInteger().ToThaiYear().ToString().ToThaiNumber(),
+ IssuerOrganizationName = raw_data.IssuerOrganizationName,
+ ConclusionRegisterNo = raw_data.ConclusionRegisterNo == null ? "" : raw_data.ConclusionRegisterNo.ToThaiNumber(),
+ ConclusionRegisterDate = raw_data.ConclusionRegisterDate == null ? "" : raw_data.ConclusionRegisterDate.Value.ToThaiFullDate3().ToThaiNumber(),
+ ConclusionResultNo = raw_data.ConclusionResultNo == null ? "" : raw_data.ConclusionResultNo.ToThaiNumber(),
+ ConclusionResultDate = raw_data.ConclusionResultDate == null ? "" : raw_data.ConclusionResultDate.Value.ToThaiFullDate3().ToThaiNumber(),
+ PositionList = positionList,
+ Count = raw_data.Receivers.Count.ToString().ToThaiNumber(),
+ CommandAffectDate = raw_data.CommandAffectDate == null ? "" : raw_data.CommandAffectDate.Value.ToThaiFullDate3().ToThaiNumber(),
+ AuthorizedUserFullName = raw_data.AuthorizedUserFullName,
+ AuthorizedPosition = raw_data.AuthorizedPosition,
+ Subject = $"เรื่อง {raw_data.CommandSubject}",
+ };
+ return command;
+ }
+ catch
+ {
+ throw;
+ }
+ }
+
+ private async Task*byte[]*/dynamic> GenerateCommandReportType39_Attachment(Guid commandId, string exportType)
+ {
+ try
+ {
+ var raw_data = await _repository.GetByIdAsync(commandId);
+ if (raw_data == null)
+ {
+ throw new Exception(GlobalMessages.CommandNotFound);
+ }
+ var command = new
+ {
+ CommandNo = raw_data.CommandNo.ToThaiNumber(),
+ CommandYear = raw_data.CommandYear.ToInteger().ToThaiYear().ToString().ToThaiNumber(),
+ IssuerOrganizationName = raw_data.IssuerOrganizationName,
+ CommandExcecuteDate = raw_data.CommandExcecuteDate != null ? raw_data.CommandExcecuteDate.Value.ToThaiFullDate3().ToThaiNumber() : "-",
+ };
+ var data = await _commandReportRepository.GetCommandType03AttachmentAsync(commandId);
+ return new
+ {
+ CommandNo = command.CommandNo,
+ CommandYear = command.CommandYear,
+ IssuerOrganizationName = command.IssuerOrganizationName,
+ CommandExcecuteDate = command.CommandExcecuteDate,
+ data = data,
+ };
+ }
+ catch
+ {
+ throw;
+ }
+ }
+
+ #endregion
+
#region " C-PM-05 "
private async Task*byte[]*/dynamic> GenerateCommandReportType05_Cover(Guid commandId, string exportType)
@@ -2370,7 +2442,7 @@ namespace BMA.EHR.Report.Service.Controllers
Subject = $"เรื่อง {raw_data.CommandSubject}",
employee = receiver,
};
-
+
return command;
//return new
//{
@@ -3291,6 +3363,102 @@ namespace BMA.EHR.Report.Service.Controllers
#endregion
+ #region " C-PM-39 คำสั่งเลื่อน : สำหรับข้าราชการ กทม. เดิม "
+
+ ///
+ /// คำสั่ง C-PM-39 คำสั่งเลื่อน : สำหรับข้าราชการ กทม. เดิม
+ ///
+ /// Record Id ของคำสั่ง
+ /// pdf, docx หรือ xlsx
+ ///
+ /// เมื่อทำการอ่านข้อมูลจาก Relational Database สำเร็จ
+ /// ไม่ได้ Login เข้าระบบ
+ /// เมื่อเกิดข้อผิดพลาดในการทำงาน
+ [HttpGet("c-pm-39/cover/{exportType}/{id}")]
+ [AllowAnonymous]
+ [ProducesResponseType(StatusCodes.Status200OK)]
+ [ProducesResponseType(StatusCodes.Status401Unauthorized)]
+ [ProducesResponseType(StatusCodes.Status500InternalServerError)]
+ public async Task> GetCommandType39CoverReportAsync(Guid id, string exportType = "pdf")
+ {
+ try
+ {
+ var mimeType = "";
+ switch (exportType.Trim().ToLower())
+ {
+ case "pdf": mimeType = "application/pdf"; break;
+ case "docx": mimeType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; break;
+ case "xlsx": mimeType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; break;
+ }
+
+ var cmd = await _repository.GetByIdAsync(id);
+ if (cmd == null)
+ throw new Exception(GlobalMessages.CommandNotFound);
+
+ var contentData = await GenerateCommandReportType39_Cover(id, exportType);
+ //return File(contentData, mimeType, $"command-{cmd.CommandNo}-{cmd.CommandYear.ToInteger().ToThaiYear()}.{exportType.Trim().ToLower()}");
+ var data = new
+ {
+ template = "C-PM-39",
+ reportName = "docx-report",
+ data = contentData
+ };
+ return Success(data);
+ }
+ catch
+ {
+ throw;
+ }
+ }
+
+ ///
+ /// เอกสารแนบท้าย C-PM-39 คำสั่งเลื่อน : สำหรับข้าราชการ กทม. เดิม
+ ///
+ /// Record Id ของคำสั่ง
+ /// pdf, docx หรือ xlsx
+ ///
+ /// เมื่อทำการอ่านข้อมูลจาก Relational Database สำเร็จ
+ /// ไม่ได้ Login เข้าระบบ
+ /// เมื่อเกิดข้อผิดพลาดในการทำงาน
+ [HttpGet("c-pm-39/attachment/{exportType}/{id}")]
+ [AllowAnonymous]
+ [ProducesResponseType(StatusCodes.Status200OK)]
+ [ProducesResponseType(StatusCodes.Status401Unauthorized)]
+ [ProducesResponseType(StatusCodes.Status500InternalServerError)]
+ public async Task> GetCommandType39AttachmentReportAsync(Guid id, string exportType = "pdf")
+ {
+ try
+ {
+ var cmd = await _repository.GetByIdAsync(id);
+ if (cmd == null)
+ throw new Exception(GlobalMessages.CommandNotFound);
+
+ var mimeType = "";
+ switch (exportType.Trim().ToLower())
+ {
+ case "pdf": mimeType = "application/pdf"; break;
+ case "docx": mimeType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; break;
+ case "xlsx": mimeType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; break;
+ }
+
+ var contentData = await GenerateCommandReportType39_Attachment(id, exportType);
+ //return File(contentData, mimeType, $"command-attachment-{cmd.CommandNo}-{cmd.CommandYear.ToInteger().ToThaiYear()}.{exportType.Trim().ToLower()}");
+ var data = new
+ {
+ template = "C-PM-39-attachment",
+ reportName = "docx-report",
+ data = contentData
+ };
+ return Success(data);
+ }
+ catch
+ {
+ throw;
+ }
+ }
+
+ #endregion
+
#region " C-PM-05 คำสั่งแต่งตั้ง "
///