using BMA.EHR.Domain.Common; using BMA.EHR.Domain.Extensions; using BMA.EHR.Application.Repositories.Reports; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Authorization; using Swashbuckle.AspNetCore.Annotations; using Telerik.Reporting; using Telerik.Reporting.Processing; using BMA.EHR.Application.Repositories; using System.Drawing; namespace BMA.EHR.Report.Service.Controllers { [Route("api/v{version:apiVersion}/report/candidate")] [ApiVersion("2.0")] [ApiController] [Produces("application/json")] [Authorize] [SwaggerTag("API รายงานระบบสอบคัดเลือก")] public class CandidateReportController : BaseController { private readonly CandidateReportRepository _service; private readonly IWebHostEnvironment _hostingEnvironment; private readonly IConfiguration _configuration; private readonly MinIOExamService _minIOExamService; public CandidateReportController(CandidateReportRepository service, IWebHostEnvironment hostingEnvironment, MinIOExamService minIOExamService, IConfiguration configuration) { _service = service; _hostingEnvironment = hostingEnvironment; _configuration = configuration; _minIOExamService = minIOExamService; } #region ใบสมัคร /// /// ใบสมัคร /// /// Id ผู้สมัคร /// pdf, docx หรือ xlsx /// /// เมื่อทำการอ่านข้อมูลจาก Relational Database สำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpGet("{exportType}/{Id}")] [AllowAnonymous] public async Task> GetExamCandidate([FromRoute] Guid Id, string exportType = "pdf") { var candidate = await _service.GetExamCandidateAsync(Id); var careers = await _service.GetExamCareerCandidateAsync(Id); var avatar = await _service.GetExamAvatarCandidateAsync(Id); if (candidate != null) { var picContent = avatar == null ? null : await _minIOExamService.ImagesPath(avatar); var mapData = new { Id = candidate.GetType().GetProperty("Id").GetValue(candidate), AvatarId = candidate.GetType().GetProperty("AvatarId").GetValue(candidate), PeriodExamName = candidate.GetType().GetProperty("PeriodExamName").GetValue(candidate), PeriodExamRound = candidate.GetType().GetProperty("PeriodExamRound").GetValue(candidate), PeriodExamYear = candidate.GetType().GetProperty("PeriodExamYear").GetValue(candidate), PositionName = candidate.GetType().GetProperty("PositionName").GetValue(candidate), PositionLevelName = candidate.GetType().GetProperty("PositionLevelName").GetValue(candidate), FullName = candidate.GetType().GetProperty("FullName").GetValue(candidate), Nationality = candidate.GetType().GetProperty("Nationality").GetValue(candidate), Religion = candidate.GetType().GetProperty("Religion").GetValue(candidate), CitizenId = candidate.GetType().GetProperty("CitizenId").GetValue(candidate), DateOfBirth = candidate.GetType().GetProperty("DateOfBirth").GetValue(candidate), Age = candidate.GetType().GetProperty("Age").GetValue(candidate), EducationLevelExamName = candidate.GetType().GetProperty("EducationLevelExamName").GetValue(candidate), EducationName = candidate.GetType().GetProperty("EducationName").GetValue(candidate), EducationMajor = candidate.GetType().GetProperty("EducationMajor").GetValue(candidate), EducationLocation = candidate.GetType().GetProperty("EducationLocation").GetValue(candidate), EducationEndDate = candidate.GetType().GetProperty("EducationEndDate").GetValue(candidate), EducationScores = candidate.GetType().GetProperty("EducationScores").GetValue(candidate), EducationType = candidate.GetType().GetProperty("EducationType").GetValue(candidate), EducationLevelHighName = candidate.GetType().GetProperty("EducationLevelHighName").GetValue(candidate), ExamIdenNumber = candidate.GetType().GetProperty("ExamIdenNumber").GetValue(candidate), OccupationPositionType = candidate.GetType().GetProperty("OccupationPositionType").GetValue(candidate), OccupationPosition = candidate.GetType().GetProperty("OccupationPosition").GetValue(candidate), OccupationSalary = candidate.GetType().GetProperty("OccupationSalary").GetValue(candidate), OccupationGroup = candidate.GetType().GetProperty("OccupationGroup").GetValue(candidate), OccupationPile = candidate.GetType().GetProperty("OccupationPile").GetValue(candidate), OccupationOrg = candidate.GetType().GetProperty("OccupationOrg").GetValue(candidate), OccupationTelephone = candidate.GetType().GetProperty("OccupationTelephone").GetValue(candidate), CareersTotal = candidate.GetType().GetProperty("CareersTotal").GetValue(candidate), RegistAddress = candidate.GetType().GetProperty("RegistAddress").GetValue(candidate), RegistProvinceName = candidate.GetType().GetProperty("RegistProvinceName").GetValue(candidate), RegistDistrictName = candidate.GetType().GetProperty("RegistDistrictName").GetValue(candidate), RegistSubDistrictName = candidate.GetType().GetProperty("RegistSubDistrictName").GetValue(candidate), RegistZipCode = candidate.GetType().GetProperty("RegistZipCode").GetValue(candidate), CurrentAddress = candidate.GetType().GetProperty("CurrentAddress").GetValue(candidate), CurrentProvinceName = candidate.GetType().GetProperty("CurrentProvinceName").GetValue(candidate), CurrentDistrictName = candidate.GetType().GetProperty("CurrentDistrictName").GetValue(candidate), CurrentSubDistrictName = candidate.GetType().GetProperty("CurrentSubDistrictName").GetValue(candidate), CurrentZipCode = candidate.GetType().GetProperty("CurrentZipCode").GetValue(candidate), Telephone = candidate.GetType().GetProperty("Telephone").GetValue(candidate), Email = candidate.GetType().GetProperty("Email").GetValue(candidate), ContactFullName = candidate.GetType().GetProperty("ContactFullName").GetValue(candidate), ContactRelations = candidate.GetType().GetProperty("ContactRelations").GetValue(candidate), ContactTel = candidate.GetType().GetProperty("ContactTel").GetValue(candidate), RegisterDate = candidate.GetType().GetProperty("RegisterDate").GetValue(candidate), Url = picContent ?? "https://bma-ehr.frappet.synology.me/assets/avatar_user-89f22423.jpg", Careers = careers, }; var data = new { template = "ผลสอบคัดเลือกรายบุคคล", reportName = "docx-report", data = mapData }; return Success(data); } else { return NotFound(); } } #endregion } }