This commit is contained in:
AdisakKanthawilang 2024-12-13 14:18:14 +07:00
parent d0235e0c53
commit 79237c4a7f

View file

@ -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<RecruitController> _logger;
//private readonly DateTimeExtension;
#endregion
#region " Constructor and Destructor "
@ -56,7 +62,9 @@ namespace BMA.EHR.Recruit.Service.Controllers
RecruitService recruitService,
IHttpContextAccessor httpContextAccessor,
ILogger<RecruitController> 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 "
/// <summary>
/// รายงานจำนวนผู้เข้าสอบแข่งขันเพื่อบรรจุเข้ารับราชการเป็นข้าราชการ กทม. สามัญ
/// </summary>
/// <param name="year">ปีงบประมาณ</param>
/// <returns></returns>
/// <response code="200">เมื่อทำการอ่านข้อมูลจำนวนผู้เข้าสอบแข่งขันเพื่อบรรจุเข้ารับราชการเป็นข้าราชการ กทม. สามัญสำเร็จ</response>
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
[HttpGet("report1"), DisableRequestSizeLimit]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
public async Task<ActionResult<ResponseObject>> report1(string year)
{
try
{
List<ExamInfo> header = new List<ExamInfo>();
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);
}
}
/// <summary>
/// รายงานจำนวนผู้สอบผ่านแข่งขันเพื่อบรรจุเข้ารับราชการเป็นข้าราชการ กทม. สามัญ
/// </summary>
/// <param name="year">ปีงบประมาณ</param>
/// <returns></returns>
/// <response code="200">เมื่อทำการอ่านข้อมูลจำนวนผู้สอบผ่านแข่งขันเพื่อบรรจุเข้ารับราชการเป็นข้าราชการ กทม. สามัญสำเร็จ</response>
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
[HttpGet("report2"), DisableRequestSizeLimit]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
public async Task<ActionResult<ResponseObject>> report2(string year)
{
try
{
List<ExamInfo> header = new List<ExamInfo>();
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
}
}