diff --git a/BMA.EHR.Placement.Service/Controllers/PlacementController.cs b/BMA.EHR.Placement.Service/Controllers/PlacementController.cs index 29139434..998af1d0 100644 --- a/BMA.EHR.Placement.Service/Controllers/PlacementController.cs +++ b/BMA.EHR.Placement.Service/Controllers/PlacementController.cs @@ -2773,15 +2773,285 @@ namespace BMA.EHR.Placement.Service.Controllers /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpGet("report1")] - public async Task> report1(string? nodeId = null, int? node = 0, DateOnly? startDate = null, DateOnly? startEnd = null) + public async Task> report1(string nodeId = "", int? node = null, DateTime? startDate = null, DateTime? endDate = null) { - var data = new + var apiUrl = $"{_configuration["API"]}/org/find/node-all"; + var data = new object(); + var data1 = new List(); + var data2 = new List(); + using (var client = new HttpClient()) { - template = "placement01", - reportName = "xlsx-report", - data = "" - }; + client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token.Replace("Bearer ", "")); + var _req = new HttpRequestMessage(HttpMethod.Post, apiUrl); + var _res = await client.PostAsJsonAsync(apiUrl, new + { + node, + nodeId, + }); + var _result = await _res.Content.ReadAsStringAsync(); + var orgs = JsonConvert.DeserializeObject(_result); + if (orgs == null || orgs.result == null) + return Error("ไม่พบหน่วยงานนี้ในระบบ", 404); + + int no = 1; + + foreach (var item in orgs.result.isRootTrue) + { + var placementProfiles = _context.PlacementProfiles + .Where(x => + x.CreatedAt.Date >= startDate && + x.CreatedAt.Date <= endDate && + x.rootId.Contains(item.rootId) && + x.PlacementStatus.Trim().ToUpper() == "DONE") + .GroupBy(x => x.typeCommand.Trim().ToUpper()) + .Select(g => new + { + TypeCommand = g.Key, + Count = g.Count() + }) + .ToList(); + + var placementAppointments = _context.PlacementAppointments + .Where(x => + x.CreatedAt.Date >= startDate && + x.CreatedAt.Date <= endDate && + x.rootId.Contains(item.rootId) && + x.Status.Trim().ToUpper() == "DONE" && + x.type.Trim().ToUpper() == "OFFICER") + .GroupBy(x => x.typeCommand.Trim().ToUpper()) + .Select(g => new + { + TypeCommand = g.Key, + Count = g.Count() + }) + .ToList(); + + var pt_count = _context.PlacementTransfers + .Where(x => + x.CreatedAt.Date >= startDate && + x.CreatedAt.Date <= endDate && + x.rootOldId.Contains(item.rootId) && + x.Status.Trim().ToUpper() == "DONE") + .Count(); + + var pr_count = _context.PlacementReceives + .Where(x => + x.CreatedAt.Date >= startDate && + x.CreatedAt.Date <= endDate && + x.rootId.Contains(item.rootId) && + x.Status.Trim().ToUpper() == "DONE") + .Count(); + + var po_count = _context.PlacementOfficers + .Where(x => + x.CreatedAt.Date >= startDate && + x.CreatedAt.Date <= endDate && + x.rootOldId.Contains(item.rootId) && + x.Status.Trim().ToUpper() == "DONE") + .Count(); + + var prp_count = _context.PlacementRepatriations + .Where(x => + x.CreatedAt.Date >= startDate && + x.CreatedAt.Date <= endDate && + x.rootOldId.Contains(item.rootId) && + x.Status.Trim().ToUpper() == "DONE") + .Count(); + + var ro_count = _context.RetirementOthers + .Where(x => + x.CreatedAt.Date >= startDate && + x.CreatedAt.Date <= endDate && + x.rootOldId.Contains(item.rootId) && + x.Status.Trim().ToUpper() == "DONE") + .Count(); + + var pp_appoint = placementProfiles.FirstOrDefault(x => x.TypeCommand == "APPOINT")?.Count ?? 0; + var pp_slip = placementProfiles.FirstOrDefault(x => x.TypeCommand == "SLIP")?.Count ?? 0; + var pp_move = placementProfiles.FirstOrDefault(x => x.TypeCommand == "MOVE")?.Count ?? 0; + + var pa_appoint = placementAppointments.FirstOrDefault(x => x.TypeCommand == "APPOINT")?.Count ?? 0; + var pa_slip = placementAppointments.FirstOrDefault(x => x.TypeCommand == "SLIP")?.Count ?? 0; + var pa_move = placementAppointments.FirstOrDefault(x => x.TypeCommand == "MOVE")?.Count ?? 0; + + data1.Add(new + { + no = no, + rootName = item.name, + pp_appoint = pp_appoint, + pp_slip = pp_slip, + pp_move = pp_move, + pa_appoint = pa_appoint, + pa_slip = pa_slip, + pa_move = pa_move, + pt_count = pt_count, + pr_count = pr_count, + po_count = po_count, + prp_count = prp_count, + ro_count = ro_count, + total = (pp_appoint + pp_slip + pp_move + pa_appoint + pa_slip + pa_move + pt_count + pr_count + po_count + prp_count + ro_count) + }); + no++; + } + no = 1; + foreach (var item in orgs.result.isRootFalse) + { + var placementProfiles = _context.PlacementProfiles + .Where(x => + x.CreatedAt.Date >= startDate && + x.CreatedAt.Date <= endDate && + x.rootId.Contains(item.rootId) && + x.PlacementStatus.Trim().ToUpper() == "DONE") + .GroupBy(x => x.typeCommand.Trim().ToUpper()) + .Select(g => new + { + TypeCommand = g.Key, + Count = g.Count() + }) + .ToList(); + + var placementAppointments = _context.PlacementAppointments + .Where(x => + x.CreatedAt.Date >= startDate && + x.CreatedAt.Date <= endDate && + x.rootId.Contains(item.rootId) && + x.Status.Trim().ToUpper() == "DONE" && + x.type.Trim().ToUpper() == "OFFICER") + .GroupBy(x => x.typeCommand.Trim().ToUpper()) + .Select(g => new + { + TypeCommand = g.Key, + Count = g.Count() + }) + .ToList(); + + var pt_count = _context.PlacementTransfers + .Where(x => + x.CreatedAt.Date >= startDate && + x.CreatedAt.Date <= endDate && + x.rootOldId.Contains(item.rootId) && + x.Status.Trim().ToUpper() == "DONE") + .Count(); + + var pr_count = _context.PlacementReceives + .Where(x => + x.CreatedAt.Date >= startDate && + x.CreatedAt.Date <= endDate && + x.rootId.Contains(item.rootId) && + x.Status.Trim().ToUpper() == "DONE") + .Count(); + + var po_count = _context.PlacementOfficers + .Where(x => + x.CreatedAt.Date >= startDate && + x.CreatedAt.Date <= endDate && + x.rootOldId.Contains(item.rootId) && + x.Status.Trim().ToUpper() == "DONE") + .Count(); + + var prp_count = _context.PlacementRepatriations + .Where(x => + x.CreatedAt.Date >= startDate && + x.CreatedAt.Date <= endDate && + x.rootOldId.Contains(item.rootId) && + x.Status.Trim().ToUpper() == "DONE") + .Count(); + + var ro_count = _context.RetirementOthers + .Where(x => + x.CreatedAt.Date >= startDate && + x.CreatedAt.Date <= endDate && + x.rootOldId.Contains(item.rootId) && + x.Status.Trim().ToUpper() == "DONE") + .Count(); + + var pp_appoint = placementProfiles.FirstOrDefault(x => x.TypeCommand == "APPOINT")?.Count ?? 0; + var pp_slip = placementProfiles.FirstOrDefault(x => x.TypeCommand == "SLIP")?.Count ?? 0; + var pp_move = placementProfiles.FirstOrDefault(x => x.TypeCommand == "MOVE")?.Count ?? 0; + + var pa_appoint = placementAppointments.FirstOrDefault(x => x.TypeCommand == "APPOINT")?.Count ?? 0; + var pa_slip = placementAppointments.FirstOrDefault(x => x.TypeCommand == "SLIP")?.Count ?? 0; + var pa_move = placementAppointments.FirstOrDefault(x => x.TypeCommand == "MOVE")?.Count ?? 0; + + data2 .Add(new + { + no = no, + rootName = item.name, + pp_appoint = pp_appoint, + pp_slip = pp_slip, + pp_move = pp_move, + pa_appoint = pa_appoint, + pa_slip = pa_slip, + pa_move = pa_move, + pt_count = pt_count, + pr_count = pr_count, + po_count = po_count, + prp_count = prp_count, + ro_count = ro_count, + total = (pp_appoint + pp_slip + pp_move + pa_appoint + pa_slip + pa_move + pt_count + pr_count + po_count + prp_count + ro_count) + }); + no++; + } + } + + data = new + { + template = "reportPlacement01All", + reportName = "xlsx-report", + data = new + { + date = $"ตั้งแต่วันที่ {startDate.Value.Date.ToThaiShortDate().ToThaiNumber()} ถึง {endDate.Value.Date.ToThaiShortDate().ToThaiNumber()}", + dateCurrent = $"ณ วันที่ {DateTime.Now.Date.ToThaiShortDate().ToThaiNumber()}", + data1, + data1Count = new + { + pp_appoint = data1.Where(x => x.pp_appoint > 0).Sum(x => x.pp_appoint), + pp_slip = data1.Where(x => x.pp_slip > 0).Sum(x => x.pp_slip), + pp_move = data1.Where(x => x.pp_move > 0).Sum(x => x.pp_move), + pa_appoint = data1.Where(x => x.pa_appoint > 0).Sum(x => x.pa_appoint), + pa_slip = data1.Where(x => x.pa_slip > 0).Sum(x => x.pa_slip), + pa_move = data1.Where(x => x.pa_move > 0).Sum(x => x.pa_move), + pt_count = data1.Where(x => x.pt_count > 0).Sum(x => x.pt_count), + pr_count = data1.Where(x => x.pr_count > 0).Sum(x => x.pr_count), + po_count = data1.Where(x => x.po_count > 0).Sum(x => x.po_count), + prp_count = data1.Where(x => x.prp_count > 0).Sum(x => x.prp_count), + ro_count = data1.Where(x => x.ro_count > 0).Sum(x => x.ro_count), + total = data1.Where(x => x.total > 0).Sum(x => x.total) + }, + data2, + data2Count = new + { + pp_appoint = data2.Where(x => x.pp_appoint > 0).Sum(x => x.pp_appoint), + pp_slip = data2.Where(x => x.pp_slip > 0).Sum(x => x.pp_slip), + pp_move = data2.Where(x => x.pp_move > 0).Sum(x => x.pp_move), + pa_appoint = data2.Where(x => x.pa_appoint > 0).Sum(x => x.pa_appoint), + pa_slip = data2.Where(x => x.pa_slip > 0).Sum(x => x.pa_slip), + pa_move = data2.Where(x => x.pa_move > 0).Sum(x => x.pa_move), + pt_count = data2.Where(x => x.pt_count > 0).Sum(x => x.pt_count), + pr_count = data2.Where(x => x.pr_count > 0).Sum(x => x.pr_count), + po_count = data2.Where(x => x.po_count > 0).Sum(x => x.po_count), + prp_count = data2.Where(x => x.prp_count > 0).Sum(x => x.prp_count), + ro_count = data2.Where(x => x.ro_count > 0).Sum(x => x.ro_count), + total = data2.Where(x => x.total > 0).Sum(x => x.total) + }, + sum = new + { + pp_appoint = data1.Where(x => x.pp_appoint > 0).Sum(x => x.pp_appoint) + data2.Where(x => x.pp_appoint > 0).Sum(x => x.pp_appoint), + pp_slip = data1.Where(x => x.pp_slip > 0).Sum(x => x.pp_slip) + data2.Where(x => x.pp_slip > 0).Sum(x => x.pp_slip), + pp_move = data1.Where(x => x.pp_move > 0).Sum(x => x.pp_move) + data2.Where(x => x.pp_move > 0).Sum(x => x.pp_move), + pa_appoint = data1.Where(x => x.pa_appoint > 0).Sum(x => x.pa_appoint) + data2.Where(x => x.pa_appoint > 0).Sum(x => x.pa_appoint), + pa_slip = data1.Where(x => x.pa_slip > 0).Sum(x => x.pa_slip) + data2.Where(x => x.pa_slip > 0).Sum(x => x.pa_slip), + pa_move = data1.Where(x => x.pa_move > 0).Sum(x => x.pa_move) + data2.Where(x => x.pa_move > 0).Sum(x => x.pa_move), + pt_count = data1.Where(x => x.pt_count > 0).Sum(x => x.pt_count) + data2.Where(x => x.pt_count > 0).Sum(x => x.pt_count), + pr_count = data1.Where(x => x.pr_count > 0).Sum(x => x.pr_count) + data2.Where(x => x.pr_count > 0).Sum(x => x.pr_count), + po_count = data1.Where(x => x.po_count > 0).Sum(x => x.po_count) + data2.Where(x => x.po_count > 0).Sum(x => x.po_count), + prp_count = data1.Where(x => x.prp_count > 0).Sum(x => x.prp_count) + data2.Where(x => x.prp_count > 0).Sum(x => x.prp_count), + ro_count = data1.Where(x => x.ro_count > 0).Sum(x => x.ro_count) + data2.Where(x => x.ro_count > 0).Sum(x => x.ro_count), + total = data1.Where(x => x.total > 0).Sum(x => x.total) + data2.Where(x => x.total > 0).Sum(x => x.total) + } + } + }; return Success(data); } @@ -2794,17 +3064,129 @@ namespace BMA.EHR.Placement.Service.Controllers /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpGet("report2")] - public async Task> report2(string? nodeId = null, int? node = 0, DateOnly? startDate = null, DateOnly? startEnd = null) + public async Task> report2(string nodeId = "", int? node = null, DateTime? startDate = null, DateTime? endDate = null) { - - var data = new + var apiUrl = $"{_configuration["API"]}/org/find/node-all"; + var data = new object(); + var data1 = new List(); + var data2 = new List(); + using (var client = new HttpClient()) { - template = "placement02", + client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token.Replace("Bearer ", "")); + var _req = new HttpRequestMessage(HttpMethod.Post, apiUrl); + var _res = await client.PostAsJsonAsync(apiUrl, new + { + node, + nodeId, + }); + var _result = await _res.Content.ReadAsStringAsync(); + var orgs = JsonConvert.DeserializeObject(_result); + + if (orgs == null || orgs.result == null) + return Error("ไม่พบหน่วยงานนี้ในระบบ", 404); + + int no = 1; + + foreach (var item in orgs.result.isRootTrue) + { + var placementAppointments = _context.PlacementAppointments + .Where(x => + x.CreatedAt.Date >= startDate && + x.CreatedAt.Date <= endDate && + x.rootId.Contains(item.rootId) && + x.Status.Trim().ToUpper() == "DONE" && + x.type.Trim().ToUpper() == "OFFICER") + .GroupBy(x => x.typeCommand.Trim().ToUpper()) + .Select(g => new + { + TypeCommand = g.Key, + Count = g.Count() + }) + .ToList(); + + var pa_appoint = placementAppointments.FirstOrDefault(x => x.TypeCommand == "APPOINT")?.Count ?? 0; + var pa_slip = placementAppointments.FirstOrDefault(x => x.TypeCommand == "SLIP")?.Count ?? 0; + var pa_move = placementAppointments.FirstOrDefault(x => x.TypeCommand == "MOVE")?.Count ?? 0; + + data1.Add(new + { + no = no, + rootName = item.name, + pa_appoint = pa_appoint, + pa_slip = pa_slip, + pa_move = pa_move, + total = (pa_appoint + pa_slip + pa_move) + }); + no++; + } + no = 1; + foreach (var item in orgs.result.isRootFalse) + { + var placementAppointments = _context.PlacementAppointments + .Where(x => + x.CreatedAt.Date >= startDate && + x.CreatedAt.Date <= endDate && + x.rootId.Contains(item.rootId) && + x.Status.Trim().ToUpper() == "DONE" && + x.type.Trim().ToUpper() == "OFFICER") + .GroupBy(x => x.typeCommand.Trim().ToUpper()) + .Select(g => new + { + TypeCommand = g.Key, + Count = g.Count() + }) + .ToList(); + + var pa_appoint = placementAppointments.FirstOrDefault(x => x.TypeCommand == "APPOINT")?.Count ?? 0; + var pa_slip = placementAppointments.FirstOrDefault(x => x.TypeCommand == "SLIP")?.Count ?? 0; + var pa_move = placementAppointments.FirstOrDefault(x => x.TypeCommand == "MOVE")?.Count ?? 0; + + data2.Add(new + { + no = no, + rootName = item.name, + pa_appoint = pa_appoint, + pa_slip = pa_slip, + pa_move = pa_move, + total = (pa_appoint + pa_slip + pa_move) + }); + no++; + } + } + + data = new + { + template = "reportPlacement02All", reportName = "xlsx-report", - data = "" - + data = new + { + date = $"ตั้งแต่วันที่ {startDate.Value.Date.ToThaiShortDate().ToThaiNumber()} ถึง {endDate.Value.Date.ToThaiShortDate().ToThaiNumber()}", + dateCurrent = $"ณ วันที่ {DateTime.Now.Date.ToThaiShortDate().ToThaiNumber()}", + data1, + data1Count = new + { + pa_appoint = data1.Where(x => x.pa_appoint > 0).Sum(x => x.pa_appoint), + pa_slip = data1.Where(x => x.pa_slip > 0).Sum(x => x.pa_slip), + pa_move = data1.Where(x => x.pa_move > 0).Sum(x => x.pa_move), + total = data1.Where(x => x.total > 0).Sum(x => x.total) + }, + data2, + data2Count = new + { + pa_appoint = data2.Where(x => x.pa_appoint > 0).Sum(x => x.pa_appoint), + pa_slip = data2.Where(x => x.pa_slip > 0).Sum(x => x.pa_slip), + pa_move = data2.Where(x => x.pa_move > 0).Sum(x => x.pa_move), + total = data2.Where(x => x.total > 0).Sum(x => x.total) + }, + sum = new + { + pa_appoint = data1.Where(x => x.pa_appoint > 0).Sum(x => x.pa_appoint) + data2.Where(x => x.pa_appoint > 0).Sum(x => x.pa_appoint), + pa_slip = data1.Where(x => x.pa_slip > 0).Sum(x => x.pa_slip) + data2.Where(x => x.pa_slip > 0).Sum(x => x.pa_slip), + pa_move = data1.Where(x => x.pa_move > 0).Sum(x => x.pa_move) + data2.Where(x => x.pa_move > 0).Sum(x => x.pa_move), + total = data1.Where(x => x.total > 0).Sum(x => x.total) + data2.Where(x => x.total > 0).Sum(x => x.total) + } + } }; - return Success(data); } } diff --git a/BMA.EHR.Placement.Service/Requests/NodeAllRequest.cs b/BMA.EHR.Placement.Service/Requests/NodeAllRequest.cs new file mode 100644 index 00000000..d1c4f7cf --- /dev/null +++ b/BMA.EHR.Placement.Service/Requests/NodeAllRequest.cs @@ -0,0 +1,24 @@ +using BMA.EHR.Domain.Models.MetaData; +using Microsoft.EntityFrameworkCore; + +namespace BMA.EHR.Placement.Service.Requests +{ + public class NodeAllRequest + { + public NodeAllResult result { get; set; } = new(); + } + public class NodeAllResult + { + public List isRootTrue { get; set; } = new(); + public List isRootFalse { get; set; } = new(); + } + public class NodeAllRequestData + { + public string? name { get; set; } + public string? rootId { get; set; } + public string? child1Id { get; set; } + public string? child2Id { get; set; } + public string? child3Id { get; set; } + public string? child4Id { get; set; } + } +} \ No newline at end of file diff --git a/BMA.EHR.Retirement.Service/Controllers/RetirementController.cs b/BMA.EHR.Retirement.Service/Controllers/RetirementController.cs index 87e2be80..f1f88266 100644 --- a/BMA.EHR.Retirement.Service/Controllers/RetirementController.cs +++ b/BMA.EHR.Retirement.Service/Controllers/RetirementController.cs @@ -33,7 +33,7 @@ namespace BMA.EHR.Retirement.Service.Controllers private readonly IHttpContextAccessor _httpContextAccessor; private readonly IConfiguration _configuration; private readonly PermissionRepository _permission; - + private readonly DisciplineDbContext _contextDiscipline; public RetirementController(RetirementRepository repository, NotificationRepository repositoryNoti, ApplicationDBContext context, @@ -41,7 +41,8 @@ namespace BMA.EHR.Retirement.Service.Controllers IConfiguration configuration, OrganizationCommonRepository organizationCommonRepository, IHttpContextAccessor httpContextAccessor, - PermissionRepository permission) + PermissionRepository permission, + DisciplineDbContext contextDiscipline) { _repository = repository; _repositoryNoti = repositoryNoti; @@ -51,6 +52,7 @@ namespace BMA.EHR.Retirement.Service.Controllers _httpContextAccessor = httpContextAccessor; _configuration = configuration; _permission = permission; + _contextDiscipline = contextDiscipline; } #region " Properties " @@ -1290,15 +1292,286 @@ namespace BMA.EHR.Retirement.Service.Controllers /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpGet("report1")] - public async Task> report1(string? nodeId = null, int? node = 0, DateOnly? startDate = null, DateOnly? startEnd = null) + public async Task> report1(string nodeId = "", int? node = null, DateTime? startDate = null, DateTime? endDate = null) { - var data = new - { - template = "retirement01", - reportName = "xlsx-report", - data = "" - }; + var apiUrl = $"{_configuration["API"]}/org/find/node-all"; + var data = new object(); + var data1 = new List(); + var data2 = new List(); + + using (var client = new HttpClient()) + { + client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token.Replace("Bearer ", "")); + var _req = new HttpRequestMessage(HttpMethod.Post, apiUrl); + var _res = await client.PostAsJsonAsync(apiUrl, new + { + node, + nodeId + }); + var _result = await _res.Content.ReadAsStringAsync(); + var orgs = JsonConvert.DeserializeObject(_result); + + if (orgs == null || orgs.result == null) + return Error("ไม่พบหน่วยงานนี้ในระบบ", 404); + + int no = 1; + + foreach (var org in orgs.result.isRootTrue) + { + //เกษียณ + var retire = _context.RetirementPeriods + .Include(x => x.RetirementProfiles.Where(x => x.rootId == org.rootId)) + .Where(x => + x.CreatedAt.Date >= startDate && + x.CreatedAt.Date <= endDate && + x.Type.Trim().ToUpper() == "OFFICER") + .FirstOrDefault(); + + var rt_count = retire != null ? retire.RetirementProfiles.Count() : 0; + + //ลาออก + var retirementResigns = _context.RetirementResigns + .Where(x => + x.CreatedAt.Date >= startDate && + x.CreatedAt.Date <= endDate && + x.rootOldId == org.rootId && + x.IsCancel == false && x.Status == "DONE") + .ToList(); + + var career_count = retirementResigns.Where(x => x.Reason == "CAREER").Count(); + var move_count = retirementResigns.Where(x => x.Reason == "MOVE").Count(); + var family_count = retirementResigns.Where(x => x.Reason == "FAMILY").Count(); + var education_count = retirementResigns.Where(x => x.Reason == "EDUCATION").Count(); + var other_count = retirementResigns.Where(x => x.Reason == "OTHER").Count(); + + //ขอโอน + var pt_count = _context.PlacementTransfers + .Where(x => + x.CreatedAt.Date >= startDate && + x.CreatedAt.Date <= endDate && + x.rootOldId.Contains(org.rootId) && + x.Status.Trim().ToUpper() == "DONE") + .Count(); + + //ถึงแก่กรรม + var rd_count = _context.RetirementDeceaseds + .Where(x => + x.CreatedAt.Date >= startDate && + x.CreatedAt.Date <= endDate && + x.profileType.Trim().ToUpper() == "OFFICER" && + x.rootId.Contains(org.rootId)) + .Count(); + + //ให้ออก + var ro_count = _context.RetirementOuts + .Where(x => + x.CreatedAt.Date >= startDate && + x.CreatedAt.Date <= endDate && + x.Status.Trim().ToUpper() == "DONE" && + x.profileType.Trim().ToUpper() == "OFFICER" && + x.rootOldId.Contains(org.rootId)) + .Count(); + + //ปลดออก + var dl_cm19_count = _contextDiscipline.DisciplineDisciplinary_ProfileComplaintInvestigates + .Where(x => + x.CreatedAt.Date >= startDate && + x.CreatedAt.Date <= endDate && + x.Status.Trim().ToUpper() == "DONE" && + x.profileType.Trim().ToUpper() == "OFFICER" && + x.CommandTypeId == Guid.Parse("ef8db4d7-1472-4c1d-b73f-9114e618a96f") && + x.rootId.Contains(org.rootId)) + .Count(); + + //ไล่ออก + var dl_cm20_count = _contextDiscipline.DisciplineDisciplinary_ProfileComplaintInvestigates + .Where(x => + x.CreatedAt.Date >= startDate && + x.CreatedAt.Date <= endDate && + x.Status.Trim().ToUpper() == "DONE" && + x.profileType.Trim().ToUpper() == "OFFICER" && + x.CommandTypeId == Guid.Parse("d9dee5c3-b75a-4927-9ce2-51e2233cf20b") && + x.rootId.Contains(org.rootId)) + .Count(); + + data1.Add(new + { + no = no, + rootName = org.name, + rt_count, + career_count, + move_count, + family_count, + education_count, + other_count, + pt_count, + rd_count, + ro_count, + dl_cm19_count, + dl_cm20_count, + total = (rt_count + career_count + move_count + family_count + education_count + other_count + pt_count + rd_count + ro_count + dl_cm19_count + dl_cm20_count) + }); + no++; + } + + no = 1; + foreach (var org in orgs.result.isRootFalse) + { + //เกษียณ + var retire = _context.RetirementPeriods + .Include(x => x.RetirementProfiles.Where(x => x.rootId == org.rootId)) + .Where(x => + x.CreatedAt.Date >= startDate && + x.CreatedAt.Date <= endDate && + x.Type.Trim().ToUpper() == "OFFICER") + .FirstOrDefault(); + + var rt_count = retire != null ? retire.RetirementProfiles.Count() : 0; + + //ลาออก + var retirementResigns = _context.RetirementResigns + .Where(x => + x.CreatedAt.Date >= startDate && + x.CreatedAt.Date <= endDate && + x.rootOldId == org.rootId && + x.IsCancel == false && x.Status == "DONE") + .ToList(); + + var career_count = retirementResigns.Where(x => x.Reason == "CAREER").Count(); + var move_count = retirementResigns.Where(x => x.Reason == "MOVE").Count(); + var family_count = retirementResigns.Where(x => x.Reason == "FAMILY").Count(); + var education_count = retirementResigns.Where(x => x.Reason == "EDUCATION").Count(); + var other_count = retirementResigns.Where(x => x.Reason == "OTHER").Count(); + + //ขอโอน + var pt_count = _context.PlacementTransfers + .Where(x => + x.CreatedAt.Date >= startDate && + x.CreatedAt.Date <= endDate && + x.rootOldId.Contains(org.rootId) && + x.Status.Trim().ToUpper() == "DONE") + .Count(); + + //ถึงแก่กรรม + var rd_count = _context.RetirementDeceaseds + .Where(x => + x.CreatedAt.Date >= startDate && + x.CreatedAt.Date <= endDate && + x.profileType.Trim().ToUpper() == "OFFICER" && + x.rootId.Contains(org.rootId)) + .Count(); + + //ให้ออก + var ro_count = _context.RetirementOuts + .Where(x => + x.CreatedAt.Date >= startDate && + x.CreatedAt.Date <= endDate && + x.Status.Trim().ToUpper() == "DONE" && + x.profileType.Trim().ToUpper() == "OFFICER" && + x.rootOldId.Contains(org.rootId)) + .Count(); + + //ปลดออก + var dl_cm19_count = _contextDiscipline.DisciplineDisciplinary_ProfileComplaintInvestigates + .Where(x => + x.CreatedAt.Date >= startDate && + x.CreatedAt.Date <= endDate && + x.Status.Trim().ToUpper() == "DONE" && + x.profileType.Trim().ToUpper() == "OFFICER" && + x.CommandTypeId == Guid.Parse("ef8db4d7-1472-4c1d-b73f-9114e618a96f") && + x.rootId.Contains(org.rootId)) + .Count(); + + //ไล่ออก + var dl_cm20_count = _contextDiscipline.DisciplineDisciplinary_ProfileComplaintInvestigates + .Where(x => + x.CreatedAt.Date >= startDate && + x.CreatedAt.Date <= endDate && + x.Status.Trim().ToUpper() == "DONE" && + x.profileType.Trim().ToUpper() == "OFFICER" && + x.CommandTypeId == Guid.Parse("d9dee5c3-b75a-4927-9ce2-51e2233cf20b") && + x.rootId.Contains(org.rootId)) + .Count(); + + data2.Add(new + { + no = no, + rootName = org.name, + rt_count, + career_count, + move_count, + family_count, + education_count, + other_count, + pt_count, + rd_count, + ro_count, + dl_cm19_count, + dl_cm20_count, + total = (rt_count + career_count + move_count + family_count + education_count + other_count + pt_count + rd_count + ro_count + dl_cm19_count + dl_cm20_count) + }); + no++; + } + } + + data = new + { + template = "reportRetirement01All", + reportName = "xlsx-report", + data = new + { + date = $"ตั้งแต่วันที่ {startDate.Value.Date.ToThaiShortDate().ToThaiNumber()} ถึง {endDate.Value.Date.ToThaiShortDate().ToThaiNumber()}", + dateCurrent = $"ณ วันที่ {DateTime.Now.Date.ToThaiShortDate().ToThaiNumber()}", + data1, + data1Count = new + { + rt_count = data1.Where(x => x.rt_count > 0).Sum(x => x.rt_count), + career_count = data1.Where(x => x.career_count > 0).Sum(x => x.career_count), + move_count = data1.Where(x => x.move_count > 0).Sum(x => x.move_count), + family_count = data1.Where(x => x.family_count > 0).Sum(x => x.family_count), + education_count = data1.Where(x => x.education_count > 0).Sum(x => x.education_count), + other_count = data1.Where(x => x.other_count > 0).Sum(x => x.other_count), + pt_count = data1.Where(x => x.pt_count > 0).Sum(x => x.pt_count), + rd_count = data1.Where(x => x.rd_count > 0).Sum(x => x.rd_count), + ro_count = data1.Where(x => x.ro_count > 0).Sum(x => x.ro_count), + dl_cm19_count = data1.Where(x => x.dl_cm19_count > 0).Sum(x => x.dl_cm19_count), + dl_cm20_count = data1.Where(x => x.dl_cm20_count > 0).Sum(x => x.dl_cm20_count), + total = data1.Where(x => x.total > 0).Sum(x => x.total) + }, + data2, + data2Count = new + { + rt_count = data2.Where(x => x.rt_count > 0).Sum(x => x.rt_count), + career_count = data2.Where(x => x.career_count > 0).Sum(x => x.career_count), + move_count = data2.Where(x => x.move_count > 0).Sum(x => x.move_count), + family_count = data2.Where(x => x.family_count > 0).Sum(x => x.family_count), + education_count = data2.Where(x => x.education_count > 0).Sum(x => x.education_count), + other_count = data2.Where(x => x.other_count > 0).Sum(x => x.other_count), + pt_count = data2.Where(x => x.pt_count > 0).Sum(x => x.pt_count), + rd_count = data2.Where(x => x.rd_count > 0).Sum(x => x.rd_count), + ro_count = data2.Where(x => x.ro_count > 0).Sum(x => x.ro_count), + dl_cm19_count = data2.Where(x => x.dl_cm19_count > 0).Sum(x => x.dl_cm19_count), + dl_cm20_count = data2.Where(x => x.dl_cm20_count > 0).Sum(x => x.dl_cm20_count), + total = data2.Where(x => x.total > 0).Sum(x => x.total) + }, + sum = new + { + rt_count = data1.Where(x => x.rt_count > 0).Sum(x => x.rt_count) + data2.Where(x => x.rt_count > 0).Sum(x => x.rt_count), + career_count = data1.Where(x => x.career_count > 0).Sum(x => x.career_count) + data2.Where(x => x.career_count > 0).Sum(x => x.career_count), + move_count = data1.Where(x => x.move_count > 0).Sum(x => x.move_count) + data2.Where(x => x.move_count > 0).Sum(x => x.move_count), + family_count = data1.Where(x => x.family_count > 0).Sum(x => x.family_count) + data2.Where(x => x.family_count > 0).Sum(x => x.family_count), + education_count = data1.Where(x => x.education_count > 0).Sum(x => x.education_count) + data2.Where(x => x.education_count > 0).Sum(x => x.education_count), + other_count = data1.Where(x => x.other_count > 0).Sum(x => x.other_count) + data2.Where(x => x.other_count > 0).Sum(x => x.other_count), + pt_count = data1.Where(x => x.pt_count > 0).Sum(x => x.pt_count) + data2.Where(x => x.pt_count > 0).Sum(x => x.pt_count), + rd_count = data1.Where(x => x.rd_count > 0).Sum(x => x.rd_count) + data2.Where(x => x.rd_count > 0).Sum(x => x.rd_count), + ro_count = data1.Where(x => x.ro_count > 0).Sum(x => x.ro_count) + data2.Where(x => x.ro_count > 0).Sum(x => x.ro_count), + dl_cm19_count = data1.Where(x => x.dl_cm19_count > 0).Sum(x => x.dl_cm19_count) + data2.Where(x => x.dl_cm19_count > 0).Sum(x => x.dl_cm19_count), + dl_cm20_count = data1.Where(x => x.dl_cm20_count > 0).Sum(x => x.dl_cm20_count) + data2.Where(x => x.dl_cm20_count > 0).Sum(x => x.dl_cm20_count), + total = data1.Where(x => x.total > 0).Sum(x => x.total) + data2.Where(x => x.total > 0).Sum(x => x.total) + } + } + }; return Success(data); } @@ -1311,17 +1584,263 @@ namespace BMA.EHR.Retirement.Service.Controllers /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpGet("report2")] - public async Task> report2(string? nodeId = null, int? node = 0, DateOnly? startDate = null, DateOnly? startEnd = null) + public async Task> report2(string nodeId = "", int? node = null, DateTime? startDate = null, DateTime? endDate = null) { - var data = new + var apiUrl = $"{_configuration["API"]}/org/find/node-all"; + var data = new object(); + var data1 = new List(); + var data2 = new List(); + + using (var client = new HttpClient()) { - template = "retirement02", + client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token.Replace("Bearer ", "")); + var _req = new HttpRequestMessage(HttpMethod.Post, apiUrl); + var _res = await client.PostAsJsonAsync(apiUrl, new + { + node, + nodeId + }); + var _result = await _res.Content.ReadAsStringAsync(); + var orgs = JsonConvert.DeserializeObject(_result); + + if (orgs == null || orgs.result == null) + return Error("ไม่พบหน่วยงานนี้ในระบบ", 404); + + int no = 1; + + foreach (var org in orgs.result.isRootTrue) + { + //เกษียณ + var retire = _context.RetirementPeriods + .Include(x => x.RetirementProfiles.Where(x => x.rootId == org.rootId)) + .Where(x => + x.CreatedAt.Date >= startDate && + x.CreatedAt.Date <= endDate && + x.Type.Trim().ToUpper() == "OFFICER") + .FirstOrDefault(); + + var rt_count = retire != null ? retire.RetirementProfiles.Count() : 0; + + //ลาออก + var retirementResigns = _context.RetirementResigns + .Where(x => + x.CreatedAt.Date >= startDate && + x.CreatedAt.Date <= endDate && + x.rootOldId == org.rootId && + x.IsCancel == false && x.Status == "DONE") + .ToList(); + + var career_count = retirementResigns.Where(x => x.Reason == "CAREER").Count(); + var move_count = retirementResigns.Where(x => x.Reason == "MOVE").Count(); + var family_count = retirementResigns.Where(x => x.Reason == "FAMILY").Count(); + var education_count = retirementResigns.Where(x => x.Reason == "EDUCATION").Count(); + var other_count = retirementResigns.Where(x => x.Reason == "OTHER").Count(); + + //ถึงแก่กรรม + var rd_count = _context.RetirementDeceaseds + .Where(x => + x.CreatedAt.Date >= startDate && + x.CreatedAt.Date <= endDate && + x.profileType.Trim().ToUpper() == "OFFICER" && + x.rootId.Contains(org.rootId)) + .Count(); + + //ให้ออก + var ro_count = _context.RetirementOuts + .Where(x => + x.CreatedAt.Date >= startDate && + x.CreatedAt.Date <= endDate && + x.Status.Trim().ToUpper() == "DONE" && + x.profileType.Trim().ToUpper() == "OFFICER" && + x.rootOldId.Contains(org.rootId)) + .Count(); + + //ปลดออก + var dl_cm19_count = _contextDiscipline.DisciplineDisciplinary_ProfileComplaintInvestigates + .Where(x => + x.CreatedAt.Date >= startDate && + x.CreatedAt.Date <= endDate && + x.Status.Trim().ToUpper() == "DONE" && + x.profileType.Trim().ToUpper() == "OFFICER" && + x.CommandTypeId == Guid.Parse("ef8db4d7-1472-4c1d-b73f-9114e618a96f") && + x.rootId.Contains(org.rootId)) + .Count(); + + //ไล่ออก + var dl_cm20_count = _contextDiscipline.DisciplineDisciplinary_ProfileComplaintInvestigates + .Where(x => + x.CreatedAt.Date >= startDate && + x.CreatedAt.Date <= endDate && + x.Status.Trim().ToUpper() == "DONE" && + x.profileType.Trim().ToUpper() == "OFFICER" && + x.CommandTypeId == Guid.Parse("d9dee5c3-b75a-4927-9ce2-51e2233cf20b") && + x.rootId.Contains(org.rootId)) + .Count(); + + data1.Add(new + { + no = no, + rootName = org.name, + rt_count, + career_count, + move_count, + family_count, + education_count, + other_count, + rd_count, + ro_count, + dl_cm19_count, + dl_cm20_count, + total = (rt_count + career_count + move_count + family_count + education_count + other_count + rd_count + ro_count + dl_cm19_count + dl_cm20_count) + }); + no++; + } + + no = 1; + foreach (var org in orgs.result.isRootFalse) + { + //เกษียณ + var retire = _context.RetirementPeriods + .Include(x => x.RetirementProfiles.Where(x => x.rootId == org.rootId)) + .Where(x => + x.CreatedAt.Date >= startDate && + x.CreatedAt.Date <= endDate && + x.Type.Trim().ToUpper() == "OFFICER") + .FirstOrDefault(); + + var rt_count = retire != null ? retire.RetirementProfiles.Count() : 0; + + //ลาออก + var retirementResigns = _context.RetirementResigns + .Where(x => + x.CreatedAt.Date >= startDate && + x.CreatedAt.Date <= endDate && + x.rootOldId == org.rootId && + x.IsCancel == false && x.Status == "DONE") + .ToList(); + + var career_count = retirementResigns.Where(x => x.Reason == "CAREER").Count(); + var move_count = retirementResigns.Where(x => x.Reason == "MOVE").Count(); + var family_count = retirementResigns.Where(x => x.Reason == "FAMILY").Count(); + var education_count = retirementResigns.Where(x => x.Reason == "EDUCATION").Count(); + var other_count = retirementResigns.Where(x => x.Reason == "OTHER").Count(); + + //ถึงแก่กรรม + var rd_count = _context.RetirementDeceaseds + .Where(x => + x.CreatedAt.Date >= startDate && + x.CreatedAt.Date <= endDate && + x.profileType.Trim().ToUpper() == "OFFICER" && + x.rootId.Contains(org.rootId)) + .Count(); + + //ให้ออก + var ro_count = _context.RetirementOuts + .Where(x => + x.CreatedAt.Date >= startDate && + x.CreatedAt.Date <= endDate && + x.Status.Trim().ToUpper() == "DONE" && + x.profileType.Trim().ToUpper() == "OFFICER" && + x.rootOldId.Contains(org.rootId)) + .Count(); + + //ปลดออก + var dl_cm19_count = _contextDiscipline.DisciplineDisciplinary_ProfileComplaintInvestigates + .Where(x => + x.CreatedAt.Date >= startDate && + x.CreatedAt.Date <= endDate && + x.Status.Trim().ToUpper() == "DONE" && + x.profileType.Trim().ToUpper() == "OFFICER" && + x.CommandTypeId == Guid.Parse("ef8db4d7-1472-4c1d-b73f-9114e618a96f") && + x.rootId.Contains(org.rootId)) + .Count(); + + //ไล่ออก + var dl_cm20_count = _contextDiscipline.DisciplineDisciplinary_ProfileComplaintInvestigates + .Where(x => + x.CreatedAt.Date >= startDate && + x.CreatedAt.Date <= endDate && + x.Status.Trim().ToUpper() == "DONE" && + x.profileType.Trim().ToUpper() == "OFFICER" && + x.CommandTypeId == Guid.Parse("d9dee5c3-b75a-4927-9ce2-51e2233cf20b") && + x.rootId.Contains(org.rootId)) + .Count(); + + data2.Add(new + { + no = no, + rootName = org.name, + rt_count, + career_count, + move_count, + family_count, + education_count, + other_count, + rd_count, + ro_count, + dl_cm19_count, + dl_cm20_count, + total = (rt_count + career_count + move_count + family_count + education_count + other_count + rd_count + ro_count + dl_cm19_count + dl_cm20_count) + }); + no++; + } + } + + data = new + { + template = "reportRetirement02All", reportName = "xlsx-report", - data = "" - + data = new + { + date = $"ตั้งแต่วันที่ {startDate.Value.Date.ToThaiShortDate().ToThaiNumber()} ถึง {endDate.Value.Date.ToThaiShortDate().ToThaiNumber()}", + dateCurrent = $"ณ วันที่ {DateTime.Now.Date.ToThaiShortDate().ToThaiNumber()}", + data1, + data1Count = new + { + rt_count = data1.Where(x => x.rt_count > 0).Sum(x => x.rt_count), + career_count = data1.Where(x => x.career_count > 0).Sum(x => x.career_count), + move_count = data1.Where(x => x.move_count > 0).Sum(x => x.move_count), + family_count = data1.Where(x => x.family_count > 0).Sum(x => x.family_count), + education_count = data1.Where(x => x.education_count > 0).Sum(x => x.education_count), + other_count = data1.Where(x => x.other_count > 0).Sum(x => x.other_count), + rd_count = data1.Where(x => x.rd_count > 0).Sum(x => x.rd_count), + ro_count = data1.Where(x => x.ro_count > 0).Sum(x => x.ro_count), + dl_cm19_count = data1.Where(x => x.dl_cm19_count > 0).Sum(x => x.dl_cm19_count), + dl_cm20_count = data1.Where(x => x.dl_cm20_count > 0).Sum(x => x.dl_cm20_count), + total = data1.Where(x => x.total > 0).Sum(x => x.total) + }, + data2, + data2Count = new + { + rt_count = data2.Where(x => x.rt_count > 0).Sum(x => x.rt_count), + career_count = data2.Where(x => x.career_count > 0).Sum(x => x.career_count), + move_count = data2.Where(x => x.move_count > 0).Sum(x => x.move_count), + family_count = data2.Where(x => x.family_count > 0).Sum(x => x.family_count), + education_count = data2.Where(x => x.education_count > 0).Sum(x => x.education_count), + other_count = data2.Where(x => x.other_count > 0).Sum(x => x.other_count), + rd_count = data2.Where(x => x.rd_count > 0).Sum(x => x.rd_count), + ro_count = data2.Where(x => x.ro_count > 0).Sum(x => x.ro_count), + dl_cm19_count = data2.Where(x => x.dl_cm19_count > 0).Sum(x => x.dl_cm19_count), + dl_cm20_count = data2.Where(x => x.dl_cm20_count > 0).Sum(x => x.dl_cm20_count), + total = data2.Where(x => x.total > 0).Sum(x => x.total) + }, + sum = new + { + rt_count = data1.Where(x => x.rt_count > 0).Sum(x => x.rt_count) + data2.Where(x => x.rt_count > 0).Sum(x => x.rt_count), + career_count = data1.Where(x => x.career_count > 0).Sum(x => x.career_count) + data2.Where(x => x.career_count > 0).Sum(x => x.career_count), + move_count = data1.Where(x => x.move_count > 0).Sum(x => x.move_count) + data2.Where(x => x.move_count > 0).Sum(x => x.move_count), + family_count = data1.Where(x => x.family_count > 0).Sum(x => x.family_count) + data2.Where(x => x.family_count > 0).Sum(x => x.family_count), + education_count = data1.Where(x => x.education_count > 0).Sum(x => x.education_count) + data2.Where(x => x.education_count > 0).Sum(x => x.education_count), + other_count = data1.Where(x => x.other_count > 0).Sum(x => x.other_count) + data2.Where(x => x.other_count > 0).Sum(x => x.other_count), + rd_count = data1.Where(x => x.rd_count > 0).Sum(x => x.rd_count) + data2.Where(x => x.rd_count > 0).Sum(x => x.rd_count), + ro_count = data1.Where(x => x.ro_count > 0).Sum(x => x.ro_count) + data2.Where(x => x.ro_count > 0).Sum(x => x.ro_count), + dl_cm19_count = data1.Where(x => x.dl_cm19_count > 0).Sum(x => x.dl_cm19_count) + data2.Where(x => x.dl_cm19_count > 0).Sum(x => x.dl_cm19_count), + dl_cm20_count = data1.Where(x => x.dl_cm20_count > 0).Sum(x => x.dl_cm20_count) + data2.Where(x => x.dl_cm20_count > 0).Sum(x => x.dl_cm20_count), + total = data1.Where(x => x.total > 0).Sum(x => x.total) + data2.Where(x => x.total > 0).Sum(x => x.total) + } + } }; - return Success(data); } } diff --git a/BMA.EHR.Retirement.Service/Program.cs b/BMA.EHR.Retirement.Service/Program.cs index d2f411ad..8460c0f5 100644 --- a/BMA.EHR.Retirement.Service/Program.cs +++ b/BMA.EHR.Retirement.Service/Program.cs @@ -101,6 +101,11 @@ var builder = WebApplication.CreateBuilder(args); var defaultConnection = builder.Configuration.GetConnectionString("DefaultConnection"); builder.Services.AddDbContext(options => options.UseMySql(defaultConnection, ServerVersion.AutoDetect(defaultConnection))); + // Register DisciplineDbContext + var disciplineConnection = builder.Configuration.GetConnectionString("DisciplineConnection"); + builder.Services.AddDbContext(options => + options.UseMySql(disciplineConnection, ServerVersion.AutoDetect(disciplineConnection))); + builder.Services.AddHealthChecks(); // Add Hangfire services. builder.Services.AddHangfire(configuration => configuration diff --git a/BMA.EHR.Retirement.Service/Requests/NodeAllRequest.cs b/BMA.EHR.Retirement.Service/Requests/NodeAllRequest.cs new file mode 100644 index 00000000..0e5b46b3 --- /dev/null +++ b/BMA.EHR.Retirement.Service/Requests/NodeAllRequest.cs @@ -0,0 +1,24 @@ +using BMA.EHR.Domain.Models.MetaData; +using Microsoft.EntityFrameworkCore; + +namespace BMA.EHR.Retirement.Service.Requests +{ + public class NodeAllRequest + { + public NodeAllResult result { get; set; } = new(); + } + public class NodeAllResult + { + public List isRootTrue { get; set; } = new(); + public List isRootFalse { get; set; } = new(); + } + public class NodeAllRequestData + { + public string? name { get; set; } + public string? rootId { get; set; } + public string? child1Id { get; set; } + public string? child2Id { get; set; } + public string? child3Id { get; set; } + public string? child4Id { get; set; } + } +} \ No newline at end of file diff --git a/BMA.EHR.Retirement.Service/appsettings.json b/BMA.EHR.Retirement.Service/appsettings.json index 522c87d0..a9e19037 100644 --- a/BMA.EHR.Retirement.Service/appsettings.json +++ b/BMA.EHR.Retirement.Service/appsettings.json @@ -15,7 +15,8 @@ "ConnectionStrings": { //"DefaultConnection": "User Id=sys;Password=P@ssw0rd;DBA Privilege=SYSDBA;Data Source=localhost:1521/ORCLCDB", // "DefaultConnection": "server=127.0.0.1;user=root;password=P@ssw0rd;port=3308;database=bma_ehr_demo;Convert Zero Datetime=True;Allow User Variables=true;Pooling=True;" - "DefaultConnection": "server=192.168.1.80;user=root;password=adminVM123;port=3306;database=bma_ehr_demo;Convert Zero Datetime=True;Allow User Variables=true;Pooling=True;" + "DefaultConnection": "server=192.168.1.80;user=root;password=adminVM123;port=3306;database=bma_ehr_demo;Convert Zero Datetime=True;Allow User Variables=true;Pooling=True;", + "DisciplineConnection": "server=192.168.1.80;user=root;password=adminVM123;port=3306;database=bma_ehr_discipline_demo;Convert Zero Datetime=True;Allow User Variables=true;Pooling=True;" }, "Jwt": { "Key": "HP-FnQMUj9msHMSD3T9HtdEnphAKoCJLEl85CIqROFI",