From 056a768ac933ffc0596c7681b56f12135a4806cb Mon Sep 17 00:00:00 2001 From: kittapath Date: Mon, 3 Feb 2025 17:18:50 +0700 Subject: [PATCH] report probation --- .../PlacementProbationController.cs | 404 ++++++++++++++++++ 1 file changed, 404 insertions(+) create mode 100644 BMA.EHR.Placement.Service/Controllers/PlacementProbationController.cs diff --git a/BMA.EHR.Placement.Service/Controllers/PlacementProbationController.cs b/BMA.EHR.Placement.Service/Controllers/PlacementProbationController.cs new file mode 100644 index 00000000..e88b302b --- /dev/null +++ b/BMA.EHR.Placement.Service/Controllers/PlacementProbationController.cs @@ -0,0 +1,404 @@ +using BMA.EHR.Application.Repositories; +using BMA.EHR.Application.Repositories.MessageQueue; +using BMA.EHR.Application.Repositories.Reports; +using BMA.EHR.Domain.Common; +using BMA.EHR.Domain.Extensions; +using BMA.EHR.Domain.Shared; +using BMA.EHR.Infrastructure.Persistence; +using BMA.EHR.Placement.Service.Requests; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using Swashbuckle.AspNetCore.Annotations; +using System.Net.Http.Headers; +using System.Security.Claims; + +namespace BMA.EHR.Placement.Service.Controllers +{ + [Route("api/v{version:apiVersion}/placement/probation")] + [ApiVersion("1.0")] + [ApiController] + [Produces("application/json")] + [Authorize] + [SwaggerTag("report ทดลองงาน")] + public class PlacementProbationController : BaseController + { + private readonly ApplicationDBContext _context; + private readonly MinIOService _documentService; + private readonly IHttpContextAccessor _httpContextAccessor; + private readonly IConfiguration _configuration; + private readonly PermissionRepository _permission; + private readonly ProbationReportRepository _repository; + + public PlacementProbationController( + ApplicationDBContext context, + MinIOService documentService, + IHttpContextAccessor httpContextAccessor, + IConfiguration configuration, + PermissionRepository permiss, + ProbationReportRepository repository) + { + _context = context; + _documentService = documentService; + _httpContextAccessor = httpContextAccessor; + _configuration = configuration; + _permission = permiss; + _repository = repository; + } + + #region " Properties " + + private string? UserId => _httpContextAccessor?.HttpContext?.User?.FindFirst(ClaimTypes.NameIdentifier)?.Value; + + private string? FullName => _httpContextAccessor?.HttpContext?.User?.FindFirst("name")?.Value; + private string? token => _httpContextAccessor?.HttpContext?.Request.Headers["Authorization"]; + + #endregion + + #region 13-แบบมอบหมายงานการทดลองปฏิบัติหน้าที่ราชการ + /// + /// 13-แบบมอบหมายงานการทดลองปฏิบัติหน้าที่ราชการ + /// + /// assign id แบบมอบหมายงานการทดลองปฏิบัติหน้าที่ราชการ + /// pdf, docx หรือ xlsx + /// + /// เมื่อทำการอ่านข้อมูลจาก Relational Database สำเร็จ + /// ไม่ได้ Login เข้าระบบ + /// เมื่อเกิดข้อผิดพลาดในการทำงาน + [HttpGet("13/{exportType}/{id}")] + public async Task> GetProbationReportAsync(Guid id, string exportType = "pdf") + { + try + { + + string authorizationHeader = Request.Headers["Authorization"]; + string token = string.Empty; + + if (!string.IsNullOrEmpty(authorizationHeader) && authorizationHeader.StartsWith("Bearer ")) + { + token = authorizationHeader.Substring("Bearer ".Length).Trim(); + var probation = await _repository.GetProbationAssignAsync(id, token); + + if (probation != null) + { + 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 data = new + { + template = "probation-13", + reportName = "docx-report", + data = probation + }; + return Success(data); + } + else + { + return NotFound(); + } + } + else + { + return Unauthorized(); + } + } + catch + { + throw; + } + } + #endregion + + #region 14-แบบบันทึกผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับผู้ดูแล + /// + /// 14-แบบบันทึกผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับผู้ดูแล + /// + /// evaluate id + /// pdf, docx หรือ xlsx + /// + /// เมื่อทำการอ่านข้อมูลจาก Relational Database สำเร็จ + /// ไม่ได้ Login เข้าระบบ + /// เมื่อเกิดข้อผิดพลาดในการทำงาน + [HttpGet("14/{exportType}/{id}")] + public async Task> GetProbation14ConvertReportAsync(Guid id, string exportType = "pdf") + { + try + { + string authorizationHeader = Request.Headers["Authorization"]; + string token = string.Empty; + + if (!string.IsNullOrEmpty(authorizationHeader) && authorizationHeader.StartsWith("Bearer ")) + { + token = authorizationHeader.Substring("Bearer ".Length).Trim(); + var evaluateRecord = await _repository.GetEvaluateRecord14_15Async(id, token); + + if (evaluateRecord != null) + { + 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 data = new + { + template = "probation-14", + reportName = "docx-report", + data = evaluateRecord + }; + return Success(data); + } + else + { + return NotFound(); + } + } + else + { + return Unauthorized(); + } + } + catch + { + throw; + } + } + #endregion + + #region 15-แบบบันทึกผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับผู้บังคับบัญชา + /// + /// 15-แบบบันทึกผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับผู้บังคับบัญชา + /// + /// evaluate id + /// pdf, docx หรือ xlsx + /// + /// เมื่อทำการอ่านข้อมูลจาก Relational Database สำเร็จ + /// ไม่ได้ Login เข้าระบบ + /// เมื่อเกิดข้อผิดพลาดในการทำงาน + [HttpGet("15/{exportType}/{id}")] + public async Task> GetProbation15ConvertReportAsync(Guid id, string exportType = "pdf") + { + try + { + string authorizationHeader = Request.Headers["Authorization"]; + string token = string.Empty; + + if (!string.IsNullOrEmpty(authorizationHeader) && authorizationHeader.StartsWith("Bearer ")) + { + token = authorizationHeader.Substring("Bearer ".Length).Trim(); + var evaluateRecord = await _repository.GetEvaluateRecord14_15Async(id, token); + + if (evaluateRecord != null) + { + 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 data = new + { + template = "probation-15", + reportName = "docx-report", + data = evaluateRecord + }; + return Success(data); + } + else + { + return NotFound(); + } + } + else + { + return Unauthorized(); + } + } + catch + { + throw; + } + } + #endregion + + #region 16-แบบประเมินผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับผู้บังคับบัญชา + /// + /// 16-แบบประเมินผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับผู้บังคับบัญชา + /// + /// evaluate id + /// pdf, docx หรือ xlsx + /// + /// เมื่อทำการอ่านข้อมูลจาก Relational Database สำเร็จ + /// ไม่ได้ Login เข้าระบบ + /// เมื่อเกิดข้อผิดพลาดในการทำงาน + [HttpGet("16/{exportType}/{id}")] + public async Task> GetProbation16ConvertReportAsync(Guid id, string exportType = "pdf") + { + try + { + string authorizationHeader = Request.Headers["Authorization"]; + string token = string.Empty; + + if (!string.IsNullOrEmpty(authorizationHeader) && authorizationHeader.StartsWith("Bearer ")) + { + token = authorizationHeader.Substring("Bearer ".Length).Trim(); + var evaluateAssign = await _repository.GetEvaluateAssignAsync(id, token); + + if (evaluateAssign != null) + { + 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 data = new + { + template = "probation-16", + reportName = "docx-report", + data = evaluateAssign + }; + return Success(data); + } + else + { + return NotFound(); + } + } + else + { + return Unauthorized(); + } + } + catch + { + throw; + } + } + #endregion + + #region 17-แบบประเมินผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับคณะกรรมการ + /// + /// 17-แบบประเมินผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับคณะกรรมการ + /// + /// evaluate id + /// pdf, docx หรือ xlsx + /// + /// เมื่อทำการอ่านข้อมูลจาก Relational Database สำเร็จ + /// ไม่ได้ Login เข้าระบบ + /// เมื่อเกิดข้อผิดพลาดในการทำงาน + [HttpGet("17/{exportType}/{id}")] + public async Task> GetProbation17ConvertReportAsync(Guid id, string exportType = "pdf") + { + try + { + string authorizationHeader = Request.Headers["Authorization"]; + string token = string.Empty; + + if (!string.IsNullOrEmpty(authorizationHeader) && authorizationHeader.StartsWith("Bearer ")) + { + token = authorizationHeader.Substring("Bearer ".Length).Trim(); + var evaluateAssign = await _repository.GetEvaluateChairmanAssignAsync(id, token); + + if (evaluateAssign != null) + { + 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 data = new + { + template = "probation-17", + reportName = "docx-report", + data = evaluateAssign + }; + return Success(data); + } + else + { + return NotFound(); + } + } + else + { + return Unauthorized(); + } + } + catch + { + throw; + } + } + #endregion + + #region 18-แบบรายงานการประเมินผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับประธาน และ กรณีขยายเวลา + /// + /// 18-แบบรายงานการประเมินผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับประธาน และ กรณีขยายเวลา + /// + /// assign id แบบมอบหมายงานการทดลองปฏิบัติหน้าที่ราชการ + /// pdf, docx หรือ xlsx + /// + /// เมื่อทำการอ่านข้อมูลจาก Relational Database สำเร็จ + /// ไม่ได้ Login เข้าระบบ + /// เมื่อเกิดข้อผิดพลาดในการทำงาน + [HttpGet("18/{exportType}/{id}/{no}")] + public async Task> GetProbation19ConvertReportAsync(Guid id, int no, string exportType = "pdf") + { + try + { + string authorizationHeader = Request.Headers["Authorization"]; + string token = string.Empty; + + if (!string.IsNullOrEmpty(authorizationHeader) && authorizationHeader.StartsWith("Bearer ")) + { + token = authorizationHeader.Substring("Bearer ".Length).Trim(); + var evaluateAssign = await _repository.GetEvaluateResultAssignAsync(id, no, token); + + if (evaluateAssign != null) + { + 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 data = new + { + template = no == 1 ? "probation-18-1" : "probation-18-2", + reportName = "docx-report", + data = evaluateAssign + }; + return Success(data); + } + else + { + return NotFound(); + } + } + else + { + return Unauthorized(); + } + } + catch + { + throw; + } + } + #endregion + } +}