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); } } #endregion } }