From 2ef1fb3d4af4c471f02b9cc5758d76f1ade038ab Mon Sep 17 00:00:00 2001 From: AnandaTon <125332905+anandaAiemvong@users.noreply.github.com> Date: Thu, 30 Mar 2023 16:24:27 +0700 Subject: [PATCH] =?UTF-8?q?=E0=B8=95=E0=B9=88=E0=B8=AD=20api=20period=20ex?= =?UTF-8?q?am(=E0=B8=95=E0=B9=88=E0=B8=AD)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Controllers/PeriodExamController.cs | 131 +++++++++++++++++++++++++++- Services/PeriodExamService.cs | 91 +++++++++++++++++++ 2 files changed, 221 insertions(+), 1 deletion(-) diff --git a/Controllers/PeriodExamController.cs b/Controllers/PeriodExamController.cs index 54096a3..d070ec5 100644 --- a/Controllers/PeriodExamController.cs +++ b/Controllers/PeriodExamController.cs @@ -265,7 +265,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers return Error(ex); } } - + /// /// ข้อมูล ข้อมูลส่วนตัว ผู้สมัคร /// @@ -291,6 +291,135 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers return Error(ex); } } + + /// + /// ข้อมูล ข้อมูลที่อยู่ ผู้สมัคร + /// + /// รหัสรอบสมัคร + /// + /// เมื่อทำการดึง ข้อมูล ข้อมูลที่อยู่ ผู้สมัคร สำเร็จ + /// ไม่ได้ Login เข้าระบบ + /// เมื่อเกิดข้อผิดพลาดในการทำงาน + [HttpGet("address/{candidate:length(36)}")] + [ProducesResponseType(StatusCodes.Status200OK)] + [ProducesResponseType(StatusCodes.Status401Unauthorized)] + [ProducesResponseType(StatusCodes.Status500InternalServerError)] + public async Task> GetsAsyncAddress(string candidate) + { + try + { + var items = await _periodExamService.GetsAsyncAddress(candidate); + + return Success(items); + } + catch (Exception ex) + { + return Error(ex); + } + } + + /// + /// ข้อมูล ข้อมูลครอบครัว ผู้สมัคร + /// + /// รหัสรอบสมัคร + /// + /// เมื่อทำการดึง ข้อมูล ข้อมูลครอบครัว ผู้สมัคร สำเร็จ + /// ไม่ได้ Login เข้าระบบ + /// เมื่อเกิดข้อผิดพลาดในการทำงาน + [HttpGet("family/{candidate:length(36)}")] + [ProducesResponseType(StatusCodes.Status200OK)] + [ProducesResponseType(StatusCodes.Status401Unauthorized)] + [ProducesResponseType(StatusCodes.Status500InternalServerError)] + public async Task> GetsAsyncFamily(string candidate) + { + try + { + var items = await _candidateService.GetsAsyncFamily(candidate); + + return Success(items); + } + catch (Exception ex) + { + return Error(ex); + } + } + + /// + /// ข้อมูล อาชีพ ผู้สมัคร + /// + /// รหัสรอบสมัคร + /// + /// เมื่อทำการดึง ข้อมูล อาชีพ ผู้สมัคร สำเร็จ + /// ไม่ได้ Login เข้าระบบ + /// เมื่อเกิดข้อผิดพลาดในการทำงาน + [HttpGet("occupation/{candidate:length(36)}")] + [ProducesResponseType(StatusCodes.Status200OK)] + [ProducesResponseType(StatusCodes.Status401Unauthorized)] + [ProducesResponseType(StatusCodes.Status500InternalServerError)] + public async Task> GetsAsyncOccupation(string candidate) + { + try + { + var items = await _candidateService.GetsAsyncOccupation(candidate); + + return Success(items); + } + catch (Exception ex) + { + return Error(ex); + } + } + + /// + /// ข้อมูล ประวัติการทำงาน/ฝึกงาน ผู้สมัคร + /// + /// รหัสรอบสมัคร + /// + /// เมื่อทำการดึง ข้อมูล ประวัติการทำงาน/ฝึกงาน ผู้สมัคร สำเร็จ + /// ไม่ได้ Login เข้าระบบ + /// เมื่อเกิดข้อผิดพลาดในการทำงาน + [HttpGet("career/{candidate:length(36)}")] + [ProducesResponseType(StatusCodes.Status200OK)] + [ProducesResponseType(StatusCodes.Status401Unauthorized)] + [ProducesResponseType(StatusCodes.Status500InternalServerError)] + public async Task> GetsAsyncCareer(string candidate) + { + try + { + var items = await _candidateService.GetsAsyncCareer(candidate); + + return Success(items); + } + catch (Exception ex) + { + return Error(ex); + } + } + /// + /// ข้อมูล ประวัติการศีกษา ผู้สมัคร + /// + /// รหัสรอบสมัคร + /// + /// เมื่อทำการดึง ข้อมูล ประวัติการศีกษา ผู้สมัคร สำเร็จ + /// ไม่ได้ Login เข้าระบบ + /// เมื่อเกิดข้อผิดพลาดในการทำงาน + [HttpGet("education/{candidate:length(36)}")] + [ProducesResponseType(StatusCodes.Status200OK)] + [ProducesResponseType(StatusCodes.Status401Unauthorized)] + [ProducesResponseType(StatusCodes.Status500InternalServerError)] + public async Task> GetsAsyncEducation(string candidate) + { + try + { + var items = await _periodExamService.GetsAsyncEducation(candidate); + + return Success(items); + } + catch (Exception ex) + { + return Error(ex); + } + } #endregion } } diff --git a/Services/PeriodExamService.cs b/Services/PeriodExamService.cs index 3abc171..a01634c 100644 --- a/Services/PeriodExamService.cs +++ b/Services/PeriodExamService.cs @@ -170,6 +170,97 @@ namespace BMA.EHR.Recurit.Exam.Service.Services }) .FirstOrDefaultAsync(); } + public async Task GetsAsyncOccupation(string candidateId) + { + return await _context.Candidates.AsQueryable() + .Where(x => x.Id == Guid.Parse(candidateId)) + .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 candidateId) + { + return await _context.Careers.AsQueryable() + .Where(x => x.Id == Guid.Parse(candidateId)) + .OrderBy(d => d.DurationStart) + .ToListAsync(); + } + + public async Task GetsAsyncAddress(string candidateId) + { + return await _context.Candidates.AsQueryable() + .Where(x => x.Id == Guid.Parse(candidateId)) + .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 candidateId) + { + return await _context.Candidates.AsQueryable() + .Where(x => x.Id == Guid.Parse(candidateId)) + .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> GetsAsyncEducation(string candidateId) + { + + var candidate = await _context.Candidates.AsQueryable() + .FirstOrDefaultAsync(x => x.PeriodExam == exam && x.UserId == UserId); + + return await _context.Educations.AsQueryable() + .Include(x => x.EducationLevel) + .Where(x => x.Id == Guid.Parse(candidateId)) + .OrderBy(d => d.DurationStart) + .ToListAsync(); + } + + #endregion } }