diff --git a/Controllers/CandidateController.cs b/Controllers/CandidateController.cs index b486b06..59f459d 100644 --- a/Controllers/CandidateController.cs +++ b/Controllers/CandidateController.cs @@ -40,19 +40,20 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers /// ข้อมูล สถานะ ผู้สมัครสอบ /// /// รหัสรอบสมัคร + /// Id ตำแหน่งสมัครสอบ /// /// เมื่อทำการดึง ข้อมูล สถานะ ผู้สมัคร สำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน - [HttpGet("status/{examId:length(36)}")] + [HttpGet("status/{examId:length(36)}/{positionId:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] - public async Task> GetStatusCandidateService(string examId) + public async Task> GetStatusCandidateService(string examId, string positionId) { try { - var items = await _candidateService.GetStatusCandidateService(examId); + var items = await _candidateService.GetStatusCandidateService(examId, positionId); return Success(GlobalMessages.Success, items); } @@ -65,7 +66,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers /// /// ข้อมูลผู้สมัครสอบ /// - /// รหัสรอบสมัคร + /// Id ผู้สมัคร /// /// เมื่อทำการดึง ข้อมูลผู้สมัคร สำเร็จ /// ไม่ได้ Login เข้าระบบ @@ -92,19 +93,20 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers /// ข้อมูล ข้อมูลส่วนตัว ผู้สมัคร /// /// รหัสรอบสมัคร + /// Id ตำแหน่งสมัครสอบ /// /// เมื่อทำการดึง ข้อมูล ข้อมูลส่วนตัว ผู้สมัคร สำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน - [HttpGet("information/{examId:length(36)}")] + [HttpGet("information/{examId:length(36)}/{positionId:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] - public async Task> GetsAsyncInformation(string examId) + public async Task> GetsAsyncInformation(string examId, string positionId) { try { - var items = await _candidateService.GetsAsyncInformation(examId); + var items = await _candidateService.GetsAsyncInformation(examId, positionId); return Success(items); } @@ -118,19 +120,20 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers /// ข้อมูล ข้อมูลที่อยู่ ผู้สมัคร /// /// รหัสรอบสมัคร + /// Id ตำแหน่งสมัครสอบ /// /// เมื่อทำการดึง ข้อมูล ข้อมูลที่อยู่ ผู้สมัคร สำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน - [HttpGet("address/{examId:length(36)}")] + [HttpGet("address/{examId:length(36)}/{positionId:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] - public async Task> GetsAsyncAddress(string examId) + public async Task> GetsAsyncAddress(string examId, string positionId) { try { - var items = await _candidateService.GetsAsyncAddress(examId); + var items = await _candidateService.GetsAsyncAddress(examId, positionId); return Success(items); } @@ -144,19 +147,20 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers /// ข้อมูล ข้อมูลครอบครัว ผู้สมัคร /// /// รหัสรอบสมัคร + /// Id ตำแหน่งสมัครสอบ /// /// เมื่อทำการดึง ข้อมูล ข้อมูลครอบครัว ผู้สมัคร สำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน - [HttpGet("family/{examId:length(36)}")] + [HttpGet("family/{examId:length(36)}/{positionId:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] - public async Task> GetsAsyncFamily(string examId) + public async Task> GetsAsyncFamily(string examId, string positionId) { try { - var items = await _candidateService.GetsAsyncFamily(examId); + var items = await _candidateService.GetsAsyncFamily(examId, positionId); return Success(items); } @@ -170,19 +174,20 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers /// ข้อมูล อาชีพ ผู้สมัคร /// /// รหัสรอบสมัคร + /// Id ตำแหน่งสมัครสอบ /// /// เมื่อทำการดึง ข้อมูล อาชีพ ผู้สมัคร สำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน - [HttpGet("occupation/{examId:length(36)}")] + [HttpGet("occupation/{examId:length(36)}/{positionId:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] - public async Task> GetsAsyncOccupation(string examId) + public async Task> GetsAsyncOccupation(string examId, string positionId) { try { - var items = await _candidateService.GetsAsyncOccupation(examId); + var items = await _candidateService.GetsAsyncOccupation(examId, positionId); return Success(items); } @@ -196,19 +201,20 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers /// ข้อมูล ประวัติการทำงาน/ฝึกงาน ผู้สมัคร /// /// รหัสรอบสมัคร + /// Id ตำแหน่งสมัครสอบ /// /// เมื่อทำการดึง ข้อมูล ประวัติการทำงาน/ฝึกงาน ผู้สมัคร สำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน - [HttpGet("career/{examId:length(36)}")] + [HttpGet("career/{examId:length(36)}/{positionId:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] - public async Task> GetsAsyncCareer(string examId) + public async Task> GetsAsyncCareer(string examId, string positionId) { try { - var items = await _candidateService.GetsAsyncCareer(examId); + var items = await _candidateService.GetsAsyncCareer(examId, positionId); return Success(items); } @@ -222,19 +228,20 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers /// ข้อมูล ประวัติการศีกษา ผู้สมัคร /// /// รหัสรอบสมัคร + /// Id ตำแหน่งสมัครสอบ /// /// เมื่อทำการดึง ข้อมูล ประวัติการศีกษา ผู้สมัคร สำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน - [HttpGet("education/{examId:length(36)}")] + [HttpGet("education/{examId:length(36)}/{positionId:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] - public async Task> GetsAsyncEducation(string examId) + public async Task> GetsAsyncEducation(string examId, string positionId) { try { - var items = await _candidateService.GetsAsyncEducation(examId); + var items = await _candidateService.GetsAsyncEducation(examId, positionId); return Success(items); } @@ -248,19 +255,20 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers /// ตรวจสอบว่าผู้ใช้งานสมัครสอบหรือยัง /// /// รหัสรอบสมัคร + /// Id ตำแหน่งสมัครสอบ /// /// เมื่อทำการตรวจสอบว่าผู้ใช้งานสมัครสอบหรือยัง สำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน - [HttpGet("check/{examId:length(36)}")] + [HttpGet("check/{examId:length(36)}/{positionId:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] - public async Task> GetsAsyncRegisterExam(string examId) + public async Task> GetsAsyncRegisterExam(string examId, string positionId) { try { - var items = await _candidateService.GetsAsyncRegisterExam(examId); + var items = await _candidateService.GetsAsyncRegisterExam(examId, positionId); return Success(items); } @@ -273,20 +281,22 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers /// /// อัพเดทข้อมูล ข้อมูลส่วนตัว ผู้สมัคร /// + /// รหัสรอบสมัคร + /// Id ตำแหน่งสมัครสอบ /// ข้อมูลส่วนตัว /// /// เมื่อทำการอัพเดทข้อมูล ข้อมูลส่วนตัว ผู้สมัคร สำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน - [HttpPost("{examId:length(36)}")] + [HttpPost("{examId:length(36)}/{positionId:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] - public async Task> UpdateAsync(string examId, CandidateResponseItem candidateInformation) + public async Task> UpdateAsync(string examId, string positionId, CandidateResponseItem candidateInformation) { try { - await _candidateService.UpdateAsync(examId, candidateInformation); + await _candidateService.UpdateAsync(examId, positionId, candidateInformation); return Success(); } @@ -299,20 +309,22 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers /// /// อัพเดทข้อมูล ข้อมูลส่วนตัว ผู้สมัคร /// + /// รหัสรอบสมัคร + /// Id ตำแหน่งสมัครสอบ /// ข้อมูลส่วนตัว /// /// เมื่อทำการอัพเดทข้อมูล ข้อมูลส่วนตัว ผู้สมัคร สำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน - [HttpPost("information/{examId:length(36)}")] + [HttpPost("information/{examId:length(36)}/{positionId:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] - public async Task> UpdateAsyncInformation(string examId, CandidateInformationResponseItem candidateInformation) + public async Task> UpdateAsyncInformation(string examId, string positionId, CandidateInformationResponseItem candidateInformation) { try { - await _candidateService.UpdateAsyncInformation(examId, candidateInformation); + await _candidateService.UpdateAsyncInformation(examId, positionId, candidateInformation); return Success(); } @@ -325,20 +337,22 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers /// /// อัพเดทข้อมูล ข้อมูลที่อยู่ ผู้สมัคร /// + /// รหัสรอบสมัคร + /// Id ตำแหน่งสมัครสอบ /// ข้อมูลที่อยู่ /// /// เมื่อทำการอัพเดทข้อมูล ข้อมูลที่อยู่ ผู้สมัคร สำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน - [HttpPost("address/{examId:length(36)}")] + [HttpPost("address/{examId:length(36)}/{positionId:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] - public async Task> UpdateAsyncAddress(string examId, CandidateAddressResponseItem candidateAddress) + public async Task> UpdateAsyncAddress(string examId, string positionId, CandidateAddressResponseItem candidateAddress) { try { - await _candidateService.UpdateAsyncAddress(examId, candidateAddress); + await _candidateService.UpdateAsyncAddress(examId, positionId, candidateAddress); return Success(); } @@ -351,20 +365,22 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers /// /// อัพเดทข้อมูล ข้อมูลครอบครัว ผู้สมัคร /// + /// รหัสรอบสมัคร + /// Id ตำแหน่งสมัครสอบ /// ข้อมูลครอบครัว /// /// เมื่อทำการอัพเดทข้อมูล ข้อมูลครอบครัว ผู้สมัคร สำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน - [HttpPost("family/{examId:length(36)}")] + [HttpPost("family/{examId:length(36)}/{positionId:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] - public async Task> UpdateAsyncFamily(string examId, CandidateFamilyResponseItem candidateFamily) + public async Task> UpdateAsyncFamily(string examId, string positionId, CandidateFamilyResponseItem candidateFamily) { try { - await _candidateService.UpdateAsyncFamily(examId, candidateFamily); + await _candidateService.UpdateAsyncFamily(examId, positionId, candidateFamily); return Success(); } @@ -377,20 +393,22 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers /// /// อัพเดทข้อมูล อาชีพ ผู้สมัคร /// + /// รหัสรอบสมัคร + /// Id ตำแหน่งสมัครสอบ /// อาชีพ /// /// เมื่อทำการอัพเดทข้อมูล อาชีพ ผู้สมัคร สำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน - [HttpPost("occupation/{examId:length(36)}")] + [HttpPost("occupation/{examId:length(36)}/{positionId:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] - public async Task> UpdateAsyncOccupation(string examId, CandidateOccupationResponseItem candidateOccupation) + public async Task> UpdateAsyncOccupation(string examId, string positionId, CandidateOccupationResponseItem candidateOccupation) { try { - await _candidateService.UpdateAsyncOccupation(examId, candidateOccupation); + await _candidateService.UpdateAsyncOccupation(examId, positionId, candidateOccupation); return Success(); } @@ -403,20 +421,22 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers /// /// สร้างข้อมูล ประวัติการทำงาน/ฝึกงาน ผู้สมัคร /// + /// รหัสรอบสมัคร + /// Id ตำแหน่งสมัครสอบ /// ข้อมูลประวัติการทำงาน/ฝึกงาน /// /// เมื่อทำการสร้างข้อมูล ประวัติการทำงาน/ฝึกงาน ผู้สมัคร สำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน - [HttpPost("career/{examId:length(36)}")] + [HttpPost("career/{examId:length(36)}/{positionId:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] - public async Task> CreateAsyncCareer(string examId, CandidateCareerResponseItem candidateCareer) + public async Task> CreateAsyncCareer(string examId, string positionId, CandidateCareerResponseItem candidateCareer) { try { - await _candidateService.CreateAsyncCareer(examId, candidateCareer); + await _candidateService.CreateAsyncCareer(examId, positionId, candidateCareer); return Success(); } @@ -429,20 +449,22 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers /// /// สร้างข้อมูล ประวัติการศีกษา ผู้สมัคร /// + /// รหัสรอบสมัคร + /// Id ตำแหน่งสมัครสอบ /// ข้อมูลประวัติการศีกษา /// /// เมื่อทำการสร้างข้อมูล ประวัติการศีกษา ผู้สมัคร สำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน - [HttpPost("education/{examId:length(36)}")] + [HttpPost("education/{examId:length(36)}/{positionId:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] - public async Task> CreateAsyncEducation(string examId, CandidateEducationResponseItem candidateEducation) + public async Task> CreateAsyncEducation(string examId, string positionId, CandidateEducationResponseItem candidateEducation) { try { - await _candidateService.CreateAsyncEducation(examId, candidateEducation); + await _candidateService.CreateAsyncEducation(examId, positionId, candidateEducation); return Success(); } @@ -564,19 +586,20 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers /// ผู้สมัครทำการสมัครสอบ /// /// รหัสรอบสมัคร + /// Id ตำแหน่งสมัครสอบ /// /// เมื่อทำการผู้สมัครทำการสมัครสอบ สำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน - [HttpGet("register/{examId:length(36)}")] + [HttpGet("register/{examId:length(36)}/{positionId:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] - public async Task> RegisterCandidateService(string examId) + public async Task> RegisterCandidateService(string examId, string positionId) { try { - await _candidateService.UserCheckCandidateService(examId, "checkRegister"); + await _candidateService.UserCheckCandidateService(examId, positionId, "checkRegister"); return Success(); } @@ -589,7 +612,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers /// /// เจ้าหน้าที่ตรวจคุณสมบัติผู้สมัคร /// - /// รหัสใบสมัคร + /// รหัสใบสมัคร /// /// เมื่อเจ้าหน้าที่ตรวจคุณสมบัติผู้สมัครสำเร็จ /// ไม่ได้ Login เข้าระบบ @@ -598,11 +621,11 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] - public async Task> CheckRegisterCandidateService(string candidate, RequestApprove item) + public async Task> CheckRegisterCandidateService(string candidateId, RequestApprove item) { try { - await _candidateService.AdminCheckCandidateService(candidate, item.Status ? "payment" : "rejectRegister", item); + await _candidateService.AdminCheckCandidateService(candidateId, item.Status ? "payment" : "rejectRegister", item); return Success(); } @@ -615,7 +638,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers /// /// เจ้าหน้าที่ตรวจคุณสมบัติผู้สมัครไม่ผ่านและให้สมัครใหม่ /// - /// รหัสใบสมัคร + /// รหัสใบสมัคร /// /// เมื่อเจ้าหน้าที่ตรวจคุณสมบัติผู้สมัครไม่ผ่านและให้สมัครใหม่สำเร็จ /// ไม่ได้ Login เข้าระบบ @@ -624,11 +647,11 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] - public async Task> RejectRegisterCandidateService(string candidate, RequestApprove item) + public async Task> RejectRegisterCandidateService(string candidateId, RequestApprove item) { try { - await _candidateService.AdminCheckCandidateService(candidate, "rejectDelete", item); + await _candidateService.AdminCheckCandidateService(candidateId, "rejectDelete", item); return Success(); } @@ -638,36 +661,10 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers } } - // /// - // /// ผู้สมัครทำการบันทึกหลักฐานชำระเงิน - // /// - // /// รหัสรอบสมัคร - // /// - // /// เมื่อทำการผู้สมัครทำการบันทึกหลักฐานชำระเงิน สำเร็จ - // /// ไม่ได้ 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 เข้าระบบ @@ -676,11 +673,11 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] - public async Task> CheckPaymentCandidateService(string candidate, RequestApprove item) + public async Task> CheckPaymentCandidateService(string candidateId, RequestApprove item) { try { - await _candidateService.AdminCheckCandidateService(candidate, item.Status ? "done" : "rejectPayment", item); + await _candidateService.AdminCheckCandidateService(candidateId, item.Status ? "checkSeat" : "rejectPayment", item); return Success(); } @@ -693,20 +690,46 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers /// /// เจ้าหน้าที่บันทึกสถานที่สอบ /// - /// รหัสใบสมัคร + /// รหัสใบสมัคร /// /// เมื่อเจ้าหน้าที่บันทึกสถานที่สอบสำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน - [HttpGet("pass-done/{candidate:length(36)}")] + [HttpGet("pass-seat/{candidate:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] - public async Task> CheckDoneCandidateService(string candidate) + public async Task> CheckCheckSeatCandidateService(string candidateId) { try { - await _candidateService.AdminPassCandidateService(candidate, "done"); + await _candidateService.AdminPassCandidateService(candidateId, "checkPoint"); + + return Success(); + } + catch (Exception ex) + { + return Error(ex); + } + } + + /// + /// เจ้าหน้าที่บันทึกคะแนนสอบ + /// + /// รหัสใบสมัคร + /// + /// เมื่อเจ้าหน้าที่บันทึกคะแนนสอบสำเร็จ + /// ไม่ได้ Login เข้าระบบ + /// เมื่อเกิดข้อผิดพลาดในการทำงาน + [HttpGet("pass-point/{candidate:length(36)}")] + [ProducesResponseType(StatusCodes.Status200OK)] + [ProducesResponseType(StatusCodes.Status401Unauthorized)] + [ProducesResponseType(StatusCodes.Status500InternalServerError)] + public async Task> CheckPointCandidateService(string candidateId) + { + try + { + await _candidateService.AdminPassCandidateService(candidateId, "done"); return Success(); } @@ -720,19 +743,20 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers /// get id รูปถ่าย /// /// รหัสรอบสมัคร + /// Id ตำแหน่งสมัครสอบ /// /// เมื่อ get id รูปถ่ายสำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน - [HttpGet("profile-image/{examId:length(36)}")] + [HttpGet("profile-image/{examId:length(36)}/{positionId:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] - public async Task> GetsAsyncProfileImage(string examId) + public async Task> GetsAsyncProfileImage(string examId, string positionId) { try { - var doc = await _candidateService.GetsAsyncProfileImage(examId); + var doc = await _candidateService.GetsAsyncProfileImage(examId, positionId); if (doc == "") return Success(); @@ -756,18 +780,19 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers /// อัปโหลดรูปถ่ายผู้สมัคร /// /// รหัสรอบสมัคร + /// Id ตำแหน่งสมัครสอบ /// /// เมื่ออัปโหลดรูปถ่ายผู้สมัครสำเร็จ /// ค่าตัวแปรที่ส่งมาไม่ถูกต้อง /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน - [HttpPut("profile-image/{examId:length(36)}"), DisableRequestSizeLimit] + [HttpPut("profile-image/{examId:length(36)}/{positionId:length(36)}"), DisableRequestSizeLimit] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status400BadRequest)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] [AllowAnonymous] - public async Task> UpdateProfileImageCandidateService(string examId) + public async Task> UpdateProfileImageCandidateService(string examId, string positionId) { try { @@ -777,7 +802,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers } var file = Request.Form.Files[0]; - await _candidateService.UpdateAsyncProfileImage(examId, file); + await _candidateService.UpdateAsyncProfileImage(examId, positionId, file); return Success(); } @@ -791,19 +816,20 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers /// get id หลักฐานชำระ /// /// รหัสรอบสมัคร + /// Id ตำแหน่งสมัครสอบ /// /// เมื่อ get id หลักฐานชำระสำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน - [HttpGet("payment-image/{examId:length(36)}")] + [HttpGet("payment-image/{examId:length(36)}/{positionId:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] - public async Task> GetsAsyncPaymentImg(string examId) + public async Task> GetsAsyncPaymentImg(string examId, string positionId) { try { - var doc = await _candidateService.GetsAsyncPaymentImg(examId); + var doc = await _candidateService.GetsAsyncPaymentImg(examId, positionId); if (doc == "") return Success(); @@ -827,15 +853,16 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers /// อัปเอกสารหลักฐานการชำระเงิน /// /// รหัสรอบสมัคร + /// Id ตำแหน่งสมัครสอบ /// /// เมื่ออัปเอกสารหลักฐานสำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน - [HttpPut("payment-image/{examId:length(36)}"), DisableRequestSizeLimit] + [HttpPut("payment-image/{examId:length(36)}/{positionId:length(36)}"), DisableRequestSizeLimit] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] - public async Task> UploadPaymentCandidateService(string examId) + public async Task> UploadPaymentCandidateService(string examId, string positionId) { try { @@ -845,8 +872,8 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers } var file = Request.Form.Files[0]; - await _candidateService.UpdateAsyncPaymentImage(examId, file); - await _candidateService.UserCheckCandidateService(examId, "checkPayment"); + await _candidateService.UpdateAsyncPaymentImage(examId, positionId, file); + await _candidateService.UserCheckCandidateService(examId, positionId, "checkPayment"); return Success(); } @@ -860,19 +887,20 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers /// list เอกสารหลักฐาน /// /// รหัสรอบสมัคร + /// Id ตำแหน่งสมัครสอบ /// /// เมื่อ list เอกสารหลักฐานสำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน - [HttpGet("upload/{examId:length(36)}")] + [HttpGet("upload/{examId:length(36)}/{positionId:length(36)}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] - public async Task> GetFileCandidateService(string examId) + public async Task> GetFileCandidateService(string examId, string positionId) { try { - var doc = await _candidateService.GetsAsyncFileUpload(examId); + var doc = await _candidateService.GetsAsyncFileUpload(examId, positionId); return Success(doc); } @@ -886,15 +914,16 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers /// อัปโหลดเอกสารหลักฐาน /// /// รหัสรอบสมัคร + /// Id ตำแหน่งสมัครสอบ /// /// เมื่ออัปโหลดเอกสารหลักฐานสำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน - [HttpPut("upload/{examId:length(36)}"), DisableRequestSizeLimit] + [HttpPut("upload/{examId:length(36)}/{positionId:length(36)}"), DisableRequestSizeLimit] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] - public async Task> CreateFileCandidateService(string examId) + public async Task> CreateFileCandidateService(string examId, string positionId) { try { @@ -904,7 +933,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers } var file = Request.Form.Files[0]; - await _candidateService.UpdateAsyncDocument(examId, file); + await _candidateService.UpdateAsyncDocument(examId, positionId, file); return Success(); } @@ -922,7 +951,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers /// เมื่อลบเอกสารหลักฐานสำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน - [HttpDelete("upload/{examId:length(36)}"), DisableRequestSizeLimit] + [HttpDelete("upload/{documentId:length(36)}"), DisableRequestSizeLimit] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] @@ -942,7 +971,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers /// /// โหลดไฟล์ /// - /// รหัสรอบสมัคร + /// Id ไฟล์ที่ต้องการโหลด /// /// เมื่อโหลดไฟล์สำเร็จ /// ไม่ได้ Login เข้าระบบ diff --git a/Controllers/PeriodExamController.cs b/Controllers/PeriodExamController.cs index 411c4a7..0949d76 100644 --- a/Controllers/PeriodExamController.cs +++ b/Controllers/PeriodExamController.cs @@ -1,4 +1,5 @@ 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; @@ -95,7 +96,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] - public async Task> CreateAsync(PeriodExam item) + public async Task> CreateAsync(RequestPeriodExam item) { try { @@ -122,7 +123,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] - public async Task> UpdateAsync(string examId, PeriodExam item) + public async Task> UpdateAsync(string examId, RequestPeriodExam item) { try { diff --git a/Core/GlobalMessages.cs b/Core/GlobalMessages.cs index 0f99be9..40d627f 100644 --- a/Core/GlobalMessages.cs +++ b/Core/GlobalMessages.cs @@ -10,6 +10,7 @@ public const string DataExist = "มีข้อมูลดังกล่าวอยู่ในระบบแล้ว"; public const string NameDupicate = "ชื่อวันหยุดนี้มีอยู่ในระบบอยู่แล้ว"; public const string ExamNotFound = "ไม่พบข้อมูลการรับสมัครสอบ"; + public const string PositionExamNotFound = "ไม่พบข้อมูลตำแหน่งการรับสมัครสอบ"; public const string CandidateNotFound = "ไม่พบข้อมูลผู้สมัครสอบ"; public const string CareerNotFound = "ไม่พบข้อมูลประวัติการทำงาน/ฝึกงาน"; public const string EducationNotFound = "ไม่พบข้อมูลประวัติการศีกษา"; diff --git a/Data/ApplicationDbContext.cs b/Data/ApplicationDbContext.cs index edc17ea..9546807 100644 --- a/Data/ApplicationDbContext.cs +++ b/Data/ApplicationDbContext.cs @@ -38,7 +38,10 @@ namespace BMA.EHR.Recurit.Exam.Service.Data public DbSet Educations { get; set; } public DbSet Documents { get; set; } + public DbSet CandidateDocuments { get; set; } + public DbSet PositionExams { get; set; } + public DbSet BankExams { get; set; } } } diff --git a/Data/DatabaseSeeder.cs b/Data/DatabaseSeeder.cs index 7950f2e..048af40 100644 --- a/Data/DatabaseSeeder.cs +++ b/Data/DatabaseSeeder.cs @@ -311,54 +311,54 @@ namespace BMA.EHR.Recurit.Exam.Service.Data } public static async Task SeedPeriodExamAsync(WebApplication app) { - using var scope = app.Services.CreateScope(); - var service = scope.ServiceProvider.GetRequiredService(); + // using var scope = app.Services.CreateScope(); + // var service = scope.ServiceProvider.GetRequiredService(); - var insertedPeriodExam = new List(); + // var insertedPeriodExam = new List(); - if ((await service.GetsAsync()).Count() == 0) - { - // read excels into object - var excelFile = "SeedPeriodExam.xlsx"; - using (var excel = new ExcelPackage(new FileInfo(excelFile))) - { - // 1. Seed PeriodExam - var workSheet = excel.Workbook.Worksheets.FirstOrDefault(x => x.Name.ToLower() == "periodexam"); - var totalRows = workSheet?.Dimension.Rows; + // if ((await service.GetsAsync()).Count() == 0) + // { + // // read excels into object + // var excelFile = "SeedPeriodExam.xlsx"; + // using (var excel = new ExcelPackage(new FileInfo(excelFile))) + // { + // // 1. Seed PeriodExam + // var workSheet = excel.Workbook.Worksheets.FirstOrDefault(x => x.Name.ToLower() == "periodexam"); + // var totalRows = workSheet?.Dimension.Rows; - int row = 2; + // int row = 2; - while (row <= totalRows) - { - var cell1 = workSheet?.Cells[row, 1]?.GetValue(); - if (cell1 == "" || cell1 == null) break; + // while (row <= totalRows) + // { + // var cell1 = workSheet?.Cells[row, 1]?.GetValue(); + // if (cell1 == "" || cell1 == null) break; - var PeriodExam = insertedPeriodExam.Where(x => x.Name == (workSheet?.Cells[row, 1]?.GetValue() ?? "")).FirstOrDefault(); - if (PeriodExam == null) - { + // var PeriodExam = insertedPeriodExam.Where(x => x.Name == (workSheet?.Cells[row, 1]?.GetValue() ?? "")).FirstOrDefault(); + // if (PeriodExam == null) + // { - var inserted = new PeriodExam - { - Id = Guid.NewGuid(), - Name = workSheet?.Cells[row, 1]?.GetValue() ?? "", - Round = workSheet?.Cells[row, 2]?.GetValue() ?? 0, - Fee = workSheet?.Cells[row, 3]?.GetValue() ?? 0, - StartDate = workSheet?.Cells[row, 4]?.GetValue() ?? DateTime.Now.Date, - EndDate = workSheet?.Cells[row, 5]?.GetValue() ?? DateTime.Now.Date, - Year = workSheet?.Cells[row, 6]?.GetValue() ?? 0, - AnnounceDate = workSheet?.Cells[row, 7]?.GetValue() ?? DateTime.Now.Date, - IsActive = true, - CreatedFullName = "System Administrator", - CreatedAt = DateTime.Now - }; - insertedPeriodExam.Add(inserted); + // var inserted = new PeriodExam + // { + // Id = Guid.NewGuid(), + // Name = workSheet?.Cells[row, 1]?.GetValue() ?? "", + // Round = workSheet?.Cells[row, 2]?.GetValue() ?? 0, + // Fee = workSheet?.Cells[row, 3]?.GetValue() ?? 0, + // // StartDate = workSheet?.Cells[row, 4]?.GetValue() ?? DateTime.Now.Date, + // // EndDate = workSheet?.Cells[row, 5]?.GetValue() ?? DateTime.Now.Date, + // Year = workSheet?.Cells[row, 6]?.GetValue() ?? 0, + // // AnnounceDate = workSheet?.Cells[row, 7]?.GetValue() ?? DateTime.Now.Date, + // IsActive = true, + // CreatedFullName = "System Administrator", + // CreatedAt = DateTime.Now + // }; + // insertedPeriodExam.Add(inserted); - await service.CreateAsync(inserted); - } - row++; - } - } - } + // await service.CreateAsync(inserted); + // } + // row++; + // } + // } + // } } #endregion } diff --git a/Data/Migrations/ApplicationDbContextModelSnapshot.cs b/Data/Migrations/ApplicationDbContextModelSnapshot.cs index bb519af..3f429c3 100644 --- a/Data/Migrations/ApplicationDbContextModelSnapshot.cs +++ b/Data/Migrations/ApplicationDbContextModelSnapshot.cs @@ -19,6 +19,75 @@ namespace BMA.EHR.Recurit.Exam.Service.Data.Migrations .HasAnnotation("ProductVersion", "7.0.4") .HasAnnotation("Relational:MaxIdentifierLength", 64); + modelBuilder.Entity("BMA.EHR.Recurit.Exam.Service.Models.BankExam", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)") + .HasColumnOrder(0) + .HasComment("PrimaryKey") + .HasAnnotation("Relational:JsonPropertyName", "id"); + + b.Property("AccountName") + .HasColumnType("longtext") + .HasComment("ชื่อบัญชี"); + + b.Property("AccountNumber") + .HasColumnType("longtext") + .HasComment("เลขบัญชี"); + + b.Property("BankName") + .HasColumnType("longtext") + .HasComment("ธนาคาร"); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)") + .HasColumnOrder(100) + .HasComment("สร้างข้อมูลเมื่อ"); + + b.Property("CreatedFullName") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)") + .HasColumnOrder(104) + .HasComment("ชื่อ User ที่สร้างข้อมูล"); + + b.Property("CreatedUserId") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnOrder(101) + .HasComment("User Id ที่สร้างข้อมูล"); + + b.Property("LastUpdateFullName") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)") + .HasColumnOrder(105) + .HasComment("ชื่อ User ที่แก้ไขข้อมูลล่าสุด"); + + b.Property("LastUpdateUserId") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnOrder(103) + .HasComment("User Id ที่แก้ไขข้อมูลล่าสุด"); + + b.Property("LastUpdatedAt") + .HasColumnType("datetime(6)") + .HasColumnOrder(102) + .HasComment("แก้ไขข้อมูลล่าสุดเมื่อ"); + + b.Property("PeriodExamId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("PeriodExamId"); + + b.ToTable("BankExams"); + }); + modelBuilder.Entity("BMA.EHR.Recurit.Exam.Service.Models.Candidate", b => { b.Property("Id") @@ -753,10 +822,23 @@ namespace BMA.EHR.Recurit.Exam.Service.Data.Migrations .HasComment("PrimaryKey") .HasAnnotation("Relational:JsonPropertyName", "id"); - b.Property("AnnounceDate") + b.Property("AnnouncementEndDate") .HasColumnType("datetime(6)") - .HasColumnOrder(3) - .HasComment("วันประกาศ"); + .HasColumnOrder(6) + .HasComment("วันสิ้นสุดประกาศ"); + + b.Property("AnnouncementStartDate") + .HasColumnType("datetime(6)") + .HasColumnOrder(5) + .HasComment("วันเริ่มประกาศ"); + + b.Property("CheckDisability") + .HasColumnType("tinyint(1)") + .HasComment("คนพิการ"); + + b.Property("CheckDocument") + .HasColumnType("tinyint(1)") + .HasComment("ตรวจสอบเอกสารหลังประกาศผลสอบ"); b.Property("CreatedAt") .HasColumnType("datetime(6)") @@ -781,11 +863,6 @@ namespace BMA.EHR.Recurit.Exam.Service.Data.Migrations .HasColumnType("longtext") .HasComment("รายละเอียดสมัครสอบ"); - b.Property("EndDate") - .HasColumnType("datetime(6)") - .HasColumnOrder(2) - .HasComment("วันสิ้นสุด"); - b.Property("Fee") .HasColumnType("float") .HasComment("ค่าธรรมเนียม"); @@ -817,19 +894,58 @@ namespace BMA.EHR.Recurit.Exam.Service.Data.Migrations .IsRequired() .HasMaxLength(150) .HasColumnType("varchar(150)") - .HasColumnOrder(4) + .HasColumnOrder(7) .HasComment("ชื่อการสอบ"); - b.Property("Round") - .HasColumnType("int") - .HasColumnOrder(5) - .HasComment("รอบการสอบ"); + b.Property("Note") + .HasColumnType("longtext") + .HasComment("หมายเหตุ"); - b.Property("StartDate") + b.Property("OrganizationCodeId") + .HasColumnType("char(36)") + .HasComment("Id รหัสส่วนราชการ"); + + b.Property("OrganizationCodeName") + .HasColumnType("longtext") + .HasComment("ชื่อรหัสส่วนราชการ"); + + b.Property("OrganizationId") + .HasColumnType("char(36)") + .HasComment("Id หน่วยงาน"); + + b.Property("OrganizationName") + .HasColumnType("longtext") + .HasComment("ชื่อหน่วยงาน"); + + b.Property("PaymentEndDate") + .HasColumnType("datetime(6)") + .HasColumnOrder(4) + .HasComment("วันสิ้นสุดชำระเงิน"); + + b.Property("PaymentKrungThai") + .HasColumnType("longtext") + .HasComment("ชำระเงินผ่านกรุงไทย"); + + b.Property("PaymentStartDate") + .HasColumnType("datetime(6)") + .HasColumnOrder(3) + .HasComment("วันเริ่มชำระเงิน"); + + b.Property("RegisterEndDate") + .HasColumnType("datetime(6)") + .HasColumnOrder(2) + .HasComment("วันสิ้นสุดสมัครสอบ"); + + b.Property("RegisterStartDate") .HasColumnType("datetime(6)") .HasColumnOrder(1) .HasComment("วันเริ่มสมัครสอบ"); + b.Property("Round") + .HasColumnType("int") + .HasColumnOrder(8) + .HasComment("รอบการสอบ"); + b.Property("Year") .HasColumnType("int") .HasComment("ปีงบประมาณ"); @@ -839,6 +955,75 @@ namespace BMA.EHR.Recurit.Exam.Service.Data.Migrations b.ToTable("PeriodExams"); }); + modelBuilder.Entity("BMA.EHR.Recurit.Exam.Service.Models.PositionExam", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)") + .HasColumnOrder(0) + .HasComment("PrimaryKey") + .HasAnnotation("Relational:JsonPropertyName", "id"); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)") + .HasColumnOrder(100) + .HasComment("สร้างข้อมูลเมื่อ"); + + b.Property("CreatedFullName") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)") + .HasColumnOrder(104) + .HasComment("ชื่อ User ที่สร้างข้อมูล"); + + b.Property("CreatedUserId") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnOrder(101) + .HasComment("User Id ที่สร้างข้อมูล"); + + b.Property("LastUpdateFullName") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)") + .HasColumnOrder(105) + .HasComment("ชื่อ User ที่แก้ไขข้อมูลล่าสุด"); + + b.Property("LastUpdateUserId") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnOrder(103) + .HasComment("User Id ที่แก้ไขข้อมูลล่าสุด"); + + b.Property("LastUpdatedAt") + .HasColumnType("datetime(6)") + .HasColumnOrder(102) + .HasComment("แก้ไขข้อมูลล่าสุดเมื่อ"); + + b.Property("PeriodExamId") + .HasColumnType("char(36)"); + + b.Property("PositionId") + .HasColumnType("char(36)") + .HasComment("Id ตำแหน่ง"); + + b.Property("PositionName") + .HasColumnType("longtext") + .HasComment("ชื่อตำแหน่ง"); + + b.Property("TypeName") + .HasColumnType("longtext") + .HasComment("ชื่อประเภทแบบฟอร์ม"); + + b.HasKey("Id"); + + b.HasIndex("PeriodExamId"); + + b.ToTable("PositionExams"); + }); + modelBuilder.Entity("BMA.EHR.Recurit.Exam.Service.Models.Prefix", b => { b.Property("Id") @@ -1171,6 +1356,17 @@ namespace BMA.EHR.Recurit.Exam.Service.Data.Migrations b.ToTable("SubDistricts"); }); + modelBuilder.Entity("BMA.EHR.Recurit.Exam.Service.Models.BankExam", b => + { + b.HasOne("BMA.EHR.Recurit.Exam.Service.Models.PeriodExam", "PeriodExam") + .WithMany() + .HasForeignKey("PeriodExamId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PeriodExam"); + }); + modelBuilder.Entity("BMA.EHR.Recurit.Exam.Service.Models.Candidate", b => { b.HasOne("BMA.EHR.Recurit.Exam.Service.Models.District", "CitizenDistrict") @@ -1330,6 +1526,17 @@ namespace BMA.EHR.Recurit.Exam.Service.Data.Migrations b.Navigation("EducationLevel"); }); + modelBuilder.Entity("BMA.EHR.Recurit.Exam.Service.Models.PositionExam", b => + { + b.HasOne("BMA.EHR.Recurit.Exam.Service.Models.PeriodExam", "PeriodExam") + .WithMany() + .HasForeignKey("PeriodExamId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PeriodExam"); + }); + modelBuilder.Entity("BMA.EHR.Recurit.Exam.Service.Models.SubDistrict", b => { b.HasOne("BMA.EHR.Recurit.Exam.Service.Models.District", "District") diff --git a/Migrations/20230404134139_Update table Candidate add bank.Designer.cs b/Migrations/20230404134139_Update table Candidate add bank.Designer.cs new file mode 100644 index 0000000..003b605 --- /dev/null +++ b/Migrations/20230404134139_Update table Candidate add bank.Designer.cs @@ -0,0 +1,1564 @@ +// +using System; +using BMA.EHR.Recurit.Exam.Service.Data; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace BMA.EHR.Recurit.Exam.Service.Migrations +{ + [DbContext(typeof(ApplicationDbContext))] + [Migration("20230404134139_Update table Candidate add bank")] + partial class UpdatetableCandidateaddbank + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "7.0.4") + .HasAnnotation("Relational:MaxIdentifierLength", 64); + + modelBuilder.Entity("BMA.EHR.Recurit.Exam.Service.Models.BankExam", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)") + .HasColumnOrder(0) + .HasComment("PrimaryKey") + .HasAnnotation("Relational:JsonPropertyName", "id"); + + b.Property("AccountName") + .HasColumnType("longtext") + .HasComment("ชื่อบัญชี"); + + b.Property("AccountNumber") + .HasColumnType("longtext") + .HasComment("เลขบัญชี"); + + b.Property("BankName") + .HasColumnType("longtext") + .HasComment("ธนาคาร"); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)") + .HasColumnOrder(100) + .HasComment("สร้างข้อมูลเมื่อ"); + + b.Property("CreatedFullName") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)") + .HasColumnOrder(104) + .HasComment("ชื่อ User ที่สร้างข้อมูล"); + + b.Property("CreatedUserId") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnOrder(101) + .HasComment("User Id ที่สร้างข้อมูล"); + + b.Property("LastUpdateFullName") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)") + .HasColumnOrder(105) + .HasComment("ชื่อ User ที่แก้ไขข้อมูลล่าสุด"); + + b.Property("LastUpdateUserId") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnOrder(103) + .HasComment("User Id ที่แก้ไขข้อมูลล่าสุด"); + + b.Property("LastUpdatedAt") + .HasColumnType("datetime(6)") + .HasColumnOrder(102) + .HasComment("แก้ไขข้อมูลล่าสุดเมื่อ"); + + b.Property("PeriodExamId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("PeriodExamId"); + + b.ToTable("BankExams"); + }); + + modelBuilder.Entity("BMA.EHR.Recurit.Exam.Service.Models.Candidate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)") + .HasColumnOrder(0) + .HasComment("PrimaryKey") + .HasAnnotation("Relational:JsonPropertyName", "id"); + + b.Property("CitizenDate") + .HasColumnType("datetime(6)") + .HasComment("วันที่ออกบัตร"); + + b.Property("CitizenDistrictId") + .HasColumnType("char(36)"); + + b.Property("CitizenId") + .HasMaxLength(20) + .HasColumnType("varchar(20)") + .HasComment("เลขประจำตัวประชาชน"); + + b.Property("CitizenProvinceId") + .HasColumnType("char(36)"); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)") + .HasColumnOrder(100) + .HasComment("สร้างข้อมูลเมื่อ"); + + b.Property("CreatedFullName") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)") + .HasColumnOrder(104) + .HasComment("ชื่อ User ที่สร้างข้อมูล"); + + b.Property("CreatedUserId") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnOrder(101) + .HasComment("User Id ที่สร้างข้อมูล"); + + b.Property("CurrentAddress") + .HasColumnType("longtext") + .HasComment("ที่อยู่ปัจจุบัน"); + + b.Property("CurrentDistrictId") + .HasColumnType("char(36)"); + + b.Property("CurrentProvinceId") + .HasColumnType("char(36)"); + + b.Property("CurrentSubDistrictId") + .HasColumnType("char(36)"); + + b.Property("CurrentZipCode") + .HasMaxLength(10) + .HasColumnType("varchar(10)") + .HasComment("รหัสไปรษณีย์ที่อยู่ปัจจุบัน"); + + b.Property("DateOfBirth") + .HasMaxLength(40) + .HasColumnType("datetime(6)") + .HasComment("วันเกิด"); + + b.Property("Email") + .HasMaxLength(200) + .HasColumnType("varchar(200)") + .HasComment("อีเมล"); + + b.Property("FatherFirstName") + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasComment("ชื่อจริงบิดา"); + + b.Property("FatherLastName") + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasComment("นามสกุลบิดา"); + + b.Property("FatherNationality") + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasComment("สัญชาติบิดา"); + + b.Property("FatherOccupation") + .HasMaxLength(200) + .HasColumnType("varchar(200)") + .HasComment("อาชีพบิดา"); + + b.Property("FatherPrefixId") + .HasColumnType("char(36)"); + + b.Property("FirstName") + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasColumnOrder(1) + .HasComment("ชื่อจริง"); + + b.Property("Knowledge") + .HasColumnType("longtext") + .HasComment("ความสามารถพิเศษ"); + + b.Property("LastName") + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasColumnOrder(2) + .HasComment("นามสกุล"); + + b.Property("LastUpdateFullName") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)") + .HasColumnOrder(105) + .HasComment("ชื่อ User ที่แก้ไขข้อมูลล่าสุด"); + + b.Property("LastUpdateUserId") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnOrder(103) + .HasComment("User Id ที่แก้ไขข้อมูลล่าสุด"); + + b.Property("LastUpdatedAt") + .HasColumnType("datetime(6)") + .HasColumnOrder(102) + .HasComment("แก้ไขข้อมูลล่าสุดเมื่อ"); + + b.Property("Marry") + .HasColumnType("tinyint(1)") + .HasComment("คู่สมรส"); + + b.Property("MarryFirstName") + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasComment("ชื่อจริงคู่สมรส"); + + b.Property("MarryLastName") + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasComment("นามสกุลคู่สมรส"); + + b.Property("MarryNationality") + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasComment("สัญชาติคู่สมรส"); + + b.Property("MarryOccupation") + .HasMaxLength(200) + .HasColumnType("varchar(200)") + .HasComment("อาชีพคู่สมรส"); + + b.Property("MarryPrefixId") + .HasColumnType("char(36)"); + + b.Property("MobilePhone") + .HasMaxLength(20) + .HasColumnType("varchar(20)") + .HasComment("โทรศัพท์มือถือ"); + + b.Property("MotherFirstName") + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasComment("ชื่อจริงมารดา"); + + b.Property("MotherLastName") + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasComment("นามสกุลมารดา"); + + b.Property("MotherNationality") + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasComment("สัญชาติมารดา"); + + b.Property("MotherOccupation") + .HasMaxLength(200) + .HasColumnType("varchar(200)") + .HasComment("อาชีพมารดา"); + + b.Property("MotherPrefixId") + .HasColumnType("char(36)"); + + b.Property("Nationality") + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnOrder(3) + .HasComment("สัญชาติ"); + + b.Property("OccupationCompany") + .HasColumnType("longtext") + .HasComment("สำนัก/บริษัท บริษัท"); + + b.Property("OccupationDepartment") + .HasColumnType("longtext") + .HasComment("กอง/ฝ่าย บริษัท"); + + b.Property("OccupationEmail") + .HasMaxLength(200) + .HasColumnType("varchar(200)") + .HasComment("อีเมล บริษัท"); + + b.Property("OccupationPosition") + .HasColumnType("longtext") + .HasComment("ตำแหน่งอาชีพ"); + + b.Property("OccupationTelephone") + .HasMaxLength(20) + .HasColumnType("varchar(20)") + .HasComment("โทรศัพท์ บริษัท"); + + b.Property("OccupationType") + .HasColumnType("longtext") + .HasComment("ประเภทอาชีพที่ทำงานมาก่อน"); + + b.Property("PaymentImgId") + .HasColumnType("char(36)"); + + b.Property("PeriodExamId") + .HasColumnType("char(36)"); + + b.Property("PrefixId") + .HasColumnType("char(36)"); + + b.Property("ProfileImgId") + .HasColumnType("char(36)"); + + b.Property("RegistAddress") + .HasColumnType("longtext") + .HasComment("ที่อยู่ตามทะเบียนบ้าน"); + + b.Property("RegistDistrictId") + .HasColumnType("char(36)"); + + b.Property("RegistProvinceId") + .HasColumnType("char(36)"); + + b.Property("RegistSame") + .HasColumnType("tinyint(1)") + .HasComment("ที่อยู่ปัจจุบันเหมือนที่อยู่ตามทะเบียนบ้าน"); + + b.Property("RegistSubDistrictId") + .HasColumnType("char(36)"); + + b.Property("RegistZipCode") + .HasMaxLength(10) + .HasColumnType("varchar(10)") + .HasComment("รหัสไปรษณีย์ที่อยู่ตามทะเบียนบ้าน"); + + b.Property("RejectDetail") + .HasColumnType("longtext") + .HasComment("เหตุผลการไม่อนุมัติ"); + + b.Property("RelationshipId") + .HasColumnType("char(36)"); + + b.Property("SeatNumber") + .HasColumnType("longtext") + .HasComment("เลขที่นั่งสอบ"); + + b.Property("Status") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20)") + .HasComment("สถานะผู้สมัคร"); + + b.Property("Telephone") + .HasMaxLength(20) + .HasColumnType("varchar(20)") + .HasComment("โทรศัพท์"); + + b.Property("UserId") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasComment("User Id ผู้สมัคร"); + + b.HasKey("Id"); + + b.HasIndex("CitizenDistrictId"); + + b.HasIndex("CitizenProvinceId"); + + b.HasIndex("CurrentDistrictId"); + + b.HasIndex("CurrentProvinceId"); + + b.HasIndex("CurrentSubDistrictId"); + + b.HasIndex("FatherPrefixId"); + + b.HasIndex("MarryPrefixId"); + + b.HasIndex("MotherPrefixId"); + + b.HasIndex("PaymentImgId"); + + b.HasIndex("PeriodExamId"); + + b.HasIndex("PrefixId"); + + b.HasIndex("ProfileImgId"); + + b.HasIndex("RegistDistrictId"); + + b.HasIndex("RegistProvinceId"); + + b.HasIndex("RegistSubDistrictId"); + + b.HasIndex("RelationshipId"); + + b.ToTable("Candidates"); + }); + + modelBuilder.Entity("BMA.EHR.Recurit.Exam.Service.Models.CandidateDocument", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)") + .HasColumnOrder(0) + .HasComment("PrimaryKey") + .HasAnnotation("Relational:JsonPropertyName", "id"); + + b.Property("CandidateId") + .HasColumnType("char(36)"); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)") + .HasColumnOrder(100) + .HasComment("สร้างข้อมูลเมื่อ"); + + b.Property("CreatedFullName") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)") + .HasColumnOrder(104) + .HasComment("ชื่อ User ที่สร้างข้อมูล"); + + b.Property("CreatedUserId") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnOrder(101) + .HasComment("User Id ที่สร้างข้อมูล"); + + b.Property("DocumentId") + .HasColumnType("char(36)"); + + b.Property("LastUpdateFullName") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)") + .HasColumnOrder(105) + .HasComment("ชื่อ User ที่แก้ไขข้อมูลล่าสุด"); + + b.Property("LastUpdateUserId") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnOrder(103) + .HasComment("User Id ที่แก้ไขข้อมูลล่าสุด"); + + b.Property("LastUpdatedAt") + .HasColumnType("datetime(6)") + .HasColumnOrder(102) + .HasComment("แก้ไขข้อมูลล่าสุดเมื่อ"); + + b.HasKey("Id"); + + b.HasIndex("CandidateId"); + + b.HasIndex("DocumentId"); + + b.ToTable("CandidateDocuments"); + }); + + modelBuilder.Entity("BMA.EHR.Recurit.Exam.Service.Models.Career", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)") + .HasColumnOrder(0) + .HasComment("PrimaryKey") + .HasAnnotation("Relational:JsonPropertyName", "id"); + + b.Property("CandidateId") + .HasColumnType("char(36)"); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)") + .HasColumnOrder(100) + .HasComment("สร้างข้อมูลเมื่อ"); + + b.Property("CreatedFullName") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)") + .HasColumnOrder(104) + .HasComment("ชื่อ User ที่สร้างข้อมูล"); + + b.Property("CreatedUserId") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnOrder(101) + .HasComment("User Id ที่สร้างข้อมูล"); + + b.Property("DurationEnd") + .HasColumnType("datetime(6)") + .HasColumnOrder(2) + .HasComment("ระยะเวลาสิ้นสุด"); + + b.Property("DurationStart") + .HasColumnType("datetime(6)") + .HasColumnOrder(1) + .HasComment("ระยะเวลาเริ่ม"); + + b.Property("LastUpdateFullName") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)") + .HasColumnOrder(105) + .HasComment("ชื่อ User ที่แก้ไขข้อมูลล่าสุด"); + + b.Property("LastUpdateUserId") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnOrder(103) + .HasComment("User Id ที่แก้ไขข้อมูลล่าสุด"); + + b.Property("LastUpdatedAt") + .HasColumnType("datetime(6)") + .HasColumnOrder(102) + .HasComment("แก้ไขข้อมูลล่าสุดเมื่อ"); + + b.Property("Name") + .IsRequired() + .HasColumnType("longtext") + .HasColumnOrder(3) + .HasComment("สถานที่ทำงาน/ฝึกงาน"); + + b.Property("Position") + .IsRequired() + .HasColumnType("longtext") + .HasColumnOrder(4) + .HasComment("ตำแหน่ง/ลักษณะงาน"); + + b.Property("Reason") + .IsRequired() + .HasColumnType("longtext") + .HasColumnOrder(6) + .HasComment("เหตุผลที่ออก"); + + b.Property("Salary") + .HasMaxLength(20) + .HasColumnType("int") + .HasColumnOrder(5) + .HasComment("เงินเดือนสุดท้ายก่อนออก"); + + b.HasKey("Id"); + + b.HasIndex("CandidateId"); + + b.ToTable("Careers"); + }); + + modelBuilder.Entity("BMA.EHR.Recurit.Exam.Service.Models.District", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)") + .HasColumnOrder(0) + .HasComment("PrimaryKey") + .HasAnnotation("Relational:JsonPropertyName", "id"); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)") + .HasColumnOrder(100) + .HasComment("สร้างข้อมูลเมื่อ"); + + b.Property("CreatedFullName") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)") + .HasColumnOrder(104) + .HasComment("ชื่อ User ที่สร้างข้อมูล"); + + b.Property("CreatedUserId") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnOrder(101) + .HasComment("User Id ที่สร้างข้อมูล"); + + b.Property("IsActive") + .HasColumnType("tinyint(1)") + .HasColumnOrder(2) + .HasComment("สถานะการใช้งาน"); + + b.Property("LastUpdateFullName") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)") + .HasColumnOrder(105) + .HasComment("ชื่อ User ที่แก้ไขข้อมูลล่าสุด"); + + b.Property("LastUpdateUserId") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnOrder(103) + .HasComment("User Id ที่แก้ไขข้อมูลล่าสุด"); + + b.Property("LastUpdatedAt") + .HasColumnType("datetime(6)") + .HasColumnOrder(102) + .HasComment("แก้ไขข้อมูลล่าสุดเมื่อ"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("varchar(150)") + .HasColumnOrder(1) + .HasComment("เขต/อำเภอ"); + + b.Property("ProvinceId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("ProvinceId"); + + b.ToTable("Districts"); + }); + + modelBuilder.Entity("BMA.EHR.Recurit.Exam.Service.Models.Documents.Document", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Detail") + .IsRequired() + .HasColumnType("text"); + + b.Property("FileName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)"); + + b.Property("FileSize") + .HasColumnType("int"); + + b.Property("FileType") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("varchar(128)"); + + b.Property("ObjectRefId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.ToTable("Documents"); + }); + + modelBuilder.Entity("BMA.EHR.Recurit.Exam.Service.Models.Education", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)") + .HasColumnOrder(0) + .HasComment("PrimaryKey") + .HasAnnotation("Relational:JsonPropertyName", "id"); + + b.Property("CandidateId") + .HasColumnType("char(36)"); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)") + .HasColumnOrder(100) + .HasComment("สร้างข้อมูลเมื่อ"); + + b.Property("CreatedFullName") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)") + .HasColumnOrder(104) + .HasComment("ชื่อ User ที่สร้างข้อมูล"); + + b.Property("CreatedUserId") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnOrder(101) + .HasComment("User Id ที่สร้างข้อมูล"); + + b.Property("DurationEnd") + .HasColumnType("datetime(6)") + .HasColumnOrder(2) + .HasComment("ระยะเวลาสิ้นสุด"); + + b.Property("DurationStart") + .HasColumnType("datetime(6)") + .HasColumnOrder(1) + .HasComment("ระยะเวลาเริ่ม"); + + b.Property("EducationLevelId") + .HasColumnType("char(36)"); + + b.Property("LastUpdateFullName") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)") + .HasColumnOrder(105) + .HasComment("ชื่อ User ที่แก้ไขข้อมูลล่าสุด"); + + b.Property("LastUpdateUserId") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnOrder(103) + .HasComment("User Id ที่แก้ไขข้อมูลล่าสุด"); + + b.Property("LastUpdatedAt") + .HasColumnType("datetime(6)") + .HasColumnOrder(102) + .HasComment("แก้ไขข้อมูลล่าสุดเมื่อ"); + + b.Property("Major") + .IsRequired() + .HasColumnType("longtext") + .HasColumnOrder(4) + .HasComment("สาขาวิชา/วิชาเอก"); + + b.Property("Name") + .IsRequired() + .HasColumnType("longtext") + .HasColumnOrder(3) + .HasComment("ชื่อสถานศึกษา"); + + b.Property("Scores") + .HasMaxLength(10) + .HasColumnType("float") + .HasColumnOrder(6) + .HasComment("คะแนนเฉลี่ยตลอดหลักสูตร"); + + b.HasKey("Id"); + + b.HasIndex("CandidateId"); + + b.HasIndex("EducationLevelId"); + + b.ToTable("Educations"); + }); + + modelBuilder.Entity("BMA.EHR.Recurit.Exam.Service.Models.EducationLevel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)") + .HasColumnOrder(0) + .HasComment("PrimaryKey") + .HasAnnotation("Relational:JsonPropertyName", "id"); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)") + .HasColumnOrder(100) + .HasComment("สร้างข้อมูลเมื่อ"); + + b.Property("CreatedFullName") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)") + .HasColumnOrder(104) + .HasComment("ชื่อ User ที่สร้างข้อมูล"); + + b.Property("CreatedUserId") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnOrder(101) + .HasComment("User Id ที่สร้างข้อมูล"); + + b.Property("IsActive") + .HasColumnType("tinyint(1)") + .HasColumnOrder(2) + .HasComment("สถานะการใช้งาน"); + + b.Property("LastUpdateFullName") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)") + .HasColumnOrder(105) + .HasComment("ชื่อ User ที่แก้ไขข้อมูลล่าสุด"); + + b.Property("LastUpdateUserId") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnOrder(103) + .HasComment("User Id ที่แก้ไขข้อมูลล่าสุด"); + + b.Property("LastUpdatedAt") + .HasColumnType("datetime(6)") + .HasColumnOrder(102) + .HasComment("แก้ไขข้อมูลล่าสุดเมื่อ"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasColumnOrder(1) + .HasComment("ระดับการศึกษา"); + + b.HasKey("Id"); + + b.ToTable("EducationLevels"); + }); + + modelBuilder.Entity("BMA.EHR.Recurit.Exam.Service.Models.PeriodExam", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)") + .HasColumnOrder(0) + .HasComment("PrimaryKey") + .HasAnnotation("Relational:JsonPropertyName", "id"); + + b.Property("AnnouncementEndDate") + .HasColumnType("datetime(6)") + .HasColumnOrder(6) + .HasComment("วันสิ้นสุดประกาศ"); + + b.Property("AnnouncementStartDate") + .HasColumnType("datetime(6)") + .HasColumnOrder(5) + .HasComment("วันเริ่มประกาศ"); + + b.Property("CheckDisability") + .HasColumnType("tinyint(1)") + .HasComment("คนพิการ"); + + b.Property("CheckDocument") + .HasColumnType("tinyint(1)") + .HasComment("ตรวจสอบเอกสารหลังประกาศผลสอบ"); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)") + .HasColumnOrder(100) + .HasComment("สร้างข้อมูลเมื่อ"); + + b.Property("CreatedFullName") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)") + .HasColumnOrder(104) + .HasComment("ชื่อ User ที่สร้างข้อมูล"); + + b.Property("CreatedUserId") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnOrder(101) + .HasComment("User Id ที่สร้างข้อมูล"); + + b.Property("Detail") + .HasColumnType("longtext") + .HasComment("รายละเอียดสมัครสอบ"); + + b.Property("Fee") + .HasColumnType("float") + .HasComment("ค่าธรรมเนียม"); + + b.Property("IsActive") + .HasColumnType("tinyint(1)") + .HasComment("สถานะการใช้งาน"); + + b.Property("LastUpdateFullName") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)") + .HasColumnOrder(105) + .HasComment("ชื่อ User ที่แก้ไขข้อมูลล่าสุด"); + + b.Property("LastUpdateUserId") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnOrder(103) + .HasComment("User Id ที่แก้ไขข้อมูลล่าสุด"); + + b.Property("LastUpdatedAt") + .HasColumnType("datetime(6)") + .HasColumnOrder(102) + .HasComment("แก้ไขข้อมูลล่าสุดเมื่อ"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("varchar(150)") + .HasColumnOrder(7) + .HasComment("ชื่อการสอบ"); + + b.Property("Note") + .HasColumnType("longtext") + .HasComment("หมายเหตุ"); + + b.Property("OrganizationCodeId") + .HasColumnType("char(36)") + .HasComment("Id รหัสส่วนราชการ"); + + b.Property("OrganizationCodeName") + .HasColumnType("longtext") + .HasComment("ชื่อรหัสส่วนราชการ"); + + b.Property("OrganizationId") + .HasColumnType("char(36)") + .HasComment("Id หน่วยงาน"); + + b.Property("OrganizationName") + .HasColumnType("longtext") + .HasComment("ชื่อหน่วยงาน"); + + b.Property("PaymentEndDate") + .HasColumnType("datetime(6)") + .HasColumnOrder(4) + .HasComment("วันสิ้นสุดชำระเงิน"); + + b.Property("PaymentKrungThai") + .HasColumnType("longtext") + .HasComment("ชำระเงินผ่านกรุงไทย"); + + b.Property("PaymentStartDate") + .HasColumnType("datetime(6)") + .HasColumnOrder(3) + .HasComment("วันเริ่มชำระเงิน"); + + b.Property("RegisterEndDate") + .HasColumnType("datetime(6)") + .HasColumnOrder(2) + .HasComment("วันสิ้นสุดสมัครสอบ"); + + b.Property("RegisterStartDate") + .HasColumnType("datetime(6)") + .HasColumnOrder(1) + .HasComment("วันเริ่มสมัครสอบ"); + + b.Property("Round") + .HasColumnType("int") + .HasColumnOrder(8) + .HasComment("รอบการสอบ"); + + b.Property("Year") + .HasColumnType("int") + .HasComment("ปีงบประมาณ"); + + b.HasKey("Id"); + + b.ToTable("PeriodExams"); + }); + + modelBuilder.Entity("BMA.EHR.Recurit.Exam.Service.Models.PositionExam", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)") + .HasColumnOrder(0) + .HasComment("PrimaryKey") + .HasAnnotation("Relational:JsonPropertyName", "id"); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)") + .HasColumnOrder(100) + .HasComment("สร้างข้อมูลเมื่อ"); + + b.Property("CreatedFullName") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)") + .HasColumnOrder(104) + .HasComment("ชื่อ User ที่สร้างข้อมูล"); + + b.Property("CreatedUserId") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnOrder(101) + .HasComment("User Id ที่สร้างข้อมูล"); + + b.Property("LastUpdateFullName") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)") + .HasColumnOrder(105) + .HasComment("ชื่อ User ที่แก้ไขข้อมูลล่าสุด"); + + b.Property("LastUpdateUserId") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnOrder(103) + .HasComment("User Id ที่แก้ไขข้อมูลล่าสุด"); + + b.Property("LastUpdatedAt") + .HasColumnType("datetime(6)") + .HasColumnOrder(102) + .HasComment("แก้ไขข้อมูลล่าสุดเมื่อ"); + + b.Property("PeriodExamId") + .HasColumnType("char(36)"); + + b.Property("PositionId") + .HasColumnType("char(36)") + .HasComment("Id ตำแหน่ง"); + + b.Property("PositionName") + .HasColumnType("longtext") + .HasComment("ชื่อตำแหน่ง"); + + b.Property("TypeName") + .HasColumnType("longtext") + .HasComment("ชื่อประเภทแบบฟอร์ม"); + + b.HasKey("Id"); + + b.HasIndex("PeriodExamId"); + + b.ToTable("PositionExams"); + }); + + modelBuilder.Entity("BMA.EHR.Recurit.Exam.Service.Models.Prefix", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)") + .HasColumnOrder(0) + .HasComment("PrimaryKey") + .HasAnnotation("Relational:JsonPropertyName", "id"); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)") + .HasColumnOrder(100) + .HasComment("สร้างข้อมูลเมื่อ"); + + b.Property("CreatedFullName") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)") + .HasColumnOrder(104) + .HasComment("ชื่อ User ที่สร้างข้อมูล"); + + b.Property("CreatedUserId") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnOrder(101) + .HasComment("User Id ที่สร้างข้อมูล"); + + b.Property("IsActive") + .HasColumnType("tinyint(1)") + .HasColumnOrder(3) + .HasComment("สถานะการใช้งาน"); + + b.Property("LastUpdateFullName") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)") + .HasColumnOrder(105) + .HasComment("ชื่อ User ที่แก้ไขข้อมูลล่าสุด"); + + b.Property("LastUpdateUserId") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnOrder(103) + .HasComment("User Id ที่แก้ไขข้อมูลล่าสุด"); + + b.Property("LastUpdatedAt") + .HasColumnType("datetime(6)") + .HasColumnOrder(102) + .HasComment("แก้ไขข้อมูลล่าสุดเมื่อ"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasColumnOrder(2) + .HasComment("รายละเอียดคำนำหน้า"); + + b.HasKey("Id"); + + b.ToTable("Prefixes"); + }); + + modelBuilder.Entity("BMA.EHR.Recurit.Exam.Service.Models.Province", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)") + .HasColumnOrder(0) + .HasComment("PrimaryKey") + .HasAnnotation("Relational:JsonPropertyName", "id"); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)") + .HasColumnOrder(100) + .HasComment("สร้างข้อมูลเมื่อ"); + + b.Property("CreatedFullName") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)") + .HasColumnOrder(104) + .HasComment("ชื่อ User ที่สร้างข้อมูล"); + + b.Property("CreatedUserId") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnOrder(101) + .HasComment("User Id ที่สร้างข้อมูล"); + + b.Property("IsActive") + .HasColumnType("tinyint(1)") + .HasColumnOrder(2) + .HasComment("สถานะการใช้งาน"); + + b.Property("LastUpdateFullName") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)") + .HasColumnOrder(105) + .HasComment("ชื่อ User ที่แก้ไขข้อมูลล่าสุด"); + + b.Property("LastUpdateUserId") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnOrder(103) + .HasComment("User Id ที่แก้ไขข้อมูลล่าสุด"); + + b.Property("LastUpdatedAt") + .HasColumnType("datetime(6)") + .HasColumnOrder(102) + .HasComment("แก้ไขข้อมูลล่าสุดเมื่อ"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("varchar(150)") + .HasColumnOrder(1) + .HasComment("จังหวัด"); + + b.HasKey("Id"); + + b.ToTable("Provinces"); + }); + + modelBuilder.Entity("BMA.EHR.Recurit.Exam.Service.Models.Relationship", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)") + .HasColumnOrder(0) + .HasComment("PrimaryKey") + .HasAnnotation("Relational:JsonPropertyName", "id"); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)") + .HasColumnOrder(100) + .HasComment("สร้างข้อมูลเมื่อ"); + + b.Property("CreatedFullName") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)") + .HasColumnOrder(104) + .HasComment("ชื่อ User ที่สร้างข้อมูล"); + + b.Property("CreatedUserId") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnOrder(101) + .HasComment("User Id ที่สร้างข้อมูล"); + + b.Property("IsActive") + .HasColumnType("tinyint(1)") + .HasColumnOrder(2) + .HasComment("สถานะการใช้งาน"); + + b.Property("LastUpdateFullName") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)") + .HasColumnOrder(105) + .HasComment("ชื่อ User ที่แก้ไขข้อมูลล่าสุด"); + + b.Property("LastUpdateUserId") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnOrder(103) + .HasComment("User Id ที่แก้ไขข้อมูลล่าสุด"); + + b.Property("LastUpdatedAt") + .HasColumnType("datetime(6)") + .HasColumnOrder(102) + .HasComment("แก้ไขข้อมูลล่าสุดเมื่อ"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasColumnOrder(1) + .HasComment("ชื่อความสัมพันธ์"); + + b.HasKey("Id"); + + b.ToTable("Relationships"); + }); + + modelBuilder.Entity("BMA.EHR.Recurit.Exam.Service.Models.Religion", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)") + .HasColumnOrder(0) + .HasComment("PrimaryKey") + .HasAnnotation("Relational:JsonPropertyName", "id"); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)") + .HasColumnOrder(100) + .HasComment("สร้างข้อมูลเมื่อ"); + + b.Property("CreatedFullName") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)") + .HasColumnOrder(104) + .HasComment("ชื่อ User ที่สร้างข้อมูล"); + + b.Property("CreatedUserId") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnOrder(101) + .HasComment("User Id ที่สร้างข้อมูล"); + + b.Property("IsActive") + .HasColumnType("tinyint(1)") + .HasColumnOrder(2) + .HasComment("สถานะการใช้งาน"); + + b.Property("LastUpdateFullName") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)") + .HasColumnOrder(105) + .HasComment("ชื่อ User ที่แก้ไขข้อมูลล่าสุด"); + + b.Property("LastUpdateUserId") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnOrder(103) + .HasComment("User Id ที่แก้ไขข้อมูลล่าสุด"); + + b.Property("LastUpdatedAt") + .HasColumnType("datetime(6)") + .HasColumnOrder(102) + .HasComment("แก้ไขข้อมูลล่าสุดเมื่อ"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasColumnOrder(1) + .HasComment("ศาสนา"); + + b.HasKey("Id"); + + b.ToTable("Religions"); + }); + + modelBuilder.Entity("BMA.EHR.Recurit.Exam.Service.Models.SubDistrict", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)") + .HasColumnOrder(0) + .HasComment("PrimaryKey") + .HasAnnotation("Relational:JsonPropertyName", "id"); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)") + .HasColumnOrder(100) + .HasComment("สร้างข้อมูลเมื่อ"); + + b.Property("CreatedFullName") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)") + .HasColumnOrder(104) + .HasComment("ชื่อ User ที่สร้างข้อมูล"); + + b.Property("CreatedUserId") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnOrder(101) + .HasComment("User Id ที่สร้างข้อมูล"); + + b.Property("DistrictId") + .HasColumnType("char(36)"); + + b.Property("IsActive") + .HasColumnType("tinyint(1)") + .HasColumnOrder(3) + .HasComment("สถานะการใช้งาน"); + + b.Property("LastUpdateFullName") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)") + .HasColumnOrder(105) + .HasComment("ชื่อ User ที่แก้ไขข้อมูลล่าสุด"); + + b.Property("LastUpdateUserId") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnOrder(103) + .HasComment("User Id ที่แก้ไขข้อมูลล่าสุด"); + + b.Property("LastUpdatedAt") + .HasColumnType("datetime(6)") + .HasColumnOrder(102) + .HasComment("แก้ไขข้อมูลล่าสุดเมื่อ"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("varchar(150)") + .HasColumnOrder(1) + .HasComment("เขต/อำเภอ"); + + b.Property("ZipCode") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("varchar(10)") + .HasColumnOrder(2) + .HasComment("รหัสไปรษณีย์"); + + b.HasKey("Id"); + + b.HasIndex("DistrictId"); + + b.ToTable("SubDistricts"); + }); + + modelBuilder.Entity("BMA.EHR.Recurit.Exam.Service.Models.BankExam", b => + { + b.HasOne("BMA.EHR.Recurit.Exam.Service.Models.PeriodExam", "PeriodExam") + .WithMany() + .HasForeignKey("PeriodExamId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PeriodExam"); + }); + + modelBuilder.Entity("BMA.EHR.Recurit.Exam.Service.Models.Candidate", b => + { + b.HasOne("BMA.EHR.Recurit.Exam.Service.Models.District", "CitizenDistrict") + .WithMany() + .HasForeignKey("CitizenDistrictId"); + + b.HasOne("BMA.EHR.Recurit.Exam.Service.Models.Province", "CitizenProvince") + .WithMany() + .HasForeignKey("CitizenProvinceId"); + + b.HasOne("BMA.EHR.Recurit.Exam.Service.Models.District", "CurrentDistrict") + .WithMany() + .HasForeignKey("CurrentDistrictId"); + + b.HasOne("BMA.EHR.Recurit.Exam.Service.Models.Province", "CurrentProvince") + .WithMany() + .HasForeignKey("CurrentProvinceId"); + + b.HasOne("BMA.EHR.Recurit.Exam.Service.Models.SubDistrict", "CurrentSubDistrict") + .WithMany() + .HasForeignKey("CurrentSubDistrictId"); + + b.HasOne("BMA.EHR.Recurit.Exam.Service.Models.Prefix", "FatherPrefix") + .WithMany() + .HasForeignKey("FatherPrefixId"); + + b.HasOne("BMA.EHR.Recurit.Exam.Service.Models.Prefix", "MarryPrefix") + .WithMany() + .HasForeignKey("MarryPrefixId"); + + b.HasOne("BMA.EHR.Recurit.Exam.Service.Models.Prefix", "MotherPrefix") + .WithMany() + .HasForeignKey("MotherPrefixId"); + + b.HasOne("BMA.EHR.Recurit.Exam.Service.Models.Documents.Document", "PaymentImg") + .WithMany() + .HasForeignKey("PaymentImgId"); + + b.HasOne("BMA.EHR.Recurit.Exam.Service.Models.PeriodExam", "PeriodExam") + .WithMany() + .HasForeignKey("PeriodExamId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BMA.EHR.Recurit.Exam.Service.Models.Prefix", "Prefix") + .WithMany() + .HasForeignKey("PrefixId"); + + b.HasOne("BMA.EHR.Recurit.Exam.Service.Models.Documents.Document", "ProfileImg") + .WithMany() + .HasForeignKey("ProfileImgId"); + + b.HasOne("BMA.EHR.Recurit.Exam.Service.Models.District", "RegistDistrict") + .WithMany() + .HasForeignKey("RegistDistrictId"); + + b.HasOne("BMA.EHR.Recurit.Exam.Service.Models.Province", "RegistProvince") + .WithMany() + .HasForeignKey("RegistProvinceId"); + + b.HasOne("BMA.EHR.Recurit.Exam.Service.Models.SubDistrict", "RegistSubDistrict") + .WithMany() + .HasForeignKey("RegistSubDistrictId"); + + b.HasOne("BMA.EHR.Recurit.Exam.Service.Models.Relationship", "Relationship") + .WithMany() + .HasForeignKey("RelationshipId"); + + b.Navigation("CitizenDistrict"); + + b.Navigation("CitizenProvince"); + + b.Navigation("CurrentDistrict"); + + b.Navigation("CurrentProvince"); + + b.Navigation("CurrentSubDistrict"); + + b.Navigation("FatherPrefix"); + + b.Navigation("MarryPrefix"); + + b.Navigation("MotherPrefix"); + + b.Navigation("PaymentImg"); + + b.Navigation("PeriodExam"); + + b.Navigation("Prefix"); + + b.Navigation("ProfileImg"); + + b.Navigation("RegistDistrict"); + + b.Navigation("RegistProvince"); + + b.Navigation("RegistSubDistrict"); + + b.Navigation("Relationship"); + }); + + modelBuilder.Entity("BMA.EHR.Recurit.Exam.Service.Models.CandidateDocument", b => + { + b.HasOne("BMA.EHR.Recurit.Exam.Service.Models.Candidate", "Candidate") + .WithMany() + .HasForeignKey("CandidateId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BMA.EHR.Recurit.Exam.Service.Models.Documents.Document", "Document") + .WithMany() + .HasForeignKey("DocumentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Candidate"); + + b.Navigation("Document"); + }); + + modelBuilder.Entity("BMA.EHR.Recurit.Exam.Service.Models.Career", b => + { + b.HasOne("BMA.EHR.Recurit.Exam.Service.Models.Candidate", "Candidate") + .WithMany() + .HasForeignKey("CandidateId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Candidate"); + }); + + modelBuilder.Entity("BMA.EHR.Recurit.Exam.Service.Models.District", b => + { + b.HasOne("BMA.EHR.Recurit.Exam.Service.Models.Province", "Province") + .WithMany("Districts") + .HasForeignKey("ProvinceId"); + + b.Navigation("Province"); + }); + + modelBuilder.Entity("BMA.EHR.Recurit.Exam.Service.Models.Education", b => + { + b.HasOne("BMA.EHR.Recurit.Exam.Service.Models.Candidate", "Candidate") + .WithMany() + .HasForeignKey("CandidateId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BMA.EHR.Recurit.Exam.Service.Models.EducationLevel", "EducationLevel") + .WithMany() + .HasForeignKey("EducationLevelId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Candidate"); + + b.Navigation("EducationLevel"); + }); + + modelBuilder.Entity("BMA.EHR.Recurit.Exam.Service.Models.PositionExam", b => + { + b.HasOne("BMA.EHR.Recurit.Exam.Service.Models.PeriodExam", "PeriodExam") + .WithMany() + .HasForeignKey("PeriodExamId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PeriodExam"); + }); + + modelBuilder.Entity("BMA.EHR.Recurit.Exam.Service.Models.SubDistrict", b => + { + b.HasOne("BMA.EHR.Recurit.Exam.Service.Models.District", "District") + .WithMany("SubDistricts") + .HasForeignKey("DistrictId"); + + b.Navigation("District"); + }); + + modelBuilder.Entity("BMA.EHR.Recurit.Exam.Service.Models.District", b => + { + b.Navigation("SubDistricts"); + }); + + modelBuilder.Entity("BMA.EHR.Recurit.Exam.Service.Models.Province", b => + { + b.Navigation("Districts"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Migrations/20230404134139_Update table Candidate add bank.cs b/Migrations/20230404134139_Update table Candidate add bank.cs new file mode 100644 index 0000000..708965d --- /dev/null +++ b/Migrations/20230404134139_Update table Candidate add bank.cs @@ -0,0 +1,359 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace BMA.EHR.Recurit.Exam.Service.Migrations +{ + /// + public partial class UpdatetableCandidateaddbank : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "AnnounceDate", + table: "PeriodExams"); + + migrationBuilder.DropColumn( + name: "EndDate", + table: "PeriodExams"); + + migrationBuilder.RenameColumn( + name: "StartDate", + table: "PeriodExams", + newName: "RegisterStartDate"); + + migrationBuilder.AlterColumn( + name: "Round", + table: "PeriodExams", + type: "int", + nullable: true, + comment: "รอบการสอบ", + oldClrType: typeof(int), + oldType: "int", + oldNullable: true, + oldComment: "รอบการสอบ") + .Annotation("Relational:ColumnOrder", 8) + .OldAnnotation("Relational:ColumnOrder", 5); + + migrationBuilder.AlterColumn( + name: "Name", + table: "PeriodExams", + type: "varchar(150)", + maxLength: 150, + nullable: false, + comment: "ชื่อการสอบ", + oldClrType: typeof(string), + oldType: "varchar(150)", + oldMaxLength: 150, + oldComment: "ชื่อการสอบ") + .Annotation("MySql:CharSet", "utf8mb4") + .Annotation("Relational:ColumnOrder", 7) + .OldAnnotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("Relational:ColumnOrder", 4); + + migrationBuilder.AddColumn( + name: "AnnouncementEndDate", + table: "PeriodExams", + type: "datetime(6)", + nullable: false, + defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + comment: "วันสิ้นสุดประกาศ") + .Annotation("Relational:ColumnOrder", 6); + + migrationBuilder.AddColumn( + name: "AnnouncementStartDate", + table: "PeriodExams", + type: "datetime(6)", + nullable: false, + defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + comment: "วันเริ่มประกาศ") + .Annotation("Relational:ColumnOrder", 5); + + migrationBuilder.AddColumn( + name: "CheckDisability", + table: "PeriodExams", + type: "tinyint(1)", + nullable: false, + defaultValue: false, + comment: "คนพิการ"); + + migrationBuilder.AddColumn( + name: "CheckDocument", + table: "PeriodExams", + type: "tinyint(1)", + nullable: false, + defaultValue: false, + comment: "ตรวจสอบเอกสารหลังประกาศผลสอบ"); + + migrationBuilder.AddColumn( + name: "Note", + table: "PeriodExams", + type: "longtext", + nullable: true, + comment: "หมายเหตุ") + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AddColumn( + name: "OrganizationCodeId", + table: "PeriodExams", + type: "char(36)", + nullable: true, + comment: "Id รหัสส่วนราชการ", + collation: "ascii_general_ci"); + + migrationBuilder.AddColumn( + name: "OrganizationCodeName", + table: "PeriodExams", + type: "longtext", + nullable: true, + comment: "ชื่อรหัสส่วนราชการ") + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AddColumn( + name: "OrganizationId", + table: "PeriodExams", + type: "char(36)", + nullable: true, + comment: "Id หน่วยงาน", + collation: "ascii_general_ci"); + + migrationBuilder.AddColumn( + name: "OrganizationName", + table: "PeriodExams", + type: "longtext", + nullable: true, + comment: "ชื่อหน่วยงาน") + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AddColumn( + name: "PaymentEndDate", + table: "PeriodExams", + type: "datetime(6)", + nullable: false, + defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + comment: "วันสิ้นสุดชำระเงิน") + .Annotation("Relational:ColumnOrder", 4); + + migrationBuilder.AddColumn( + name: "PaymentKrungThai", + table: "PeriodExams", + type: "longtext", + nullable: true, + comment: "ชำระเงินผ่านกรุงไทย") + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AddColumn( + name: "PaymentStartDate", + table: "PeriodExams", + type: "datetime(6)", + nullable: false, + defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + comment: "วันเริ่มชำระเงิน") + .Annotation("Relational:ColumnOrder", 3); + + migrationBuilder.AddColumn( + name: "RegisterEndDate", + table: "PeriodExams", + type: "datetime(6)", + nullable: false, + defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + comment: "วันสิ้นสุดสมัครสอบ") + .Annotation("Relational:ColumnOrder", 2); + + migrationBuilder.CreateTable( + name: "BankExams", + columns: table => new + { + Id = table.Column(type: "char(36)", nullable: false, comment: "PrimaryKey", collation: "ascii_general_ci"), + CreatedAt = table.Column(type: "datetime(6)", nullable: false, comment: "สร้างข้อมูลเมื่อ"), + CreatedUserId = table.Column(type: "varchar(40)", maxLength: 40, nullable: false, comment: "User Id ที่สร้างข้อมูล") + .Annotation("MySql:CharSet", "utf8mb4"), + LastUpdatedAt = table.Column(type: "datetime(6)", nullable: true, comment: "แก้ไขข้อมูลล่าสุดเมื่อ"), + LastUpdateUserId = table.Column(type: "varchar(40)", maxLength: 40, nullable: false, comment: "User Id ที่แก้ไขข้อมูลล่าสุด") + .Annotation("MySql:CharSet", "utf8mb4"), + CreatedFullName = table.Column(type: "varchar(200)", maxLength: 200, nullable: false, comment: "ชื่อ User ที่สร้างข้อมูล") + .Annotation("MySql:CharSet", "utf8mb4"), + LastUpdateFullName = table.Column(type: "varchar(200)", maxLength: 200, nullable: false, comment: "ชื่อ User ที่แก้ไขข้อมูลล่าสุด") + .Annotation("MySql:CharSet", "utf8mb4"), + PeriodExamId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + AccountNumber = table.Column(type: "longtext", nullable: true, comment: "เลขบัญชี") + .Annotation("MySql:CharSet", "utf8mb4"), + BankName = table.Column(type: "longtext", nullable: true, comment: "ธนาคาร") + .Annotation("MySql:CharSet", "utf8mb4"), + AccountName = table.Column(type: "longtext", nullable: true, comment: "ชื่อบัญชี") + .Annotation("MySql:CharSet", "utf8mb4") + }, + constraints: table => + { + table.PrimaryKey("PK_BankExams", x => x.Id); + table.ForeignKey( + name: "FK_BankExams_PeriodExams_PeriodExamId", + column: x => x.PeriodExamId, + principalTable: "PeriodExams", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateTable( + name: "PositionExams", + columns: table => new + { + Id = table.Column(type: "char(36)", nullable: false, comment: "PrimaryKey", collation: "ascii_general_ci"), + CreatedAt = table.Column(type: "datetime(6)", nullable: false, comment: "สร้างข้อมูลเมื่อ"), + CreatedUserId = table.Column(type: "varchar(40)", maxLength: 40, nullable: false, comment: "User Id ที่สร้างข้อมูล") + .Annotation("MySql:CharSet", "utf8mb4"), + LastUpdatedAt = table.Column(type: "datetime(6)", nullable: true, comment: "แก้ไขข้อมูลล่าสุดเมื่อ"), + LastUpdateUserId = table.Column(type: "varchar(40)", maxLength: 40, nullable: false, comment: "User Id ที่แก้ไขข้อมูลล่าสุด") + .Annotation("MySql:CharSet", "utf8mb4"), + CreatedFullName = table.Column(type: "varchar(200)", maxLength: 200, nullable: false, comment: "ชื่อ User ที่สร้างข้อมูล") + .Annotation("MySql:CharSet", "utf8mb4"), + LastUpdateFullName = table.Column(type: "varchar(200)", maxLength: 200, nullable: false, comment: "ชื่อ User ที่แก้ไขข้อมูลล่าสุด") + .Annotation("MySql:CharSet", "utf8mb4"), + PeriodExamId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + PositionId = table.Column(type: "char(36)", nullable: true, comment: "Id ตำแหน่ง", collation: "ascii_general_ci"), + PositionName = table.Column(type: "longtext", nullable: true, comment: "ชื่อตำแหน่ง") + .Annotation("MySql:CharSet", "utf8mb4"), + TypeName = table.Column(type: "longtext", nullable: true, comment: "ชื่อประเภทแบบฟอร์ม") + .Annotation("MySql:CharSet", "utf8mb4") + }, + constraints: table => + { + table.PrimaryKey("PK_PositionExams", x => x.Id); + table.ForeignKey( + name: "FK_PositionExams_PeriodExams_PeriodExamId", + column: x => x.PeriodExamId, + principalTable: "PeriodExams", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateIndex( + name: "IX_BankExams_PeriodExamId", + table: "BankExams", + column: "PeriodExamId"); + + migrationBuilder.CreateIndex( + name: "IX_PositionExams_PeriodExamId", + table: "PositionExams", + column: "PeriodExamId"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "BankExams"); + + migrationBuilder.DropTable( + name: "PositionExams"); + + migrationBuilder.DropColumn( + name: "AnnouncementEndDate", + table: "PeriodExams"); + + migrationBuilder.DropColumn( + name: "AnnouncementStartDate", + table: "PeriodExams"); + + migrationBuilder.DropColumn( + name: "CheckDisability", + table: "PeriodExams"); + + migrationBuilder.DropColumn( + name: "CheckDocument", + table: "PeriodExams"); + + migrationBuilder.DropColumn( + name: "Note", + table: "PeriodExams"); + + migrationBuilder.DropColumn( + name: "OrganizationCodeId", + table: "PeriodExams"); + + migrationBuilder.DropColumn( + name: "OrganizationCodeName", + table: "PeriodExams"); + + migrationBuilder.DropColumn( + name: "OrganizationId", + table: "PeriodExams"); + + migrationBuilder.DropColumn( + name: "OrganizationName", + table: "PeriodExams"); + + migrationBuilder.DropColumn( + name: "PaymentEndDate", + table: "PeriodExams"); + + migrationBuilder.DropColumn( + name: "PaymentKrungThai", + table: "PeriodExams"); + + migrationBuilder.DropColumn( + name: "PaymentStartDate", + table: "PeriodExams"); + + migrationBuilder.DropColumn( + name: "RegisterEndDate", + table: "PeriodExams"); + + migrationBuilder.RenameColumn( + name: "RegisterStartDate", + table: "PeriodExams", + newName: "StartDate"); + + migrationBuilder.AlterColumn( + name: "Round", + table: "PeriodExams", + type: "int", + nullable: true, + comment: "รอบการสอบ", + oldClrType: typeof(int), + oldType: "int", + oldNullable: true, + oldComment: "รอบการสอบ") + .Annotation("Relational:ColumnOrder", 5) + .OldAnnotation("Relational:ColumnOrder", 8); + + migrationBuilder.AlterColumn( + name: "Name", + table: "PeriodExams", + type: "varchar(150)", + maxLength: 150, + nullable: false, + comment: "ชื่อการสอบ", + oldClrType: typeof(string), + oldType: "varchar(150)", + oldMaxLength: 150, + oldComment: "ชื่อการสอบ") + .Annotation("MySql:CharSet", "utf8mb4") + .Annotation("Relational:ColumnOrder", 4) + .OldAnnotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("Relational:ColumnOrder", 7); + + migrationBuilder.AddColumn( + name: "AnnounceDate", + table: "PeriodExams", + type: "datetime(6)", + nullable: false, + defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + comment: "วันประกาศ") + .Annotation("Relational:ColumnOrder", 3); + + migrationBuilder.AddColumn( + name: "EndDate", + table: "PeriodExams", + type: "datetime(6)", + nullable: false, + defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + comment: "วันสิ้นสุด") + .Annotation("Relational:ColumnOrder", 2); + } + } +} diff --git a/Models/BankExam.cs b/Models/BankExam.cs new file mode 100644 index 0000000..98c1c42 --- /dev/null +++ b/Models/BankExam.cs @@ -0,0 +1,22 @@ +using Microsoft.EntityFrameworkCore; +using System.ComponentModel.DataAnnotations.Schema; +using System.ComponentModel.DataAnnotations; +using BMA.EHR.Recurit.Exam.Service.Models.Documents; + +namespace BMA.EHR.Recurit.Exam.Service.Models +{ + public class BankExam : EntityBase + { + [Required, Comment("Id การสอบ")] + public virtual PeriodExam? PeriodExam { get; set; } + + [Comment("เลขบัญชี")] + public string? AccountNumber { get; set; } + + [Comment("ธนาคาร")] + public string? BankName { get; set; } + + [Comment("ชื่อบัญชี")] + public string? AccountName { get; set; } + } +} diff --git a/Models/Candidate.cs b/Models/Candidate.cs index eea7ed1..74e9f5f 100644 --- a/Models/Candidate.cs +++ b/Models/Candidate.cs @@ -10,6 +10,9 @@ namespace BMA.EHR.Recurit.Exam.Service.Models [Required, Comment("Id การสอบ")] public virtual PeriodExam? PeriodExam { get; set; } + [Comment("Id ตำแหน่งสอบ")] + public virtual PositionExam? PositionExam { get; set; } + [Required, MaxLength(40), Comment("User Id ผู้สมัคร")] public string UserId { get; set; } = string.Empty; diff --git a/Models/PeriodExam.cs b/Models/PeriodExam.cs index 094509a..4ba2e91 100644 --- a/Models/PeriodExam.cs +++ b/Models/PeriodExam.cs @@ -6,29 +6,62 @@ namespace BMA.EHR.Recurit.Exam.Service.Models { public class PeriodExam : EntityBase { - [Required, MaxLength(150), Column(Order = 4), Comment("ชื่อการสอบ")] + [Required, MaxLength(150), Column(Order = 7), Comment("ชื่อการสอบ")] public string Name { get; set; } = string.Empty; - [Required, Column(Order = 1), Comment("วันเริ่มสมัครสอบ")] - public DateTime StartDate { get; set; } = DateTime.Now.Date; + [Required, Comment("ตรวจสอบเอกสารหลังประกาศผลสอบ")] + public bool CheckDocument { get; set; } = false; - [Required, Column(Order = 2), Comment("วันสิ้นสุด")] - public DateTime EndDate { get; set; } = DateTime.Now.Date; + [Required, Comment("คนพิการ")] + public bool CheckDisability { get; set; } = false; - [Column(Order = 5), Comment("รอบการสอบ")] + [Column(Order = 8), Comment("รอบการสอบ")] public int? Round { get; set; } - [Comment("ค่าธรรมเนียม")] - public float? Fee { get; set; } = 0; - [Comment("ปีงบประมาณ")] public int? Year { get; set; } + [Comment("ค่าธรรมเนียม")] + public float? Fee { get; set; } = 0; + + [Required, Column(Order = 1), Comment("วันเริ่มสมัครสอบ")] + public DateTime RegisterStartDate { get; set; } = DateTime.Now.Date; + + [Required, Column(Order = 2), Comment("วันสิ้นสุดสมัครสอบ")] + public DateTime RegisterEndDate { get; set; } = DateTime.Now.Date; + + [Required, Column(Order = 3), Comment("วันเริ่มชำระเงิน")] + public DateTime PaymentStartDate { get; set; } = DateTime.Now.Date; + + [Required, Column(Order = 4), Comment("วันสิ้นสุดชำระเงิน")] + public DateTime PaymentEndDate { get; set; } = DateTime.Now.Date; + + [Required, Column(Order = 5), Comment("วันเริ่มประกาศ")] + public DateTime AnnouncementStartDate { get; set; } = DateTime.Now.Date; + + [Required, Column(Order = 6), Comment("วันสิ้นสุดประกาศ")] + public DateTime AnnouncementEndDate { get; set; } = DateTime.Now.Date; + + [Comment("Id รหัสส่วนราชการ")] + public Guid? OrganizationCodeId { get; set; } + + [Comment("ชื่อรหัสส่วนราชการ")] + public string? OrganizationCodeName { get; set; } + + [Comment("Id หน่วยงาน")] + public Guid? OrganizationId { get; set; } + + [Comment("ชื่อหน่วยงาน")] + public string? OrganizationName { get; set; } + + [Comment("ชำระเงินผ่านกรุงไทย")] + public string? PaymentKrungThai { get; set; } + [Comment("รายละเอียดสมัครสอบ")] public string? Detail { get; set; } - [Required, Column(Order = 3), Comment("วันประกาศ")] - public DateTime AnnounceDate { get; set; } = DateTime.Now.Date; + [Comment("หมายเหตุ")] + public string? Note { get; set; } [Comment("สถานะการใช้งาน")] public bool IsActive { get; set; } = true; diff --git a/Models/PositionExam.cs b/Models/PositionExam.cs new file mode 100644 index 0000000..7fc83b1 --- /dev/null +++ b/Models/PositionExam.cs @@ -0,0 +1,22 @@ +using Microsoft.EntityFrameworkCore; +using System.ComponentModel.DataAnnotations.Schema; +using System.ComponentModel.DataAnnotations; +using BMA.EHR.Recurit.Exam.Service.Models.Documents; + +namespace BMA.EHR.Recurit.Exam.Service.Models +{ + public class PositionExam : EntityBase + { + [Required, Comment("Id การสอบ")] + public virtual PeriodExam? PeriodExam { get; set; } + + [Comment("Id ตำแหน่ง")] + public Guid? PositionId { get; set; } + + [Comment("ชื่อตำแหน่ง")] + public string? PositionName { get; set; } + + [Comment("ชื่อประเภทแบบฟอร์ม")] + public string? TypeName { get; set; } + } +} diff --git a/Request/RequestBankExam.cs b/Request/RequestBankExam.cs new file mode 100644 index 0000000..2189c70 --- /dev/null +++ b/Request/RequestBankExam.cs @@ -0,0 +1,11 @@ +using System.Net; + +namespace BMA.EHR.Recurit.Exam.Service.Request +{ + public class RequestBankExam + { + public string? AccountNumber { get; set; } + public string? BankName { get; set; } + public string? AccountName { get; set; } + } +} diff --git a/Request/RequestPeriodExam.cs b/Request/RequestPeriodExam.cs new file mode 100644 index 0000000..057fa4d --- /dev/null +++ b/Request/RequestPeriodExam.cs @@ -0,0 +1,29 @@ +using System.Net; + +namespace BMA.EHR.Recurit.Exam.Service.Request +{ + public class RequestPeriodExam + { + public string Name { get; set; } = string.Empty; + public bool CheckDocument { get; set; } = false; + public bool CheckDisability { get; set; } = false; + public int? Round { get; set; } + public int? Year { get; set; } + public float? Fee { get; set; } = 0; + public DateTime RegisterStartDate { get; set; } = DateTime.Now.Date; + public DateTime RegisterEndDate { get; set; } = DateTime.Now.Date; + public DateTime PaymentStartDate { get; set; } = DateTime.Now.Date; + public DateTime PaymentEndDate { get; set; } = DateTime.Now.Date; + public DateTime AnnouncementStartDate { get; set; } = DateTime.Now.Date; + public DateTime AnnouncementEndDate { get; set; } = DateTime.Now.Date; + public Guid? OrganizationCodeId { get; set; } + public string? OrganizationCodeName { get; set; } + public Guid? OrganizationId { get; set; } + public string? OrganizationName { get; set; } + public string? PaymentKrungThai { get; set; } + public string? Detail { get; set; } + public string? Note { get; set; } + public List BankExam { get; set; } = new(); + public List PositionExam { get; set; } = new(); + } +} diff --git a/Request/RequestPositionExam.cs b/Request/RequestPositionExam.cs new file mode 100644 index 0000000..f7fab12 --- /dev/null +++ b/Request/RequestPositionExam.cs @@ -0,0 +1,11 @@ +using System.Net; + +namespace BMA.EHR.Recurit.Exam.Service.Request +{ + public class RequestPositionExam + { + public Guid? PositionId { get; set; } + public string? PositionName { get; set; } + public string? TypeName { get; set; } + } +} diff --git a/Request/RequestStatusRegistry.cs b/Request/RequestStatusRegistry.cs new file mode 100644 index 0000000..fe4f07d --- /dev/null +++ b/Request/RequestStatusRegistry.cs @@ -0,0 +1,13 @@ +using System.Net; +using BMA.EHR.Recurit.Exam.Service.Models; + +namespace BMA.EHR.Recurit.Exam.Service.Request +{ + public class RequestStatusRegistry + { + public bool Consend { get; set; } + public bool Poition { get; set; } + public string? Status { get; set; } + public PositionExam? PositionExam { get; set; } + } +} diff --git a/Services/CandidateService.cs b/Services/CandidateService.cs index 25a5323..b9cf11f 100644 --- a/Services/CandidateService.cs +++ b/Services/CandidateService.cs @@ -67,7 +67,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services return candidate; } - public async Task GetsAsyncInformation(string examId) + public async Task GetsAsyncInformation(string examId, string positionId) { var exam = await _context.PeriodExams.AsQueryable() .FirstOrDefaultAsync(x => x.Id == Guid.Parse(examId)); @@ -75,33 +75,69 @@ namespace BMA.EHR.Recurit.Exam.Service.Services if (exam == null) throw new Exception(GlobalMessages.ExamNotFound); - return await _context.Candidates.AsQueryable() - .Where(x => x.PeriodExam == exam && x.UserId == UserId) - .Select(x => new CandidateInformationResponseItem - { - Prefix = x.Prefix, - PrefixId = x.Prefix != null ? x.Prefix.Id.ToString() : null, - FirstName = x.FirstName, - LastName = x.LastName, - Nationality = x.Nationality, - DateOfBirth = x.DateOfBirth, - Relationship = x.Relationship, - RelationshipId = x.Relationship != null ? x.Relationship.Id.ToString() : null, - CitizenProvince = x.CitizenProvince, - CitizenProvinceId = x.CitizenProvince != null ? x.CitizenProvince.Id.ToString() : null, - CitizenDistrict = x.CitizenDistrict, - CitizenDistrictId = x.CitizenDistrict != null ? x.CitizenDistrict.Id.ToString() : null, - CitizenDate = x.CitizenDate, - Email = x.Email, - CitizenId = x.CitizenId, - Telephone = x.Telephone, - MobilePhone = x.MobilePhone, - Knowledge = x.Knowledge, - }) - .FirstOrDefaultAsync(); + if (positionId != "00000000-0000-0000-0000-000000000000") + { + var position = await _context.PositionExams.AsQueryable() + .FirstOrDefaultAsync(x => x.Id == Guid.Parse(positionId)); + + if (position == null) + throw new Exception(GlobalMessages.PositionExamNotFound); + + return await _context.Candidates.AsQueryable() + .Where(x => x.PeriodExam == exam && x.UserId == UserId && x.PositionExam == position) + .Select(x => new CandidateInformationResponseItem + { + Prefix = x.Prefix, + PrefixId = x.Prefix != null ? x.Prefix.Id.ToString() : null, + FirstName = x.FirstName, + LastName = x.LastName, + Nationality = x.Nationality, + DateOfBirth = x.DateOfBirth, + Relationship = x.Relationship, + RelationshipId = x.Relationship != null ? x.Relationship.Id.ToString() : null, + CitizenProvince = x.CitizenProvince, + CitizenProvinceId = x.CitizenProvince != null ? x.CitizenProvince.Id.ToString() : null, + CitizenDistrict = x.CitizenDistrict, + CitizenDistrictId = x.CitizenDistrict != null ? x.CitizenDistrict.Id.ToString() : null, + CitizenDate = x.CitizenDate, + Email = x.Email, + CitizenId = x.CitizenId, + Telephone = x.Telephone, + MobilePhone = x.MobilePhone, + Knowledge = x.Knowledge, + }) + .FirstOrDefaultAsync(); + } + else + { + return await _context.Candidates.AsQueryable() + .Where(x => x.PeriodExam == exam && x.UserId == UserId) + .Select(x => new CandidateInformationResponseItem + { + Prefix = x.Prefix, + PrefixId = x.Prefix != null ? x.Prefix.Id.ToString() : null, + FirstName = x.FirstName, + LastName = x.LastName, + Nationality = x.Nationality, + DateOfBirth = x.DateOfBirth, + Relationship = x.Relationship, + RelationshipId = x.Relationship != null ? x.Relationship.Id.ToString() : null, + CitizenProvince = x.CitizenProvince, + CitizenProvinceId = x.CitizenProvince != null ? x.CitizenProvince.Id.ToString() : null, + CitizenDistrict = x.CitizenDistrict, + CitizenDistrictId = x.CitizenDistrict != null ? x.CitizenDistrict.Id.ToString() : null, + CitizenDate = x.CitizenDate, + Email = x.Email, + CitizenId = x.CitizenId, + Telephone = x.Telephone, + MobilePhone = x.MobilePhone, + Knowledge = x.Knowledge, + }) + .FirstOrDefaultAsync(); + } } - public async Task GetsAsyncAddress(string examId) + public async Task GetsAsyncAddress(string examId, string positionId) { var exam = await _context.PeriodExams.AsQueryable() .FirstOrDefaultAsync(x => x.Id == Guid.Parse(examId)); @@ -109,32 +145,67 @@ namespace BMA.EHR.Recurit.Exam.Service.Services if (exam == null) throw new Exception(GlobalMessages.ExamNotFound); - return await _context.Candidates.AsQueryable() - .Where(x => x.PeriodExam == exam && x.UserId == UserId) - .Select(x => new CandidateAddressResponseItem - { - RegistAddress = x.RegistAddress, - RegistProvince = x.RegistProvince, - RegistProvinceId = x.RegistProvince != null ? x.RegistProvince.Id.ToString() : null, - RegistDistrict = x.RegistDistrict, - RegistDistrictId = x.RegistDistrict != null ? x.RegistDistrict.Id.ToString() : null, - RegistSubDistrict = x.RegistSubDistrict, - RegistSubDistrictId = x.RegistSubDistrict != null ? x.RegistSubDistrict.Id.ToString() : null, - RegistZipCode = x.RegistZipCode, - RegistSame = x.RegistSame, - CurrentAddress = x.CurrentAddress, - CurrentProvince = x.CurrentProvince, - CurrentProvinceId = x.CurrentProvince != null ? x.CurrentProvince.Id.ToString() : null, - CurrentDistrict = x.CurrentDistrict, - CurrentDistrictId = x.CurrentDistrict != null ? x.CurrentDistrict.Id.ToString() : null, - CurrentSubDistrict = x.CurrentSubDistrict, - CurrentSubDistrictId = x.CurrentSubDistrict != null ? x.CurrentSubDistrict.Id.ToString() : null, - CurrentZipCode = x.CurrentZipCode, - }) - .FirstOrDefaultAsync(); + if (positionId != "00000000-0000-0000-0000-000000000000") + { + var position = await _context.PositionExams.AsQueryable() + .FirstOrDefaultAsync(x => x.Id == Guid.Parse(positionId)); + + if (position == null) + throw new Exception(GlobalMessages.PositionExamNotFound); + + return await _context.Candidates.AsQueryable() + .Where(x => x.PeriodExam == exam && x.UserId == UserId && x.PositionExam == position) + .Select(x => new CandidateAddressResponseItem + { + RegistAddress = x.RegistAddress, + RegistProvince = x.RegistProvince, + RegistProvinceId = x.RegistProvince != null ? x.RegistProvince.Id.ToString() : null, + RegistDistrict = x.RegistDistrict, + RegistDistrictId = x.RegistDistrict != null ? x.RegistDistrict.Id.ToString() : null, + RegistSubDistrict = x.RegistSubDistrict, + RegistSubDistrictId = x.RegistSubDistrict != null ? x.RegistSubDistrict.Id.ToString() : null, + RegistZipCode = x.RegistZipCode, + RegistSame = x.RegistSame, + CurrentAddress = x.CurrentAddress, + CurrentProvince = x.CurrentProvince, + CurrentProvinceId = x.CurrentProvince != null ? x.CurrentProvince.Id.ToString() : null, + CurrentDistrict = x.CurrentDistrict, + CurrentDistrictId = x.CurrentDistrict != null ? x.CurrentDistrict.Id.ToString() : null, + CurrentSubDistrict = x.CurrentSubDistrict, + CurrentSubDistrictId = x.CurrentSubDistrict != null ? x.CurrentSubDistrict.Id.ToString() : null, + CurrentZipCode = x.CurrentZipCode, + }) + .FirstOrDefaultAsync(); + } + else + { + return await _context.Candidates.AsQueryable() + .Where(x => x.PeriodExam == exam && x.UserId == UserId) + .Select(x => new CandidateAddressResponseItem + { + RegistAddress = x.RegistAddress, + RegistProvince = x.RegistProvince, + RegistProvinceId = x.RegistProvince != null ? x.RegistProvince.Id.ToString() : null, + RegistDistrict = x.RegistDistrict, + RegistDistrictId = x.RegistDistrict != null ? x.RegistDistrict.Id.ToString() : null, + RegistSubDistrict = x.RegistSubDistrict, + RegistSubDistrictId = x.RegistSubDistrict != null ? x.RegistSubDistrict.Id.ToString() : null, + RegistZipCode = x.RegistZipCode, + RegistSame = x.RegistSame, + CurrentAddress = x.CurrentAddress, + CurrentProvince = x.CurrentProvince, + CurrentProvinceId = x.CurrentProvince != null ? x.CurrentProvince.Id.ToString() : null, + CurrentDistrict = x.CurrentDistrict, + CurrentDistrictId = x.CurrentDistrict != null ? x.CurrentDistrict.Id.ToString() : null, + CurrentSubDistrict = x.CurrentSubDistrict, + CurrentSubDistrictId = x.CurrentSubDistrict != null ? x.CurrentSubDistrict.Id.ToString() : null, + CurrentZipCode = x.CurrentZipCode, + }) + .FirstOrDefaultAsync(); + } } - public async Task GetsAsyncFamily(string examId) + public async Task GetsAsyncFamily(string examId, string positionId) { var exam = await _context.PeriodExams.AsQueryable() .FirstOrDefaultAsync(x => x.Id == Guid.Parse(examId)); @@ -142,34 +213,71 @@ namespace BMA.EHR.Recurit.Exam.Service.Services if (exam == null) throw new Exception(GlobalMessages.ExamNotFound); - return await _context.Candidates.AsQueryable() - .Where(x => x.PeriodExam == exam && x.UserId == UserId) - .Select(x => new CandidateFamilyResponseItem - { - Marry = x.Marry, - MarryPrefix = x.MarryPrefix, - MarryPrefixId = x.MarryPrefix != null ? x.MarryPrefix.Id.ToString() : null, - MarryFirstName = x.MarryFirstName, - MarryLastName = x.MarryLastName, - MarryOccupation = x.MarryOccupation, - MarryNationality = x.MarryNationality, - FatherPrefix = x.FatherPrefix, - FatherPrefixId = x.FatherPrefix != null ? x.FatherPrefix.Id.ToString() : null, - FatherFirstName = x.FatherFirstName, - FatherLastName = x.FatherLastName, - FatherOccupation = x.FatherOccupation, - FatherNationality = x.FatherNationality, - MotherPrefix = x.MotherPrefix, - MotherPrefixId = x.MotherPrefix != null ? x.MotherPrefix.Id.ToString() : null, - MotherFirstName = x.MotherFirstName, - MotherLastName = x.MotherLastName, - MotherOccupation = x.MotherOccupation, - MotherNationality = x.MotherNationality, - }) - .FirstOrDefaultAsync(); + if (positionId != "00000000-0000-0000-0000-000000000000") + { + var position = await _context.PositionExams.AsQueryable() + .FirstOrDefaultAsync(x => x.Id == Guid.Parse(positionId)); + + if (position == null) + throw new Exception(GlobalMessages.PositionExamNotFound); + + return await _context.Candidates.AsQueryable() + .Where(x => x.PeriodExam == exam && x.UserId == UserId && x.PositionExam == position) + .Select(x => new CandidateFamilyResponseItem + { + Marry = x.Marry, + MarryPrefix = x.MarryPrefix, + MarryPrefixId = x.MarryPrefix != null ? x.MarryPrefix.Id.ToString() : null, + MarryFirstName = x.MarryFirstName, + MarryLastName = x.MarryLastName, + MarryOccupation = x.MarryOccupation, + MarryNationality = x.MarryNationality, + FatherPrefix = x.FatherPrefix, + FatherPrefixId = x.FatherPrefix != null ? x.FatherPrefix.Id.ToString() : null, + FatherFirstName = x.FatherFirstName, + FatherLastName = x.FatherLastName, + FatherOccupation = x.FatherOccupation, + FatherNationality = x.FatherNationality, + MotherPrefix = x.MotherPrefix, + MotherPrefixId = x.MotherPrefix != null ? x.MotherPrefix.Id.ToString() : null, + MotherFirstName = x.MotherFirstName, + MotherLastName = x.MotherLastName, + MotherOccupation = x.MotherOccupation, + MotherNationality = x.MotherNationality, + }) + .FirstOrDefaultAsync(); + } + else + { + return await _context.Candidates.AsQueryable() + .Where(x => x.PeriodExam == exam && x.UserId == UserId) + .Select(x => new CandidateFamilyResponseItem + { + Marry = x.Marry, + MarryPrefix = x.MarryPrefix, + MarryPrefixId = x.MarryPrefix != null ? x.MarryPrefix.Id.ToString() : null, + MarryFirstName = x.MarryFirstName, + MarryLastName = x.MarryLastName, + MarryOccupation = x.MarryOccupation, + MarryNationality = x.MarryNationality, + FatherPrefix = x.FatherPrefix, + FatherPrefixId = x.FatherPrefix != null ? x.FatherPrefix.Id.ToString() : null, + FatherFirstName = x.FatherFirstName, + FatherLastName = x.FatherLastName, + FatherOccupation = x.FatherOccupation, + FatherNationality = x.FatherNationality, + MotherPrefix = x.MotherPrefix, + MotherPrefixId = x.MotherPrefix != null ? x.MotherPrefix.Id.ToString() : null, + MotherFirstName = x.MotherFirstName, + MotherLastName = x.MotherLastName, + MotherOccupation = x.MotherOccupation, + MotherNationality = x.MotherNationality, + }) + .FirstOrDefaultAsync(); + } } - public async Task GetsAsyncOccupation(string examId) + public async Task GetsAsyncOccupation(string examId, string positionId) { var exam = await _context.PeriodExams.AsQueryable() .FirstOrDefaultAsync(x => x.Id == Guid.Parse(examId)); @@ -177,21 +285,45 @@ namespace BMA.EHR.Recurit.Exam.Service.Services if (exam == null) throw new Exception(GlobalMessages.ExamNotFound); - return await _context.Candidates.AsQueryable() - .Where(x => x.PeriodExam == exam && x.UserId == UserId) - .Select(x => new CandidateOccupationResponseItem - { - OccupationType = x.OccupationType, - OccupationCompany = x.OccupationCompany, - OccupationDepartment = x.OccupationDepartment, - OccupationEmail = x.OccupationEmail, - OccupationTelephone = x.OccupationTelephone, - OccupationPosition = x.OccupationPosition, - }) - .FirstOrDefaultAsync(); + if (positionId != "00000000-0000-0000-0000-000000000000") + { + var position = await _context.PositionExams.AsQueryable() + .FirstOrDefaultAsync(x => x.Id == Guid.Parse(positionId)); + + if (position == null) + throw new Exception(GlobalMessages.PositionExamNotFound); + + return await _context.Candidates.AsQueryable() + .Where(x => x.PeriodExam == exam && x.UserId == UserId && x.PositionExam == position) + .Select(x => new CandidateOccupationResponseItem + { + OccupationType = x.OccupationType, + OccupationCompany = x.OccupationCompany, + OccupationDepartment = x.OccupationDepartment, + OccupationEmail = x.OccupationEmail, + OccupationTelephone = x.OccupationTelephone, + OccupationPosition = x.OccupationPosition, + }) + .FirstOrDefaultAsync(); + } + else + { + return await _context.Candidates.AsQueryable() + .Where(x => x.PeriodExam == exam && x.UserId == UserId) + .Select(x => new CandidateOccupationResponseItem + { + OccupationType = x.OccupationType, + OccupationCompany = x.OccupationCompany, + OccupationDepartment = x.OccupationDepartment, + OccupationEmail = x.OccupationEmail, + OccupationTelephone = x.OccupationTelephone, + OccupationPosition = x.OccupationPosition, + }) + .FirstOrDefaultAsync(); + } } - public async Task> GetsAsyncCareer(string examId) + public async Task> GetsAsyncCareer(string examId, string positionId) { var exam = await _context.PeriodExams.AsQueryable() .FirstOrDefaultAsync(x => x.Id == Guid.Parse(examId)); @@ -202,13 +334,28 @@ namespace BMA.EHR.Recurit.Exam.Service.Services var candidate = await _context.Candidates.AsQueryable() .FirstOrDefaultAsync(x => x.PeriodExam == exam && x.UserId == UserId); + if (positionId != "00000000-0000-0000-0000-000000000000") + { + var position = await _context.PositionExams.AsQueryable() + .FirstOrDefaultAsync(x => x.Id == Guid.Parse(positionId)); + + if (position == null) + throw new Exception(GlobalMessages.PositionExamNotFound); + + candidate = await _context.Candidates.AsQueryable() + .FirstOrDefaultAsync(x => x.PeriodExam == exam && x.UserId == UserId && x.PositionExam == position); + } + + if (candidate == null) + throw new Exception(GlobalMessages.CandidateNotFound); + return await _context.Careers.AsQueryable() .Where(x => x.Candidate == candidate) .OrderBy(d => d.DurationStart) .ToListAsync(); } - public async Task> GetsAsyncEducation(string examId) + public async Task> GetsAsyncEducation(string examId, string positionId) { var exam = await _context.PeriodExams.AsQueryable() .FirstOrDefaultAsync(x => x.Id == Guid.Parse(examId)); @@ -219,6 +366,21 @@ namespace BMA.EHR.Recurit.Exam.Service.Services var candidate = await _context.Candidates.AsQueryable() .FirstOrDefaultAsync(x => x.PeriodExam == exam && x.UserId == UserId); + if (positionId != "00000000-0000-0000-0000-000000000000") + { + var position = await _context.PositionExams.AsQueryable() + .FirstOrDefaultAsync(x => x.Id == Guid.Parse(positionId)); + + if (position == null) + throw new Exception(GlobalMessages.PositionExamNotFound); + + candidate = await _context.Candidates.AsQueryable() + .FirstOrDefaultAsync(x => x.PeriodExam == exam && x.UserId == UserId && x.PositionExam == position); + } + + if (candidate == null) + throw new Exception(GlobalMessages.CandidateNotFound); + return await _context.Educations.AsQueryable() .Include(x => x.EducationLevel) .Where(x => x.Candidate == candidate) @@ -226,7 +388,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services .ToListAsync(); } - public async Task> GetsAsyncFileUpload(string examId) + public async Task> GetsAsyncFileUpload(string examId, string positionId) { var exam = await _context.PeriodExams.AsQueryable() .FirstOrDefaultAsync(x => x.Id == Guid.Parse(examId)); @@ -237,6 +399,21 @@ namespace BMA.EHR.Recurit.Exam.Service.Services var candidate = await _context.Candidates.AsQueryable() .FirstOrDefaultAsync(x => x.PeriodExam == exam && x.UserId == UserId); + if (positionId != "00000000-0000-0000-0000-000000000000") + { + var position = await _context.PositionExams.AsQueryable() + .FirstOrDefaultAsync(x => x.Id == Guid.Parse(positionId)); + + if (position == null) + throw new Exception(GlobalMessages.PositionExamNotFound); + + candidate = await _context.Candidates.AsQueryable() + .FirstOrDefaultAsync(x => x.PeriodExam == exam && x.UserId == UserId && x.PositionExam == position); + } + + if (candidate == null) + throw new Exception(GlobalMessages.CandidateNotFound); + return await _context.CandidateDocuments.AsQueryable() .Where(x => x.Candidate == candidate) .Select(x => new FileListResponse @@ -246,10 +423,10 @@ namespace BMA.EHR.Recurit.Exam.Service.Services FileType = x.Document == null ? "" : x.Document.FileType, FileSize = x.Document == null ? 0 : x.Document.FileSize, }) - .ToListAsync(); ; + .ToListAsync(); } - public async Task GetsAsyncProfileImage(string examId) + public async Task GetsAsyncProfileImage(string examId, string positionId) { var exam = await _context.PeriodExams.AsQueryable() .FirstOrDefaultAsync(x => x.Id == Guid.Parse(examId)); @@ -262,13 +439,27 @@ namespace BMA.EHR.Recurit.Exam.Service.Services .Where(x => x.PeriodExam == exam && x.UserId == UserId) .FirstOrDefaultAsync(); + if (positionId != "00000000-0000-0000-0000-000000000000") + { + var position = await _context.PositionExams.AsQueryable() + .FirstOrDefaultAsync(x => x.Id == Guid.Parse(positionId)); + + if (position == null) + throw new Exception(GlobalMessages.PositionExamNotFound); + + candidate = await _context.Candidates.AsQueryable() + .Include(x => x.ProfileImg) + .Where(x => x.PeriodExam == exam && x.UserId == UserId && x.PositionExam == position) + .FirstOrDefaultAsync(); + } + if (candidate == null) throw new Exception(GlobalMessages.CandidateNotFound); return candidate.ProfileImg == null ? "" : candidate.ProfileImg.Id.ToString(); } - public async Task GetsAsyncPaymentImg(string examId) + public async Task GetsAsyncPaymentImg(string examId, string positionId) { var exam = await _context.PeriodExams.AsQueryable() .FirstOrDefaultAsync(x => x.Id == Guid.Parse(examId)); @@ -281,13 +472,27 @@ namespace BMA.EHR.Recurit.Exam.Service.Services .Where(x => x.PeriodExam == exam && x.UserId == UserId) .FirstOrDefaultAsync(); + if (positionId != "00000000-0000-0000-0000-000000000000") + { + var position = await _context.PositionExams.AsQueryable() + .FirstOrDefaultAsync(x => x.Id == Guid.Parse(positionId)); + + if (position == null) + throw new Exception(GlobalMessages.PositionExamNotFound); + + candidate = await _context.Candidates.AsQueryable() + .Include(x => x.PaymentImg) + .Where(x => x.PeriodExam == exam && x.UserId == UserId && x.PositionExam == position) + .FirstOrDefaultAsync(); + } + if (candidate == null) throw new Exception(GlobalMessages.CandidateNotFound); return candidate.PaymentImg == null ? "" : candidate.PaymentImg.Id.ToString(); } - public async Task GetsAsyncRegisterExam(string examId) + public async Task GetsAsyncRegisterExam(string examId, string positionId) { var exam = await _context.PeriodExams.AsQueryable() .FirstOrDefaultAsync(x => x.Id == Guid.Parse(examId)); @@ -298,10 +503,31 @@ namespace BMA.EHR.Recurit.Exam.Service.Services var candidate = await _context.Candidates.AsQueryable() .FirstOrDefaultAsync(x => x.PeriodExam == exam && x.UserId == UserId); - return candidate != null; + if (positionId != "00000000-0000-0000-0000-000000000000") + { + var position = await _context.PositionExams.AsQueryable() + .FirstOrDefaultAsync(x => x.Id == Guid.Parse(positionId)); + + if (position == null) + throw new Exception(GlobalMessages.PositionExamNotFound); + + candidate = await _context.Candidates.AsQueryable() + .FirstOrDefaultAsync(x => x.PeriodExam == exam && x.UserId == UserId && x.PositionExam == position); + } + + var candidatePosition = await _context.Candidates.AsQueryable() + .Include(x => x.PositionExam) + .FirstOrDefaultAsync(x => x.PeriodExam == exam && x.UserId == UserId && x.Status != "register" && x.Status != "rejectRegister"); + + return new RequestStatusRegistry + { + Consend = candidate != null, + Status = candidate == null ? null : candidate.Status, + PositionExam = candidatePosition?.PositionExam + }; } - public async Task CreateAsyncCandidate(string examId) + public async Task CreateAsyncCandidate(string examId, string positionId) { var exam = await _context.PeriodExams.AsQueryable() .FirstOrDefaultAsync(x => x.Id == Guid.Parse(examId)); @@ -309,11 +535,21 @@ namespace BMA.EHR.Recurit.Exam.Service.Services if (exam == null) throw new Exception(GlobalMessages.ExamNotFound); - var _candidateNumber = await _context.Candidates.AsQueryable() - .CountAsync(x => x.PeriodExam == exam); - var _candidate = await _context.Candidates.AsQueryable() .FirstOrDefaultAsync(x => x.PeriodExam == exam && x.UserId == UserId); + + if (positionId != "00000000-0000-0000-0000-000000000000") + { + var position = await _context.PositionExams.AsQueryable() + .FirstOrDefaultAsync(x => x.Id == Guid.Parse(positionId)); + + if (position == null) + throw new Exception(GlobalMessages.PositionExamNotFound); + + _candidate = await _context.Candidates.AsQueryable() + .FirstOrDefaultAsync(x => x.PeriodExam == exam && x.UserId == UserId && x.PositionExam == position); + } + if (_candidate == null) { var candidate = new Candidate @@ -326,13 +562,9 @@ namespace BMA.EHR.Recurit.Exam.Service.Services CreatedFullName = FullName ?? "", LastUpdateFullName = FullName ?? "", UserId = UserId ?? "", - SeatNumber = "CDC-" + (_candidateNumber + 1), }; - await _context.Candidates.AddAsync(candidate); - await _context.SaveChangesAsync(); - return candidate.Id.ToString(); } else @@ -344,9 +576,9 @@ namespace BMA.EHR.Recurit.Exam.Service.Services } } - public async Task UpdateAsync(string examId, CandidateResponseItem updated) + public async Task UpdateAsync(string examId, string positionId, CandidateResponseItem updated) { - var candidateId = await CreateAsyncCandidate(examId); + var candidateId = await CreateAsyncCandidate(examId, positionId); var candidate = await _context.Candidates.AsQueryable() .FirstOrDefaultAsync(x => x.Id == Guid.Parse(candidateId)); @@ -361,6 +593,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services if (prefix == null) throw new Exception(GlobalMessages.PrefixNotFound); + candidate.Prefix = prefix; } @@ -371,6 +604,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services if (relationship == null) throw new Exception(GlobalMessages.RelationshipNotFound); + candidate.Relationship = relationship; } @@ -381,6 +615,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services if (citizenProvince == null) throw new Exception(GlobalMessages.ProvinceNotFound); + candidate.CitizenProvince = citizenProvince; } @@ -391,6 +626,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services if (citizenDistrict == null) throw new Exception(GlobalMessages.DistrictNotFound); + candidate.CitizenDistrict = citizenDistrict; } @@ -401,6 +637,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services if (registProvince == null) throw new Exception(GlobalMessages.ProvinceNotFound); + candidate.RegistProvince = registProvince; } @@ -411,6 +648,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services if (registDistrict == null) throw new Exception(GlobalMessages.DistrictNotFound); + candidate.RegistDistrict = registDistrict; } @@ -421,6 +659,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services if (registSubDistrict == null) throw new Exception(GlobalMessages.SubDistrictNotFound); + candidate.RegistSubDistrict = registSubDistrict; candidate.RegistZipCode = registSubDistrict.ZipCode; } @@ -432,6 +671,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services if (currentProvince == null) throw new Exception(GlobalMessages.ProvinceNotFound); + candidate.CurrentProvince = currentProvince; } @@ -442,6 +682,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services if (currentDistrict == null) throw new Exception(GlobalMessages.DistrictNotFound); + candidate.CurrentDistrict = currentDistrict; } @@ -452,6 +693,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services if (currentSubDistrict == null) throw new Exception(GlobalMessages.SubDistrictNotFound); + candidate.CurrentSubDistrict = currentSubDistrict; candidate.CurrentZipCode = currentSubDistrict.ZipCode; } @@ -463,6 +705,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services if (prefix == null) throw new Exception(GlobalMessages.PrefixNotFound); + candidate.MarryPrefix = prefix; } @@ -473,6 +716,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services if (prefix == null) throw new Exception(GlobalMessages.PrefixNotFound); + candidate.FatherPrefix = prefix; } @@ -483,6 +727,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services if (prefix == null) throw new Exception(GlobalMessages.PrefixNotFound); + candidate.MotherPrefix = prefix; } @@ -525,9 +770,9 @@ namespace BMA.EHR.Recurit.Exam.Service.Services await _context.SaveChangesAsync(); } - public async Task UpdateAsyncInformation(string examId, CandidateInformationResponseItem updated) + public async Task UpdateAsyncInformation(string examId, string positionId, CandidateInformationResponseItem updated) { - var candidateId = await CreateAsyncCandidate(examId); + var candidateId = await CreateAsyncCandidate(examId, positionId); var candidate = await _context.Candidates.AsQueryable() .FirstOrDefaultAsync(x => x.Id == Guid.Parse(candidateId)); @@ -542,6 +787,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services if (prefix == null) throw new Exception(GlobalMessages.PrefixNotFound); + candidate.Prefix = prefix; } @@ -552,6 +798,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services if (relationship == null) throw new Exception(GlobalMessages.RelationshipNotFound); + candidate.Relationship = relationship; } @@ -562,6 +809,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services if (citizenProvince == null) throw new Exception(GlobalMessages.ProvinceNotFound); + candidate.CitizenProvince = citizenProvince; } @@ -572,6 +820,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services if (citizenDistrict == null) throw new Exception(GlobalMessages.DistrictNotFound); + candidate.CitizenDistrict = citizenDistrict; } @@ -589,9 +838,9 @@ namespace BMA.EHR.Recurit.Exam.Service.Services await _context.SaveChangesAsync(); } - public async Task UpdateAsyncProfileImage(string examId, IFormFile file) + public async Task UpdateAsyncProfileImage(string examId, string positionId, IFormFile file) { - var candidateId = await CreateAsyncCandidate(examId); + var candidateId = await CreateAsyncCandidate(examId, positionId); var candidate = await _context.Candidates.AsQueryable() .Include(x => x.ProfileImg) @@ -614,9 +863,9 @@ namespace BMA.EHR.Recurit.Exam.Service.Services await _context.SaveChangesAsync(); } - public async Task UpdateAsyncAddress(string examId, CandidateAddressResponseItem updated) + public async Task UpdateAsyncAddress(string examId, string positionId, CandidateAddressResponseItem updated) { - var candidateId = await CreateAsyncCandidate(examId); + var candidateId = await CreateAsyncCandidate(examId, positionId); var candidate = await _context.Candidates.AsQueryable() .FirstOrDefaultAsync(x => x.Id == Guid.Parse(candidateId)); @@ -631,6 +880,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services if (registProvince == null) throw new Exception(GlobalMessages.ProvinceNotFound); + candidate.RegistProvince = registProvince; } @@ -641,6 +891,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services if (registDistrict == null) throw new Exception(GlobalMessages.DistrictNotFound); + candidate.RegistDistrict = registDistrict; } @@ -651,6 +902,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services if (registSubDistrict == null) throw new Exception(GlobalMessages.SubDistrictNotFound); + candidate.RegistSubDistrict = registSubDistrict; candidate.RegistZipCode = registSubDistrict.ZipCode; } @@ -662,6 +914,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services if (currentProvince == null) throw new Exception(GlobalMessages.ProvinceNotFound); + candidate.CurrentProvince = currentProvince; } @@ -672,6 +925,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services if (currentDistrict == null) throw new Exception(GlobalMessages.DistrictNotFound); + candidate.CurrentDistrict = currentDistrict; } @@ -682,6 +936,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services if (currentSubDistrict == null) throw new Exception(GlobalMessages.SubDistrictNotFound); + candidate.CurrentSubDistrict = currentSubDistrict; candidate.CurrentZipCode = currentSubDistrict.ZipCode; } @@ -693,9 +948,9 @@ namespace BMA.EHR.Recurit.Exam.Service.Services await _context.SaveChangesAsync(); } - public async Task UpdateAsyncFamily(string examId, CandidateFamilyResponseItem updated) + public async Task UpdateAsyncFamily(string examId, string positionId, CandidateFamilyResponseItem updated) { - var candidateId = await CreateAsyncCandidate(examId); + var candidateId = await CreateAsyncCandidate(examId, positionId); var candidate = await _context.Candidates.AsQueryable() .FirstOrDefaultAsync(x => x.Id == Guid.Parse(candidateId)); @@ -710,6 +965,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services if (prefix == null) throw new Exception(GlobalMessages.PrefixNotFound); + candidate.MarryPrefix = prefix; } @@ -720,6 +976,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services if (prefix == null) throw new Exception(GlobalMessages.PrefixNotFound); + candidate.FatherPrefix = prefix; } @@ -730,6 +987,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services if (prefix == null) throw new Exception(GlobalMessages.PrefixNotFound); + candidate.MotherPrefix = prefix; } @@ -750,9 +1008,9 @@ namespace BMA.EHR.Recurit.Exam.Service.Services await _context.SaveChangesAsync(); } - public async Task UpdateAsyncOccupation(string examId, CandidateOccupationResponseItem updated) + public async Task UpdateAsyncOccupation(string examId, string positionId, CandidateOccupationResponseItem updated) { - var candidateId = await CreateAsyncCandidate(examId); + var candidateId = await CreateAsyncCandidate(examId, positionId); var candidate = await _context.Candidates.AsQueryable() .FirstOrDefaultAsync(x => x.Id == Guid.Parse(candidateId)); @@ -770,9 +1028,9 @@ namespace BMA.EHR.Recurit.Exam.Service.Services await _context.SaveChangesAsync(); } - public async Task UpdateAsyncDocument(string examId, IFormFile file) + public async Task UpdateAsyncDocument(string examId, string positionId, IFormFile file) { - var candidateId = await CreateAsyncCandidate(examId); + var candidateId = await CreateAsyncCandidate(examId, positionId); var candidate = await _context.Candidates.AsQueryable() .FirstOrDefaultAsync(x => x.Id == Guid.Parse(candidateId)); @@ -785,6 +1043,9 @@ namespace BMA.EHR.Recurit.Exam.Service.Services var document = await _context.Documents.AsQueryable() .FirstOrDefaultAsync(x => x.Id == doc.Id); + if (document == null) + throw new Exception(GlobalMessages.NoFileToUpload); + var candidateDocument = new CandidateDocument { Candidate = candidate, @@ -800,9 +1061,9 @@ namespace BMA.EHR.Recurit.Exam.Service.Services await _minioService.DeleteFileAsync(Guid.Parse(documentId)); } - public async Task CreateAsyncCareer(string examId, CandidateCareerResponseItem updated) + public async Task CreateAsyncCareer(string examId, string positionId, CandidateCareerResponseItem updated) { - var candidateId = await CreateAsyncCandidate(examId); + var candidateId = await CreateAsyncCandidate(examId, positionId); var candidate = await _context.Candidates.AsQueryable() .FirstOrDefaultAsync(x => x.Id == Guid.Parse(candidateId)); @@ -825,13 +1086,12 @@ namespace BMA.EHR.Recurit.Exam.Service.Services }; await _context.Careers.AddAsync(career); - await _context.SaveChangesAsync(); } - public async Task CreateAsyncEducation(string examId, CandidateEducationResponseItem updated) + public async Task CreateAsyncEducation(string examId, string positionId, CandidateEducationResponseItem updated) { - var candidateId = await CreateAsyncCandidate(examId); + var candidateId = await CreateAsyncCandidate(examId, positionId); var candidate = await _context.Candidates.AsQueryable() .FirstOrDefaultAsync(x => x.Id == Guid.Parse(candidateId)); @@ -860,7 +1120,6 @@ namespace BMA.EHR.Recurit.Exam.Service.Services }; await _context.Educations.AddAsync(education); - await _context.SaveChangesAsync(); } @@ -938,7 +1197,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services await _context.SaveChangesAsync(); } - public async Task GetStatusCandidateService(string examId) + public async Task GetStatusCandidateService(string examId, string positionId) { var exam = await _context.PeriodExams.AsQueryable() .FirstOrDefaultAsync(x => x.Id == Guid.Parse(examId)); @@ -949,13 +1208,25 @@ namespace BMA.EHR.Recurit.Exam.Service.Services var candidate = await _context.Candidates.AsQueryable() .FirstOrDefaultAsync(x => x.PeriodExam == exam && x.UserId == UserId); + if (positionId != "00000000-0000-0000-0000-000000000000") + { + var position = await _context.PositionExams.AsQueryable() + .FirstOrDefaultAsync(x => x.Id == Guid.Parse(positionId)); + + if (position == null) + throw new Exception(GlobalMessages.PositionExamNotFound); + + candidate = await _context.Candidates.AsQueryable() + .FirstOrDefaultAsync(x => x.PeriodExam == exam && x.UserId == UserId && x.PositionExam == position); + } + if (candidate == null) throw new Exception(GlobalMessages.CandidateNotFound); return candidate.Status; } - public async Task UserCheckCandidateService(string examId, string status) + public async Task UserCheckCandidateService(string examId, string positionId, string status) { var exam = await _context.PeriodExams.AsQueryable() .FirstOrDefaultAsync(x => x.Id == Guid.Parse(examId)); @@ -966,6 +1237,18 @@ namespace BMA.EHR.Recurit.Exam.Service.Services var candidate = await _context.Candidates.AsQueryable() .FirstOrDefaultAsync(x => x.PeriodExam == exam && x.UserId == UserId); + if (positionId != "00000000-0000-0000-0000-000000000000") + { + var position = await _context.PositionExams.AsQueryable() + .FirstOrDefaultAsync(x => x.Id == Guid.Parse(positionId)); + + if (position == null) + throw new Exception(GlobalMessages.PositionExamNotFound); + + candidate = await _context.Candidates.AsQueryable() + .FirstOrDefaultAsync(x => x.PeriodExam == exam && x.UserId == UserId && x.PositionExam == position); + } + if (candidate == null) throw new Exception(GlobalMessages.CandidateNotFound); @@ -977,11 +1260,15 @@ namespace BMA.EHR.Recurit.Exam.Service.Services public async Task AdminCheckCandidateService(string candidateId, string status, RequestApprove item) { var candidate = await _context.Candidates.AsQueryable() + .Include(x => x.PeriodExam) .FirstOrDefaultAsync(x => x.Id == Guid.Parse(candidateId)); if (candidate == null) throw new Exception(GlobalMessages.CandidateNotFound); + if (candidate.PeriodExam == null) + throw new Exception(GlobalMessages.ExamNotFound); + if (status != "rejectDelete") { candidate.Status = status; @@ -989,6 +1276,10 @@ namespace BMA.EHR.Recurit.Exam.Service.Services { candidate.RejectDetail = item.Reason; } + else if (status == "payment" && candidate.PeriodExam.Fee == 0) + { + candidate.Status = "checkSeat"; + } } else { @@ -1011,9 +1302,9 @@ namespace BMA.EHR.Recurit.Exam.Service.Services await _context.SaveChangesAsync(); } - public async Task UpdateAsyncPaymentImage(string examId, IFormFile file) + public async Task UpdateAsyncPaymentImage(string examId, string positionId, IFormFile file) { - var candidateId = await CreateAsyncCandidate(examId); + var candidateId = await CreateAsyncCandidate(examId, positionId); var candidate = await _context.Candidates.AsQueryable() .Include(x => x.PaymentImg) diff --git a/Services/PeriodExamService.cs b/Services/PeriodExamService.cs index f99b6b9..ed3d7e0 100644 --- a/Services/PeriodExamService.cs +++ b/Services/PeriodExamService.cs @@ -2,6 +2,7 @@ using BMA.EHR.Recurit.Exam.Service.Core; using BMA.EHR.Recurit.Exam.Service.Data; using BMA.EHR.Recurit.Exam.Service.Models; +using BMA.EHR.Recurit.Exam.Service.Request; using BMA.EHR.Recurit.Exam.Service.Response; using Microsoft.EntityFrameworkCore; @@ -61,18 +62,29 @@ namespace BMA.EHR.Recurit.Exam.Service.Services return periodExam; } - public async Task CreateAsync(PeriodExam inserted) + public async Task CreateAsync(RequestPeriodExam inserted) { var periodExam = new PeriodExam { Name = inserted.Name, - StartDate = inserted.StartDate, - EndDate = inserted.EndDate, + CheckDocument = inserted.CheckDocument, + CheckDisability = inserted.CheckDisability, Round = inserted.Round, - Fee = inserted.Fee, Year = inserted.Year, + Fee = inserted.Fee, + RegisterStartDate = inserted.RegisterStartDate, + RegisterEndDate = inserted.RegisterEndDate, + PaymentStartDate = inserted.PaymentStartDate, + PaymentEndDate = inserted.PaymentEndDate, + AnnouncementStartDate = inserted.AnnouncementStartDate, + AnnouncementEndDate = inserted.AnnouncementEndDate, + OrganizationCodeId = inserted.OrganizationCodeId, + OrganizationCodeName = inserted.OrganizationCodeName, + OrganizationId = inserted.OrganizationId, + OrganizationName = inserted.OrganizationName, + PaymentKrungThai = inserted.PaymentKrungThai, Detail = inserted.Detail, - AnnounceDate = inserted.AnnounceDate, + Note = inserted.Note, CreatedAt = DateTime.Now, CreatedUserId = UserId ?? "", LastUpdatedAt = DateTime.Now, @@ -81,12 +93,48 @@ namespace BMA.EHR.Recurit.Exam.Service.Services LastUpdateFullName = FullName ?? "", }; + foreach (var bank in inserted.BankExam) + { + var bankExam = new BankExam + { + PeriodExam = periodExam, + AccountName = bank.AccountName, + AccountNumber = bank.AccountNumber, + BankName = bank.BankName, + CreatedAt = DateTime.Now, + CreatedUserId = UserId ?? "", + LastUpdatedAt = DateTime.Now, + LastUpdateUserId = UserId ?? "", + CreatedFullName = FullName ?? "", + LastUpdateFullName = FullName ?? "", + }; + await _context.BankExams.AddAsync(bankExam); + } + + foreach (var position in inserted.PositionExam) + { + var positionExam = new PositionExam + { + PeriodExam = periodExam, + PositionId = position.PositionId, + PositionName = position.PositionName, + TypeName = position.TypeName, + CreatedAt = DateTime.Now, + CreatedUserId = UserId ?? "", + LastUpdatedAt = DateTime.Now, + LastUpdateUserId = UserId ?? "", + CreatedFullName = FullName ?? "", + LastUpdateFullName = FullName ?? "", + }; + await _context.PositionExams.AddAsync(positionExam); + } + await _context.PeriodExams.AddAsync(periodExam); await _context.SaveChangesAsync(); } - public async Task UpdateAsync(string examId, PeriodExam updated) + public async Task UpdateAsync(string examId, RequestPeriodExam updated) { var periodExam = await _context.PeriodExams.AsQueryable() .FirstOrDefaultAsync(x => x.Id == Guid.Parse(examId)); @@ -95,16 +143,29 @@ namespace BMA.EHR.Recurit.Exam.Service.Services throw new Exception(GlobalMessages.ExamNotFound); periodExam.Name = updated.Name; - periodExam.StartDate = updated.StartDate; - periodExam.EndDate = updated.EndDate; + periodExam.CheckDocument = updated.CheckDocument; + periodExam.CheckDisability = updated.CheckDisability; periodExam.Round = updated.Round; - periodExam.Fee = updated.Fee; periodExam.Year = updated.Year; + periodExam.Fee = updated.Fee; + periodExam.RegisterStartDate = updated.RegisterStartDate; + periodExam.RegisterEndDate = updated.RegisterEndDate; + periodExam.PaymentStartDate = updated.PaymentStartDate; + periodExam.PaymentEndDate = updated.PaymentEndDate; + periodExam.AnnouncementStartDate = updated.AnnouncementStartDate; + periodExam.AnnouncementEndDate = updated.AnnouncementEndDate; + periodExam.OrganizationCodeId = updated.OrganizationCodeId; + periodExam.OrganizationCodeName = updated.OrganizationCodeName; + periodExam.OrganizationId = updated.OrganizationId; + periodExam.OrganizationName = updated.OrganizationName; + periodExam.PaymentKrungThai = updated.PaymentKrungThai; periodExam.Detail = updated.Detail; - periodExam.AnnounceDate = updated.AnnounceDate; - periodExam.IsActive = updated.IsActive; + periodExam.Note = updated.Note; + periodExam.CreatedAt = DateTime.Now; + periodExam.CreatedUserId = UserId ?? ""; periodExam.LastUpdatedAt = DateTime.Now; periodExam.LastUpdateUserId = UserId ?? ""; + periodExam.CreatedFullName = FullName ?? ""; periodExam.LastUpdateFullName = FullName ?? ""; await _context.SaveChangesAsync(); diff --git a/obj/Debug/net7.0/project.razor.json b/obj/Debug/net7.0/project.razor.json index c7cb748..22aa59c 100644 --- a/obj/Debug/net7.0/project.razor.json +++ b/obj/Debug/net7.0/project.razor.json @@ -13,7 +13,7 @@ "ProjectWorkspaceState": { "TagHelpers": [ { - "HashCode": -282868671, + "HashCode": -1350797433, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.Authorization.AuthorizeRouteView", "AssemblyName": "Microsoft.AspNetCore.Components.Authorization", @@ -97,7 +97,7 @@ } }, { - "HashCode": 1804236952, + "HashCode": 1408232949, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.Authorization.AuthorizeRouteView", "AssemblyName": "Microsoft.AspNetCore.Components.Authorization", @@ -182,7 +182,7 @@ } }, { - "HashCode": -812342246, + "HashCode": 115036033, "Kind": "Components.ChildContent", "Name": "Microsoft.AspNetCore.Components.Authorization.AuthorizeRouteView.NotAuthorized", "AssemblyName": "Microsoft.AspNetCore.Components.Authorization", @@ -215,7 +215,7 @@ } }, { - "HashCode": 1421695803, + "HashCode": -1310807727, "Kind": "Components.ChildContent", "Name": "Microsoft.AspNetCore.Components.Authorization.AuthorizeRouteView.NotAuthorized", "AssemblyName": "Microsoft.AspNetCore.Components.Authorization", @@ -249,7 +249,7 @@ } }, { - "HashCode": -242097113, + "HashCode": 1728203527, "Kind": "Components.ChildContent", "Name": "Microsoft.AspNetCore.Components.Authorization.AuthorizeRouteView.Authorizing", "AssemblyName": "Microsoft.AspNetCore.Components.Authorization", @@ -270,7 +270,7 @@ } }, { - "HashCode": -351512914, + "HashCode": 659927998, "Kind": "Components.ChildContent", "Name": "Microsoft.AspNetCore.Components.Authorization.AuthorizeRouteView.Authorizing", "AssemblyName": "Microsoft.AspNetCore.Components.Authorization", @@ -292,7 +292,7 @@ } }, { - "HashCode": 796407934, + "HashCode": -225402278, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.Authorization.AuthorizeView", "AssemblyName": "Microsoft.AspNetCore.Components.Authorization", @@ -397,7 +397,7 @@ } }, { - "HashCode": 728693316, + "HashCode": -1359167618, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.Authorization.AuthorizeView", "AssemblyName": "Microsoft.AspNetCore.Components.Authorization", @@ -503,7 +503,7 @@ } }, { - "HashCode": 1888235443, + "HashCode": 1253038975, "Kind": "Components.ChildContent", "Name": "Microsoft.AspNetCore.Components.Authorization.AuthorizeView.ChildContent", "AssemblyName": "Microsoft.AspNetCore.Components.Authorization", @@ -536,7 +536,7 @@ } }, { - "HashCode": -1278699388, + "HashCode": 1368608240, "Kind": "Components.ChildContent", "Name": "Microsoft.AspNetCore.Components.Authorization.AuthorizeView.ChildContent", "AssemblyName": "Microsoft.AspNetCore.Components.Authorization", @@ -570,7 +570,7 @@ } }, { - "HashCode": -1926919336, + "HashCode": 618961754, "Kind": "Components.ChildContent", "Name": "Microsoft.AspNetCore.Components.Authorization.AuthorizeView.NotAuthorized", "AssemblyName": "Microsoft.AspNetCore.Components.Authorization", @@ -603,7 +603,7 @@ } }, { - "HashCode": 653309447, + "HashCode": 1446986005, "Kind": "Components.ChildContent", "Name": "Microsoft.AspNetCore.Components.Authorization.AuthorizeView.NotAuthorized", "AssemblyName": "Microsoft.AspNetCore.Components.Authorization", @@ -637,7 +637,7 @@ } }, { - "HashCode": -1604819563, + "HashCode": 550382107, "Kind": "Components.ChildContent", "Name": "Microsoft.AspNetCore.Components.Authorization.AuthorizeView.Authorized", "AssemblyName": "Microsoft.AspNetCore.Components.Authorization", @@ -670,7 +670,7 @@ } }, { - "HashCode": -1662921409, + "HashCode": 945021928, "Kind": "Components.ChildContent", "Name": "Microsoft.AspNetCore.Components.Authorization.AuthorizeView.Authorized", "AssemblyName": "Microsoft.AspNetCore.Components.Authorization", @@ -704,7 +704,7 @@ } }, { - "HashCode": -1137495307, + "HashCode": -680519025, "Kind": "Components.ChildContent", "Name": "Microsoft.AspNetCore.Components.Authorization.AuthorizeView.Authorizing", "AssemblyName": "Microsoft.AspNetCore.Components.Authorization", @@ -725,7 +725,7 @@ } }, { - "HashCode": -1731217028, + "HashCode": -1803076730, "Kind": "Components.ChildContent", "Name": "Microsoft.AspNetCore.Components.Authorization.AuthorizeView.Authorizing", "AssemblyName": "Microsoft.AspNetCore.Components.Authorization", @@ -747,7 +747,7 @@ } }, { - "HashCode": -1102643621, + "HashCode": -384448868, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.Authorization.CascadingAuthenticationState", "AssemblyName": "Microsoft.AspNetCore.Components.Authorization", @@ -778,7 +778,7 @@ } }, { - "HashCode": 1776796973, + "HashCode": 1602829882, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.Authorization.CascadingAuthenticationState", "AssemblyName": "Microsoft.AspNetCore.Components.Authorization", @@ -810,7 +810,7 @@ } }, { - "HashCode": -457685097, + "HashCode": 1168819710, "Kind": "Components.ChildContent", "Name": "Microsoft.AspNetCore.Components.Authorization.CascadingAuthenticationState.ChildContent", "AssemblyName": "Microsoft.AspNetCore.Components.Authorization", @@ -831,7 +831,7 @@ } }, { - "HashCode": 1147423030, + "HashCode": -234765774, "Kind": "Components.ChildContent", "Name": "Microsoft.AspNetCore.Components.Authorization.CascadingAuthenticationState.ChildContent", "AssemblyName": "Microsoft.AspNetCore.Components.Authorization", @@ -853,7 +853,7 @@ } }, { - "HashCode": 744594257, + "HashCode": -1653921355, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.CascadingValue", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -928,7 +928,7 @@ } }, { - "HashCode": -436455699, + "HashCode": 2010588554, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.CascadingValue", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -1004,7 +1004,7 @@ } }, { - "HashCode": 1173699790, + "HashCode": 1162685817, "Kind": "Components.ChildContent", "Name": "Microsoft.AspNetCore.Components.CascadingValue.ChildContent", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -1025,7 +1025,7 @@ } }, { - "HashCode": -1923317578, + "HashCode": 2025709895, "Kind": "Components.ChildContent", "Name": "Microsoft.AspNetCore.Components.CascadingValue.ChildContent", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -1047,7 +1047,7 @@ } }, { - "HashCode": 1554069899, + "HashCode": 1809606020, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.DynamicComponent", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -1089,7 +1089,7 @@ } }, { - "HashCode": -1881580044, + "HashCode": -1137741196, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.DynamicComponent", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -1132,7 +1132,7 @@ } }, { - "HashCode": -1540997809, + "HashCode": 29617080, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.LayoutView", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -1174,7 +1174,7 @@ } }, { - "HashCode": 1240177401, + "HashCode": 1063756240, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.LayoutView", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -1217,7 +1217,7 @@ } }, { - "HashCode": -1595921132, + "HashCode": -2100226920, "Kind": "Components.ChildContent", "Name": "Microsoft.AspNetCore.Components.LayoutView.ChildContent", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -1238,7 +1238,7 @@ } }, { - "HashCode": 647435966, + "HashCode": -748581847, "Kind": "Components.ChildContent", "Name": "Microsoft.AspNetCore.Components.LayoutView.ChildContent", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -1260,7 +1260,7 @@ } }, { - "HashCode": 612911521, + "HashCode": -1748218345, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.RouteView", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -1302,7 +1302,7 @@ } }, { - "HashCode": -1864023619, + "HashCode": 1501854374, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.RouteView", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -1345,7 +1345,7 @@ } }, { - "HashCode": -1299009183, + "HashCode": -1743125228, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.Routing.Router", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -1453,7 +1453,7 @@ } }, { - "HashCode": 543778467, + "HashCode": -891097326, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.Routing.Router", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -1562,7 +1562,7 @@ } }, { - "HashCode": 331021786, + "HashCode": -647220075, "Kind": "Components.ChildContent", "Name": "Microsoft.AspNetCore.Components.Routing.Router.NotFound", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -1583,7 +1583,7 @@ } }, { - "HashCode": 837564432, + "HashCode": 1391716975, "Kind": "Components.ChildContent", "Name": "Microsoft.AspNetCore.Components.Routing.Router.NotFound", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -1605,7 +1605,7 @@ } }, { - "HashCode": -2121611095, + "HashCode": -1796182999, "Kind": "Components.ChildContent", "Name": "Microsoft.AspNetCore.Components.Routing.Router.Found", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -1638,7 +1638,7 @@ } }, { - "HashCode": 547435150, + "HashCode": -1900108084, "Kind": "Components.ChildContent", "Name": "Microsoft.AspNetCore.Components.Routing.Router.Found", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -1672,7 +1672,7 @@ } }, { - "HashCode": -512721062, + "HashCode": -1847612143, "Kind": "Components.ChildContent", "Name": "Microsoft.AspNetCore.Components.Routing.Router.Navigating", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -1693,7 +1693,7 @@ } }, { - "HashCode": -1085513147, + "HashCode": 311585328, "Kind": "Components.ChildContent", "Name": "Microsoft.AspNetCore.Components.Routing.Router.Navigating", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -1715,7 +1715,7 @@ } }, { - "HashCode": 1341901105, + "HashCode": -824579078, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.Forms.DataAnnotationsValidator", "AssemblyName": "Microsoft.AspNetCore.Components.Forms", @@ -1734,7 +1734,7 @@ } }, { - "HashCode": -1519877059, + "HashCode": -452807336, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.Forms.DataAnnotationsValidator", "AssemblyName": "Microsoft.AspNetCore.Components.Forms", @@ -1754,7 +1754,7 @@ } }, { - "HashCode": 1937783837, + "HashCode": -1434730923, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.Forms.EditForm", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -1859,7 +1859,7 @@ } }, { - "HashCode": 275082323, + "HashCode": -859427680, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.Forms.EditForm", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -1965,7 +1965,7 @@ } }, { - "HashCode": 286855404, + "HashCode": 19835705, "Kind": "Components.ChildContent", "Name": "Microsoft.AspNetCore.Components.Forms.EditForm.ChildContent", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -1998,7 +1998,7 @@ } }, { - "HashCode": 771563893, + "HashCode": -1067763428, "Kind": "Components.ChildContent", "Name": "Microsoft.AspNetCore.Components.Forms.EditForm.ChildContent", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -2032,7 +2032,7 @@ } }, { - "HashCode": 247742636, + "HashCode": 2111535611, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.Forms.InputCheckbox", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -2104,7 +2104,7 @@ } }, { - "HashCode": 2137281105, + "HashCode": 824461790, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.Forms.InputCheckbox", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -2177,7 +2177,7 @@ } }, { - "HashCode": -827389065, + "HashCode": -250890712, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.Forms.InputDate", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -2285,7 +2285,7 @@ } }, { - "HashCode": 1865562100, + "HashCode": -336071607, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.Forms.InputDate", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -2394,7 +2394,7 @@ } }, { - "HashCode": 1090596661, + "HashCode": -182337428, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.Forms.InputFile", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -2436,7 +2436,7 @@ } }, { - "HashCode": -1670991638, + "HashCode": -1506711565, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.Forms.InputFile", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -2479,7 +2479,7 @@ } }, { - "HashCode": -1739822075, + "HashCode": -25119993, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.Forms.InputNumber", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -2576,7 +2576,7 @@ } }, { - "HashCode": 1009805251, + "HashCode": -697572090, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.Forms.InputNumber", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -2674,7 +2674,7 @@ } }, { - "HashCode": -1049503914, + "HashCode": -188138489, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.Forms.InputRadio", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -2738,7 +2738,7 @@ } }, { - "HashCode": 203032083, + "HashCode": -2079914864, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.Forms.InputRadio", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -2803,7 +2803,7 @@ } }, { - "HashCode": -246798559, + "HashCode": -920798552, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.Forms.InputRadioGroup", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -2911,7 +2911,7 @@ } }, { - "HashCode": -1989671906, + "HashCode": -613328843, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.Forms.InputRadioGroup", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -3020,7 +3020,7 @@ } }, { - "HashCode": 1092892317, + "HashCode": -1407965282, "Kind": "Components.ChildContent", "Name": "Microsoft.AspNetCore.Components.Forms.InputRadioGroup.ChildContent", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -3041,7 +3041,7 @@ } }, { - "HashCode": -1319513811, + "HashCode": -953512305, "Kind": "Components.ChildContent", "Name": "Microsoft.AspNetCore.Components.Forms.InputRadioGroup.ChildContent", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -3063,7 +3063,7 @@ } }, { - "HashCode": -1076019795, + "HashCode": 1107870273, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.Forms.InputSelect", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -3161,7 +3161,7 @@ } }, { - "HashCode": -1303734746, + "HashCode": 448606709, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.Forms.InputSelect", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -3260,7 +3260,7 @@ } }, { - "HashCode": -1860797666, + "HashCode": 516605172, "Kind": "Components.ChildContent", "Name": "Microsoft.AspNetCore.Components.Forms.InputSelect.ChildContent", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -3281,7 +3281,7 @@ } }, { - "HashCode": 1937595758, + "HashCode": -1610078703, "Kind": "Components.ChildContent", "Name": "Microsoft.AspNetCore.Components.Forms.InputSelect.ChildContent", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -3303,7 +3303,7 @@ } }, { - "HashCode": 2092000507, + "HashCode": -1432624198, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.Forms.InputText", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -3375,7 +3375,7 @@ } }, { - "HashCode": -2084853552, + "HashCode": -1810015734, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.Forms.InputText", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -3448,7 +3448,7 @@ } }, { - "HashCode": -556954544, + "HashCode": -2183245, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.Forms.InputTextArea", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -3520,7 +3520,7 @@ } }, { - "HashCode": 405007120, + "HashCode": 723863603, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.Forms.InputTextArea", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -3593,7 +3593,7 @@ } }, { - "HashCode": 400030397, + "HashCode": 437782737, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.Forms.ValidationMessage", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -3647,7 +3647,7 @@ } }, { - "HashCode": 104345100, + "HashCode": -1636733593, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.Forms.ValidationMessage", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -3702,7 +3702,7 @@ } }, { - "HashCode": 1323469005, + "HashCode": 1002990685, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.Forms.ValidationSummary", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -3743,7 +3743,7 @@ } }, { - "HashCode": 159416296, + "HashCode": 2122879006, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.Forms.ValidationSummary", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -3785,7 +3785,7 @@ } }, { - "HashCode": 1762879222, + "HashCode": -1594986500, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.Routing.FocusOnNavigate", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -3826,7 +3826,7 @@ } }, { - "HashCode": 2143130366, + "HashCode": 1502279655, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.Routing.FocusOnNavigate", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -3868,7 +3868,7 @@ } }, { - "HashCode": -1901698958, + "HashCode": 44098765, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.Routing.NavigationLock", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -3910,7 +3910,7 @@ } }, { - "HashCode": 48850841, + "HashCode": 598643750, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.Routing.NavigationLock", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -3953,7 +3953,7 @@ } }, { - "HashCode": -2089423005, + "HashCode": -305050937, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.Routing.NavLink", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -4016,7 +4016,7 @@ } }, { - "HashCode": 1223420837, + "HashCode": -2083295975, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.Routing.NavLink", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -4080,7 +4080,7 @@ } }, { - "HashCode": 117675573, + "HashCode": 1784759369, "Kind": "Components.ChildContent", "Name": "Microsoft.AspNetCore.Components.Routing.NavLink.ChildContent", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -4101,7 +4101,7 @@ } }, { - "HashCode": -984658082, + "HashCode": -1049179282, "Kind": "Components.ChildContent", "Name": "Microsoft.AspNetCore.Components.Routing.NavLink.ChildContent", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -4123,7 +4123,7 @@ } }, { - "HashCode": 346270378, + "HashCode": 398357815, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.Web.HeadContent", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -4155,7 +4155,7 @@ } }, { - "HashCode": -1636404026, + "HashCode": 415284630, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.Web.HeadContent", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -4188,7 +4188,7 @@ } }, { - "HashCode": -532407619, + "HashCode": 2122801790, "Kind": "Components.ChildContent", "Name": "Microsoft.AspNetCore.Components.Web.HeadContent.ChildContent", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -4209,7 +4209,7 @@ } }, { - "HashCode": -1353362211, + "HashCode": -714883876, "Kind": "Components.ChildContent", "Name": "Microsoft.AspNetCore.Components.Web.HeadContent.ChildContent", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -4231,7 +4231,7 @@ } }, { - "HashCode": -153705927, + "HashCode": 1001061379, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.Web.HeadOutlet", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -4250,7 +4250,7 @@ } }, { - "HashCode": 822020210, + "HashCode": -1365041155, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.Web.HeadOutlet", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -4270,7 +4270,7 @@ } }, { - "HashCode": -1182853781, + "HashCode": -438020705, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.Web.PageTitle", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -4302,7 +4302,7 @@ } }, { - "HashCode": 1535144487, + "HashCode": 592627808, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.Web.PageTitle", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -4335,7 +4335,7 @@ } }, { - "HashCode": -297355137, + "HashCode": 855841909, "Kind": "Components.ChildContent", "Name": "Microsoft.AspNetCore.Components.Web.PageTitle.ChildContent", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -4356,7 +4356,7 @@ } }, { - "HashCode": 1980911323, + "HashCode": 620598372, "Kind": "Components.ChildContent", "Name": "Microsoft.AspNetCore.Components.Web.PageTitle.ChildContent", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -4378,7 +4378,7 @@ } }, { - "HashCode": 1074129613, + "HashCode": 1174954783, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.Web.ErrorBoundary", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -4441,7 +4441,7 @@ } }, { - "HashCode": -868348907, + "HashCode": 1306820386, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.Web.ErrorBoundary", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -4505,7 +4505,7 @@ } }, { - "HashCode": 977128953, + "HashCode": 1214611862, "Kind": "Components.ChildContent", "Name": "Microsoft.AspNetCore.Components.Web.ErrorBoundary.ChildContent", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -4526,7 +4526,7 @@ } }, { - "HashCode": 263436760, + "HashCode": 622307897, "Kind": "Components.ChildContent", "Name": "Microsoft.AspNetCore.Components.Web.ErrorBoundary.ChildContent", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -4548,7 +4548,7 @@ } }, { - "HashCode": -114736264, + "HashCode": 227810753, "Kind": "Components.ChildContent", "Name": "Microsoft.AspNetCore.Components.Web.ErrorBoundary.ErrorContent", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -4581,7 +4581,7 @@ } }, { - "HashCode": 1393221251, + "HashCode": -148209736, "Kind": "Components.ChildContent", "Name": "Microsoft.AspNetCore.Components.Web.ErrorBoundary.ErrorContent", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -4615,7 +4615,7 @@ } }, { - "HashCode": -1690525319, + "HashCode": -1061719201, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.Web.Virtualization.Virtualize", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -4747,7 +4747,7 @@ } }, { - "HashCode": 1268768303, + "HashCode": -888839186, "Kind": "Components.Component", "Name": "Microsoft.AspNetCore.Components.Web.Virtualization.Virtualize", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -4880,7 +4880,7 @@ } }, { - "HashCode": 1330319215, + "HashCode": -1008511005, "Kind": "Components.ChildContent", "Name": "Microsoft.AspNetCore.Components.Web.Virtualization.Virtualize.ChildContent", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -4913,7 +4913,7 @@ } }, { - "HashCode": -2088391515, + "HashCode": -540122292, "Kind": "Components.ChildContent", "Name": "Microsoft.AspNetCore.Components.Web.Virtualization.Virtualize.ChildContent", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -4947,7 +4947,7 @@ } }, { - "HashCode": -471092717, + "HashCode": -1646918567, "Kind": "Components.ChildContent", "Name": "Microsoft.AspNetCore.Components.Web.Virtualization.Virtualize.ItemContent", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -4980,7 +4980,7 @@ } }, { - "HashCode": 719088730, + "HashCode": -393207150, "Kind": "Components.ChildContent", "Name": "Microsoft.AspNetCore.Components.Web.Virtualization.Virtualize.ItemContent", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -5014,7 +5014,7 @@ } }, { - "HashCode": -449205263, + "HashCode": 135567252, "Kind": "Components.ChildContent", "Name": "Microsoft.AspNetCore.Components.Web.Virtualization.Virtualize.Placeholder", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -5047,7 +5047,7 @@ } }, { - "HashCode": 366577208, + "HashCode": 407607688, "Kind": "Components.ChildContent", "Name": "Microsoft.AspNetCore.Components.Web.Virtualization.Virtualize.Placeholder", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -5081,7 +5081,7 @@ } }, { - "HashCode": -1698178912, + "HashCode": 1997958295, "Kind": "Components.EventHandler", "Name": "onfocus", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -5164,7 +5164,7 @@ } }, { - "HashCode": 612053248, + "HashCode": -1508513972, "Kind": "Components.EventHandler", "Name": "onblur", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -5247,7 +5247,7 @@ } }, { - "HashCode": 2128273965, + "HashCode": -1266333209, "Kind": "Components.EventHandler", "Name": "onfocusin", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -5330,7 +5330,7 @@ } }, { - "HashCode": -411430373, + "HashCode": -135252374, "Kind": "Components.EventHandler", "Name": "onfocusout", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -5413,7 +5413,7 @@ } }, { - "HashCode": 365519052, + "HashCode": 626614794, "Kind": "Components.EventHandler", "Name": "onmouseover", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -5496,7 +5496,7 @@ } }, { - "HashCode": 101666487, + "HashCode": -1737333835, "Kind": "Components.EventHandler", "Name": "onmouseout", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -5579,7 +5579,7 @@ } }, { - "HashCode": -1731076442, + "HashCode": 172302633, "Kind": "Components.EventHandler", "Name": "onmouseleave", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -5662,7 +5662,7 @@ } }, { - "HashCode": 661678995, + "HashCode": -188868796, "Kind": "Components.EventHandler", "Name": "onmouseenter", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -5745,7 +5745,7 @@ } }, { - "HashCode": 1888713938, + "HashCode": 1983530560, "Kind": "Components.EventHandler", "Name": "onmousemove", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -5828,7 +5828,7 @@ } }, { - "HashCode": 237531890, + "HashCode": 1200579972, "Kind": "Components.EventHandler", "Name": "onmousedown", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -5911,7 +5911,7 @@ } }, { - "HashCode": 637380421, + "HashCode": -2085305127, "Kind": "Components.EventHandler", "Name": "onmouseup", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -5994,7 +5994,7 @@ } }, { - "HashCode": 1692622477, + "HashCode": -68677632, "Kind": "Components.EventHandler", "Name": "onclick", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -6077,7 +6077,7 @@ } }, { - "HashCode": 715861002, + "HashCode": 1672566567, "Kind": "Components.EventHandler", "Name": "ondblclick", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -6160,7 +6160,7 @@ } }, { - "HashCode": 1291536418, + "HashCode": -1877633994, "Kind": "Components.EventHandler", "Name": "onwheel", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -6243,7 +6243,7 @@ } }, { - "HashCode": -695390489, + "HashCode": 628369298, "Kind": "Components.EventHandler", "Name": "onmousewheel", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -6326,7 +6326,7 @@ } }, { - "HashCode": -1183874838, + "HashCode": 917815870, "Kind": "Components.EventHandler", "Name": "oncontextmenu", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -6409,7 +6409,7 @@ } }, { - "HashCode": -716573189, + "HashCode": -614913189, "Kind": "Components.EventHandler", "Name": "ondrag", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -6492,7 +6492,7 @@ } }, { - "HashCode": -1983242980, + "HashCode": 281712559, "Kind": "Components.EventHandler", "Name": "ondragend", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -6575,7 +6575,7 @@ } }, { - "HashCode": -1783448934, + "HashCode": -4341594, "Kind": "Components.EventHandler", "Name": "ondragenter", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -6658,7 +6658,7 @@ } }, { - "HashCode": 935217909, + "HashCode": 543925225, "Kind": "Components.EventHandler", "Name": "ondragleave", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -6741,7 +6741,7 @@ } }, { - "HashCode": -1923533786, + "HashCode": 2102590964, "Kind": "Components.EventHandler", "Name": "ondragover", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -6824,7 +6824,7 @@ } }, { - "HashCode": 1584267549, + "HashCode": -709382783, "Kind": "Components.EventHandler", "Name": "ondragstart", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -6907,7 +6907,7 @@ } }, { - "HashCode": 754731166, + "HashCode": 2129982069, "Kind": "Components.EventHandler", "Name": "ondrop", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -6990,7 +6990,7 @@ } }, { - "HashCode": -1347000356, + "HashCode": 1557454721, "Kind": "Components.EventHandler", "Name": "onkeydown", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -7073,7 +7073,7 @@ } }, { - "HashCode": -969351770, + "HashCode": 1138520612, "Kind": "Components.EventHandler", "Name": "onkeyup", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -7156,7 +7156,7 @@ } }, { - "HashCode": -1068422700, + "HashCode": 2024327546, "Kind": "Components.EventHandler", "Name": "onkeypress", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -7239,7 +7239,7 @@ } }, { - "HashCode": 1756414945, + "HashCode": -2077959729, "Kind": "Components.EventHandler", "Name": "onchange", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -7322,7 +7322,7 @@ } }, { - "HashCode": 535254987, + "HashCode": 1592637188, "Kind": "Components.EventHandler", "Name": "oninput", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -7405,7 +7405,7 @@ } }, { - "HashCode": -374919153, + "HashCode": 263470254, "Kind": "Components.EventHandler", "Name": "oninvalid", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -7488,7 +7488,7 @@ } }, { - "HashCode": 1393517582, + "HashCode": 1156285144, "Kind": "Components.EventHandler", "Name": "onreset", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -7571,7 +7571,7 @@ } }, { - "HashCode": 92176740, + "HashCode": 1334911794, "Kind": "Components.EventHandler", "Name": "onselect", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -7654,7 +7654,7 @@ } }, { - "HashCode": 1117168093, + "HashCode": -175702956, "Kind": "Components.EventHandler", "Name": "onselectstart", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -7737,7 +7737,7 @@ } }, { - "HashCode": 800848721, + "HashCode": -1907866689, "Kind": "Components.EventHandler", "Name": "onselectionchange", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -7820,7 +7820,7 @@ } }, { - "HashCode": 1332784451, + "HashCode": -162855990, "Kind": "Components.EventHandler", "Name": "onsubmit", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -7903,7 +7903,7 @@ } }, { - "HashCode": 158912601, + "HashCode": -706193828, "Kind": "Components.EventHandler", "Name": "onbeforecopy", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -7986,7 +7986,7 @@ } }, { - "HashCode": -203850566, + "HashCode": -1265887495, "Kind": "Components.EventHandler", "Name": "onbeforecut", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -8069,7 +8069,7 @@ } }, { - "HashCode": -831512675, + "HashCode": 844367983, "Kind": "Components.EventHandler", "Name": "onbeforepaste", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -8152,7 +8152,7 @@ } }, { - "HashCode": 276005491, + "HashCode": 1007774616, "Kind": "Components.EventHandler", "Name": "oncopy", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -8235,7 +8235,7 @@ } }, { - "HashCode": -1798887401, + "HashCode": -1139912919, "Kind": "Components.EventHandler", "Name": "oncut", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -8318,7 +8318,7 @@ } }, { - "HashCode": 2017811632, + "HashCode": 634244506, "Kind": "Components.EventHandler", "Name": "onpaste", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -8401,7 +8401,7 @@ } }, { - "HashCode": 1288027911, + "HashCode": -717914998, "Kind": "Components.EventHandler", "Name": "ontouchcancel", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -8484,7 +8484,7 @@ } }, { - "HashCode": 968958867, + "HashCode": -611545981, "Kind": "Components.EventHandler", "Name": "ontouchend", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -8567,7 +8567,7 @@ } }, { - "HashCode": 822435733, + "HashCode": 352684502, "Kind": "Components.EventHandler", "Name": "ontouchmove", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -8650,7 +8650,7 @@ } }, { - "HashCode": -1978383616, + "HashCode": -179023676, "Kind": "Components.EventHandler", "Name": "ontouchstart", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -8733,7 +8733,7 @@ } }, { - "HashCode": -1777060416, + "HashCode": 553857296, "Kind": "Components.EventHandler", "Name": "ontouchenter", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -8816,7 +8816,7 @@ } }, { - "HashCode": -1615672790, + "HashCode": 1353625009, "Kind": "Components.EventHandler", "Name": "ontouchleave", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -8899,7 +8899,7 @@ } }, { - "HashCode": 1205675526, + "HashCode": 1180024108, "Kind": "Components.EventHandler", "Name": "ongotpointercapture", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -8982,7 +8982,7 @@ } }, { - "HashCode": -516526552, + "HashCode": -150026034, "Kind": "Components.EventHandler", "Name": "onlostpointercapture", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -9065,7 +9065,7 @@ } }, { - "HashCode": 1290480895, + "HashCode": 1931504334, "Kind": "Components.EventHandler", "Name": "onpointercancel", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -9148,7 +9148,7 @@ } }, { - "HashCode": 1772320027, + "HashCode": -1536869169, "Kind": "Components.EventHandler", "Name": "onpointerdown", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -9231,7 +9231,7 @@ } }, { - "HashCode": 2062160500, + "HashCode": -63305324, "Kind": "Components.EventHandler", "Name": "onpointerenter", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -9314,7 +9314,7 @@ } }, { - "HashCode": 1742961849, + "HashCode": 273481030, "Kind": "Components.EventHandler", "Name": "onpointerleave", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -9397,7 +9397,7 @@ } }, { - "HashCode": -1800822493, + "HashCode": 1726739823, "Kind": "Components.EventHandler", "Name": "onpointermove", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -9480,7 +9480,7 @@ } }, { - "HashCode": 505332719, + "HashCode": -737892978, "Kind": "Components.EventHandler", "Name": "onpointerout", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -9563,7 +9563,7 @@ } }, { - "HashCode": 1218452036, + "HashCode": 1491851885, "Kind": "Components.EventHandler", "Name": "onpointerover", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -9646,7 +9646,7 @@ } }, { - "HashCode": -1599004667, + "HashCode": 1790676351, "Kind": "Components.EventHandler", "Name": "onpointerup", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -9729,7 +9729,7 @@ } }, { - "HashCode": 2029582699, + "HashCode": -146122010, "Kind": "Components.EventHandler", "Name": "oncanplay", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -9812,7 +9812,7 @@ } }, { - "HashCode": -1983514656, + "HashCode": -581512252, "Kind": "Components.EventHandler", "Name": "oncanplaythrough", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -9895,7 +9895,7 @@ } }, { - "HashCode": 743371430, + "HashCode": 1456174820, "Kind": "Components.EventHandler", "Name": "oncuechange", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -9978,7 +9978,7 @@ } }, { - "HashCode": -1253952555, + "HashCode": -380825727, "Kind": "Components.EventHandler", "Name": "ondurationchange", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -10061,7 +10061,7 @@ } }, { - "HashCode": -827852624, + "HashCode": 439130539, "Kind": "Components.EventHandler", "Name": "onemptied", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -10144,7 +10144,7 @@ } }, { - "HashCode": -449016434, + "HashCode": 229252965, "Kind": "Components.EventHandler", "Name": "onpause", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -10227,7 +10227,7 @@ } }, { - "HashCode": 1362818526, + "HashCode": -1532077920, "Kind": "Components.EventHandler", "Name": "onplay", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -10310,7 +10310,7 @@ } }, { - "HashCode": -619300619, + "HashCode": 851028878, "Kind": "Components.EventHandler", "Name": "onplaying", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -10393,7 +10393,7 @@ } }, { - "HashCode": 1358681961, + "HashCode": 1798328217, "Kind": "Components.EventHandler", "Name": "onratechange", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -10476,7 +10476,7 @@ } }, { - "HashCode": 351336071, + "HashCode": -54056978, "Kind": "Components.EventHandler", "Name": "onseeked", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -10559,7 +10559,7 @@ } }, { - "HashCode": 86847721, + "HashCode": 466682970, "Kind": "Components.EventHandler", "Name": "onseeking", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -10642,7 +10642,7 @@ } }, { - "HashCode": -1600139978, + "HashCode": 190481698, "Kind": "Components.EventHandler", "Name": "onstalled", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -10725,7 +10725,7 @@ } }, { - "HashCode": -509502645, + "HashCode": -767039756, "Kind": "Components.EventHandler", "Name": "onstop", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -10808,7 +10808,7 @@ } }, { - "HashCode": 1172157834, + "HashCode": -2086756280, "Kind": "Components.EventHandler", "Name": "onsuspend", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -10891,7 +10891,7 @@ } }, { - "HashCode": -1155608706, + "HashCode": -1497917135, "Kind": "Components.EventHandler", "Name": "ontimeupdate", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -10974,7 +10974,7 @@ } }, { - "HashCode": 223737810, + "HashCode": -481948816, "Kind": "Components.EventHandler", "Name": "onvolumechange", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -11057,7 +11057,7 @@ } }, { - "HashCode": -1309041782, + "HashCode": 1249700531, "Kind": "Components.EventHandler", "Name": "onwaiting", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -11140,7 +11140,7 @@ } }, { - "HashCode": -1176861562, + "HashCode": -2007263907, "Kind": "Components.EventHandler", "Name": "onloadstart", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -11223,7 +11223,7 @@ } }, { - "HashCode": -1744058084, + "HashCode": -1548990861, "Kind": "Components.EventHandler", "Name": "ontimeout", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -11306,7 +11306,7 @@ } }, { - "HashCode": -1395467123, + "HashCode": -1882804252, "Kind": "Components.EventHandler", "Name": "onabort", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -11389,7 +11389,7 @@ } }, { - "HashCode": -1465525878, + "HashCode": 1730902623, "Kind": "Components.EventHandler", "Name": "onload", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -11472,7 +11472,7 @@ } }, { - "HashCode": -2027808595, + "HashCode": 1176832736, "Kind": "Components.EventHandler", "Name": "onloadend", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -11555,7 +11555,7 @@ } }, { - "HashCode": 1134179431, + "HashCode": 113264297, "Kind": "Components.EventHandler", "Name": "onprogress", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -11638,7 +11638,7 @@ } }, { - "HashCode": -652903233, + "HashCode": -173966239, "Kind": "Components.EventHandler", "Name": "onerror", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -11721,7 +11721,7 @@ } }, { - "HashCode": -1709769413, + "HashCode": 952311898, "Kind": "Components.EventHandler", "Name": "onactivate", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -11804,7 +11804,7 @@ } }, { - "HashCode": 189288642, + "HashCode": 100477506, "Kind": "Components.EventHandler", "Name": "onbeforeactivate", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -11887,7 +11887,7 @@ } }, { - "HashCode": 1867530644, + "HashCode": -2136748721, "Kind": "Components.EventHandler", "Name": "onbeforedeactivate", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -11970,7 +11970,7 @@ } }, { - "HashCode": -186112629, + "HashCode": -1991887079, "Kind": "Components.EventHandler", "Name": "ondeactivate", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -12053,7 +12053,7 @@ } }, { - "HashCode": -1712283326, + "HashCode": -224641205, "Kind": "Components.EventHandler", "Name": "onended", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -12136,7 +12136,7 @@ } }, { - "HashCode": -471672278, + "HashCode": 407937051, "Kind": "Components.EventHandler", "Name": "onfullscreenchange", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -12219,7 +12219,7 @@ } }, { - "HashCode": 1232016470, + "HashCode": 963395663, "Kind": "Components.EventHandler", "Name": "onfullscreenerror", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -12302,7 +12302,7 @@ } }, { - "HashCode": 344813298, + "HashCode": 1111492045, "Kind": "Components.EventHandler", "Name": "onloadeddata", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -12385,7 +12385,7 @@ } }, { - "HashCode": -1540016722, + "HashCode": -417056351, "Kind": "Components.EventHandler", "Name": "onloadedmetadata", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -12468,7 +12468,7 @@ } }, { - "HashCode": 376232100, + "HashCode": 1137023469, "Kind": "Components.EventHandler", "Name": "onpointerlockchange", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -12551,7 +12551,7 @@ } }, { - "HashCode": 82840321, + "HashCode": 636117670, "Kind": "Components.EventHandler", "Name": "onpointerlockerror", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -12634,7 +12634,7 @@ } }, { - "HashCode": -922229687, + "HashCode": -1425253495, "Kind": "Components.EventHandler", "Name": "onreadystatechange", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -12717,7 +12717,7 @@ } }, { - "HashCode": -2099229148, + "HashCode": -603233858, "Kind": "Components.EventHandler", "Name": "onscroll", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -12800,7 +12800,7 @@ } }, { - "HashCode": 630982109, + "HashCode": -2071132617, "Kind": "Components.EventHandler", "Name": "ontoggle", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -12883,7 +12883,7 @@ } }, { - "HashCode": -2012268261, + "HashCode": 2002321984, "Kind": "Components.Splat", "Name": "Attributes", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -12922,7 +12922,7 @@ } }, { - "HashCode": -1479744569, + "HashCode": -555702865, "Kind": "ITagHelper", "Name": "Microsoft.AspNetCore.Mvc.Razor.TagHelpers.UrlResolutionTagHelper", "AssemblyName": "Microsoft.AspNetCore.Mvc.Razor", @@ -13239,7 +13239,7 @@ } }, { - "HashCode": -1409473407, + "HashCode": -1953715030, "Kind": "ITagHelper", "Name": "Microsoft.AspNetCore.Mvc.TagHelpers.AnchorTagHelper", "AssemblyName": "Microsoft.AspNetCore.Mvc.TagHelpers", @@ -13438,7 +13438,7 @@ } }, { - "HashCode": 1205062461, + "HashCode": 1218845911, "Kind": "ITagHelper", "Name": "Microsoft.AspNetCore.Mvc.TagHelpers.CacheTagHelper", "AssemblyName": "Microsoft.AspNetCore.Mvc.TagHelpers", @@ -13567,7 +13567,7 @@ } }, { - "HashCode": -1975433845, + "HashCode": -577482674, "Kind": "ITagHelper", "Name": "Microsoft.AspNetCore.Mvc.TagHelpers.ComponentTagHelper", "AssemblyName": "Microsoft.AspNetCore.Mvc.TagHelpers", @@ -13624,7 +13624,7 @@ } }, { - "HashCode": -1113427288, + "HashCode": -58594900, "Kind": "ITagHelper", "Name": "Microsoft.AspNetCore.Mvc.TagHelpers.DistributedCacheTagHelper", "AssemblyName": "Microsoft.AspNetCore.Mvc.TagHelpers", @@ -13758,7 +13758,7 @@ } }, { - "HashCode": 926882969, + "HashCode": 1625479625, "Kind": "ITagHelper", "Name": "Microsoft.AspNetCore.Mvc.TagHelpers.EnvironmentTagHelper", "AssemblyName": "Microsoft.AspNetCore.Mvc.TagHelpers", @@ -13806,7 +13806,7 @@ } }, { - "HashCode": -1599213599, + "HashCode": 1525868417, "Kind": "ITagHelper", "Name": "Microsoft.AspNetCore.Mvc.TagHelpers.FormActionTagHelper", "AssemblyName": "Microsoft.AspNetCore.Mvc.TagHelpers", @@ -14225,7 +14225,7 @@ } }, { - "HashCode": -46304587, + "HashCode": 125700948, "Kind": "ITagHelper", "Name": "Microsoft.AspNetCore.Mvc.TagHelpers.FormTagHelper", "AssemblyName": "Microsoft.AspNetCore.Mvc.TagHelpers", @@ -14329,7 +14329,7 @@ } }, { - "HashCode": -1254351619, + "HashCode": -793966470, "Kind": "ITagHelper", "Name": "Microsoft.AspNetCore.Mvc.TagHelpers.ImageTagHelper", "AssemblyName": "Microsoft.AspNetCore.Mvc.TagHelpers", @@ -14377,7 +14377,7 @@ } }, { - "HashCode": 1540600026, + "HashCode": 1375291831, "Kind": "ITagHelper", "Name": "Microsoft.AspNetCore.Mvc.TagHelpers.InputTagHelper", "AssemblyName": "Microsoft.AspNetCore.Mvc.TagHelpers", @@ -14449,7 +14449,7 @@ } }, { - "HashCode": -548628813, + "HashCode": -476891335, "Kind": "ITagHelper", "Name": "Microsoft.AspNetCore.Mvc.TagHelpers.LabelTagHelper", "AssemblyName": "Microsoft.AspNetCore.Mvc.TagHelpers", @@ -14484,7 +14484,7 @@ } }, { - "HashCode": -1111254970, + "HashCode": 829490176, "Kind": "ITagHelper", "Name": "Microsoft.AspNetCore.Mvc.TagHelpers.LinkTagHelper", "AssemblyName": "Microsoft.AspNetCore.Mvc.TagHelpers", @@ -14682,7 +14682,7 @@ } }, { - "HashCode": 322785557, + "HashCode": 1577975165, "Kind": "ITagHelper", "Name": "Microsoft.AspNetCore.Mvc.TagHelpers.OptionTagHelper", "AssemblyName": "Microsoft.AspNetCore.Mvc.TagHelpers", @@ -14712,7 +14712,7 @@ } }, { - "HashCode": -1714669821, + "HashCode": -1539396027, "Kind": "ITagHelper", "Name": "Microsoft.AspNetCore.Mvc.TagHelpers.PartialTagHelper", "AssemblyName": "Microsoft.AspNetCore.Mvc.TagHelpers", @@ -14795,7 +14795,7 @@ } }, { - "HashCode": -1256753987, + "HashCode": -582693216, "Kind": "ITagHelper", "Name": "Microsoft.AspNetCore.Mvc.TagHelpers.PersistComponentStateTagHelper", "AssemblyName": "Microsoft.AspNetCore.Mvc.TagHelpers", @@ -14826,7 +14826,7 @@ } }, { - "HashCode": -1551781756, + "HashCode": -1227510936, "Kind": "ITagHelper", "Name": "Microsoft.AspNetCore.Mvc.TagHelpers.ScriptTagHelper", "AssemblyName": "Microsoft.AspNetCore.Mvc.TagHelpers", @@ -14981,7 +14981,7 @@ } }, { - "HashCode": 1791813493, + "HashCode": -186628042, "Kind": "ITagHelper", "Name": "Microsoft.AspNetCore.Mvc.TagHelpers.SelectTagHelper", "AssemblyName": "Microsoft.AspNetCore.Mvc.TagHelpers", @@ -15042,7 +15042,7 @@ } }, { - "HashCode": 2074004660, + "HashCode": -96786237, "Kind": "ITagHelper", "Name": "Microsoft.AspNetCore.Mvc.TagHelpers.TextAreaTagHelper", "AssemblyName": "Microsoft.AspNetCore.Mvc.TagHelpers", @@ -15086,7 +15086,7 @@ } }, { - "HashCode": -1882919168, + "HashCode": 446148757, "Kind": "ITagHelper", "Name": "Microsoft.AspNetCore.Mvc.TagHelpers.ValidationMessageTagHelper", "AssemblyName": "Microsoft.AspNetCore.Mvc.TagHelpers", @@ -15121,7 +15121,7 @@ } }, { - "HashCode": -359829198, + "HashCode": 973155494, "Kind": "ITagHelper", "Name": "Microsoft.AspNetCore.Mvc.TagHelpers.ValidationSummaryTagHelper", "AssemblyName": "Microsoft.AspNetCore.Mvc.TagHelpers", @@ -15157,7 +15157,7 @@ } }, { - "HashCode": 1574917628, + "HashCode": 835413633, "Kind": "Components.Bind", "Name": "Bind", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -15253,7 +15253,7 @@ } }, { - "HashCode": -402643183, + "HashCode": 1736073372, "Kind": "Components.Bind", "Name": "Bind", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -15375,7 +15375,7 @@ } }, { - "HashCode": 85271695, + "HashCode": -1041036346, "Kind": "Components.Bind", "Name": "Bind_value", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -15497,7 +15497,7 @@ } }, { - "HashCode": 2050705463, + "HashCode": -1997276201, "Kind": "Components.Bind", "Name": "Bind", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -15630,7 +15630,7 @@ } }, { - "HashCode": 1312241562, + "HashCode": -1804928485, "Kind": "Components.Bind", "Name": "Bind", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -15763,7 +15763,7 @@ } }, { - "HashCode": -1211966831, + "HashCode": -1802996865, "Kind": "Components.Bind", "Name": "Bind", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -15896,7 +15896,7 @@ } }, { - "HashCode": -1687688771, + "HashCode": 303091468, "Kind": "Components.Bind", "Name": "Bind_value", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -16029,7 +16029,7 @@ } }, { - "HashCode": 800215593, + "HashCode": 645595614, "Kind": "Components.Bind", "Name": "Bind", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -16162,7 +16162,7 @@ } }, { - "HashCode": -1256362755, + "HashCode": 94628723, "Kind": "Components.Bind", "Name": "Bind_value", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -16295,7 +16295,7 @@ } }, { - "HashCode": -1988789722, + "HashCode": 78105881, "Kind": "Components.Bind", "Name": "Bind", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -16428,7 +16428,7 @@ } }, { - "HashCode": -1997059583, + "HashCode": -359353632, "Kind": "Components.Bind", "Name": "Bind_value", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -16561,7 +16561,7 @@ } }, { - "HashCode": -1213860766, + "HashCode": 1026220225, "Kind": "Components.Bind", "Name": "Bind", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -16694,7 +16694,7 @@ } }, { - "HashCode": -509428245, + "HashCode": -431616911, "Kind": "Components.Bind", "Name": "Bind_value", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -16827,7 +16827,7 @@ } }, { - "HashCode": 16083417, + "HashCode": -1615072831, "Kind": "Components.Bind", "Name": "Bind", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -16960,7 +16960,7 @@ } }, { - "HashCode": 1673375574, + "HashCode": 545009472, "Kind": "Components.Bind", "Name": "Bind_value", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -17093,7 +17093,7 @@ } }, { - "HashCode": 172003801, + "HashCode": -220922334, "Kind": "Components.Bind", "Name": "Bind", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -17215,7 +17215,7 @@ } }, { - "HashCode": -1057236339, + "HashCode": -1151435624, "Kind": "Components.Bind", "Name": "Bind", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -17337,7 +17337,7 @@ } }, { - "HashCode": -711888220, + "HashCode": -1934292640, "Kind": "Components.Bind", "Name": "Microsoft.AspNetCore.Components.Forms.InputCheckbox", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -17424,7 +17424,7 @@ } }, { - "HashCode": 764272706, + "HashCode": -51327175, "Kind": "Components.Bind", "Name": "Microsoft.AspNetCore.Components.Forms.InputCheckbox", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -17512,7 +17512,7 @@ } }, { - "HashCode": 502883380, + "HashCode": 1232127386, "Kind": "Components.Bind", "Name": "Microsoft.AspNetCore.Components.Forms.InputDate", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -17599,7 +17599,7 @@ } }, { - "HashCode": -742640450, + "HashCode": -1372459520, "Kind": "Components.Bind", "Name": "Microsoft.AspNetCore.Components.Forms.InputDate", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -17687,7 +17687,7 @@ } }, { - "HashCode": 1222539783, + "HashCode": -152013155, "Kind": "Components.Bind", "Name": "Microsoft.AspNetCore.Components.Forms.InputNumber", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -17774,7 +17774,7 @@ } }, { - "HashCode": 2033266410, + "HashCode": 321423502, "Kind": "Components.Bind", "Name": "Microsoft.AspNetCore.Components.Forms.InputNumber", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -17862,7 +17862,7 @@ } }, { - "HashCode": 85943436, + "HashCode": 1719372342, "Kind": "Components.Bind", "Name": "Microsoft.AspNetCore.Components.Forms.InputRadioGroup", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -17949,7 +17949,7 @@ } }, { - "HashCode": -268432372, + "HashCode": 955159827, "Kind": "Components.Bind", "Name": "Microsoft.AspNetCore.Components.Forms.InputRadioGroup", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -18037,7 +18037,7 @@ } }, { - "HashCode": 140195460, + "HashCode": -1322805869, "Kind": "Components.Bind", "Name": "Microsoft.AspNetCore.Components.Forms.InputSelect", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -18124,7 +18124,7 @@ } }, { - "HashCode": -636591149, + "HashCode": 571414836, "Kind": "Components.Bind", "Name": "Microsoft.AspNetCore.Components.Forms.InputSelect", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -18212,7 +18212,7 @@ } }, { - "HashCode": -1943777048, + "HashCode": -1127298619, "Kind": "Components.Bind", "Name": "Microsoft.AspNetCore.Components.Forms.InputText", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -18299,7 +18299,7 @@ } }, { - "HashCode": 1108089015, + "HashCode": 175636652, "Kind": "Components.Bind", "Name": "Microsoft.AspNetCore.Components.Forms.InputText", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -18387,7 +18387,7 @@ } }, { - "HashCode": -264805079, + "HashCode": -166690247, "Kind": "Components.Bind", "Name": "Microsoft.AspNetCore.Components.Forms.InputTextArea", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -18474,7 +18474,7 @@ } }, { - "HashCode": 2028624746, + "HashCode": 1801025185, "Kind": "Components.Bind", "Name": "Microsoft.AspNetCore.Components.Forms.InputTextArea", "AssemblyName": "Microsoft.AspNetCore.Components.Web", @@ -18562,7 +18562,7 @@ } }, { - "HashCode": 1397568734, + "HashCode": -778514366, "Kind": "Components.Ref", "Name": "Ref", "AssemblyName": "Microsoft.AspNetCore.Components", @@ -18601,7 +18601,7 @@ } }, { - "HashCode": 1212952998, + "HashCode": -713564678, "Kind": "Components.Key", "Name": "Key", "AssemblyName": "Microsoft.AspNetCore.Components",