using BMA.EHR.Core; 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 Swashbuckle.AspNetCore.Annotations; namespace BMA.EHR.Recurit.Exam.Service.Controllers { [Route("api/v{version:apiVersion}/candidate")] [ApiVersion("1.0")] [ApiController] [Produces("application/json")] [Authorize] [SwaggerTag("จัดการข้อมูลศาสนา เพื่อนำไปใช้งานในระบบ")] public class CandidateController : BaseController { #region " Fields " private readonly CandidateService _candidateService; #endregion #region " Constructor and Destructor " public CandidateController(CandidateService candidateService) { _candidateService = candidateService; } #endregion #region " Methods " /// /// ข้อมูล สถานะ ผู้สมัครสอบ /// /// รหัสรอบสมัคร /// /// เมื่อทำการดึง ข้อมูล สถานะ ผู้สมัคร สำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpGet("status/{examId:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> GetStatusCandidateService(string examId) { try { var items = await _candidateService.GetStatusCandidateService(examId); return Success(GlobalMessages.Success, items); } catch (Exception ex) { return Error(ex); } } /// /// ข้อมูลผู้สมัครสอบ /// /// รหัสรอบสมัคร /// /// เมื่อทำการดึง ข้อมูลผู้สมัคร สำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpGet("{candidateId:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> GetsAsync(string candidateId) { try { var items = await _candidateService.GetsAsync(candidateId); return Success(items); } catch (Exception ex) { return Error(ex); } } /// /// ข้อมูล ข้อมูลส่วนตัว ผู้สมัคร /// /// รหัสรอบสมัคร /// /// เมื่อทำการดึง ข้อมูล ข้อมูลส่วนตัว ผู้สมัคร สำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpGet("information/{examId:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> GetsAsyncInformation(string examId) { try { var items = await _candidateService.GetsAsyncInformation(examId); return Success(items); } catch (Exception ex) { return Error(ex); } } /// /// ข้อมูล ข้อมูลที่อยู่ ผู้สมัคร /// /// รหัสรอบสมัคร /// /// เมื่อทำการดึง ข้อมูล ข้อมูลที่อยู่ ผู้สมัคร สำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpGet("address/{examId:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> GetsAsyncAddress(string examId) { try { var items = await _candidateService.GetsAsyncAddress(examId); return Success(items); } catch (Exception ex) { return Error(ex); } } /// /// ข้อมูล ข้อมูลครอบครัว ผู้สมัคร /// /// รหัสรอบสมัคร /// /// เมื่อทำการดึง ข้อมูล ข้อมูลครอบครัว ผู้สมัคร สำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpGet("family/{examId:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> GetsAsyncFamily(string examId) { try { var items = await _candidateService.GetsAsyncFamily(examId); return Success(items); } catch (Exception ex) { return Error(ex); } } /// /// ข้อมูล อาชีพ ผู้สมัคร /// /// รหัสรอบสมัคร /// /// เมื่อทำการดึง ข้อมูล อาชีพ ผู้สมัคร สำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpGet("occupation/{examId:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> GetsAsyncOccupation(string examId) { try { var items = await _candidateService.GetsAsyncOccupation(examId); return Success(items); } catch (Exception ex) { return Error(ex); } } /// /// ข้อมูล ประวัติการทำงาน/ฝึกงาน ผู้สมัคร /// /// รหัสรอบสมัคร /// /// เมื่อทำการดึง ข้อมูล ประวัติการทำงาน/ฝึกงาน ผู้สมัคร สำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpGet("career/{examId:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> GetsAsyncCareer(string examId) { try { var items = await _candidateService.GetsAsyncCareer(examId); return Success(items); } catch (Exception ex) { return Error(ex); } } /// /// ข้อมูล ประวัติการศีกษา ผู้สมัคร /// /// รหัสรอบสมัคร /// /// เมื่อทำการดึง ข้อมูล ประวัติการศีกษา ผู้สมัคร สำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpGet("education/{examId:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> GetsAsyncEducation(string examId) { try { var items = await _candidateService.GetsAsyncEducation(examId); return Success(items); } catch (Exception ex) { return Error(ex); } } /// /// ตรวจสอบว่าผู้ใช้งานสมัครสอบหรือยัง /// /// รหัสรอบสมัคร /// /// เมื่อทำการตรวจสอบว่าผู้ใช้งานสมัครสอบหรือยัง สำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpGet("check/{examId:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> GetsAsyncRegisterExam(string examId) { try { var items = await _candidateService.GetsAsyncRegisterExam(examId); return Success(items); } catch (Exception ex) { return Error(ex); } } /// /// อัพเดทข้อมูล ข้อมูลส่วนตัว ผู้สมัคร /// /// ข้อมูลส่วนตัว /// /// เมื่อทำการอัพเดทข้อมูล ข้อมูลส่วนตัว ผู้สมัคร สำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpPost("information/{examId:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> UpdateAsyncInformation(string examId, CandidateInformationResponseItem candidateInformation) { try { await _candidateService.UpdateAsyncInformation(examId, candidateInformation); return Success(); } catch (Exception ex) { return Error(ex); } } /// /// อัพเดทข้อมูล ข้อมูลที่อยู่ ผู้สมัคร /// /// ข้อมูลที่อยู่ /// /// เมื่อทำการอัพเดทข้อมูล ข้อมูลที่อยู่ ผู้สมัคร สำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpPost("address/{examId:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> UpdateAsyncAddress(string examId, CandidateAddressResponseItem candidateAddress) { try { await _candidateService.UpdateAsyncAddress(examId, candidateAddress); return Success(); } catch (Exception ex) { return Error(ex); } } /// /// อัพเดทข้อมูล ข้อมูลครอบครัว ผู้สมัคร /// /// ข้อมูลครอบครัว /// /// เมื่อทำการอัพเดทข้อมูล ข้อมูลครอบครัว ผู้สมัคร สำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpPost("family/{examId:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> UpdateAsyncFamily(string examId, CandidateFamilyResponseItem candidateFamily) { try { await _candidateService.UpdateAsyncFamily(examId, candidateFamily); return Success(); } catch (Exception ex) { return Error(ex); } } /// /// อัพเดทข้อมูล อาชีพ ผู้สมัคร /// /// อาชีพ /// /// เมื่อทำการอัพเดทข้อมูล อาชีพ ผู้สมัคร สำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpPost("occupation/{examId:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> UpdateAsyncOccupation(string examId, CandidateOccupationResponseItem candidateOccupation) { try { await _candidateService.UpdateAsyncOccupation(examId, candidateOccupation); return Success(); } catch (Exception ex) { return Error(ex); } } /// /// สร้างข้อมูล ประวัติการทำงาน/ฝึกงาน ผู้สมัคร /// /// ข้อมูลประวัติการทำงาน/ฝึกงาน /// /// เมื่อทำการสร้างข้อมูล ประวัติการทำงาน/ฝึกงาน ผู้สมัคร สำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpPost("career/{examId:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> CreateAsyncCareer(string examId, CandidateCareerResponseItem candidateCareer) { try { await _candidateService.CreateAsyncCareer(examId, candidateCareer); return Success(); } catch (Exception ex) { return Error(ex); } } /// /// สร้างข้อมูล ประวัติการศีกษา ผู้สมัคร /// /// ข้อมูลประวัติการศีกษา /// /// เมื่อทำการสร้างข้อมูล ประวัติการศีกษา ผู้สมัคร สำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpPost("education/{examId:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> CreateAsyncEducation(string examId, CandidateEducationResponseItem candidateEducation) { try { await _candidateService.CreateAsyncEducation(examId, candidateEducation); return Success(); } catch (Exception ex) { return Error(ex); } } /// /// อัพเดทข้อมูล ประวัติการทำงาน/ฝึกงาน ผู้สมัคร /// /// รหัสประวัติการทำงาน/ฝึกงาน /// ข้อมูลประวัติการทำงาน/ฝึกงาน /// /// เมื่อทำการอัพเดทข้อมูล ประวัติการทำงาน/ฝึกงาน ผู้สมัคร สำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpPut("career/{careerId:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> UpdateAsyncCareer(string careerId, CandidateCareerResponseItem candidateCareer) { try { await _candidateService.UpdateAsyncCareer(careerId, candidateCareer); return Success(); } catch (Exception ex) { return Error(ex); } } /// /// ลบข้อมูล ประวัติการทำงาน/ฝึกงาน ผู้สมัคร /// /// รหัสประวัติการทำงาน/ฝึกงาน /// ข้อมูลประวัติการทำงาน/ฝึกงาน /// /// เมื่อทำการลบข้อมูล ประวัติการทำงาน/ฝึกงาน ผู้สมัคร สำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpDelete("career/{careerId:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> UpdateAsyncCareer(string careerId) { try { await _candidateService.DeleteAsyncCareer(careerId); return Success(); } catch (Exception ex) { return Error(ex); } } /// /// อัพเดทข้อมูล ประวัติการศีกษา ผู้สมัคร /// /// รหัสประวัติการศีกษา /// ข้อมูลประวัติการศีกษา /// /// เมื่อทำการอัพเดทข้อมูล ประวัติการศีกษา ผู้สมัคร สำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpPut("education/{educationId:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> UpdateAsyncEducation(string educationId, CandidateEducationResponseItem candidateEducation) { try { await _candidateService.UpdateAsyncEducation(educationId, candidateEducation); return Success(); } catch (Exception ex) { return Error(ex); } } /// /// ลบข้อมูล ประวัติการศีกษา ผู้สมัคร /// /// รหัสประวัติการศีกษา /// ข้อมูลประวัติการศีกษา /// /// เมื่อทำการลบข้อมูล ประวัติการศีกษา ผู้สมัคร สำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpDelete("education/{educationId:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> DeleteAsyncEducation(string educationId) { try { await _candidateService.DeleteAsyncEducation(educationId); 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> RegisterCandidateService(string examId) { try { await _candidateService.UserCheckCandidateService(examId, "checkRegister"); return Success(); } catch (Exception ex) { return Error(ex); } } /// /// เจ้าหน้าที่ตรวจคุณสมบัติผู้สมัคร /// /// รหัสใบสมัคร /// /// เมื่อเจ้าหน้าที่ตรวจคุณสมบัติผู้สมัครสำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpPut("check-register/{candidate:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> CheckRegisterCandidateService(string candidate, RequestApprove item) { try { await _candidateService.AdminCheckCandidateService(candidate, item.Status ? "payment" : "rejectRegister", item); return Success(); } catch (Exception ex) { return Error(ex); } } /// /// เจ้าหน้าที่ตรวจคุณสมบัติผู้สมัครไม่ผ่านและให้สมัครใหม่ /// /// รหัสใบสมัคร /// /// เมื่อเจ้าหน้าที่ตรวจคุณสมบัติผู้สมัครไม่ผ่านและให้สมัครใหม่สำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpPut("reject-register/{candidate:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> RejectRegisterCandidateService(string candidate, RequestApprove item) { try { await _candidateService.AdminCheckCandidateService(candidate, "rejectDelete", item); return Success(); } catch (Exception ex) { return Error(ex); } } /// /// ผู้สมัครทำการบันทึกหลักฐานชำระเงิน /// /// รหัสรอบสมัคร /// /// เมื่อทำการผู้สมัครทำการบันทึกหลักฐานชำระเงิน สำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpGet("payment/{examId:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> PaymentedCandidateService(string examId) { try { await _candidateService.UserCheckCandidateService(examId, "checkPayment"); return Success(); } catch (Exception ex) { return Error(ex); } } /// /// เจ้าหน้าที่ตรวจการชำระเงิน /// /// รหัสใบสมัคร /// /// เมื่อเจ้าหน้าที่ตรวจการชำระเงินสำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpPut("check-payment/{candidate:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> CheckPaymentCandidateService(string candidate, RequestApprove item) { try { await _candidateService.AdminCheckCandidateService(candidate, item.Status ? "done" : "rejectPayment", item); return Success(); } catch (Exception ex) { return Error(ex); } } /// /// เจ้าหน้าที่บันทึกสถานที่สอบ /// /// รหัสใบสมัคร /// /// เมื่อเจ้าหน้าที่บันทึกสถานที่สอบสำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpGet("pass-done/{candidate:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> CheckDoneCandidateService(string candidate) { try { await _candidateService.AdminPassCandidateService(candidate, "done"); return Success(); } catch (Exception ex) { return Error(ex); } } #endregion } }