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);
}
}
///
/// ข้อมูล ข้อมูลส่วนตัว ผู้สมัคร
///
/// รหัสรอบสมัคร
///
/// เมื่อทำการดึง ข้อมูล ข้อมูลส่วนตัว ผู้สมัคร สำเร็จ
/// ไม่ได้ 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 _candidateService.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 _candidateService.GetsAsyncOccupation(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 _candidateService.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);
}
}
#endregion
}
}