Merge branch 'develop' into dev
All checks were successful
Build & Deploy on Dev / build (push) Successful in 49s

* develop:
  build reload image
  add authname
  แก้ลำดับผลสอบ
  test build
  build no noti
  โหลดใบรับรอง
This commit is contained in:
Warunee Tamkoo 2025-09-30 16:12:28 +07:00
commit 3ed62cea92
7 changed files with 113 additions and 51 deletions

View file

@ -4,20 +4,13 @@ on:
push: push:
tags: tags:
- "reportv1-[0-9]+.[0-9]+.[0-9]+" - "reportv1-[0-9]+.[0-9]+.[0-9]+"
# push:
# tags:
# - 'v[0-9]+.[0-9]+.[0-9]+'
# tags-ignore:
# - '2.*'
# Allow run workflow manually from Action tab
workflow_dispatch: workflow_dispatch:
env: env:
REGISTRY: docker.frappet.com REGISTRY: docker.frappet.com
IMAGE_NAME: ehr/bma-ehr-report-service IMAGE_NAME: ehr/bma-ehr-report-service
DEPLOY_HOST: frappet.com DEPLOY_HOST: frappet.com
DEPLOY_PORT: 10102 DEPLOY_PORT: 10102
COMPOSE_PATH: /home/frappet/docker/bma-ehr COMPOSE_PATH: /home/frappet/docker/bma/bma-ehr-report
# COMPOSE_PATH: /home/frappet/docker/bma/bma-ehr-report
TOKEN_LINE: uxuK5hDzS2DsoC5piJBrWRLiz8GgY7iMZZldOWsDDF0 TOKEN_LINE: uxuK5hDzS2DsoC5piJBrWRLiz8GgY7iMZZldOWsDDF0
jobs: jobs:

View file

@ -11,6 +11,8 @@ using BMA.EHR.Organization.Service.Extensions;
// using BMA.EHR.Core; // using BMA.EHR.Core;
using System.Text; using System.Text;
using static System.Runtime.InteropServices.JavaScript.JSType; using static System.Runtime.InteropServices.JavaScript.JSType;
using System.Net.Http.Headers;
using Newtonsoft.Json;
namespace BMA.EHR.Report.Service.Controllers namespace BMA.EHR.Report.Service.Controllers
{ {
@ -28,6 +30,7 @@ namespace BMA.EHR.Report.Service.Controllers
private readonly IWebHostEnvironment _hostingEnvironment; private readonly IWebHostEnvironment _hostingEnvironment;
private readonly IConfiguration _configuration; private readonly IConfiguration _configuration;
private readonly string space = ""; private readonly string space = "";
private readonly IHttpContextAccessor _httpContextAccessor;
#endregion #endregion
@ -35,13 +38,16 @@ namespace BMA.EHR.Report.Service.Controllers
public ExamReportController(ExamDbContext context, public ExamReportController(ExamDbContext context,
IWebHostEnvironment hostingEnvironment, IWebHostEnvironment hostingEnvironment,
IHttpContextAccessor httpContextAccessor,
IConfiguration configuration) IConfiguration configuration)
{ {
this._context = context; this._context = context;
this._hostingEnvironment = hostingEnvironment; this._hostingEnvironment = hostingEnvironment;
this._configuration = configuration; this._configuration = configuration;
this._httpContextAccessor = httpContextAccessor;
} }
private string? token => _httpContextAccessor.HttpContext.Request.Headers["Authorization"];
#endregion #endregion
#region " Methods " #region " Methods "
@ -108,6 +114,34 @@ namespace BMA.EHR.Report.Service.Controllers
{ {
try try
{ {
var _data = await _context.Disables.AsQueryable()
.Include(x => x.PeriodExam)
.Where(x => x.PeriodExam.Id == id)
.Where(x => x.ExamId == examId)
.FirstOrDefaultAsync();
if (_data == null)
return Error("ไม่พบข้อมูลในระบบ");
// if (_data.AuthName == null || _data.AuthName == "")
// {
// var apiUrl = $"{_configuration["API"]}/org/find/head/officer";
// using (var client = new HttpClient())
// {
// client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token.Replace("Bearer ", ""));
// client.DefaultRequestHeaders.Add("api_key", _configuration["API_KEY"]);
// var _req = new HttpRequestMessage(HttpMethod.Get, apiUrl);
// var _res = await client.SendAsync(_req);
// var _result = await _res.Content.ReadAsStringAsync();
// if (_res.IsSuccessStatusCode)
// {
// var org = JsonConvert.DeserializeObject<dynamic>(_result);
// _data.AuthName = org.result.name == null ? "" : org.result.name;
// _data.AuthPosition = org.result.position == null ? "" : org.result.position;
// await _context.SaveChangesAsync();
// }
// }
// }
var data = await _context.Disables.AsQueryable() var data = await _context.Disables.AsQueryable()
.Include(x => x.PeriodExam) .Include(x => x.PeriodExam)
.Where(x => x.PeriodExam.Id == id) .Where(x => x.PeriodExam.Id == id)
@ -125,8 +159,8 @@ namespace BMA.EHR.Report.Service.Controllers
FullName = $"{p.Prefix}{p.FirstName} {p.LastName}", FullName = $"{p.Prefix}{p.FirstName} {p.LastName}",
ExamResult = sr == null ? "" : sr.ExamStatus, ExamResult = sr == null ? "" : sr.ExamStatus,
EndDate = p.PeriodExam.RegisterEndDate == null ? "" : (p.PeriodExam.RegisterEndDate.Value.ToThaiFullDate3()), EndDate = p.PeriodExam.RegisterEndDate == null ? "" : (p.PeriodExam.RegisterEndDate.Value.ToThaiFullDate3()),
AuthName = "นายณัฐพงศ์ ดิษยบุตร", AuthName = p.PeriodExam.AuthName,
AuthPosition = "หัวหน้าสำนักงาน ก.ก." AuthPosition = p.PeriodExam.AuthPosition
}) })
.FirstOrDefaultAsync(); .FirstOrDefaultAsync();
@ -443,7 +477,7 @@ namespace BMA.EHR.Report.Service.Controllers
//University = p.Educations.First().University, //University = p.Educations.First().University,
//PositionName = p.PositionName, //PositionName = p.PositionName,
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, Number = sr == null || sr.Number == null ? 0 : Convert.ToInt32(sr.Number),
//FullA = sr == null ? "" : (sr.FullA.ToString()), //FullA = sr == null ? "" : (sr.FullA.ToString()),
//SumA = sr == null ? "" : (sr.SumA.ToString()), //SumA = sr == null ? "" : (sr.SumA.ToString()),
//FullB = sr == null ? "" : (sr.FullB.ToString()), //FullB = sr == null ? "" : (sr.FullB.ToString()),
@ -452,8 +486,7 @@ namespace BMA.EHR.Report.Service.Controllers
//SumC = sr == null ? "" : (sr.SumC.ToString()), //SumC = sr == null ? "" : (sr.SumC.ToString()),
SumScore = sr == null SumScore = sr == null
? "" ? ""
//: (((sr.SumA > 0 ? sr.SumA : 0) + /*sr.SumB +*/ (sr.SumC > 0 ? sr.SumC : 0)).ToString()).ToThaiNumber(), : (((sr.SumA > 0 ? sr.SumA : 0) + (sr.SumB > 0 ? sr.SumB : 0) + (sr.SumC > 0 ? sr.SumC : 0)).ToString()).ToThaiNumber(),
: (((sr.SumA > 0 ? sr.SumA : 0) + (sr.SumB > 0 ? sr.SumB : 0 ) + (sr.SumC > 0 ? sr.SumC : 0)).ToString()).ToThaiNumber(),
}) })
.OrderBy(x => x.Number) .OrderBy(x => x.Number)
.Where(x => x.Id == id) .Where(x => x.Id == id)
@ -462,10 +495,11 @@ namespace BMA.EHR.Report.Service.Controllers
if (data.Count == 0) if (data.Count == 0)
return Error("ไม่พบข้อมูลในระบบ"); return Error("ไม่พบข้อมูลในระบบ");
var data_ = data.Select(x => new var data_ = data.Select(x => new
{ {
x.ExamName, x.ExamName,
Number = x.Number.ToThaiNumber(), Number = x.Number.ToString().ToThaiNumber(),
x.ExamId, x.ExamId,
x.FullName, x.FullName,
x.SumScore x.SumScore

View file

@ -75,23 +75,34 @@ namespace BMA.EHR.Report.Service.Controllers
{ {
try try
{ {
var name = ""; var _data = await _context.Recruits.AsQueryable()
var position = ""; .Include(x => x.RecruitImport)
var apiUrl = $"{_configuration["API"]}/org/find/head/officer"; .Where(x => x.RecruitImport.Id == id)
using (var client = new HttpClient()) .Where(x => x.ExamId == examId)
{ .FirstOrDefaultAsync();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token.Replace("Bearer ", "")); if (_data == null)
client.DefaultRequestHeaders.Add("api_key", _configuration["API_KEY"]); return Error("ไม่พบข้อมูลในระบบ");
var _req = new HttpRequestMessage(HttpMethod.Get, apiUrl);
var _res = await client.SendAsync(_req); // if (_data.AuthName == null || _data.AuthName == "")
var _result = await _res.Content.ReadAsStringAsync(); // {
if (_res.IsSuccessStatusCode) // var apiUrl = $"{_configuration["API"]}/org/find/head/officer";
{ // using (var client = new HttpClient())
var org = JsonConvert.DeserializeObject<dynamic>(_result); // {
name = org.result.rootId == null ? "" : org.result.rootId; // client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token.Replace("Bearer ", ""));
position = org.result.rootId == null ? "" : org.result.rootId; // client.DefaultRequestHeaders.Add("api_key", _configuration["API_KEY"]);
} // var _req = new HttpRequestMessage(HttpMethod.Get, apiUrl);
} // var _res = await client.SendAsync(_req);
// var _result = await _res.Content.ReadAsStringAsync();
// if (_res.IsSuccessStatusCode)
// {
// var org = JsonConvert.DeserializeObject<dynamic>(_result);
// _data.AuthName = org.result.name == null ? "" : org.result.name;
// _data.AuthPosition = org.result.position == null ? "" : org.result.position;
// await _context.SaveChangesAsync();
// }
// }
// }
var data = await _context.Recruits.AsQueryable() var data = await _context.Recruits.AsQueryable()
.Include(x => x.RecruitImport) .Include(x => x.RecruitImport)
.Where(x => x.RecruitImport.Id == id) .Where(x => x.RecruitImport.Id == id)
@ -109,8 +120,8 @@ namespace BMA.EHR.Report.Service.Controllers
FullName = $"{p.Prefix}{p.FirstName} {p.LastName}", FullName = $"{p.Prefix}{p.FirstName} {p.LastName}",
ExamResult = sr == null ? "" : sr.ExamStatus, ExamResult = sr == null ? "" : sr.ExamStatus,
EndDate = p.RecruitImport.RegisterEndDate == null ? "-" : p.RecruitImport.RegisterEndDate.Value.ToThaiFullDate3(), EndDate = p.RecruitImport.RegisterEndDate == null ? "-" : p.RecruitImport.RegisterEndDate.Value.ToThaiFullDate3(),
AuthName = name, AuthName = p.RecruitImport.AuthName,
AuthPosition = position AuthPosition = p.RecruitImport.AuthPosition
}) })
.FirstOrDefaultAsync(); .FirstOrDefaultAsync();
if (data == null) if (data == null)
@ -391,7 +402,7 @@ namespace BMA.EHR.Report.Service.Controllers
{ {
try try
{ {
var data = await _context.Recruits.AsQueryable() var data = await _context.Recruits.AsQueryable()
.Include(x => x.RecruitImport) .Include(x => x.RecruitImport)
.ThenInclude(x => x.ScoreImport) .ThenInclude(x => x.ScoreImport)
.Include(x => x.Documents) .Include(x => x.Documents)
@ -424,8 +435,7 @@ 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.Number == null ? "" : sr.Number,
//ExamCount = _recruitService.GetExamCount(p.CitizenId), //ExamCount = _recruitService.GetExamCount(p.CitizenId),
//ScoreExpire = p.RecruitImport.AnnouncementDate == null ? "" : p.RecruitImport.AnnouncementDate.Value.AddYears(2).ToThaiShortDate(), //ScoreExpire = p.RecruitImport.AnnouncementDate == null ? "" : p.RecruitImport.AnnouncementDate.Value.AddYears(2).ToThaiShortDate(),
@ -438,19 +448,20 @@ namespace BMA.EHR.Report.Service.Controllers
//SumC = sr.SumC == null ? 0.0 : sr.SumC, //SumC = sr.SumC == null ? 0.0 : sr.SumC,
SumScore = sr == null SumScore = sr == null
? "" ? ""
: (((sr.SumA > 0 ? sr.SumA : 0) + /*sr.SumB +*/ (sr.SumC > 0 ? sr.SumC : 0)).ToString()).ToThaiNumber(), : (((sr.SumA > 0 ? sr.SumA : 0) + (sr.SumB > 0 ? sr.SumB : 0) + (sr.SumC > 0 ? sr.SumC : 0)).ToString()).ToThaiNumber(),
}) })
.OrderBy(x => x.Number) .OrderBy(x => x.Number)
.Where(x => x.Id == id) .Where(x => x.Id == id)
.Where(x => x.ExamResult == "ผ่าน") .Where(x => x.ExamResult == "ผ่าน")
.ToListAsync(); .ToListAsync();
if (data.Count == 0) return Error("ไม่พบข้อมูลในระบบ"); if (data.Count == 0)
return Error("ไม่พบข้อมูลในระบบ");
var data_ = data.Select(x => new var data_ = data.Select(x => new
{ {
x.ExamName, x.ExamName,
Number = x.Number.ToThaiNumber(), Number = x.Number.ToString().ToThaiNumber(),
x.ExamId, x.ExamId,
x.FullName, x.FullName,
x.SumScore x.SumScore

View file

@ -78,5 +78,15 @@ namespace BMA.EHR.Recurit.Exam.Service.Models.Disables
public DateTime ApplyDate { get; set; } public DateTime ApplyDate { get; set; }
public string? PositionName { get; set; } public string? PositionName { get; set; }
public string? PositionType { get; set; }
public string? PositionLevel { get; set; }
// public string? AuthName { get; set; }
// public string? AuthPosition { get; set; }
[Comment("บัญชีสอบ")]
public string? HddPosition { get; set; } = string.Empty;
[Comment("ประเภทการสอบภาค ก.")]
public string? typeTest { get; set; } = string.Empty;
} }
} }

View file

@ -88,6 +88,8 @@ namespace BMA.EHR.Recurit.Exam.Service.Models
[Comment("สำนัก")] [Comment("สำนัก")]
public string? Category { get; set; } public string? Category { get; set; }
public string? AuthName { get; set; }
public string? AuthPosition { get; set; }
[Comment("รายชื่อคนสม้ครในรอบ")] [Comment("รายชื่อคนสม้ครในรอบ")]
public List<Candidate> Candidate { get; set; } = new List<Candidate>(); public List<Candidate> Candidate { get; set; } = new List<Candidate>();

View file

@ -78,5 +78,15 @@ namespace BMA.EHR.Recruit.Service.Models.Recruits
public DateTime ApplyDate { get; set; } public DateTime ApplyDate { get; set; }
public string? PositionName { get; set; } public string? PositionName { get; set; }
public string? PositionType { get; set; }
public string? PositionLevel { get; set; }
// public string? AuthName { get; set; }
// public string? AuthPosition { get; set; }
[Comment("บัญชีสอบ")]
public string? HddPosition { get; set; } = string.Empty;
[Comment("ประเภทการสอบภาค ก.")]
public string? typeTest { get; set; } = string.Empty;
} }
} }

View file

@ -6,16 +6,16 @@ using BMA.EHR.Report.Service.Models;
namespace BMA.EHR.Recruit.Service.Models.Recruits namespace BMA.EHR.Recruit.Service.Models.Recruits
{ {
public class RecruitImport : EntityBase public class RecruitImport : EntityBase
{ {
[Required, Comment("ปีที่จัดการสอบ"), Column(Order = 1)] [Required, Comment("ปีที่จัดการสอบ"), Column(Order = 1)]
public int Year { get; set; } public int Year { get; set; }
[Required, MaxLength(250), Comment("ชื่อการสอบ"), Column(Order = 2)] [Required, MaxLength(250), Comment("ชื่อการสอบ"), Column(Order = 2)]
public string Name { get; set; } = string.Empty; public string Name { get; set; } = string.Empty;
[Required, Comment("ครั้งที่"), Column(Order = 3)] [Required, Comment("ครั้งที่"), Column(Order = 3)]
public int Order { get; set; } = 1; public int Order { get; set; } = 1;
[Column(Order = 4, TypeName = "text"), Comment("รายละเอียด")] [Column(Order = 4, TypeName = "text"), Comment("รายละเอียด")]
public string? Detail { get; set; } public string? Detail { get; set; }
@ -46,15 +46,17 @@ namespace BMA.EHR.Recruit.Service.Models.Recruits
[Column(Order = 13, TypeName = "text"), Comment("หมายเหตุ")] [Column(Order = 13, TypeName = "text"), Comment("หมายเหตุ")]
public string? Note { get; set; } public string? Note { get; set; }
public string? AuthName { get; set; }
public string? AuthPosition { get; set; }
public DateTime? AnnouncementDate { get; set; } public DateTime? AnnouncementDate { get; set; }
public Document ImportFile { get; set; } = new Document(); public Document ImportFile { get; set; } = new Document();
public List<Recruit> Recruits { get; set; } = new List<Recruit>(); public List<Recruit> Recruits { get; set; } = new List<Recruit>();
public ScoreImport ScoreImport { get; set; } public ScoreImport ScoreImport { get; set; }
public List<RecruitImportHistory> ImportHostories { get; set; } = new List<RecruitImportHistory>(); public List<RecruitImportHistory> ImportHostories { get; set; } = new List<RecruitImportHistory>();
} }
} }