From 79237c4a7f8a914f5a84cf1bca498dd1c949fc25 Mon Sep 17 00:00:00 2001 From: AdisakKanthawilang Date: Fri, 13 Dec 2024 14:18:14 +0700 Subject: [PATCH] #984(2) --- Controllers/RecruitController.cs | 179 ++++++++++++++++++++++++++++++- 1 file changed, 176 insertions(+), 3 deletions(-) diff --git a/Controllers/RecruitController.cs b/Controllers/RecruitController.cs index e8f3b5a..1e67750 100644 --- a/Controllers/RecruitController.cs +++ b/Controllers/RecruitController.cs @@ -1,5 +1,9 @@ using Amazon.S3.Model; -// using BMA.EHR.Extensions; +using BMA.EHR.MetaData.Service.Models; +using BMA.EHR.Profile.Service.Models.HR; + + +//using BMA.EHR.Extensions; using BMA.EHR.Recruit.Service.Core; using BMA.EHR.Recruit.Service.Data; using BMA.EHR.Recruit.Service.Extensions; @@ -23,6 +27,7 @@ using System.Net; using System.Net.WebSockets; using System.Security.Claims; using System.Text; +using static System.Runtime.InteropServices.JavaScript.JSType; namespace BMA.EHR.Recruit.Service.Controllers { @@ -44,7 +49,8 @@ namespace BMA.EHR.Recruit.Service.Controllers private readonly PermissionRepository _permission; private readonly IHttpContextAccessor _httpContextAccessor; private readonly ILogger _logger; - + //private readonly DateTimeExtension; + #endregion #region " Constructor and Destructor " @@ -56,7 +62,9 @@ namespace BMA.EHR.Recruit.Service.Controllers RecruitService recruitService, IHttpContextAccessor httpContextAccessor, ILogger logger, - PermissionRepository permission) + PermissionRepository permission + //DateTimeExtension extensions + ) { _context = context; _contextMetadata = contextMetadata; @@ -66,6 +74,7 @@ namespace BMA.EHR.Recruit.Service.Controllers _httpContextAccessor = httpContextAccessor; _logger = logger; _permission = permission; + //_extensions = extensions; } #endregion @@ -189,6 +198,15 @@ namespace BMA.EHR.Recruit.Service.Controllers } } + private class ExamInfo + { + public string PositionName { get; set; } + public string Gender { get; set; } + public int Age { get; set; } + public string Degree { get; set; } + public string Result { get; set; } + } + #endregion #region " Ex. Upload, Download and Delete file " @@ -2200,6 +2218,161 @@ namespace BMA.EHR.Recruit.Service.Controllers #endregion + #region " Report " + /// + /// รายงานจำนวนผู้เข้าสอบแข่งขันเพื่อบรรจุเข้ารับราชการเป็นข้าราชการ กทม. สามัญ + /// + /// ปีงบประมาณ + /// + /// เมื่อทำการอ่านข้อมูลจำนวนผู้เข้าสอบแข่งขันเพื่อบรรจุเข้ารับราชการเป็นข้าราชการ กทม. สามัญสำเร็จ + /// ไม่ได้ Login เข้าระบบ + /// เมื่อเกิดข้อผิดพลาดในการทำงาน + [HttpGet("report1"), DisableRequestSizeLimit] + [ProducesResponseType(StatusCodes.Status200OK)] + [ProducesResponseType(StatusCodes.Status401Unauthorized)] + [ProducesResponseType(StatusCodes.Status500InternalServerError)] + public async Task> report1(string year) + { + try + { + List header = new List(); + using (var cmd = _context.Database.GetDbConnection().CreateCommand()) + { + var sb = new StringBuilder(); + cmd.CommandTimeout = 0; + cmd.Parameters.Clear(); + sb.Clear(); + sb.Append(" SELECT * "); + sb.Append(" FROM exam_info "); + sb.Append(" Where score_year = @year"); + sb.Append(" ORDER BY Position_name ASC"); + cmd.CommandText = sb.ToString(); + cmd.Parameters.Add(new MySqlParameter("@year", MySqlDbType.Int32) { Value = year }); + _context.Database.OpenConnection(); + using (var reader = cmd.ExecuteReader()) + { + while (reader.Read()) + { + var examInfo = new ExamInfo + { + PositionName = reader["Position_name"].ToString(), + Gender = reader["Gender"].ToString(), + Age = DateTimeExtension.CalculateAge(Convert.ToDateTime(reader["Dateofbirth"]), 0, 0), + Degree = reader["Degree"].ToString(), + }; + + header.Add(examInfo); + } + + } + + } + var groupedResult = header + .GroupBy(x => new + { + x.PositionName, + x.Gender, + x.Age, + x.Degree + }) + .Select(group => new + { + Group = group.Key, + Amount = group.Count() + }) + .ToList(); + var resultMap = groupedResult.ToDictionary( + x => string.Join("_", x.Group.PositionName, x.Group.Gender, x.Group.Age, x.Group.Degree), + x => x); + + return Success(resultMap); + + } + catch (Exception ex) + { + return Error(ex); + } + } + + /// + /// รายงานจำนวนผู้สอบผ่านแข่งขันเพื่อบรรจุเข้ารับราชการเป็นข้าราชการ กทม. สามัญ + /// + /// ปีงบประมาณ + /// + /// เมื่อทำการอ่านข้อมูลจำนวนผู้สอบผ่านแข่งขันเพื่อบรรจุเข้ารับราชการเป็นข้าราชการ กทม. สามัญสำเร็จ + /// ไม่ได้ Login เข้าระบบ + /// เมื่อเกิดข้อผิดพลาดในการทำงาน + [HttpGet("report2"), DisableRequestSizeLimit] + [ProducesResponseType(StatusCodes.Status200OK)] + [ProducesResponseType(StatusCodes.Status401Unauthorized)] + [ProducesResponseType(StatusCodes.Status500InternalServerError)] + public async Task> report2(string year) + { + try + { + List header = new List(); + using (var cmd = _context.Database.GetDbConnection().CreateCommand()) + { + var sb = new StringBuilder(); + cmd.CommandTimeout = 0; + cmd.Parameters.Clear(); + sb.Clear(); + sb.Append(" SELECT * "); + sb.Append(" FROM exam_info "); + sb.Append(" Where score_year = @year"); + sb.Append(" AND result = 'ผ่าน'"); + sb.Append(" ORDER BY Position_name ASC"); + cmd.CommandText = sb.ToString(); + cmd.Parameters.Add(new MySqlParameter("@year", MySqlDbType.Int32) { Value = year }); + _context.Database.OpenConnection(); + using (var reader = cmd.ExecuteReader()) + { + while (reader.Read()) + { + var examInfo = new ExamInfo + { + PositionName = reader["Position_name"].ToString(), + Gender = reader["Gender"].ToString(), + Age = DateTimeExtension.CalculateAge(Convert.ToDateTime(reader["Dateofbirth"]), 0, 0), + Degree = reader["Degree"].ToString(), + Result = reader["Result"].ToString() + }; + + header.Add(examInfo); + } + + } + + } + var groupedResult = header + .GroupBy(x => new + { + x.PositionName, + x.Gender, + x.Age, + x.Degree, + x.Result + }) + .Select(group => new + { + Group = group.Key, + Amount = group.Count() + }) + .ToList(); + var resultMap = groupedResult.ToDictionary( + x => string.Join("_", x.Group.PositionName, x.Group.Gender, x.Group.Age, x.Group.Degree, x.Group.Result), + x => x); + + return Success(resultMap); + } + catch (Exception ex) + { + return Error(ex); + } + } #endregion + + #endregion + } } \ No newline at end of file