From cc711146c57c0e3c13fcfd901660d447967999e8 Mon Sep 17 00:00:00 2001 From: Kittapath Date: Mon, 30 Oct 2023 20:36:53 +0700 Subject: [PATCH] =?UTF-8?q?=E0=B8=AD=E0=B8=AD=E0=B8=81=E0=B8=84=E0=B8=B3?= =?UTF-8?q?=E0=B8=AA=E0=B8=B1=E0=B9=88=E0=B8=87=2022=2024?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Commands/CommandReportRepository.cs | 89 ++++- .../Commands/CommandRepository.cs | 236 ++++++++++++- .../Reports/CommandType22Response.cs | 20 ++ .../Controllers/OrderController.cs | 3 +- .../BMA.EHR.Report.Service.csproj | 12 + .../Controllers/CommandReportController.cs | 316 +++++++++++++++++- ...ำสั่งแต่งตั้งลูกจ้างประจำ(ปรับระดับชั้นงาน)-แนบท้าย.trdp | Bin 2692 -> 2742 bytes .../คำสั่งแต่งตั้งลูกจ้างประจำ(ย้าย)-แนบท้าย.trdp | Bin 2362 -> 2410 bytes .../Reports/คำสั่งแต่งตั้งลูกจ้างประจำ(ย้าย).trdp | Bin 28665 -> 28672 bytes 9 files changed, 634 insertions(+), 42 deletions(-) create mode 100644 BMA.EHR.Application/Responses/Reports/CommandType22Response.cs diff --git a/BMA.EHR.Application/Repositories/Commands/CommandReportRepository.cs b/BMA.EHR.Application/Repositories/Commands/CommandReportRepository.cs index c01d74df..eb90e41c 100644 --- a/BMA.EHR.Application/Repositories/Commands/CommandReportRepository.cs +++ b/BMA.EHR.Application/Repositories/Commands/CommandReportRepository.cs @@ -1089,7 +1089,7 @@ namespace BMA.EHR.Application.Repositories.Commands } } - public async Task> GetCommandType22AttachmentAsync(Guid id) + public async Task> GetCommandType22AttachmentAsync(Guid id) { try { @@ -1124,19 +1124,21 @@ namespace BMA.EHR.Application.Repositories.Commands .ThenInclude(x => x.PositionEmployeeLevel) on r.RefPlacementProfileId equals p.Id orderby r.Sequence - select new CommandType21Response + select new CommandType22Response { Seq = r.Sequence.ToString().ToThaiNumber(), - CitizenId = r.CitizenId.ToThaiNumber(), FullName = $"{r.Prefix}{r.FirstName} {r.LastName}", - Organization = p.OrgEmployee == null || p.OrgEmployee!.OrganizationAgency == null || p.OrgEmployee!.OrganizationAgency!.OrganizationOrganization == null ? "" : p.OrgEmployee!.OrganizationAgency!.OrganizationOrganization!.Name, - PositionName = p.OrgEmployee.PositionEmployeePosition == null ? "" : p.OrgEmployee.PositionEmployeePosition.Name.ToThaiNumber(), - PositionLevel = p.OrgEmployee.OrganizationPositionEmployeeLevels == null ? "" : p.OrgEmployee.OrganizationPositionEmployeeLevels.First().PositionEmployeeLevel.Name.ToThaiNumber(), - PositionType = p.Profile.PositionType == null ? "" : p.Profile.PositionType.Name.ToThaiNumber(), - PositionNumber = p.OrgEmployee.PosNo == null ? "" : p.OrgEmployee.PosNo.ToThaiNumber(), - Salary = r.Amount == null ? "" : r.Amount.Value.ToNumericNoDecimalText().ToThaiNumber(), - RetireDate = p.Profile.BirthDate.CalculateRetireDate().ToThaiFullDate3().ToThaiNumber(), - CommandYear = r.Command.CommandYear.ToInteger().ToThaiYear().ToString().ToThaiNumber() + Organization = p.OrganizationPositionOld, + OldPositionName = p.OrganizationPositionOld, + OldPositionLevel = p.PositionLevelOld, + OldPositionNumber = p.PositionNumberOld == null ? null : p.PositionNumberOld.ToThaiNumber(), + OldSalary = p.AmountOld == null ? "" : p.AmountOld.Value.ToNumericNoDecimalText().ToThaiNumber(), + // NewOc = p.OrganizationPosition == null || p.OrganizationPosition!.Organization == null ? "" : _organizationCommonRepository.GetOrganizationNameFullPath(p.OrganizationPosition!.Organization!.Id, false, false, "/"), + NewPositionName = p.OrgEmployee == null || p.OrgEmployee.PositionEmployeePosition == null ? "" : p.OrgEmployee.PositionEmployeePosition.Name, + NewPositionLevel = p.OrgEmployee == null || p.OrgEmployee.OrganizationPositionEmployeeLevels == null || p.OrgEmployee.OrganizationPositionEmployeeLevels.Count() == 0 ? "" : p.OrgEmployee.OrganizationPositionEmployeeLevels.FirstOrDefault().PositionEmployeeLevel.Name, + NewPositionNumber = p.OrgEmployee == null || p.OrgEmployee.PosNo == null ? "" : p.OrgEmployee.PosNo.ToThaiNumber(), + NewSalary = r.Amount == null ? "" : r.Amount.Value.ToNumericNoDecimalText().ToThaiNumber(), + Reason = p.Reason == null ? "-" : p.Reason, }) .ToList(); @@ -1196,13 +1198,74 @@ namespace BMA.EHR.Application.Repositories.Commands FullName = $"{r.Prefix}{r.FirstName} {r.LastName}", Organization = p.OrganizationPositionOld ?? "", PositionName = p.Profile.PositionEmployeePosition == null ? "" : p.Profile.PositionEmployeePosition.Name.ToThaiNumber(), - PositionLevel = p.PositionLevelOld == null ? "" :p.PositionLevelOld.ToThaiNumber(), + PositionLevel = p.PositionLevelOld == null ? "" : p.PositionLevelOld.ToThaiNumber(), PositionType = p.PositionTypeOld == null ? "" : p.PositionTypeOld.ToThaiNumber(), PositionNumber = p.PositionNumberOld == null ? "" : p.PositionNumberOld.ToThaiNumber(), Salary = p.AmountOld == null ? "" : p.AmountOld.Value.ToNumericNoDecimalText().ToThaiNumber(), RetireDate = p.ActiveDate.Value.ToThaiFullDate3().ToThaiNumber(), CommandYear = r.Command.CommandYear.ToInteger().ToThaiYear().ToString().ToThaiNumber(), - + + }) + .ToList(); + + return report_data; + } + catch + { + throw; + } + } + + public async Task> GetCommandType24AttachmentAsync(Guid id) + { + try + { + var raw_data = await _dbContext.Set() + .Include(c => c.Command) + .Where(c => c.Command.Id == id) + .ToListAsync(); + if (raw_data == null) + { + throw new Exception(GlobalMessages.CommandNotFound); + } + + var report_data = (from r in raw_data + join p in _dbContext.Set() + .Include(x => x.Profile) + .ThenInclude(x => x.Position) + .Include(x => x.Profile) + .ThenInclude(x => x.PositionLevel) + .Include(x => x.Profile) + .ThenInclude(x => x.PositionType) + .Include(x => x.Profile) + .ThenInclude(x => x.PosNo) + .Include(x => x.OrgEmployee) + .ThenInclude(x => x.OrganizationAgency) + .ThenInclude(x => x.OrganizationOrganization) + //.Include(x => x.OrgEmployee) + //.ThenInclude(x => x.PosNo) + .Include(x => x.OrgEmployee) + .ThenInclude(x => x.PositionEmployeePosition) + .Include(x => x.OrgEmployee) + .ThenInclude(x => x.OrganizationPositionEmployeeLevels) + .ThenInclude(x => x.PositionEmployeeLevel) + on r.RefPlacementProfileId equals p.Id + orderby r.Sequence + select new CommandType22Response + { + Seq = r.Sequence.ToString().ToThaiNumber(), + FullName = $"{r.Prefix}{r.FirstName} {r.LastName}", + Organization = p.OrganizationPositionOld, + OldPositionName = p.OrganizationPositionOld, + OldPositionLevel = p.PositionLevelOld, + OldPositionNumber = p.PositionNumberOld == null ? null : p.PositionNumberOld.ToThaiNumber(), + OldSalary = p.AmountOld == null ? "" : p.AmountOld.Value.ToNumericNoDecimalText().ToThaiNumber(), + // NewOc = p.OrganizationPosition == null || p.OrganizationPosition!.Organization == null ? "" : _organizationCommonRepository.GetOrganizationNameFullPath(p.OrganizationPosition!.Organization!.Id, false, false, "/"), + NewPositionName = p.OrgEmployee == null || p.OrgEmployee.PositionEmployeePosition == null ? "" : p.OrgEmployee.PositionEmployeePosition.Name, + NewPositionLevel = p.OrgEmployee == null || p.OrgEmployee.OrganizationPositionEmployeeLevels == null || p.OrgEmployee.OrganizationPositionEmployeeLevels.Count() == 0 ? "" : p.OrgEmployee.OrganizationPositionEmployeeLevels.FirstOrDefault().PositionEmployeeLevel.Name, + NewPositionNumber = p.OrgEmployee == null || p.OrgEmployee.PosNo == null ? "" : p.OrgEmployee.PosNo.ToThaiNumber(), + NewSalary = r.Amount == null ? "" : r.Amount.Value.ToNumericNoDecimalText().ToThaiNumber(), + Reason = p.Reason == null ? "-" : p.Reason, }) .ToList(); diff --git a/BMA.EHR.Application/Repositories/Commands/CommandRepository.cs b/BMA.EHR.Application/Repositories/Commands/CommandRepository.cs index 77fd63ae..fcb842f2 100644 --- a/BMA.EHR.Application/Repositories/Commands/CommandRepository.cs +++ b/BMA.EHR.Application/Repositories/Commands/CommandRepository.cs @@ -1734,6 +1734,9 @@ namespace BMA.EHR.Application.Repositories.Commands case "C-PM-23": await ExecuteCommand23Async(command); break; + case "C-PM-24": + await ExecuteCommand24Async(command); + break; default: throw new Exception(GlobalMessages.MethodForCommandTypeNotImplement); } @@ -6378,7 +6381,7 @@ namespace BMA.EHR.Application.Repositories.Commands } /// - /// C-PM-22 - คำสั่งจ้างและแต่งตั้งลูกจ้างประจำ + /// C-PM-22 - คำสั่งแต่งตั้งลูกจ้างประจำ(ปรับระดับชั้นงาน) /// /// object ของรายการคำสั่ง /// @@ -6404,7 +6407,6 @@ namespace BMA.EHR.Application.Repositories.Commands foreach (var recv in command.Receivers) { - // TODO: รอมอสเข้ามา Query แล้วแก้ไขข้อมูลทะเบียนประวัติ var data = await _dbContext.Set() .Include(x => x.PositionEmployeeLine) .Include(x => x.PositionEmployeePosition) @@ -6415,19 +6417,32 @@ namespace BMA.EHR.Application.Repositories.Commands .ThenInclude(x => x.PositionEmployeeLine) .Include(x => x.Profile) .ThenInclude(x => x.PositionEmployeePosition) + .Include(x => x.Profile) + .ThenInclude(x => x.PositionEmployeeLevel) .Include(x => x.OrgEmployee) .ThenInclude(x => x.OrganizationShortName) .Include(x => x.OrgEmployee) .ThenInclude(x => x.OrganizationOrganization) .Include(x => x.OrgEmployee) .ThenInclude(x => x.Organization) + .Include(x => x.OrgEmployee) + .ThenInclude(x => x.PositionEmployeePosition) + .Include(x => x.OrgEmployee) + .ThenInclude(x => x.OrganizationPositionEmployeeLevels) + .ThenInclude(x => x.PositionEmployeeLevel) + .Include(x => x.OrgEmployee) + .ThenInclude(x => x.PositionEmployeeLine) .FirstOrDefaultAsync(x => x.Id == recv.RefPlacementProfileId); if (data == null) throw new Exception(GlobalMessages.DataNotFound); - data.Profile.EmployeeClass = "perm"; // ลจ ประจำ - data.Profile.PositionEmployeeLine = data.PositionEmployeeLine; - data.Profile.PositionEmployeePosition = data.PositionEmployeePosition; + // data.Profile.PositionEmployeeLine = data.PositionEmployeeLine; + // data.Profile.PositionEmployeePosition = data.PositionEmployeePosition; + data.Profile.PositionEmployeePosition = data.OrgEmployee == null ? null : data.OrgEmployee!.PositionEmployeePosition; + // data.Profile.PositionEmployeePositionSide = data.OrgEmployee == null ? null : data.OrgEmployee!.po; + data.Profile.PositionEmployeeLevel = data.OrgEmployee == null || data.OrgEmployee.OrganizationPositionEmployeeLevels == null || data.OrgEmployee.OrganizationPositionEmployeeLevels.Count() == 0 ? null : data.OrgEmployee!.OrganizationPositionEmployeeLevels.FirstOrDefault().PositionEmployeeLevel; + // data.Profile.PositionEmployeeGroup = data.OrgEmployee == null ? null : data.OrgEmployee!.gr; + data.Profile.PositionEmployeeLine = data.OrgEmployee == null ? null : data.OrgEmployee!.PositionEmployeeLine; data.Profile.OrganizationShortNameId = data.OrgEmployee == null || data.OrgEmployee!.OrganizationShortName == null ? null : data.OrgEmployee!.OrganizationShortName!.Id; data.Profile.OrganizationShortName = data.OrgEmployee == null || data.OrgEmployee!.OrganizationShortName == null ? null : data.OrgEmployee!.OrganizationShortName!.Name; data.Profile.OrganizationOrganizationId = data.OrgEmployee == null || data.OrgEmployee!.OrganizationOrganization == null ? null : data.OrgEmployee!.OrganizationOrganization!.Id; @@ -6449,7 +6464,7 @@ namespace BMA.EHR.Application.Repositories.Commands PositionSalaryAmount = recv.PositionSalaryAmount, MouthSalaryAmount = recv.MouthSalaryAmount, SalaryClass = "", - SalaryRef = "คำสั่งจ้างและแต่งตั้งลูกจ้างประจำ คำสั่ง" + command.IssuerOrganizationName + "ที่ " + $"{command.CommandNo}/{command.CommandYear.ToInteger().ToThaiYear()} ลงวันที่ {command.CommandExcecuteDate!.Value.ToThaiFullDate3()}", + SalaryRef = "คำสั่งแต่งตั้งลูกจ้างประจำ(ปรับระดับชั้นงาน) คำสั่ง" + command.IssuerOrganizationName + "ที่ " + $"{command.CommandNo}/{command.CommandYear.ToInteger().ToThaiYear()} ลงวันที่ {command.CommandExcecuteDate!.Value.ToThaiFullDate3()}", //OcId = lastSarary.OcId, //PositionLevel = lastSarary.PositionLevel, //PositionLineId = lastSarary.PositionLineId, @@ -6460,10 +6475,10 @@ namespace BMA.EHR.Application.Repositories.Commands RefCommandNo = $"{command.CommandNo}/{command.CommandYear.ToInteger().ToThaiYear()}", CommandTypeName = command.CommandType.Name, //PositionEmployeeGroupId = null, - //PositionEmployeeLevelId = null, - //PositionEmployeePositionId = null, + PositionEmployeeLevelId = data.Profile.PositionEmployeeLevel == null ? null : data.Profile.PositionEmployeeLevel.Id, + PositionEmployeePositionId = data.Profile.PositionEmployeePosition == null ? null : data.Profile.PositionEmployeePosition.Id, //PositionEmployeePositionSideId = null, - //PosNoEmployee = "", + PosNoEmployee = data.Profile.PosNoEmployee, ////PositionPathSideId = lastSarary.PositionPathSideId == null, //PositionExecutiveId = lastSarary.PositionExecutiveId, ////PositionExecutiveSideId = lastSarary.PositionExecutiveSideId, @@ -6483,7 +6498,7 @@ namespace BMA.EHR.Application.Repositories.Commands // 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()}"; + var body = $"คำสั่งแต่งตั้งลูกจ้างประจำ(ปรับระดับชั้นงาน) เลขที่ {command.CommandNo}/{command.CommandYear.ToInteger().ToThaiYear()} ลงวันที่ {command.CommandExcecuteDate.Value.ToThaiFullDate3()}"; _emailSenderService.SendMail(subject, body, "dev@frappet.com"); @@ -6520,7 +6535,7 @@ namespace BMA.EHR.Application.Repositories.Commands 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()}", + Body = $"คำสั่งแต่งตั้งลูกจ้างประจำ(ปรับระดับชั้นงาน) คำสั่งเลขที่ {command.CommandNo}/{command.CommandYear.ToInteger().ToThaiYear()} ลงวันที่ {command.CommandExcecuteDate.Value.ToThaiFullDate3()}", ReceiverUserId = pf.Id, Payload = payload_str, }; @@ -6532,14 +6547,14 @@ namespace BMA.EHR.Application.Repositories.Commands // 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()}"; + 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()}", + Body = $"คำสั่งแต่งตั้งลูกจ้างประจำ(ปรับระดับชั้นงาน) คำสั่งเลขที่ {command.CommandNo}/{command.CommandYear.ToInteger().ToThaiYear()} ลงวันที่ {command.CommandExcecuteDate.Value.ToThaiFullDate3()}", ReceiverUserId = pf.Id, Type = "LINK", Payload = payload_str, @@ -6740,6 +6755,201 @@ namespace BMA.EHR.Application.Repositories.Commands } } + /// + /// C-PM-24 - คำสั่งแต่งตั้งลูกจ้างประจำ(ย้าย) + /// + /// object ของรายการคำสั่ง + /// + private async Task ExecuteCommand24Async(Command command) + { + 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 data = await _dbContext.Set() + .Include(x => x.PositionEmployeeLine) + .Include(x => x.PositionEmployeePosition) + .Include(x => x.Profile) + .ThenInclude(x => x.Salaries) + .ThenInclude(x => x.PositionLevel) + .Include(x => x.Profile) + .ThenInclude(x => x.PositionEmployeeLine) + .Include(x => x.Profile) + .ThenInclude(x => x.PositionEmployeePosition) + .Include(x => x.Profile) + .ThenInclude(x => x.PositionEmployeeLevel) + .Include(x => x.OrgEmployee) + .ThenInclude(x => x.OrganizationShortName) + .Include(x => x.OrgEmployee) + .ThenInclude(x => x.OrganizationOrganization) + .Include(x => x.OrgEmployee) + .ThenInclude(x => x.Organization) + .Include(x => x.OrgEmployee) + .ThenInclude(x => x.PositionEmployeePosition) + .Include(x => x.OrgEmployee) + .ThenInclude(x => x.OrganizationPositionEmployeeLevels) + .ThenInclude(x => x.PositionEmployeeLevel) + .Include(x => x.OrgEmployee) + .ThenInclude(x => x.PositionEmployeeLine) + .FirstOrDefaultAsync(x => x.Id == recv.RefPlacementProfileId); + + if (data == null) + throw new Exception(GlobalMessages.DataNotFound); + // data.Profile.PositionEmployeeLine = data.PositionEmployeeLine; + // data.Profile.PositionEmployeePosition = data.PositionEmployeePosition; + data.Profile.PositionEmployeePosition = data.OrgEmployee == null ? null : data.OrgEmployee!.PositionEmployeePosition; + // data.Profile.PositionEmployeePositionSide = data.OrgEmployee == null ? null : data.OrgEmployee!.po; + data.Profile.PositionEmployeeLevel = data.OrgEmployee == null || data.OrgEmployee.OrganizationPositionEmployeeLevels == null || data.OrgEmployee.OrganizationPositionEmployeeLevels.Count() == 0 ? null : data.OrgEmployee!.OrganizationPositionEmployeeLevels.FirstOrDefault().PositionEmployeeLevel; + // data.Profile.PositionEmployeeGroup = data.OrgEmployee == null ? null : data.OrgEmployee!.gr; + data.Profile.PositionEmployeeLine = data.OrgEmployee == null ? null : data.OrgEmployee!.PositionEmployeeLine; + data.Profile.OrganizationShortNameId = data.OrgEmployee == null || data.OrgEmployee!.OrganizationShortName == null ? null : data.OrgEmployee!.OrganizationShortName!.Id; + data.Profile.OrganizationShortName = data.OrgEmployee == null || data.OrgEmployee!.OrganizationShortName == null ? null : data.OrgEmployee!.OrganizationShortName!.Name; + data.Profile.OrganizationOrganizationId = data.OrgEmployee == null || data.OrgEmployee!.OrganizationOrganization == null ? null : data.OrgEmployee!.OrganizationOrganization!.Id; + data.Profile.OrganizationOrganization = data.OrgEmployee == null || data.OrgEmployee!.OrganizationOrganization == null ? null : data.OrgEmployee!.OrganizationOrganization!.Name; + data.Profile.PosNoEmployee = data.OrgEmployee == null ? null : data.OrgEmployee!.PosNo; + data.Profile.OcId = data.OrgEmployee == null || data.OrgEmployee!.Organization == null ? null : data.OrgEmployee!.Organization!.Id; + data.Profile.Oc = data.OrgEmployee == null || data.OrgEmployee!.Organization == null ? null : _organizationCommonRepository.GetOrganizationNameFullPath(data.OrgEmployee!.Organization!.Id, false, false, "/"); + + var lastSarary = data.Profile.Salaries.OrderByDescending(x => x.Order).FirstOrDefault(); + var order = 1; + if (lastSarary != null && lastSarary.Order != null) + order = lastSarary.Order.Value + 1; + + var salary = new ProfileSalary + { + Order = order, + Date = command.CommandAffectDate, + Amount = recv.Amount, + PositionSalaryAmount = recv.PositionSalaryAmount, + MouthSalaryAmount = recv.MouthSalaryAmount, + SalaryClass = "", + SalaryRef = "คำสั่งแต่งตั้งลูกจ้างประจำ(ย้าย) คำสั่ง" + command.IssuerOrganizationName + "ที่ " + $"{command.CommandNo}/{command.CommandYear.ToInteger().ToThaiYear()} ลงวันที่ {command.CommandExcecuteDate!.Value.ToThaiFullDate3()}", + //OcId = lastSarary.OcId, + //PositionLevel = lastSarary.PositionLevel, + //PositionLineId = lastSarary.PositionLineId, + //PositionTypeId = lastSarary.PositionTypeId, + //OrganizationShortNameId = lastSarary.OrganizationShortNameId, + //PosNoId = lastSarary.PosNoId, + CommandNo = $"{command.CommandNo}/{command.CommandYear.ToInteger().ToThaiYear()}", + RefCommandNo = $"{command.CommandNo}/{command.CommandYear.ToInteger().ToThaiYear()}", + CommandTypeName = command.CommandType.Name, + //PositionEmployeeGroupId = null, + PositionEmployeeLevelId = data.Profile.PositionEmployeeLevel == null ? null : data.Profile.PositionEmployeeLevel.Id, + PositionEmployeePositionId = data.Profile.PositionEmployeePosition == null ? null : data.Profile.PositionEmployeePosition.Id, + //PositionEmployeePositionSideId = null, + PosNoEmployee = data.Profile.PosNoEmployee, + ////PositionPathSideId = lastSarary.PositionPathSideId == null, + //PositionExecutiveId = lastSarary.PositionExecutiveId, + ////PositionExecutiveSideId = lastSarary.PositionExecutiveSideId, + IsActive = true, + CreatedAt = DateTime.Now, + CreatedFullName = FullName ?? "System Administrator", + CreatedUserId = UserId ?? "", + LastUpdatedAt = DateTime.Now, + LastUpdateFullName = FullName ?? "System Administrator", + LastUpdateUserId = UserId ?? "", + }; + data.Profile.Salaries.Add(salary); + // update placementstatus + data.Status = "DONE"; + 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"); + + + // รอเอาข้อมูลที่ได้มาส่ง inbox noti ให้ผู้รับคำสั่ง + + //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 = data.Profile.Id, + // Payload = payload_str, + //}; + //_dbContext.Set().Add(inbox); + + //var noti = new Notification + //{ + // Body = $"คุณได้รับคำสั่งจ้างและแต่งตั้งลูกจ้างประจำ เลขที่ {command.CommandNo}/{command.CommandYear.ToInteger().ToThaiYear()} ลงวันที่ {command.CommandExcecuteDate.Value.ToThaiFullDate3()}", + // ReceiverUserId = data.Profile.Id, + // Type = "LINK", + // Payload = payload_str, + //}; + //_dbContext.Set().Add(noti); + //await _dbContext.SaveChangesAsync(); + } + + // send cc noti inbox + foreach (var cc in command.Deployments) + { + var pf = await _dbContext.Set().FirstOrDefaultAsync(x => x.CitizenId == cc.CitizenId); + if (pf != null) + { + 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 = pf.Id, + 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 = pf.Id, + 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; + } + } + #endregion #region " Regenerate Json File " diff --git a/BMA.EHR.Application/Responses/Reports/CommandType22Response.cs b/BMA.EHR.Application/Responses/Reports/CommandType22Response.cs new file mode 100644 index 00000000..fe2c1402 --- /dev/null +++ b/BMA.EHR.Application/Responses/Reports/CommandType22Response.cs @@ -0,0 +1,20 @@ +namespace BMA.EHR.Application.Responses.Reports +{ + public class CommandType22Response + { + public string? Seq { get; set; } = string.Empty; + // public string CitizenId { get; set; } = string.Empty; + public string? FullName { get; set; } = string.Empty; + public string? Organization { get; set; } = string.Empty; + public string? OldPositionName { get; set; } = string.Empty; + public string? OldPositionLevel { get; set; } = string.Empty; + public string? OldPositionNumber { get; set; } = string.Empty; + public string? OldSalary { get; set; } = ""; + // public string NewOc { get; set; } = string.Empty; + public string? NewPositionName { get; set; } = string.Empty; + public string? NewPositionLevel { get; set; } = string.Empty; + public string? NewPositionNumber { get; set; } = string.Empty; + public string? NewSalary { get; set; } = ""; + public string? Reason { get; set; } = string.Empty; + } +} diff --git a/BMA.EHR.Command.Service/Controllers/OrderController.cs b/BMA.EHR.Command.Service/Controllers/OrderController.cs index 5eeaaff1..ee87ba44 100644 --- a/BMA.EHR.Command.Service/Controllers/OrderController.cs +++ b/BMA.EHR.Command.Service/Controllers/OrderController.cs @@ -116,7 +116,7 @@ namespace BMA.EHR.Command.Service.Controllers return Success(); } - catch(Exception ex) + catch (Exception ex) { return Error(ex); } @@ -289,6 +289,7 @@ namespace BMA.EHR.Command.Service.Controllers else return Success(new { result = "N" }); } + case "C-PM-24": default: { if (command.CommandNo != "" && diff --git a/BMA.EHR.Report.Service/BMA.EHR.Report.Service.csproj b/BMA.EHR.Report.Service/BMA.EHR.Report.Service.csproj index 47b75761..8308a1be 100644 --- a/BMA.EHR.Report.Service/BMA.EHR.Report.Service.csproj +++ b/BMA.EHR.Report.Service/BMA.EHR.Report.Service.csproj @@ -664,6 +664,18 @@ PreserveNewest + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + diff --git a/BMA.EHR.Report.Service/Controllers/CommandReportController.cs b/BMA.EHR.Report.Service/Controllers/CommandReportController.cs index 2d9cfbde..cca8cbca 100644 --- a/BMA.EHR.Report.Service/Controllers/CommandReportController.cs +++ b/BMA.EHR.Report.Service/Controllers/CommandReportController.cs @@ -2091,22 +2091,21 @@ namespace BMA.EHR.Report.Service.Controllers CommandNo = raw_data.CommandNo.ToThaiNumber(), CommandYear = raw_data.CommandYear.ToInteger().ToThaiYear().ToString().ToThaiNumber(), IssuerOrganizationName = raw_data.IssuerOrganizationName, - ConclusionRegisterNo = raw_data.ConclusionRegisterNo.ToThaiNumber(), + // ConclusionRegisterNo = raw_data.ConclusionRegisterNo.ToThaiNumber(), ConclusionRegisterDate = raw_data.ConclusionRegisterDate == null ? "" : raw_data.ConclusionRegisterDate.Value.ToThaiFullDate3().ToThaiNumber(), - ConclusionResultNo = raw_data.ConclusionResultNo.ToThaiNumber(), - ConclusionResultDate = raw_data.ConclusionResultDate == null ? "" : raw_data.ConclusionResultDate.Value.ToThaiFullDate3().ToThaiNumber(), - PositionList = "", + // ConclusionResultNo = raw_data.ConclusionResultNo.ToThaiNumber(), + // ConclusionResultDate = raw_data.ConclusionResultDate == null ? "" : raw_data.ConclusionResultDate.Value.ToThaiFullDate3().ToThaiNumber(), + // 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, + // ConclusionReturnNo = raw_data.ConclusionReturnNo.ToThaiNumber(), + // ConclusionReturnDate = raw_data.ConclusionReturnDate == null ? "" : raw_data.ConclusionReturnDate.Value.ToThaiFullDate3().ToThaiNumber(), Subject = $"เรื่อง {raw_data.CommandSubject}", }; - - var receiver = await _commandReportRepository.GetCommandType22AttachmentAsync(commandId); - - var rptFile = Path.Combine(_hostingEnvironment.ContentRootPath, "Reports", $"20-คำสั่งจ้างและแต่งตั้งลูกจ้างประจำ.trdp"); + var rptFile = Path.Combine(_hostingEnvironment.ContentRootPath, "Reports", $"คำสั่งแต่งตั้งลูกจ้างประจำ(ปรับระดับชั้นงาน).trdp"); ReportPackager reportPackager = new ReportPackager(); Telerik.Reporting.Report? report = null; @@ -2117,10 +2116,6 @@ namespace BMA.EHR.Report.Service.Controllers report.DataSource = command; - var tblData = (Telerik.Reporting.Table)report.Items["detailSection1"].Items["table1"]; - - tblData.DataSource = receiver; - System.Collections.Hashtable deviceInfo = new System.Collections.Hashtable(); if (exportType == "docx") deviceInfo["OutputFormat"] = "DOCX"; @@ -2144,6 +2139,56 @@ namespace BMA.EHR.Report.Service.Controllers } } + private async Task GenerateCommandReportType22_Attachment(Guid commandId, string exportType) + { + try + { + var command = await _repository.GetByIdAsync(commandId); + if (command == null) + { + throw new Exception(GlobalMessages.CommandNotFound); + } + + var data = await _commandReportRepository.GetCommandType22AttachmentAsync(commandId); + + var rptFile = Path.Combine(_hostingEnvironment.ContentRootPath, "Reports", $"คำสั่งแต่งตั้งลูกจ้างประจำ(ปรับระดับชั้นงาน)-แนบท้าย.trdp"); + + ReportPackager reportPackager = new ReportPackager(); + Telerik.Reporting.Report? report = null; + using (var sourceStream = System.IO.File.OpenRead(rptFile)) + { + report = (Telerik.Reporting.Report)reportPackager.UnpackageDocument(sourceStream); + } + + var tblData = (Telerik.Reporting.Table)report.Items["detailSection1"].Items["tblData"]; + + tblData.DataSource = data; + + report.ReportParameters["IssuerOrganizationName"].Value = command.IssuerOrganizationName; + report.ReportParameters["CommandNo"].Value = command.CommandNo.ToThaiNumber(); + report.ReportParameters["CommandYear"].Value = command.CommandYear.ToInteger().ToThaiYear().ToString().ToThaiNumber(); + report.ReportParameters["CommandExecuteDate"].Value = command.CommandExcecuteDate == null ? "" : command.CommandExcecuteDate.Value.ToThaiFullDate2().ToThaiNumber(); + + System.Collections.Hashtable deviceInfo = new System.Collections.Hashtable(); + + InstanceReportSource instanceReportSource = new InstanceReportSource() + { + ReportDocument = report + }; + + + ReportProcessor reportProcessor = new ReportProcessor(_configuration); + RenderingResult result = reportProcessor.RenderReport(exportType, instanceReportSource, deviceInfo); + + var content = result.DocumentBytes; + + return content; + } + catch + { + throw; + } + } #endregion #region " C-PM-23 " @@ -2221,6 +2266,126 @@ namespace BMA.EHR.Report.Service.Controllers #endregion + #region " C-PM-24 " + + private async Task GenerateCommandReportType24_Cover(Guid commandId, string exportType) + { + try + { + var raw_data = await _repository.GetByIdAsync(commandId); + if (raw_data == null) + { + throw new Exception(GlobalMessages.CommandNotFound); + } + + //var recvId = raw_data.Receivers.Select(x => x.RefPlacementProfileId).ToList(); + //var positionList = string.Empty; + + var command = new + { + CommandNo = raw_data.CommandNo.ToThaiNumber(), + CommandYear = raw_data.CommandYear.ToInteger().ToThaiYear().ToString().ToThaiNumber(), + IssuerOrganizationName = raw_data.IssuerOrganizationName, + ConclusionRegisterNo = raw_data.ConclusionRegisterNo.ToThaiNumber(), + ConclusionRegisterDate = raw_data.ConclusionRegisterDate == null ? "" : raw_data.ConclusionRegisterDate.Value.ToThaiFullDate3().ToThaiNumber(), + // ConclusionResultNo = raw_data.ConclusionResultNo.ToThaiNumber(), + // ConclusionResultDate = raw_data.ConclusionResultDate == null ? "" : raw_data.ConclusionResultDate.Value.ToThaiFullDate3().ToThaiNumber(), + // 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, + // ConclusionReturnNo = raw_data.ConclusionReturnNo.ToThaiNumber(), + // ConclusionReturnDate = raw_data.ConclusionReturnDate == null ? "" : raw_data.ConclusionReturnDate.Value.ToThaiFullDate3().ToThaiNumber(), + Subject = $"เรื่อง {raw_data.CommandSubject}", + }; + + var rptFile = Path.Combine(_hostingEnvironment.ContentRootPath, "Reports", $"คำสั่งแต่งตั้งลูกจ้างประจำ(ย้าย).trdp"); + + ReportPackager reportPackager = new ReportPackager(); + Telerik.Reporting.Report? report = null; + using (var sourceStream = System.IO.File.OpenRead(rptFile)) + { + report = (Telerik.Reporting.Report)reportPackager.UnpackageDocument(sourceStream); + } + + report.DataSource = command; + + System.Collections.Hashtable deviceInfo = new System.Collections.Hashtable(); + if (exportType == "docx") + deviceInfo["OutputFormat"] = "DOCX"; + + InstanceReportSource instanceReportSource = new InstanceReportSource() + { + ReportDocument = report + }; + + + ReportProcessor reportProcessor = new ReportProcessor(_configuration); + RenderingResult result = reportProcessor.RenderReport(exportType.ToUpper(), instanceReportSource, deviceInfo); + + var content = result.DocumentBytes; + + return content; + } + catch + { + throw; + } + } + + private async Task GenerateCommandReportType24_Attachment(Guid commandId, string exportType) + { + try + { + var command = await _repository.GetByIdAsync(commandId); + if (command == null) + { + throw new Exception(GlobalMessages.CommandNotFound); + } + + var data = await _commandReportRepository.GetCommandType24AttachmentAsync(commandId); + + var rptFile = Path.Combine(_hostingEnvironment.ContentRootPath, "Reports", $"คำสั่งแต่งตั้งลูกจ้างประจำ(ย้าย)-แนบท้าย.trdp"); + + ReportPackager reportPackager = new ReportPackager(); + Telerik.Reporting.Report? report = null; + using (var sourceStream = System.IO.File.OpenRead(rptFile)) + { + report = (Telerik.Reporting.Report)reportPackager.UnpackageDocument(sourceStream); + } + + var tblData = (Telerik.Reporting.Table)report.Items["detailSection1"].Items["tblData"]; + + tblData.DataSource = data; + + report.ReportParameters["IssuerOrganizationName"].Value = command.IssuerOrganizationName; + report.ReportParameters["CommandNo"].Value = command.CommandNo.ToThaiNumber(); + report.ReportParameters["CommandYear"].Value = command.CommandYear.ToInteger().ToThaiYear().ToString().ToThaiNumber(); + report.ReportParameters["CommandExecuteDate"].Value = command.CommandExcecuteDate == null ? "" : command.CommandExcecuteDate.Value.ToThaiFullDate2().ToThaiNumber(); + + System.Collections.Hashtable deviceInfo = new System.Collections.Hashtable(); + + InstanceReportSource instanceReportSource = new InstanceReportSource() + { + ReportDocument = report + }; + + + ReportProcessor reportProcessor = new ReportProcessor(_configuration); + RenderingResult result = reportProcessor.RenderReport(exportType, instanceReportSource, deviceInfo); + + var content = result.DocumentBytes; + + return content; + } + catch + { + throw; + } + } + #endregion + #endregion #region " C-PM-01 คำสั่งบรรจุและแต่งตั้ง: สำหรับผู้สอบแข่งขันได้ " @@ -3639,10 +3804,10 @@ namespace BMA.EHR.Report.Service.Controllers #endregion - #region " C-PM-22 คำสั่งจ้างและแต่งตั้งลูกจ้างประจำ " + #region " C-PM-22 คำสั่งแต่งตั้งลูกจ้างประจำ(ปรับระดับชั้นงาน) " /// - /// คำสั่ง C-PM-22 คำสั่งจ้างและแต่งตั้งลูกจ้างประจำ + /// คำสั่ง C-PM-22 คำสั่งแต่งตั้งลูกจ้างประจำ(ปรับระดับชั้นงาน) /// /// Record Id ของคำสั่ง /// pdf, docx หรือ xlsx @@ -3655,7 +3820,7 @@ namespace BMA.EHR.Report.Service.Controllers [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] - public async Task> GetCommandType22CoverReportAsync(Guid id, string exportType = "pdf") + public async Task> GetCommandType22CoverReport(Guid id, string exportType = "pdf") { try { @@ -3680,6 +3845,45 @@ namespace BMA.EHR.Report.Service.Controllers } } + /// + /// เอกสารแนบท้าย C-PM-22 คำสั่งแต่งตั้งลูกจ้างประจำ(ปรับระดับชั้นงาน) + /// + /// Record Id ของคำสั่ง + /// pdf, docx หรือ xlsx + /// + /// เมื่อทำการอ่านข้อมูลจาก Relational Database สำเร็จ + /// ไม่ได้ Login เข้าระบบ + /// เมื่อเกิดข้อผิดพลาดในการทำงาน + [HttpGet("c-pm-22/attachment/{exportType}/{id}")] + [AllowAnonymous] + [ProducesResponseType(StatusCodes.Status200OK)] + [ProducesResponseType(StatusCodes.Status401Unauthorized)] + [ProducesResponseType(StatusCodes.Status500InternalServerError)] + public async Task> GetCommandType22AttachmentReport(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 GenerateCommandReportType22_Attachment(id, exportType); + return File(contentData, mimeType, $"command-attachment-{cmd.CommandNo}-{cmd.CommandYear.ToInteger().ToThaiYear()}.{exportType.Trim().ToLower()}"); + } + catch + { + throw; + } + } + #endregion #region " C-PM-23 คำสั่งให้ลูกจ้างออกจากราชการ " @@ -3725,6 +3929,88 @@ namespace BMA.EHR.Report.Service.Controllers #endregion + #region " C-PM-24 คำสั่งแต่งตั้งลูกจ้างประจำ(ย้าย) " + + /// + /// คำสั่ง C-PM-24 คำสั่งแต่งตั้งลูกจ้างประจำ(ย้าย) + /// + /// Record Id ของคำสั่ง + /// pdf, docx หรือ xlsx + /// + /// เมื่อทำการอ่านข้อมูลจาก Relational Database สำเร็จ + /// ไม่ได้ Login เข้าระบบ + /// เมื่อเกิดข้อผิดพลาดในการทำงาน + [HttpGet("c-pm-24/cover/{exportType}/{id}")] + [AllowAnonymous] + [ProducesResponseType(StatusCodes.Status200OK)] + [ProducesResponseType(StatusCodes.Status401Unauthorized)] + [ProducesResponseType(StatusCodes.Status500InternalServerError)] + public async Task> GetCommandType24CoverReport(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 GenerateCommandReportType24_Cover(id, exportType); + return File(contentData, mimeType, $"command-{cmd.CommandNo}-{cmd.CommandYear.ToInteger().ToThaiYear()}.{exportType.Trim().ToLower()}"); + } + catch + { + throw; + } + } + + /// + /// เอกสารแนบท้าย C-PM-24 คำสั่งแต่งตั้งลูกจ้างประจำ(ย้าย) + /// + /// Record Id ของคำสั่ง + /// pdf, docx หรือ xlsx + /// + /// เมื่อทำการอ่านข้อมูลจาก Relational Database สำเร็จ + /// ไม่ได้ Login เข้าระบบ + /// เมื่อเกิดข้อผิดพลาดในการทำงาน + [HttpGet("c-pm-24/attachment/{exportType}/{id}")] + [AllowAnonymous] + [ProducesResponseType(StatusCodes.Status200OK)] + [ProducesResponseType(StatusCodes.Status401Unauthorized)] + [ProducesResponseType(StatusCodes.Status500InternalServerError)] + public async Task> GetCommandType24AttachmentReport(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 GenerateCommandReportType24_Attachment(id, exportType); + return File(contentData, mimeType, $"command-attachment-{cmd.CommandNo}-{cmd.CommandYear.ToInteger().ToThaiYear()}.{exportType.Trim().ToLower()}"); + } + catch + { + throw; + } + } + + #endregion + #endregion } } diff --git a/BMA.EHR.Report.Service/Reports/คำสั่งแต่งตั้งลูกจ้างประจำ(ปรับระดับชั้นงาน)-แนบท้าย.trdp b/BMA.EHR.Report.Service/Reports/คำสั่งแต่งตั้งลูกจ้างประจำ(ปรับระดับชั้นงาน)-แนบท้าย.trdp index 6b98756223d9320f1db68d24eb42b63c0b313ed8..75c1c3a48e67435f42a6199c81b246c3d6b65f83 100644 GIT binary patch delta 2346 zcmV+_3Dx$56}A-^P)h>@6aWAK2mqUwURQE`f}HsX001Lwkr+h`+AKxeG>Fp;dsHme zk!d4;Tc#*kk}cQH_$KksiM;#WkvtvA&eh|AE<6O5t(nF~sUnt30x)`}su}%_(#W}g zsa3jq<;yQR`(S8Vj_{49I!7BNxh6JygOaeT48TUob6clEq31 zc1I98Hytpr@gsb>4je_(yP)SlHV8XF>mNBArMg(J$dhiW;X;HAt{oZnoLkYLRefU~Nj|b+EJbkU`Bh1vdh;8mqp8Lvk|G^wWjKD1X=$$|F+z&V% zro6@+Jws*YV7$O&d{nqk_7n>;#DSm@Z`$?E;w4ma)(-2c;mL{c}7L2u-M>xu)O26A$I?uR6Vh0=9SbRZzn zT+_8a1p5{+ASuXj00Gidbdr2WQ&k;ISBBNMO~WA{IM@-ouqB5hW3PJ)0#kbo6Dy6O zQxY~!9fEUP(QSxMiKek>S}L$eLy*9CO#`4xj$;mjHy;%K^S%!l|0RapmZ_V6mQQX| zS9%X7^vJ7Ekh~CzmC9&(owj67FSKDI}s5Q;MP-LRQ46 zNmXpOS}Zjg>(9RVXa^{;!S2%rmm?eG>nv+NqUjW79l>r+J#6)6fm3@RmDkO0(@Y_0I>Oguv{w`%d%K6 zw-STvaH$zWy-E*#$>;ujy^^}_L8X|(3ScURFB>jdI@+q4D>tns9LdACgC zyqO;7SXLb7Vd57b=HI~ve!I7>%-^b@%i=kQK~ccpME-frigac_@w z9WS!!^=>5t$T^}z#4kR7qUC}ST@~eaeuEvJce8+9=fLK`W&^uXxT$V6E4hKa3mzo_ zTP|~8b6~T9-CpUHBm{Q4m84wDIrHZ0$_Vj`5BgT&ps&^Cg;;Z@dr)rjWhO^E&P#*# zX5n5Gxt`w{9zr|&#}1#oaAe0hP>OaC!r6u~<=}2dQS5y2;_XlSYe|7b&);i02>CrY>WSwPw!DT&D z)=Q5@$s+6Z_+`1y;$M2OMh5ZAS(cVxc z$9}n)CC9*-S#s?EN%3{!JxEcKj7cdY?s@WtpR4 zgiBbXaMskG=1FqYB6YToG+kwqW0UNoXPIp*VoJA}LXncb+`;LZ(PuU)$Yhd@t4RzF z&ZchW4TL(Afan1s(&AaM^eDo$OW@iSt(*tw zF{c4#2Rb9PCKb?`6RT%zVz87)0V4k)Qz^g)Y~$Yq#|gf` zI&c;~6_7%IgQH*I=#N&8M}N{JDf=3nfxm2jYw(uXtS@K@9t;q{!I{1@b$U6DJX8Lm zo2R%6RH;)+rRH+8@@09H^o3iN#~i?wXPAgYAr`kPm(zte@qy$2J8;aiDsL@!RW36_ zO7gABBjKU*ugYW3qU7qu)hmyB$ua-z3-fxl7B|R6LUIdp2FNk3#_i&I$Mr6=-c^{B z?gt2ekz<8@5Hfc{gvfKH8yCp0bd5rkZn3Tpxjlb$P2`-6RM9o>aV!nK{sRq&@3FSJ zbTD(8?Z_7(q9*x_4es5@?A<_H-m=AeCWL0j#9)#dWXRb>mNviY^7&Hcbdm z`YNEZC^s9L5oo}WE;#N{_&b#w zK^2^`KMHe}#uV(fitdjh4U0AhV7_YegYsdNGp_U%X^0kEr$uSrT<65X4WwruFe zqzPsj-3k(~{0C4=0|XQR000O8o0gLs3E~c$mR?tKeS)0%2mk;hY?BKLE&`jDlRF9= Q0YQ^k3MK|43IG5A06j2rZU6uP delta 2259 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 diff --git a/BMA.EHR.Report.Service/Reports/คำสั่งแต่งตั้งลูกจ้างประจำ(ย้าย).trdp b/BMA.EHR.Report.Service/Reports/คำสั่งแต่งตั้งลูกจ้างประจำ(ย้าย).trdp index 210b8eebec3c412ecbe861ab3838c8719f48a659..a3928e92a02f93ce3b56dd6390412d0b10abe5c5 100644 GIT binary patch delta 1302 zcmV+x1?l?v-vNN&0S!<~0|XQR000O8#g$&M4U=dM#g$%Hh&U_xRs{e6f0M0fNPmJ5 z0!l(H&LL{Q9rj{xb1&B2UPDqvs#~OxO8wBLX$43~!9rAtkV2BS=YMlQrL%Lp_W3X| zQE5^Yf!Q7J&dl@N?9A-VT;6bO@-_7X=D8Iuuje#E-MZIcZnL6=eEpLt?ee7$KbTpe zZO`ZAHf!(}tSjree7WvuWZ80PMSqK<%{Y1$N6+HuIPPu5(ZjgciK8cS3ctU!yM>aMDBO*sZXCT3!swMozVtjtcr&RHv*q12U8{Y~XN`(h^Fyi;@YxM2T8s1c zXND2fThy@vol~3o?2cad9K%O<0fbS=6^ced&uf5!keMY;odAb0nWx-hwtq?M9MF?R z%9<@+(F!>|S5ARzq*qBjxZULUY}%iKV8L^_+*Dg6rsZ2}p-YzOU4X&vQ^8xCYs46+ zFotyuxrc%(tMkyObKVA7a;zrkFz|n1wEN%W^;OFbsa{>arl}`X6#gqjIJrUBVOZ8D z#iZu7D_TyBz%hK*X5F%B)qnSpH_x?fjof4ot=(&bO(sklZMUg7Ng3Bt?v5bkbYhlj zac?`##wbRFWWYgMT%#LY(9#ddG~%3I9$?O?U`5o$gaM>%ROEiMz^L5_^ravOssFj( zv|M)I5}XJC4-^ADF<%%3p9tS(ZPtV%b%nZ|`r4ToshZa{GUwS4=r;?N9niCoBWXAf zW=eW~h?(Ew=nvool`2-Qc#dPajb-lvA;t;u7u52z3>E)Z41JnnNP#!QwUZ!gFn@XG zCt10oUA;X*=?D!{dgfp#3!!NlI_kNmy&!{s&u$(?uG8(^B;CziIyZ>!GrCT)zIa_NEi3*6A?Kw_I4z<(GS8^wF1q(KwL*C z-^XCrwvm`cX-IkxA0%VT){%oQi6PGyrYZ5S&z?j@?9pu+9A z2bphoEZ-x$Ewai2wq{egFl2+lixZsm>ZB2h<_cu6UdI7JEa~|jT zZbD3qJ`HK5aA8gPn~0EDvqdRaTTrqRrZ4{|*sod*@ghb#RuE52IX31!f=O*4)boel zC5Tp7eL<3oy?DHW=s7D}0!OW0Q8~^|S delta 1348 zcmV-K1-try-~svH0S!<~0|XQR000O8b$(m14U=dMb$(k{tusNTPXzz~bd#-UNPps` z1eAnYoI}))hrQU_+>3R$*N{|^>J}-aQa`k5S^*MLun<)uq>!ZT`QO}6>FnIDeLhS~ zRGL&pV0Op5GxIz*J2QJTS2rD-d`p6{3x9&BV+pK6I-}q!oyL#or4`x&kjAU#>eES+N{i(L~~CD~?{p(X%)@iF?~|^f2yq;^>JS!$8O%;rK9) zdT|8bZlmNS3islu8%HmMFnXmCv*q12U8{Y~XN`(h^Fyi;aMY8)X&HYX!E>XKD-?}_ zp4Y&2LS~jZbpjm1WPx&v*(R-XfJ~MsYqoerE9CTCIfbZ^UM2P5c9Y+;X@3fWMbG7O zQ*DWumT#?xE?J>>0S3EI1zByb5o4gj7}hc59tx_g&O@Khd7EU}v6`U6!2f~K?thcl z*DO1vdUfTRrXEXC_^*Eu;p7J0fMHpm6qB0Qu4p+i0>|(Hn{~^kRo_G2JlC={a+5i< zcCQUKnJ{Uz-KOFsWn4?SJA#z6iCM12y`3~0qZkpA0S9Sujc#&5OFs_Nh;w>*fH|ik z6j2uw29UB*;rh)Yqjn?EmxCar{uh4Ja@l=La3TOaPz>{@3$mXvd2+LbdV|C zx*duhYn3)x00}_kQd9}bfBr(pj?u9b)H;6ug2gFl5W)55KWw)WElIe72RkXNq05Dl zF77)ZB64Kx?MiN=AB3xF1)6(-xQPMN3Iyo+*ievgd z3(2%zDi+SHCD40KmHH_pU(^dDipgxqTb>WyVx#H>Oe8m`EAy6Xf3|$)-ccR!a1V0v zC3bYX`i_W^Iad;M=`=I90_rb@wv7$h#8`U9hK;0$tWoHFp%0c~@aFwe_J+PBLs>4< zx(&_}oYcqUjrjySx7m#iD5aQ6#_~C~=Y7j#c=5~?C#TM2E}!abrnCKSKUc~GM20fx zAhW)GdKQUrFYYC(C!e6gowx^?Z*MH$BfBlK#sao(Q@Q0`u{~o9-Jp%3E3}eU;kLNw zlY4DVe`WVKIAMALuZ?pa=bi&|F){iyq?N*jHRW$2LSoGprCe=6$!eIs{GVdKYBj{$ z7wK3*JTc|inD+=KwSiF2A9|M{T4D7CNiO!{@d~2ntZWG!wR(v=whV}j^^7^`PamF~ zD*|SWwLzX4E70|XQR000O8b$(k{hBU>UlSXdo19g5|lQM5d4RwB7SFJNarB4L_ z0CbavZ!aNrep^?DG{v2w0002*0000J00000000000000004;6+lTmIIlj?5}1{`ky G0000}V0sz=