using BMA.EHR.Recurit.Exam.Service.Core; using BMA.EHR.Recurit.Exam.Service.Models; using BMA.EHR.Recurit.Exam.Service.Request; using BMA.EHR.Recurit.Exam.Service.Response; using BMA.EHR.Recurit.Exam.Service.Services; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json.Linq; using Newtonsoft.Json; using Swashbuckle.AspNetCore.Annotations; namespace BMA.EHR.Recurit.Exam.Service.Controllers { [Route("api/v{version:apiVersion}/candidate/period-exam")] [ApiVersion("1.0")] [ApiController] [Produces("application/json")] [AllowAnonymous] [Authorize] [SwaggerTag("จัดการข้อมูลรอบการสอบ เพื่อนำไปใช้งานในระบบ")] public class PeriodExamController : BaseController { #region " Fields " private readonly PeriodExamService _periodExamService; private readonly MinIOService _minioService; private readonly PermissionRepository _permission; #endregion #region " Constructor and Destructor " public PeriodExamController(PeriodExamService periodExamService, MinIOService minioService, PermissionRepository permission) { _periodExamService = periodExamService; _minioService = minioService; _permission = permission; } #endregion #region " Methods " /// /// ข้อมูลรอบการสมัครสอบทั้งหมด /// /// /// เมื่อทำการอ่านข้อมูลรอบการสมัครสอบทั้งหมดสำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpGet] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> GetsAsync() { try { var getPermission = await _permission.GetPermissionAPIAsync("LIST", "SYS_EXAM_SELECT_PERIOD"); var jsonData = JsonConvert.DeserializeObject(getPermission); if (jsonData["status"]?.ToString() != "200") { return Error(jsonData["message"]?.ToString(), StatusCodes.Status403Forbidden); } var items = await _periodExamService.GetsAsync("all", showAll: false); return Success(items); } catch (Exception ex) { return Error(ex); } } /// /// ข้อมูลรอบการสมัครสอบทั้งหมด /// ประเกทประกาศสอบคัดเลือก /// /// /// เมื่อทำการอ่านข้อมูลรอบการสมัครสอบทั้งหมดสำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpGet("type/{type}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> GetsByTypeAsync(string type) { try { var getPermission = await _permission.GetPermissionAPIAsync("LIST", type == "all" ? "SYS_EXAM_SELECT_PERIOD" : "SYS_EXAM_SELECT_LISTNAME"); var jsonData = JsonConvert.DeserializeObject(getPermission); if (jsonData["status"]?.ToString() != "200") { return Error(jsonData["message"]?.ToString(), StatusCodes.Status403Forbidden); } var items = await _periodExamService.GetsAsync(type, showAll: false); return Success(items); } catch (Exception ex) { return Error(ex); } } /// /// ข้อมูลสถานะจ่ายเงิน /// รหัสรอบสมัคร /// /// /// เมื่อทำการอ่านข้อมูลสถานะจ่ายเงินสำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpGet("status-payment/{examId:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> GetsStatusPaymentAsync(string examId) { try { var getPermission = await _permission.GetPermissionAPIAsync("GET", "SYS_EXAM_SELECT_PERIOD"); var jsonData = JsonConvert.DeserializeObject(getPermission); if (jsonData["status"]?.ToString() != "200") { return Error(jsonData["message"]?.ToString(), StatusCodes.Status403Forbidden); } var items = await _periodExamService.GetsStatusPaymentAsync(examId); return Success(items); } catch (Exception ex) { return Error(ex); } } /// /// ข้อมูลรอบการสมัครสอบ และ คนสมัครสอบในรอบ /// /// รหัสรอบสมัคร /// /// เมื่อทำการอ่านข้อมูลรอบการสมัครสอบ และ คนสมัครสอบในรอบสำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpGet("{examId:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> GetsExamAndCandidateAsync(string examId) { try { var getPermission = await _permission.GetPermissionAPIAsync("GET", "SYS_EXAM_SELECT_PERIOD"); var jsonData = JsonConvert.DeserializeObject(getPermission); if (jsonData["status"]?.ToString() != "200") { return Error(jsonData["message"]?.ToString(), StatusCodes.Status403Forbidden); } var items = await _periodExamService.GetsExamAndCandidateAsync(examId, showAll: false); return Success(items); } catch (Exception ex) { return Error(ex); } } /// /// ข้อมูลรอบการสมัครสอบ และ คนสมัครสอบในรอบ /// /// ข้อมูลรอบสมัคร /// /// เมื่อทำการอ่านข้อมูลรอบการสมัครสอบ และ คนสมัครสอบในรอบสำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpPost] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> CreateAsync(RequestPeriodExam item) { try { var getPermission = await _permission.GetPermissionAPIAsync("CREATE", "SYS_EXAM_SELECT_PERIOD"); var jsonData = JsonConvert.DeserializeObject(getPermission); if (jsonData["status"]?.ToString() != "200") { return Error(jsonData["message"]?.ToString(), StatusCodes.Status403Forbidden); } var items = await _periodExamService.CreateAsync(item); return Success(items); } catch (Exception ex) { return Error(ex); } } /// /// ข้อมูลรอบการสมัครสอบ และ คนสมัครสอบในรอบ /// /// รหัสรอบสมัคร /// ข้อมูลรอบสมัคร /// /// เมื่อทำการอ่านข้อมูลรอบการสมัครสอบ และ คนสมัครสอบในรอบสำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpPut("{examId:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> UpdateAsync(string examId, RequestPeriodExam item) { try { var getPermission = await _permission.GetPermissionAPIAsync("UPDATE", "SYS_EXAM_SELECT_PERIOD"); var jsonData = JsonConvert.DeserializeObject(getPermission); if (jsonData["status"]?.ToString() != "200") { return Error(jsonData["message"]?.ToString(), StatusCodes.Status403Forbidden); } await _periodExamService.UpdateAsync(examId, item); return Success(); } catch (Exception ex) { return Error(ex); } } /// /// ข้อมูลรอบการสมัครสอบ และ คนสมัครสอบในรอบ /// /// ประเภทเอกสาร /// รหัสรอบสมัคร /// /// เมื่อทำการอ่านข้อมูลรอบการสมัครสอบ และ คนสมัครสอบในรอบสำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpPut("{type}/{examId:length(36)}"), DisableRequestSizeLimit] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> UpdateDocAsync(string type, string examId) { try { if (Request.Form.Files == null || Request.Form.Files.Count == 0) { return Error(GlobalMessages.NoFileToUpload); } var files = Request.Form.Files; if (type == "img") { await _periodExamService.UpdateImgAsync(examId, files); } else if (type == "barcode") { await _periodExamService.UpdateBarcodeAsync(examId, files); } else if (type == "qrcode") { await _periodExamService.UpdateQrcodeAsync(examId, files); } else { await _periodExamService.UpdateDocAsync(examId, files); } return Success(); } catch (Exception ex) { return Error(ex); } } /// /// ข้อมูลรอบการสมัครสอบ และ คนสมัครสอบในรอบ /// /// รหัสรอบสมัคร /// /// เมื่อทำการอ่านข้อมูลรอบการสมัครสอบ และ คนสมัครสอบในรอบสำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpDelete("{examId:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> DeleteAsync(string examId) { try { var getPermission = await _permission.GetPermissionAPIAsync("DELETE", "SYS_EXAM_SELECT_PERIOD"); var jsonData = JsonConvert.DeserializeObject(getPermission); if (jsonData["status"]?.ToString() != "200") { return Error(jsonData["message"]?.ToString(), StatusCodes.Status403Forbidden); } await _periodExamService.DeleteAsync(examId); return Success(); } catch (Exception ex) { return Error(ex); } } // /// // /// รายชื่อผู้สมัครสอบรอ ตรวจสอบคุณสมบัติ // /// // /// รหัสรอบสมัคร // /// // /// เมื่อทำการอ่านรายชื่อผู้สมัครสอบรอ ตรวจสอบคุณสมบัติสำเร็จ // /// ไม่ได้ Login เข้าระบบ // /// เมื่อเกิดข้อผิดพลาดในการทำงาน // [HttpGet("register/{examId:length(36)}")] // [ProducesResponseType(StatusCodes.Status200OK)] // [ProducesResponseType(StatusCodes.Status401Unauthorized)] // [ProducesResponseType(StatusCodes.Status500InternalServerError)] // public async Task> GetsCandidateCheckRegisterAsync(string examId) // { // try // { // var items = await _periodExamService.GetsCandidateByStatusAsync(examId, "checkRegister"); // return Success(items); // } // catch (Exception ex) // { // return Error(ex); // } // } /// /// ข้อมูลชำระเงิน /// /// รหัสรอบสมัคร /// /// เมื่อทำการอ่านข้อมูลชำระเงินสำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpGet("payment/{examId:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> GetsPaymentExamAsync(string examId) { try { var items = await _periodExamService.GetsPaymentExamAsync(examId); return Success(items); } catch (Exception ex) { return Error(ex); } } /// /// ข้อมูลเอกสารชำระเงิน /// /// รหัสรอบสมัคร /// /// เมื่อทำการอ่านข้อมูลชำระเงินสำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpGet("payment-export/{examId:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> ExportsPaymentExamAsync(string examId) { try { var items = await _periodExamService.ExportsPaymentExamAsync(examId); return Success(items); } catch (Exception ex) { return Error(ex); } } // /// // /// รายชื่อผู้สมัครสอบรอ จัดการเลขที่นั่งสอบ // /// // /// รหัสรอบสมัคร // /// // /// เมื่อทำการอ่านรายชื่อผู้สมัครสอบรอ จัดการเลขที่นั่งสอบสำเร็จ // /// ไม่ได้ Login เข้าระบบ // /// เมื่อเกิดข้อผิดพลาดในการทำงาน // [HttpGet("seat/{examId:length(36)}")] // [ProducesResponseType(StatusCodes.Status200OK)] // [ProducesResponseType(StatusCodes.Status401Unauthorized)] // [ProducesResponseType(StatusCodes.Status500InternalServerError)] // public async Task> GetsCandidateCheckSeatAsync(string examId) // { // try // { // var items = await _periodExamService.GetsCandidateByStatusAsync(examId, "checkSeat"); // return Success(items); // } // catch (Exception ex) // { // return Error(ex); // } // } /// /// รายชื่อผู้สมัครสอบรอ ตรวจสอบคุณสมบัติ /// /// รหัสรอบสมัคร /// /// เมื่อทำการอ่านรายชื่อผู้สมัครสอบรอ ตรวจสอบคุณสมบัติสำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpGet("{status}/{examId:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> GetsCandidateStatusAsync(string status, string examId, int page = 1, int pageSize = 25, string keyword = "") { try { var items = await _periodExamService.GetsCandidateByStatusAsync(examId, status, page, pageSize, keyword); return Success(items); } catch (Exception ex) { return Error(ex); } } /// /// ข้อมูล ข้อมูลส่วนตัว ผู้สมัคร /// /// รหัสผู้สมัคร /// /// เมื่อทำการดึง ข้อมูล ข้อมูลส่วนตัว ผู้สมัคร สำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpGet("information/{candidate:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> GetsAsyncInformation(string candidate) { try { var items = await _periodExamService.GetsAsyncInformation(candidate); return Success(items); } catch (Exception ex) { return Error(ex); } } /// /// ข้อมูล ข้อมูลที่อยู่ ผู้สมัคร /// /// รหัสผู้สมัคร /// /// เมื่อทำการดึง ข้อมูล ข้อมูลที่อยู่ ผู้สมัคร สำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpGet("address/{candidate:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> GetsAsyncAddress(string candidate) { try { var items = await _periodExamService.GetsAsyncAddress(candidate); return Success(items); } catch (Exception ex) { return Error(ex); } } /// /// ข้อมูล ข้อมูลครอบครัว ผู้สมัคร /// /// รหัสผู้สมัคร /// /// เมื่อทำการดึง ข้อมูล ข้อมูลครอบครัว ผู้สมัคร สำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpGet("family/{candidate:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> GetsAsyncFamily(string candidate) { try { var items = await _periodExamService.GetsAsyncFamily(candidate); return Success(items); } catch (Exception ex) { return Error(ex); } } /// /// ข้อมูล อาชีพ ผู้สมัคร /// /// รหัสผู้สมัคร /// /// เมื่อทำการดึง ข้อมูล อาชีพ ผู้สมัคร สำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpGet("occupation/{candidate:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> GetsAsyncOccupation(string candidate) { try { var items = await _periodExamService.GetsAsyncOccupation(candidate); return Success(items); } catch (Exception ex) { return Error(ex); } } /// /// ข้อมูล บุคคลที่สามารถติดต่อได้ /// /// รหัสผู้สมัคร /// /// เมื่อทำการดึง ข้อมูล บุคคลที่สามารถติดต่อได้ สำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpGet("contact/{candidate:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> GetsAsyncContact(string candidate) { try { var items = await _periodExamService.GetsAsyncContact(candidate); return Success(items); } catch (Exception ex) { return Error(ex); } } /// /// ข้อมูล ประวัติการทำงาน/ฝึกงาน ผู้สมัคร /// /// รหัสผู้สมัคร /// /// เมื่อทำการดึง ข้อมูล ประวัติการทำงาน/ฝึกงาน ผู้สมัคร สำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpGet("career/{candidate:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> GetsAsyncCareer(string candidate) { try { var items = await _periodExamService.GetsAsyncCareer(candidate); return Success(items); } catch (Exception ex) { return Error(ex); } } /// /// ข้อมูล ประวัติการศีกษา ผู้สมัคร /// /// รหัสผู้สมัคร /// /// เมื่อทำการดึง ข้อมูล ประวัติการศีกษา ผู้สมัคร สำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpGet("education/{candidate:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> GetsAsyncEducation(string candidate) { try { var items = await _periodExamService.GetsAsyncEducation(candidate); return Success(items); } catch (Exception ex) { return Error(ex); } } /// /// get id รูปถ่าย /// /// รหัสรอบสมัคร /// /// เมื่อ get id รูปถ่ายสำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpGet("profile-image/{candidate:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> GetsAsyncProfileImage(string candidate) { try { var path = await _periodExamService.GetsAsyncProfileImage(candidate); return Success(GlobalMessages.Success, path); } catch (Exception ex) { return Error(ex); } } /// /// ข้อมูล เอกสาร ผู้สมัคร /// /// รหัสผู้สมัคร /// /// เมื่อทำการดึง ข้อมูล เอกสาร ผู้สมัคร สำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpGet("document/{candidate:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> GetsAsyncDocument(string candidate) { try { var items = await _periodExamService.GetsAsyncDocument(candidate); return Success(items); } catch (Exception ex) { return Error(ex); } } /// /// อัพเดทข้อมูลที่นั่งสอบ /// /// รหัสรอบสมัคร /// /// เมื่อทำการอ่านอัพเดทข้อมูลที่นั่งสอบสำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpPut("upload-seat/{examId:length(36)}"), DisableRequestSizeLimit] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> UploadSeatCandidateAsync(string examId) { try { if (Request.Form.Files == null || Request.Form.Files.Count == 0) { return Error(GlobalMessages.NoFileToUpload); } var file = Request.Form.Files[0]; if (!Path.GetExtension(file.FileName).Equals(".xlsx", StringComparison.OrdinalIgnoreCase)) { return Error("นามสกุลไฟล์ต้องเป็น .xlsx!"); } // return Success(file); await _periodExamService.UploadSeatCandidateAsync(examId, file); return Success(); } catch (Exception ex) { return Error(ex); } } /// /// อัพเดทข้อมูลคะแนน /// /// รหัสรอบสมัคร /// /// เมื่อทำการอ่านอัพเดทข้อมูลคะแนนสำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpPut("upload-point/{examId:length(36)}"), DisableRequestSizeLimit] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> UploadPointCandidateAsync(string examId) { try { if (Request.Form.Files == null || Request.Form.Files.Count == 0) { return Error(GlobalMessages.NoFileToUpload); } var file = Request.Form.Files[0]; if (!Path.GetExtension(file.FileName).Equals(".xlsx", StringComparison.OrdinalIgnoreCase)) { return Error("นามสกุลไฟล์ต้องเป็น .xlsx!"); } // return Success(file); await _periodExamService.UploadPointCandidateAsync(examId, file); return Success(); } catch (Exception ex) { return Error(ex); } } /// /// โหลดผู้สมัครสอบ /// /// รหัสรอบสมัคร /// /// เมื่อทำการอ่านโหลดผู้สมัครสอบสำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpGet("download/{examId:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> DownloadCandidateAsync(string examId) { try { //var stream = await _periodExamService.DownloadCandidateAsync(examId); //string excelName = $"Candidate_{DateTime.Now.ToString("yyyyMMddHHmmssfff")}.xlsx"; //return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", excelName); var data = await _periodExamService.NewDownloadCandidateAsync(examId); return Success(data); } catch (Exception ex) { return Error(ex); } } /// /// โหลดผู้สมัครสอบ(รายละเอียด) /// /// รหัสรอบสมัคร /// /// เมื่อทำการอ่านโหลดผู้สมัครสอบ(รายละเอียด)สำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpGet("download/detail/{examId:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> DownloadCandidateAllAsync(string examId) { try { //var stream = await _periodExamService.DownloadCandidateAllAsync(examId); //string excelName = $"Candidate_{DateTime.Now.ToString("yyyyMMddHHmmssfff")}.xlsx"; //return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", excelName); var data = await _periodExamService.NewDownloadCandidateAllAsync(examId); return Success(data); } catch (Exception ex) { return Error(ex); } } /// /// โหลดสรุปการสอบ /// /// รหัสรอบสมัคร /// /// เมื่อทำการอ่านโหลดสรุปการสอบสำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpPut("download/dashboard/{examId:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> GetsDashboardExamAsync(string examId, RequestCandidateDashboard item) { try { //var stream = await _periodExamService.GetsDashboardExamAsync(item, examId); //string excelName = $"Candidate_{DateTime.Now.ToString("yyyyMMddHHmmssfff")}.xlsx"; //return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", excelName); var data = await _periodExamService.NewGetsDashboardExamAsync(item, examId); return Success(data); } catch (Exception ex) { return Error(ex); } } /// /// ข้อมูลตำแหน่งสมัครสอบ /// รหัสรอบสมัคร /// รหัสตำแหน่ง /// /// /// เมื่อทำการอ่านข้อมูลตำแหน่งสมัครสอบสำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpGet("position/{examId:length(36)}/{positionId:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> GetsNamePositionAsync(string examId, string positionId) { try { var items = await _periodExamService.GetsNamePositionAsync(examId, positionId); return Success(items); } catch (Exception ex) { return Error(ex); } } /// /// ลบเอกไฟล์ /// /// รหัสไฟล์เอกสาร /// /// เมื่อลบเอกไฟล์สำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpDelete("doc/{examId:length(36)}"), DisableRequestSizeLimit] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> DeleteFileCandidateService(string examId, string documentId) { try { await _periodExamService.DeleteAsyncDocument(examId, documentId); return Success(); } catch (Exception ex) { return Error(ex); } } /// /// สรุปข้อมูลผู้สมัคร /// /// รหัสรอบสมัคร /// /// เมื่อทำการอ่านสรุปข้อมูลผู้สมัครสำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpGet("dashboard/{examId:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> GetsDashboardPaymentExamAsync(string examId) { try { var getPermission = await _permission.GetPermissionAPIAsync("GET", "SYS_EXAM_SELECT_PERIOD"); var jsonData = JsonConvert.DeserializeObject(getPermission); if (jsonData["status"]?.ToString() != "200") { return Error(jsonData["message"]?.ToString(), StatusCodes.Status403Forbidden); } var items = await _periodExamService.GetsDashboardPaymentExamAsync(examId); return Success(items); } catch (Exception ex) { return Error(ex); } } /// /// โหลดผู้สมัครสอบ(รายละเอียดชำระเงิน) /// /// รหัสรอบสมัคร /// /// เมื่อทำการอ่านโหลดผู้สมัครสอบ(รายละเอียดชำระเงิน)สำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpGet("download/payment/{examId:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> DownloadCandidatePaymentAllAsync(string examId) { try { var stream = await _periodExamService.DownloadCandidatePaymentAllAsync(examId); string excelName = $"Candidate_Payment_{DateTime.Now.ToString("yyyyMMddHHmmssfff")}.xlsx"; return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", excelName); // return Success(); } catch (Exception ex) { return Error(ex); } } /// /// โอนคนสรรหาไปบรรจุ /// /// รหัสรอบสมัคร /// /// เมื่อโอนคนสรรหาไปบรรจุสำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpGet("placement/{examId:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> UpdateAsyncCandidateToPlacement(Guid examId) { try { await _periodExamService.UpdateAsyncCandidateToPlacement(examId); return Success(); } catch (Exception ex) { return Error(ex); } } #endregion } }