Compare commits
14 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
146db902fc | ||
|
|
7d8e8d84ef | ||
|
|
821fc62daa | ||
|
|
fe905f7f54 | ||
|
|
c79ea6a2de | ||
|
|
ec8ed62f2b | ||
|
|
75f9d53af0 | ||
|
|
db56bfc546 | ||
|
|
d95dfdfca8 | ||
|
|
da6a0b4a96 | ||
|
|
b637734690 | ||
|
|
8b2982acd9 | ||
|
|
6cc9ad5dd6 | ||
|
|
132839d48a |
2 changed files with 313 additions and 39 deletions
|
|
@ -620,7 +620,7 @@ namespace BMA.EHR.Report.Service.Controllers
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
if (data.Count == 0)
|
if (data.Count == 0)
|
||||||
return Error("ไม่พบข้อมูลในระบบ");
|
return Error("ไม่พบข้อมูลในระบบ", 404);
|
||||||
|
|
||||||
//var rptFile = Path.Combine(_hostingEnvironment.ContentRootPath, "Report", "Recruit", $"rptPassExamList.trdp");
|
//var rptFile = Path.Combine(_hostingEnvironment.ContentRootPath, "Report", "Recruit", $"rptPassExamList.trdp");
|
||||||
//ReportPackager reportPackager = new ReportPackager();
|
//ReportPackager reportPackager = new ReportPackager();
|
||||||
|
|
@ -666,7 +666,7 @@ namespace BMA.EHR.Report.Service.Controllers
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// รายชื่อผู้มีสิทธิ์สอบ แสดงรายชื่อแบ่งตามตำแหน่ง (สอบคัดเลือกผู้พิการ)
|
/// รายชื่อผู้มีสิทธิ์สอบ แสดงรายชื่อแบ่งตามตำแหน่ง (สอบคัดเลือกอื่นๆ)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="id">รหัสรอบการสอบ</param>
|
/// <param name="id">รหัสรอบการสอบ</param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
|
|
@ -692,14 +692,14 @@ namespace BMA.EHR.Report.Service.Controllers
|
||||||
{
|
{
|
||||||
FullName = $"{p.Prefix ?? ""}{p.FirstName ?? ""} {p.LastName ?? ""}",
|
FullName = $"{p.Prefix ?? ""}{p.FirstName ?? ""} {p.LastName ?? ""}",
|
||||||
PositionName = p.PositionName,
|
PositionName = p.PositionName,
|
||||||
Remark = !string.IsNullOrEmpty(p.Remark) ? p.Remark.ToThaiNumber() : "",
|
// Remark = !string.IsNullOrEmpty(p.Remark) ? p.Remark.ToThaiNumber() : "",
|
||||||
ExamId = !string.IsNullOrEmpty(p.ExamId) ? p.ExamId.ToThaiNumber() : "",
|
ExamId = !string.IsNullOrEmpty(p.ExamId) ? p.ExamId.ToThaiNumber() : "",
|
||||||
ExamName =
|
ExamName =
|
||||||
($"{p.PeriodExam.Name} ครั้งที่ {p.PeriodExam.Round}/{p.PeriodExam.Year.Value.ToThaiYear()}").ToThaiNumber(),
|
($"{p.PeriodExam.Name} ครั้งที่ {p.PeriodExam.Round}/{p.PeriodExam.Year.Value.ToThaiYear()}").ToThaiNumber(),
|
||||||
}).ToListAsync();
|
}).ToListAsync();
|
||||||
|
|
||||||
if (data.Count == 0)
|
if (data.Count == 0)
|
||||||
return Error("ไม่พบข้อมูลในระบบ");
|
return Error("ไม่พบข้อมูลในระบบ", 404);
|
||||||
|
|
||||||
var examName = data.First().ExamName;
|
var examName = data.First().ExamName;
|
||||||
|
|
||||||
|
|
@ -714,7 +714,7 @@ namespace BMA.EHR.Report.Service.Controllers
|
||||||
No = (index + 1).ToString().ToThaiNumber(),
|
No = (index + 1).ToString().ToThaiNumber(),
|
||||||
ExamId = x.ExamId,
|
ExamId = x.ExamId,
|
||||||
FullName = x.FullName,
|
FullName = x.FullName,
|
||||||
Remark = x.Remark
|
// Remark = x.Remark
|
||||||
}).ToList()
|
}).ToList()
|
||||||
})
|
})
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
@ -758,7 +758,7 @@ namespace BMA.EHR.Report.Service.Controllers
|
||||||
var table = new iText.Layout.Element.Table(UnitValue.CreatePercentArray(columnWidths)).UseAllAvailableWidth();
|
var table = new iText.Layout.Element.Table(UnitValue.CreatePercentArray(columnWidths)).UseAllAvailableWidth();
|
||||||
|
|
||||||
// Table Header
|
// Table Header
|
||||||
string[] headers = { "ลำดับที่", "เลขประจำตัวสอบ", "ชื่อ-สกุล", "หมายเหตุ" };
|
string[] headers = { "ลำดับที่", "เลขประจำตัวสอบ", "ชื่อ - สกุล", "หมายเหตุ" };
|
||||||
foreach (var h in headers)
|
foreach (var h in headers)
|
||||||
{
|
{
|
||||||
table.AddHeaderCell(new Cell()
|
table.AddHeaderCell(new Cell()
|
||||||
|
|
@ -779,8 +779,7 @@ namespace BMA.EHR.Report.Service.Controllers
|
||||||
table.AddCell(new Cell().Add(new Paragraph(x.FullName ?? "").SetMultipliedLeading(1.0f))
|
table.AddCell(new Cell().Add(new Paragraph(x.FullName ?? "").SetMultipliedLeading(1.0f))
|
||||||
.SetTextAlignment(TextAlignment.LEFT));
|
.SetTextAlignment(TextAlignment.LEFT));
|
||||||
|
|
||||||
table.AddCell(new Cell().Add(new Paragraph(x.Remark ?? "").SetMultipliedLeading(1.0f))
|
table.AddCell(new Cell());
|
||||||
.SetTextAlignment(TextAlignment.CENTER));
|
|
||||||
}
|
}
|
||||||
document.Add(table);
|
document.Add(table);
|
||||||
document.Add(new Paragraph("").SetMarginBottom(15));
|
document.Add(new Paragraph("").SetMarginBottom(15));
|
||||||
|
|
@ -796,7 +795,7 @@ namespace BMA.EHR.Report.Service.Controllers
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// รายชื่อผู้สอบแข่งขันได้ แสดงรายชื่อแบ่งตามตำแหน่ง (สอบคัดเลือกผู้พิการ)
|
/// รายชื่อผู้สอบคัดเลือกได้ แสดงรายชื่อแบ่งตามตำแหน่ง (สอบคัดเลือกอื่นๆ)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="id">รหัสรอบการสอบ</param>
|
/// <param name="id">รหัสรอบการสอบ</param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
|
|
@ -820,7 +819,7 @@ namespace BMA.EHR.Report.Service.Controllers
|
||||||
.Join(_context.DisableScores.AsQueryable()
|
.Join(_context.DisableScores.AsQueryable()
|
||||||
.Include(x => x.ScoreImport)
|
.Include(x => x.ScoreImport)
|
||||||
.Where(x => x.ScoreImport.PeriodExamId == id)
|
.Where(x => x.ScoreImport.PeriodExamId == id)
|
||||||
.Where(x => x.ExamStatus == "ผ่าน"),
|
.Where(x => x.ExamStatus == "ผ่าน" && !string.IsNullOrEmpty(x.Number)),
|
||||||
rc => new { id = rc.PeriodExam.Id, examId = rc.ExamId },
|
rc => new { id = rc.PeriodExam.Id, examId = rc.ExamId },
|
||||||
sc => new { id = sc.ScoreImport.PeriodExamId, examId = sc.ExamId },
|
sc => new { id = sc.ScoreImport.PeriodExamId, examId = sc.ExamId },
|
||||||
(p, sr) => new
|
(p, sr) => new
|
||||||
|
|
@ -830,16 +829,13 @@ namespace BMA.EHR.Report.Service.Controllers
|
||||||
ExamResult = sr == null ? "" : sr.ExamStatus,
|
ExamResult = sr == null ? "" : sr.ExamStatus,
|
||||||
ExamName = $"{p.PeriodExam.Name} ครั้งที่ {p.PeriodExam.Round.ToString().ToThaiNumber()}/{p.PeriodExam.Year.Value.ToThaiYear().ToString().ToThaiNumber()}",
|
ExamName = $"{p.PeriodExam.Name} ครั้งที่ {p.PeriodExam.Round.ToString().ToThaiNumber()}/{p.PeriodExam.Year.Value.ToThaiYear().ToString().ToThaiNumber()}",
|
||||||
Number = sr == null || sr.Number == null ? 0 : Convert.ToInt32(sr.Number),
|
Number = sr == null || sr.Number == null ? 0 : Convert.ToInt32(sr.Number),
|
||||||
SumScore = sr == null
|
ExamId = string.IsNullOrEmpty(p.ExamId) ? "-" : p.ExamId.ToThaiNumber(),
|
||||||
? "๐"
|
|
||||||
: (((double)(sr.SumA > 0 ? sr.SumA : 0) + (sr.SumB > 0 ? sr.SumB : 0) + (sr.SumC > 0 ? sr.SumC : 0)).ToString("0.00")).ToThaiNumber(),
|
|
||||||
})
|
})
|
||||||
.OrderBy(x => x.Number)
|
.OrderBy(x => x.Number)
|
||||||
.Where(x => x.ExamResult == "ผ่าน")
|
|
||||||
.ToListAsync();
|
.ToListAsync();
|
||||||
|
|
||||||
if (data.Count == 0)
|
if (data.Count == 0)
|
||||||
return Error("ไม่พบข้อมูลในระบบ");
|
return Error("ไม่พบข้อมูลในระบบ", 404);
|
||||||
|
|
||||||
var examName = data.First().ExamName;
|
var examName = data.First().ExamName;
|
||||||
|
|
||||||
|
|
@ -854,7 +850,7 @@ namespace BMA.EHR.Report.Service.Controllers
|
||||||
{
|
{
|
||||||
Number = x.Number > 0 ? x.Number.ToString().ToThaiNumber() : "",
|
Number = x.Number > 0 ? x.Number.ToString().ToThaiNumber() : "",
|
||||||
FullName = x.FullName,
|
FullName = x.FullName,
|
||||||
SumScore = x.SumScore
|
ExamId = x.ExamId
|
||||||
}).ToList()
|
}).ToList()
|
||||||
})
|
})
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
@ -871,7 +867,7 @@ namespace BMA.EHR.Report.Service.Controllers
|
||||||
document.SetFont(font).SetFontSize(16);
|
document.SetFont(font).SetFontSize(16);
|
||||||
document.SetMargins(30, 15, 20, 15);
|
document.SetMargins(30, 15, 20, 15);
|
||||||
|
|
||||||
var title = new Paragraph($"รายชื่อผู้สอบแข่งขันได้\n{examName}")
|
var title = new Paragraph($"บัญชีรายชื่อผู้ผ่านการคัดเลือก\nใน{examName}")
|
||||||
.SetBold()
|
.SetBold()
|
||||||
.SetMultipliedLeading(1.0f)
|
.SetMultipliedLeading(1.0f)
|
||||||
.SetTextAlignment(TextAlignment.CENTER);
|
.SetTextAlignment(TextAlignment.CENTER);
|
||||||
|
|
@ -892,7 +888,7 @@ namespace BMA.EHR.Report.Service.Controllers
|
||||||
|
|
||||||
var table = new iText.Layout.Element.Table(UnitValue.CreatePercentArray(columnWidths)).UseAllAvailableWidth();
|
var table = new iText.Layout.Element.Table(UnitValue.CreatePercentArray(columnWidths)).UseAllAvailableWidth();
|
||||||
|
|
||||||
string[] headers = { "ลำดับที่", "สนามสอบ", "ชื่อ - นามสกุล", "คะแนนสอบ" };
|
string[] headers = { "ลำดับที่", "เลขประจำตัวสอบ", "ชื่อ - สกุล", "หมายเหตุ" };
|
||||||
foreach (var h in headers)
|
foreach (var h in headers)
|
||||||
{
|
{
|
||||||
table.AddHeaderCell(new Cell().Add(new Paragraph(h).SetMultipliedLeading(1.0f))
|
table.AddHeaderCell(new Cell().Add(new Paragraph(h).SetMultipliedLeading(1.0f))
|
||||||
|
|
@ -904,11 +900,11 @@ namespace BMA.EHR.Report.Service.Controllers
|
||||||
{
|
{
|
||||||
table.AddCell(new Cell().Add(new Paragraph(p.Number ?? "").SetMultipliedLeading(1.0f))
|
table.AddCell(new Cell().Add(new Paragraph(p.Number ?? "").SetMultipliedLeading(1.0f))
|
||||||
.SetTextAlignment(TextAlignment.CENTER));
|
.SetTextAlignment(TextAlignment.CENTER));
|
||||||
table.AddCell(new Cell());
|
table.AddCell(new Cell().Add(new Paragraph(p.ExamId).SetMultipliedLeading(1.0f))
|
||||||
|
.SetTextAlignment(TextAlignment.CENTER));
|
||||||
table.AddCell(new Cell().Add(new Paragraph(p.FullName ?? "").SetMultipliedLeading(1.0f))
|
table.AddCell(new Cell().Add(new Paragraph(p.FullName ?? "").SetMultipliedLeading(1.0f))
|
||||||
.SetTextAlignment(TextAlignment.LEFT));
|
.SetTextAlignment(TextAlignment.LEFT));
|
||||||
table.AddCell(new Cell().Add(new Paragraph(p.SumScore ?? "").SetMultipliedLeading(1.0f))
|
table.AddCell(new Cell());
|
||||||
.SetTextAlignment(TextAlignment.CENTER));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
document.Add(table);
|
document.Add(table);
|
||||||
|
|
@ -920,7 +916,285 @@ namespace BMA.EHR.Report.Service.Controllers
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
return Error(ex, "เกิดข้อผิดพลาดในการแสดงรายงาน");
|
return Error(ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// รายชื่อผู้มีสิทธิ์สอบ แสดงรายชื่อแบ่งตามตำแหน่ง (สอบคัดเลือก)
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id">รหัสรอบการสอบ</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
/// <response code="200">เมื่อแสดงรายงานสำเร็จ</response>
|
||||||
|
/// <response code="400">ค่าตัวแปรที่ส่งมาไม่ถูกต้อง</response>
|
||||||
|
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
|
||||||
|
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
|
||||||
|
[HttpGet("candidate/candidate-new/{id:length(36)}")]
|
||||||
|
[AllowAnonymous]
|
||||||
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||||
|
public async Task<ActionResult<ResponseObject>> GetListCandidateNewReportAsync(Guid id)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var periodExam = await _context.PeriodExams.AsQueryable()
|
||||||
|
.Where(x => x.CheckDisability == false)
|
||||||
|
.FirstOrDefaultAsync(x => x.Id == id);
|
||||||
|
|
||||||
|
if (periodExam == null)
|
||||||
|
return Error("ไม่พบข้อมูลการรับสมัครสอบ", 404);
|
||||||
|
|
||||||
|
var data = await _context.Candidates.AsQueryable()
|
||||||
|
.Include(x => x.PeriodExam)
|
||||||
|
.ThenInclude(x => x.PositionExam)
|
||||||
|
.Where(x => x.PeriodExam!.Id == periodExam.Id && x.Status!="register" && x.ExamIdenNumber != null)
|
||||||
|
.OrderBy(x => x.ExamIdenNumber)
|
||||||
|
.ThenBy(x => x.PositionExam!.CreatedAt)
|
||||||
|
.Select(p => new
|
||||||
|
{
|
||||||
|
FullName = $"{p.PrefixName ?? ""}{p.FirstName ?? ""} {p.LastName ?? ""}",
|
||||||
|
PositionName = p.PositionExam!.PositionName,
|
||||||
|
// Remark = !string.IsNullOrEmpty(p.ExamReason) ? p.ExamReason.ToThaiNumber() : "",
|
||||||
|
ExamId = !string.IsNullOrEmpty(p.ExamIdenNumber) ? p.ExamIdenNumber.ToThaiNumber() : "",
|
||||||
|
SeatNumber = !string.IsNullOrEmpty(p.SeatNumber) ? p.SeatNumber.ToThaiNumber() : "",
|
||||||
|
ExamName =
|
||||||
|
($"{p.PeriodExam!.Name} ครั้งที่ {p.PeriodExam.Round}/{p.PeriodExam.Year.Value.ToThaiYear()}").ToThaiNumber(),
|
||||||
|
}).ToListAsync();
|
||||||
|
|
||||||
|
if (data.Count == 0)
|
||||||
|
return Error("ไม่พบข้อมูลในระบบ", 404);
|
||||||
|
|
||||||
|
var examName = data.First().ExamName;
|
||||||
|
|
||||||
|
var groupData = data
|
||||||
|
.GroupBy(x => x.PositionName)
|
||||||
|
.Select(g => new
|
||||||
|
{
|
||||||
|
PositionName = $"ตำแหน่ง {g.Key}",
|
||||||
|
Total = $"จำนวน {g.Count().ToString().ToThaiNumber()} ราย",
|
||||||
|
Persons = g.Select((x, index) => new
|
||||||
|
{
|
||||||
|
No = (index + 1).ToString().ToThaiNumber(),
|
||||||
|
ExamId = x.ExamId,
|
||||||
|
SeatNumber = x.SeatNumber,
|
||||||
|
FullName = x.FullName,
|
||||||
|
// Remark = x.Remark
|
||||||
|
}).ToList()
|
||||||
|
})
|
||||||
|
.ToList();
|
||||||
|
|
||||||
|
// เตรียม MemoryStream
|
||||||
|
using (var stream = new MemoryStream())
|
||||||
|
{
|
||||||
|
// สร้าง PDF document
|
||||||
|
using (var writer = new PdfWriter(stream))
|
||||||
|
using (var pdf = new PdfDocument(writer))
|
||||||
|
using (var document = new Document(pdf, iText.Kernel.Geom.PageSize.A4))
|
||||||
|
{
|
||||||
|
// กำหนดฟ้อนต์ TH-Sarabun
|
||||||
|
var fontPath = System.IO.Path.Combine(Environment.CurrentDirectory, "Fonts", "THSarabun.ttf");
|
||||||
|
var font = PdfFontFactory.CreateFont(fontPath, "Identity-H");
|
||||||
|
document.SetFont(font).SetFontSize(16);
|
||||||
|
|
||||||
|
// ตั้งค่าระยะขอบ top, right, bottom, left
|
||||||
|
document.SetMargins(30, 15, 20, 15);
|
||||||
|
|
||||||
|
// Title
|
||||||
|
var title = new Paragraph($"รายชื่อผู้มีสิทธิ์สอบ\n{examName ?? ""}")
|
||||||
|
.SetBold()
|
||||||
|
.SetMultipliedLeading(1.0f)
|
||||||
|
.SetTextAlignment(TextAlignment.CENTER);
|
||||||
|
|
||||||
|
document.Add(title);
|
||||||
|
float[] columnWidths = { 10f, 15f, 15f, 30f, 15f };
|
||||||
|
// Loop Groups
|
||||||
|
foreach (var group in groupData)
|
||||||
|
{
|
||||||
|
// Group Header (ตำแหน่ง)
|
||||||
|
Paragraph positionHeader = new Paragraph($"{group.PositionName} {group.Total}")
|
||||||
|
.SetBold()
|
||||||
|
.SetMultipliedLeading(1.0f)
|
||||||
|
.SetTextAlignment(TextAlignment.CENTER)
|
||||||
|
.SetMarginBottom(5);
|
||||||
|
|
||||||
|
document.Add(positionHeader);
|
||||||
|
|
||||||
|
var table = new iText.Layout.Element.Table(UnitValue.CreatePercentArray(columnWidths)).UseAllAvailableWidth();
|
||||||
|
|
||||||
|
// Table Header
|
||||||
|
string[] headers = { "ลำดับที่", "เลขประจำตัวสอบ", "สนามสอบ", "ชื่อ - สกุล", "หมายเหตุ" };
|
||||||
|
foreach (var h in headers)
|
||||||
|
{
|
||||||
|
table.AddHeaderCell(new Cell()
|
||||||
|
.Add(new Paragraph(h).SetMultipliedLeading(1.0f))
|
||||||
|
.SetBold()
|
||||||
|
.SetTextAlignment(TextAlignment.CENTER));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Table Details
|
||||||
|
foreach (var x in group.Persons)
|
||||||
|
{
|
||||||
|
table.AddCell(new Cell().Add(new Paragraph(x.No ?? "").SetMultipliedLeading(1.0f))
|
||||||
|
.SetTextAlignment(TextAlignment.CENTER));
|
||||||
|
|
||||||
|
table.AddCell(new Cell().Add(new Paragraph(x.ExamId ?? "").SetMultipliedLeading(1.0f))
|
||||||
|
.SetTextAlignment(TextAlignment.CENTER));
|
||||||
|
|
||||||
|
table.AddCell(new Cell().Add(new Paragraph(x.SeatNumber ?? "").SetMultipliedLeading(1.0f))
|
||||||
|
.SetTextAlignment(TextAlignment.LEFT));
|
||||||
|
|
||||||
|
table.AddCell(new Cell().Add(new Paragraph(x.FullName ?? "").SetMultipliedLeading(1.0f))
|
||||||
|
.SetTextAlignment(TextAlignment.LEFT));
|
||||||
|
|
||||||
|
table.AddCell(new Cell());
|
||||||
|
}
|
||||||
|
document.Add(table);
|
||||||
|
document.Add(new Paragraph("").SetMarginBottom(15));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return File(stream.ToArray(), "application/pdf", $"รายชื่อผู้มีสิทธิ์สอบ_{examName}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return Error(ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// รายชื่อผู้สอบคัดเลือกได้ แสดงรายชื่อแบ่งตามตำแหน่ง (สอบคัดเลือก)
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id">รหัสรอบการสอบ</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
/// <response code="200">เมื่อแสดงรายงานสำเร็จ</response>
|
||||||
|
/// <response code="400">ค่าตัวแปรที่ส่งมาไม่ถูกต้อง</response>
|
||||||
|
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
|
||||||
|
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
|
||||||
|
[HttpGet("candidate/pass-new/{id:length(36)}")]
|
||||||
|
[AllowAnonymous]
|
||||||
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||||
|
public async Task<ActionResult<ResponseObject>> GetCandidatePassExamListNewReportAsync(Guid id)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var periodExam = await _context.PeriodExams.AsQueryable()
|
||||||
|
.Where(x => x.CheckDisability == false)
|
||||||
|
.FirstOrDefaultAsync(x => x.Id == id);
|
||||||
|
|
||||||
|
if (periodExam == null)
|
||||||
|
return Error("ไม่พบข้อมูลการรับสมัครสอบ", 404);
|
||||||
|
|
||||||
|
var examName = $"{periodExam.Name} ครั้งที่ {periodExam.Round}/{periodExam.Year.Value.ToThaiYear()}".ToThaiNumber();
|
||||||
|
|
||||||
|
var candidates = await _context.Candidates.AsQueryable()
|
||||||
|
.Include(x => x.PeriodExam)
|
||||||
|
.ThenInclude(x => x.PositionExam)
|
||||||
|
.Where(x => x.PeriodExam!.Id == periodExam.Id)
|
||||||
|
.Where(x => x.Status != "register" && x.Pass == "ได้" && !string.IsNullOrEmpty(x.Number))
|
||||||
|
.OrderBy(x => x.PositionExam!.CreatedAt)
|
||||||
|
.ToListAsync();
|
||||||
|
|
||||||
|
var data = candidates.Select((p, idx) => new
|
||||||
|
{
|
||||||
|
PositionName = p.PositionExam!.PositionName,
|
||||||
|
FullName = $"{p.PrefixName ?? ""}{p.FirstName ?? ""} {p.LastName ?? ""}".Trim(),
|
||||||
|
ExamResult = p.Pass,
|
||||||
|
// ExamName = $"{p.PeriodExam!.Name} ครั้งที่ {p.PeriodExam.Round}/{p.PeriodExam!.Year.Value.ToThaiYear()}".ToThaiNumber(),
|
||||||
|
Number = string.IsNullOrEmpty(p.Number) ? (idx + 1) : Convert.ToInt32(p.Number),
|
||||||
|
ExamIdenNumber = string.IsNullOrEmpty(p.ExamIdenNumber) ? "-" : p.ExamIdenNumber.ToThaiNumber(),
|
||||||
|
})
|
||||||
|
.OrderBy(x => x.Number)
|
||||||
|
.ToList();
|
||||||
|
|
||||||
|
/*กรณีไม่มีผู้ผ่านการสอบต้องดาวน์โหลดรายงานนี้ได้แต่แสดงเฉพาะส่วนหัว*/
|
||||||
|
// if (data.Count == 0)
|
||||||
|
// return Error("ไม่พบข้อมูลในระบบ", 404);
|
||||||
|
|
||||||
|
// var examName = data.First().ExamName;
|
||||||
|
|
||||||
|
// Group by PositionName
|
||||||
|
var groupData = data
|
||||||
|
.GroupBy(g => g.PositionName)
|
||||||
|
.Select(g => new
|
||||||
|
{
|
||||||
|
PositionName = $"ตำแหน่ง {g.Key}",
|
||||||
|
Total = $"จำนวน {g.Count().ToString().ToThaiNumber()} ราย",
|
||||||
|
Persons = g.Select((x) => new
|
||||||
|
{
|
||||||
|
Number = x.Number > 0 ? x.Number.ToString().ToThaiNumber() : "",
|
||||||
|
FullName = x.FullName,
|
||||||
|
ExamIdenNumber = x.ExamIdenNumber
|
||||||
|
}).ToList()
|
||||||
|
})
|
||||||
|
.ToList();
|
||||||
|
|
||||||
|
using (var stream = new MemoryStream())
|
||||||
|
{
|
||||||
|
using (var writer = new PdfWriter(stream))
|
||||||
|
using (var pdf = new PdfDocument(writer))
|
||||||
|
using (var document = new Document(pdf, iText.Kernel.Geom.PageSize.A4))
|
||||||
|
{
|
||||||
|
var fontPath = System.IO.Path.Combine(Environment.CurrentDirectory, "Fonts", "THSarabun.ttf");
|
||||||
|
var font = PdfFontFactory.CreateFont(fontPath, "Identity-H");
|
||||||
|
|
||||||
|
document.SetFont(font).SetFontSize(16);
|
||||||
|
document.SetMargins(30, 15, 20, 15);
|
||||||
|
|
||||||
|
var title = new Paragraph($"บัญชีรายชื่อผู้ผ่านการคัดเลือก\nใน{examName}")
|
||||||
|
.SetBold()
|
||||||
|
.SetMultipliedLeading(1.0f)
|
||||||
|
.SetTextAlignment(TextAlignment.CENTER);
|
||||||
|
|
||||||
|
document.Add(title);
|
||||||
|
float[] columnWidths = { 10f, 25f, 25f, 25f };
|
||||||
|
foreach (var g in groupData)
|
||||||
|
{
|
||||||
|
// Header per group
|
||||||
|
Paragraph positionHeader = new Paragraph($"{g.PositionName} {g.Total}")
|
||||||
|
.SetBold()
|
||||||
|
.SetMultipliedLeading(1.0f)
|
||||||
|
.SetTextAlignment(TextAlignment.CENTER)
|
||||||
|
.SetMarginBottom(5);
|
||||||
|
|
||||||
|
|
||||||
|
document.Add(positionHeader);
|
||||||
|
|
||||||
|
var table = new iText.Layout.Element.Table(UnitValue.CreatePercentArray(columnWidths)).UseAllAvailableWidth();
|
||||||
|
|
||||||
|
string[] headers = { "ลำดับที่", "เลขประจำตัวสอบ", "ชื่อ - สกุล", "หมายเหตุ" };
|
||||||
|
foreach (var h in headers)
|
||||||
|
{
|
||||||
|
table.AddHeaderCell(new Cell().Add(new Paragraph(h).SetMultipliedLeading(1.0f))
|
||||||
|
.SetTextAlignment(TextAlignment.CENTER)
|
||||||
|
.SetBold());
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var p in g.Persons)
|
||||||
|
{
|
||||||
|
table.AddCell(new Cell().Add(new Paragraph(p.Number ?? "").SetMultipliedLeading(1.0f))
|
||||||
|
.SetTextAlignment(TextAlignment.CENTER));
|
||||||
|
table.AddCell(new Cell().Add(new Paragraph(p.ExamIdenNumber ?? "").SetMultipliedLeading(1.0f))
|
||||||
|
.SetTextAlignment(TextAlignment.CENTER));
|
||||||
|
table.AddCell(new Cell().Add(new Paragraph(p.FullName ?? "").SetMultipliedLeading(1.0f))
|
||||||
|
.SetTextAlignment(TextAlignment.LEFT));
|
||||||
|
table.AddCell(new Cell());
|
||||||
|
}
|
||||||
|
|
||||||
|
document.Add(table);
|
||||||
|
document.Add(new Paragraph("").SetMarginBottom(15));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return File(stream.ToArray(), "application/pdf", $"รายชื่อผู้สอบแข่งขันได้_{examName}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return Error(ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -358,7 +358,7 @@ namespace BMA.EHR.Report.Service.Controllers
|
||||||
{
|
{
|
||||||
FullName = $"{p.Prefix}{p.FirstName} {p.LastName}",
|
FullName = $"{p.Prefix}{p.FirstName} {p.LastName}",
|
||||||
PositionName = p.PositionName,
|
PositionName = p.PositionName,
|
||||||
Remark = !string.IsNullOrEmpty(p.Remark) ? p.Remark.ToThaiNumber() : "",
|
// Remark = !string.IsNullOrEmpty(p.Remark) ? p.Remark.ToThaiNumber() : "",
|
||||||
ExamId = !string.IsNullOrEmpty(p.ExamId) ? p.ExamId.ToThaiNumber() : "",
|
ExamId = !string.IsNullOrEmpty(p.ExamId) ? p.ExamId.ToThaiNumber() : "",
|
||||||
ExamName =
|
ExamName =
|
||||||
$"ครั้งที่ {(p.RecruitImport != null ? p.RecruitImport.Order.ToString().ToThaiNumber() : "")}/{(p.RecruitImport != null ? p.RecruitImport.Year.ToThaiYear().ToString().ToThaiNumber() : "")}",
|
$"ครั้งที่ {(p.RecruitImport != null ? p.RecruitImport.Order.ToString().ToThaiNumber() : "")}/{(p.RecruitImport != null ? p.RecruitImport.Year.ToThaiYear().ToString().ToThaiNumber() : "")}",
|
||||||
|
|
@ -380,7 +380,7 @@ namespace BMA.EHR.Report.Service.Controllers
|
||||||
No = (index + 1).ToString().ToThaiNumber(),
|
No = (index + 1).ToString().ToThaiNumber(),
|
||||||
ExamId = x.ExamId,
|
ExamId = x.ExamId,
|
||||||
FullName = x.FullName,
|
FullName = x.FullName,
|
||||||
Remark = x.Remark
|
// Remark = x.Remark
|
||||||
}).ToList()
|
}).ToList()
|
||||||
})
|
})
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
@ -426,7 +426,7 @@ namespace BMA.EHR.Report.Service.Controllers
|
||||||
var table = new iText.Layout.Element.Table(UnitValue.CreatePercentArray(columnWidths)).UseAllAvailableWidth();
|
var table = new iText.Layout.Element.Table(UnitValue.CreatePercentArray(columnWidths)).UseAllAvailableWidth();
|
||||||
|
|
||||||
// Table Header
|
// Table Header
|
||||||
string[] headers = { "ลำดับที่", "เลขประจำตัวสอบ", "ชื่อ-สกุล", "หมายเหตุ" };
|
string[] headers = { "ลำดับที่", "เลขประจำตัวสอบ", "ชื่อ - สกุล", "หมายเหตุ" };
|
||||||
foreach (var h in headers)
|
foreach (var h in headers)
|
||||||
{
|
{
|
||||||
table.AddHeaderCell(new Cell()
|
table.AddHeaderCell(new Cell()
|
||||||
|
|
@ -444,8 +444,7 @@ namespace BMA.EHR.Report.Service.Controllers
|
||||||
.SetTextAlignment(TextAlignment.CENTER));
|
.SetTextAlignment(TextAlignment.CENTER));
|
||||||
table.AddCell(new Cell().Add(new Paragraph(x.FullName ?? "").SetMultipliedLeading(1.0f))
|
table.AddCell(new Cell().Add(new Paragraph(x.FullName ?? "").SetMultipliedLeading(1.0f))
|
||||||
.SetTextAlignment(TextAlignment.LEFT));
|
.SetTextAlignment(TextAlignment.LEFT));
|
||||||
table.AddCell(new Cell().Add(new Paragraph(x.Remark ?? "").SetMultipliedLeading(1.0f))
|
table.AddCell(new Cell());
|
||||||
.SetTextAlignment(TextAlignment.CENTER));
|
|
||||||
}
|
}
|
||||||
document.Add(table);
|
document.Add(table);
|
||||||
// เว้นระหว่าง groups
|
// เว้นระหว่าง groups
|
||||||
|
|
@ -558,7 +557,7 @@ namespace BMA.EHR.Report.Service.Controllers
|
||||||
.Join(_context.RecruitScores.AsQueryable()
|
.Join(_context.RecruitScores.AsQueryable()
|
||||||
.Include(x => x.ScoreImport)
|
.Include(x => x.ScoreImport)
|
||||||
.Where(x => x.ScoreImport.RecruitImportId == id)
|
.Where(x => x.ScoreImport.RecruitImportId == id)
|
||||||
.Where(x => x.ExamStatus == "ผ่าน"),
|
.Where(x => x.ExamStatus == "ผ่าน" && !string.IsNullOrEmpty(x.Number)),
|
||||||
rc => new { id = rc.RecruitImport.Id, examId = rc.ExamId },
|
rc => new { id = rc.RecruitImport.Id, examId = rc.ExamId },
|
||||||
sc => new { id = sc.ScoreImport.RecruitImportId, examId = sc.ExamId },
|
sc => new { id = sc.ScoreImport.RecruitImportId, examId = sc.ExamId },
|
||||||
(p, sr) => new
|
(p, sr) => new
|
||||||
|
|
@ -570,12 +569,12 @@ namespace BMA.EHR.Report.Service.Controllers
|
||||||
? ""
|
? ""
|
||||||
: $"{p.RecruitImport.Name} ครั้งที่ {p.RecruitImport.Order.ToString().ToThaiNumber()}/{p.RecruitImport.Year.ToThaiYear().ToString().ToThaiNumber()}",
|
: $"{p.RecruitImport.Name} ครั้งที่ {p.RecruitImport.Order.ToString().ToThaiNumber()}/{p.RecruitImport.Year.ToThaiYear().ToString().ToThaiNumber()}",
|
||||||
Number = sr == null || sr.Number == null ? 0 : Convert.ToInt32(sr.Number),
|
Number = sr == null || sr.Number == null ? 0 : Convert.ToInt32(sr.Number),
|
||||||
SumScore = sr == null
|
ExamId = string.IsNullOrEmpty(p.ExamId) ? "-" : p.ExamId.ToThaiNumber(),
|
||||||
? "๐"
|
// SumScore = sr == null
|
||||||
: (((decimal)(sr.SumA > 0 ? sr.SumA : 0) + (sr.SumB > 0 ? sr.SumB : 0) + (sr.SumC > 0 ? sr.SumC : 0)).ToString("0.00")).ToThaiNumber(),
|
// ? "๐"
|
||||||
|
// : (((decimal)(sr.SumA > 0 ? sr.SumA : 0) + (sr.SumB > 0 ? sr.SumB : 0) + (sr.SumC > 0 ? sr.SumC : 0)).ToString("0.00")).ToThaiNumber(),
|
||||||
})
|
})
|
||||||
.OrderBy(x => x.Number)
|
.OrderBy(x => x.Number)
|
||||||
.Where(x => x.ExamResult == "ผ่าน")
|
|
||||||
.ToListAsync();
|
.ToListAsync();
|
||||||
|
|
||||||
if (data.Count == 0)
|
if (data.Count == 0)
|
||||||
|
|
@ -594,7 +593,8 @@ namespace BMA.EHR.Report.Service.Controllers
|
||||||
{
|
{
|
||||||
Number = x.Number > 0 ? x.Number.ToString().ToThaiNumber() : "",
|
Number = x.Number > 0 ? x.Number.ToString().ToThaiNumber() : "",
|
||||||
FullName = x.FullName,
|
FullName = x.FullName,
|
||||||
SumScore = x.SumScore
|
// SumScore = x.SumScore
|
||||||
|
ExamId = x.ExamId,
|
||||||
}).ToList()
|
}).ToList()
|
||||||
})
|
})
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
@ -611,13 +611,13 @@ namespace BMA.EHR.Report.Service.Controllers
|
||||||
document.SetFont(font).SetFontSize(16);
|
document.SetFont(font).SetFontSize(16);
|
||||||
document.SetMargins(30, 15, 20, 15);
|
document.SetMargins(30, 15, 20, 15);
|
||||||
|
|
||||||
var title = new Paragraph($"รายชื่อผู้สอบแข่งขันได้\n{examName}")
|
var title = new Paragraph($"รายชื่อผู้สอบแข่งขันได้\nใน{examName}")
|
||||||
.SetMultipliedLeading(1.0f)
|
.SetMultipliedLeading(1.0f)
|
||||||
.SetBold()
|
.SetBold()
|
||||||
.SetTextAlignment(TextAlignment.CENTER);
|
.SetTextAlignment(TextAlignment.CENTER);
|
||||||
|
|
||||||
document.Add(title);
|
document.Add(title);
|
||||||
float[] columnWidths = { 10f, 20f, 45f, 25f };
|
float[] columnWidths = { 10f, 25f, 25f, 25f };
|
||||||
foreach (var g in groupData)
|
foreach (var g in groupData)
|
||||||
{
|
{
|
||||||
// Header per group
|
// Header per group
|
||||||
|
|
@ -631,7 +631,7 @@ namespace BMA.EHR.Report.Service.Controllers
|
||||||
|
|
||||||
var table = new iText.Layout.Element.Table(UnitValue.CreatePercentArray(columnWidths)).UseAllAvailableWidth();
|
var table = new iText.Layout.Element.Table(UnitValue.CreatePercentArray(columnWidths)).UseAllAvailableWidth();
|
||||||
|
|
||||||
string[] headers = { "ลำดับที่", "สนามสอบ", "ชื่อ - นามสกุล", "คะแนนสอบ" };
|
string[] headers = { "ลำดับที่", "เลขประจำตัวสอบ", "ชื่อ - สกุล", "หมายเหตุ" };
|
||||||
foreach (var h in headers)
|
foreach (var h in headers)
|
||||||
{
|
{
|
||||||
table.AddHeaderCell(new Cell()
|
table.AddHeaderCell(new Cell()
|
||||||
|
|
@ -644,11 +644,11 @@ namespace BMA.EHR.Report.Service.Controllers
|
||||||
{
|
{
|
||||||
table.AddCell(new Cell().Add(new Paragraph(p.Number ?? "").SetMultipliedLeading(1.0f))
|
table.AddCell(new Cell().Add(new Paragraph(p.Number ?? "").SetMultipliedLeading(1.0f))
|
||||||
.SetTextAlignment(TextAlignment.CENTER));
|
.SetTextAlignment(TextAlignment.CENTER));
|
||||||
table.AddCell(new Cell());
|
table.AddCell(new Cell().Add(new Paragraph(p.ExamId ?? "").SetMultipliedLeading(1.0f))
|
||||||
|
.SetTextAlignment(TextAlignment.CENTER));
|
||||||
table.AddCell(new Cell().Add(new Paragraph(p.FullName ?? "").SetMultipliedLeading(1.0f))
|
table.AddCell(new Cell().Add(new Paragraph(p.FullName ?? "").SetMultipliedLeading(1.0f))
|
||||||
.SetTextAlignment(TextAlignment.LEFT));
|
.SetTextAlignment(TextAlignment.LEFT));
|
||||||
table.AddCell(new Cell().Add(new Paragraph(p.SumScore ?? "").SetMultipliedLeading(1.0f))
|
table.AddCell(new Cell());
|
||||||
.SetTextAlignment(TextAlignment.CENTER));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
document.Add(table);
|
document.Add(table);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue