using BMA.EHR.Recurit.Exam.Service.Models; using BMA.EHR.Recurit.Exam.Service.Response; using BMA.EHR.Recurit.Exam.Service.Services; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Swashbuckle.AspNetCore.Annotations; namespace BMA.EHR.Recurit.Exam.Service.Controllers { [Route("api/v{version:apiVersion}/period-exam")] [ApiVersion("1.0")] [ApiController] [Produces("application/json")] [Authorize] [SwaggerTag("จัดการข้อมูลคำนำหน้า เพื่อนำไปใช้งานในระบบ")] public class PeriodExamController : BaseController { #region " Fields " private readonly PeriodExamService _periodExamService; #endregion #region " Constructor and Destructor " public PeriodExamController(PeriodExamService periodExamService) { _periodExamService = periodExamService; } #endregion #region " Methods " /// /// ข้อมูลรอบการสมัครสอบทั้งหมด /// /// /// เมื่อทำการอ่านข้อมูลรอบการสมัครสอบทั้งหมดสำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpGet] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> GetsAsync() { try { var items = await _periodExamService.GetsAsync(showAll: false); 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 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(PeriodExam item) { try { await _periodExamService.CreateAsync(item); return Success(); } 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, PeriodExam item) { try { await _periodExamService.UpdateAsync(examId, item); 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 { 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> GetsCandidateCheckPaymentAsync(string examId) // { // try // { // var items = await _periodExamService.GetsCandidateByStatusAsync(examId, "checkPayment"); // 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) { try { var items = await _periodExamService.GetsCandidateByStatusAsync(examId, status); return Success(items); } catch (Exception ex) { return Error(ex); } } #endregion } }