using System.Net.Http.Headers; using System.Reflection.Metadata; using BMA.EHR.Application.Common.Interfaces; using BMA.EHR.Application.Responses; using BMA.EHR.Domain.Extensions; using BMA.EHR.Domain.Models.HR; using BMA.EHR.Domain.Models.Organizations; using BMA.EHR.Domain.Models.Retirement; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Newtonsoft.Json; namespace BMA.EHR.Application.Repositories.Reports { public class RetireReportRepository { #region " Fields " private readonly IApplicationDBContext _dbContext; private readonly IWebHostEnvironment _hostingEnvironment; private readonly MinIOService _documentService; private readonly OrganizationCommonRepository _organizationCommonRepository; private readonly IConfiguration _configuration; #endregion #region " Constructor and Destructor " public RetireReportRepository(IApplicationDBContext dbContext, MinIOService documentService, OrganizationCommonRepository organizationCommonRepository, IWebHostEnvironment hostEnvironment, IConfiguration configuration) { _dbContext = dbContext; _hostingEnvironment = hostEnvironment; _organizationCommonRepository = organizationCommonRepository; _documentService = documentService; _configuration = configuration; } #endregion #region " Methods " //public async Task> GetListRetirePeriodAsync(Guid Id) //{ // try // { // // 1. query // //var data = await _dbContext.Set() // // .Include(x => x.RetirementProfiles) // // .ThenInclude(x => x.Profile) // // .ToListAsync(); // // 2. data not found throw exception // // 3. Load Report File // //return data; // } // catch // { // throw; // } //} #region รายงานประกาศเกษียณ public async Task GetProfileRetirementdAsync(Guid retireId, string token) { var retire = await _dbContext.Set() .Include(x => x.RetirementProfiles) .FirstOrDefaultAsync(x => x.Id == retireId); // var retires = new List(); var apiUrl = $"{_configuration["API"]}/org/root/search/sort"; dynamic rootOrder = new List(); dynamic child1Order = new List(); dynamic child2Order = new List(); dynamic child3Order = new List(); dynamic child4Order = new List(); dynamic posTypeNameOrder = new List(); dynamic posLevelNameOrder = new List(); dynamic hospital = new List(); 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(); var org = JsonConvert.DeserializeObject(_result); if (org != null && org.result != null) { rootOrder = org.result.root; child1Order = org.result.child1; child2Order = org.result.child2; child3Order = org.result.child3; child4Order = org.result.child4; posTypeNameOrder = org.result.posTypeNameOrder; posLevelNameOrder = org.result.posLevelNameOrder; hospital = org.result.hospital; } } if (retire == null) { var retireHistorys = await _dbContext.Set().AsQueryable() .FirstOrDefaultAsync(x => x.Id == retireId); if (retireHistorys == null) return null; //var profile_retireHistory = await _dbContext.Set() // .Where(x => x.RetirementPeriod == retire) // .OrderBy(x => x.Order) // .Select(x => new // { // order = x.Order, // id = x.Id, // reason = x.Reason, // remove = x.Remove, // profileId = x.Profile.Id, // citizenId = x.Profile.CitizenId, // prefix = x.Profile.Prefix == null ? string.Empty : x.Profile.Prefix.Name, // fullName = $"{x.Profile.FirstName} {x.Profile.LastName}", // organizationOrganization = x.Profile.OrganizationOrganization, // oc = x.Profile.Oc, // position = x.Profile.Position == null ? string.Empty : x.Profile.Position.Name, // positionType = x.Profile.PositionType == null ? string.Empty : x.Profile.PositionType.Name, // positionExecutive = x.Profile.PositionExecutive, // posNo = x.Profile.PosNo == null ? string.Empty : x.Profile.PosNo.Name, // positionEmployeePosition = x.Profile.PositionEmployeePosition, // positionEmployeeLevel = x.Profile.PositionEmployeeLevel, // positionEmployeeGroup = x.Profile.PositionEmployeeGroup, // posNoEmployee = x.Profile.PosNoEmployee, // }) // .ToListAsync(); //return new { retireHistorys.Detail, retireHistorys.Id, retireHistorys.CreatedAt, Year = retireHistorys.Year.ToThaiYear().ToString().ToThaiNumber(), retireHistorys.Round, retireHistorys.Type, retireHistorys.TypeReport, Total = retireHistorys.Total.ToString().ToThaiNumber(), profile = profile_retireHistory }; using (var client = new HttpClient()) { var url = await _documentService.ImagesPathByName($"{retireHistorys.ProfileFile}.json"); var responseTask = client.GetAsync(url); var results = responseTask.Result; var json = results.Content.ReadAsStringAsync().Result; List profiles = JsonConvert.DeserializeObject>(json); if (retireHistorys.TypeReport != null) { retireHistorys.Total = profiles.Where(x => x.remove == retireHistorys.TypeReport).Count(); profiles = profiles.Where(x => x.remove == retireHistorys.TypeReport).OrderBy(x => x.order).ToList(); } else { profiles = profiles.OrderBy(x => x.order).ToList(); } var mapProfiles = new List(); // string previousRoot = null; // string previousPosTypeName = null; // string previousPosLevelName = null; if (profiles.Count > 0) { mapProfiles = profiles // .OrderBy(x => rootOrder.ToObject>().IndexOf(x.root)) // .ThenBy(x => posTypeNameOrder.ToObject>().IndexOf(x.posTypeName ?? "")) // .ThenBy(x => posLevelNameOrder.ToObject>().IndexOf(x.posLevelName ?? "")) .Select((profile, index) => { // bool isDuplicateRoot = profile.root == previousRoot; // previousRoot = profile.root; // bool isDuplicatePosType = profile.posTypeName == previousPosTypeName; // previousPosTypeName = profile.posTypeName; // bool isDuplicatePosLevel = profile.posLevelName == previousPosLevelName; // previousPosLevelName = profile.posLevelName; return new ProfileRetireJsonRequest { order = retireHistorys.TypeReport == null ? (index + 1).ToString().ToThaiNumber() : $"{(index + 1).ToString().ToThaiNumber()}. ลำดับที่ {(profile.order).ToString().ToThaiNumber()}", fullName = $"{profile.prefix}{profile.firstName} {profile.lastName}", root = "", child = (profile.posExecutiveName == null ? "" : profile.posExecutiveName + "\n") + (profile.child4 == null ? "" : profile.child4 + "\n") + (profile.child3 == null ? "" : profile.child3 + "\n") + (profile.child2 == null ? "" : profile.child2 + "\n") + (profile.child1 == null ? "" : profile.child1 + "\n") + (profile.reason == null ? "" : profile.reason), position = profile.position != "" && profile.position != null ? profile.position : "-", posNo = profile.posNo != "" && profile.posNo != null ? profile.posNo?.ToThaiNumber() : "-", reason = profile.reason != "" && profile.reason != null ? profile.reason : "-", }; }).ToList(); } string SignDate = retireHistorys.SignDate != null ? DateTime.Parse(retireHistorys.SignDate.ToString()).ToThaiFullDate().ToString().ToThaiNumber() : "-"; return new { SignDate, retireHistorys.Detail, retireHistorys.Id, retireHistorys.CreatedAt, Year = retireHistorys.Year.ToThaiYear().ToString().ToThaiNumber(), retireHistorys.Round, retireHistorys.Type, retireHistorys.TypeReport, Total = retireHistorys.Total.ToString().ToThaiNumber(), profiles = mapProfiles }; } } else { var profile_retire = await _dbContext.Set() .Include(x => x.RetirementPeriod) .Where(x => x.RetirementPeriod == retire && (retire.TypeReport == null || retire.TypeReport == x.Remove)) .OrderBy(x => x.Order) .Select(x => new { order = x.Order, id = x.Id, reason = x.Reason, remove = x.Remove, profileId = x.profileId, prefix = x.prefix, firstName = x.firstName, lastName = x.lastName, citizenId = x.citizenId, root = x.root, rootId = x.rootId, rootShortName = x.rootShortName, child1 = x.child1, child1Id = x.child1Id, child1ShortName = x.child1ShortName, child2 = x.child2, child2Id = x.child2Id, child2ShortName = x.child2ShortName, child3 = x.child3, child3Id = x.child3Id, child3ShortName = x.child3ShortName, child4 = x.child4, child4Id = x.child4Id, child4ShortName = x.child4ShortName, posMasterNo = x.posMasterNo, position = x.position, posTypeId = x.posTypeId, posTypeName = x.posTypeName, posTypeRank = x.posTypeRank, posLevelId = x.posLevelId, posLevelName = x.posLevelName, posLevelRank = x.posLevelRank, posExecutiveId = x.posExecutiveId, posExecutiveName = x.posExecutiveName, posNo = x.posNo, }) .ToListAsync(); // foreach (var r in profile_retire) // { // var data = new ProfileJsonRequest // { // order = r.order, // id = r.id, // reason = r.reason, // remove = r.remove, // profileId = r.profileId, // citizenId = r.citizenId, // prefix = r.prefix, // fullName = r.fullName, // organizationOrganization = r.organizationOrganization, // oc = r.ocId == null ? null : _organizationCommonRepository.GetOrganizationNameFullPath(r.ocId.Value), // position = r.position, // positionType = r.positionType, // positionExecutive = r.positionExecutive, // posNo = r.posNo, // positionEmployeePosition = r.positionEmployeePosition, // positionEmployeeLevel = r.positionEmployeeLevel, // positionEmployeeGroup = r.positionEmployeeGroup, // posNoEmployee = r.posNoEmployee, // }; // retires.Add(data); // } var mapProfiles = new List(); string previousRoot = null; string previousChild1 = null; string previousPosTypeName = null; string previousPosLevelName = null; if (profile_retire.Count > 0) { if (retire.TypeReport == null) { profile_retire = profile_retire .OrderBy(x => string.IsNullOrEmpty(x.root) ? int.MaxValue : rootOrder.ToObject>().IndexOf(x.root)) .ThenBy(x => child1Order.ToObject>().IndexOf(x.child1 ?? "")) .ThenBy(x => child2Order.ToObject>().IndexOf(x.child2 ?? "")) .ThenBy(x => child3Order.ToObject>().IndexOf(x.child3 ?? "")) .ThenBy(x => child4Order.ToObject>().IndexOf(x.child4 ?? "")) .ThenBy(x => posTypeNameOrder.ToObject>().IndexOf(x.posTypeName ?? "")) .ThenBy(x => posLevelNameOrder.ToObject>().IndexOf(x.posLevelName ?? "")) .ThenBy(x => x.posNo).ToList(); } mapProfiles = profile_retire.Select((profile, index) => { bool isDuplicateRoot = profile.root == previousRoot; previousRoot = profile.root; if (isDuplicateRoot == false) { previousChild1 = null; previousPosTypeName = null; previousPosLevelName = null; } bool isDuplicateHospital = profile.child1 == previousChild1; previousChild1 = profile.child1; if (isDuplicateHospital == false) { previousPosTypeName = null; previousPosLevelName = null; } bool isDuplicatePosType = profile.posTypeName == previousPosTypeName; previousPosTypeName = profile.posTypeName; bool isDuplicatePosLevel = profile.posLevelName == previousPosLevelName; previousPosLevelName = profile.posLevelName; return new ProfileRetireJsonRequest { order = retire.TypeReport == null ? (index + 1).ToString().ToThaiNumber() : $"{(index + 1).ToString().ToThaiNumber()}. ลำดับที่ {(profile.order).ToString().ToThaiNumber()}", fullName = $"{profile.prefix}{profile.firstName} {profile.lastName}", root = (isDuplicateRoot ? "" : profile.root + "\n") + (isDuplicateHospital || !hospital.ToObject>().Contains(profile.child1) ? "" : profile.child1 + "\n") + (isDuplicatePosType ? "" : $"ตำแหน่งประเภท{profile.posTypeName}" + "\n") + (isDuplicatePosLevel ? "" : $"ระดับ{profile.posLevelName}"), child = (profile.posExecutiveName == null ? "" : profile.posExecutiveName + "\n") + (profile.child4 == null ? "" : profile.child4 + "\n") + (profile.child3 == null ? "" : profile.child3 + "\n") + (profile.child2 == null ? "" : profile.child2 + "\n") + (profile.child1 == null || hospital.ToObject>().Contains(profile.child1) ? "" : profile.child1 + "\n") + (profile.reason == null ? "" : profile.reason), position = profile.position != "" && profile.position != null ? profile.position : "-", posNo = profile.posNo != "" && profile.posNo != null ? profile.posNo?.ToThaiNumber() : "-", reason = profile.reason != "" && profile.reason != null ? profile.reason : "-", }; }).ToList(); } string SignDate = retire.SignDate != null ? DateTime.Parse(retire.SignDate.ToString()).ToThaiFullDate().ToString().ToThaiNumber() : "-"; return new { SignDate, retire.Detail, retire.Id, retire.CreatedAt, Year = retire.Year.ToThaiYear().ToString().ToThaiNumber(), retire.Round, retire.Type, retire.TypeReport, Total = profile_retire.Count.ToString().ToThaiNumber(), profiles = mapProfiles }; } } #endregion #region รายงานบันทึกการถึงแก่กรรม public async Task GetRetirementDeceasedAsync(Guid id) { var data = await _dbContext.Set().AsQueryable() .Where(x => x.Id == id) .Select(p => new { p.Id, p.prefix, p.profileId, p.firstName, p.lastName, p.root, p.rootShortName, p.child1, p.child1ShortName, p.child2, p.child2ShortName, p.child3, p.child3ShortName, p.child4, p.child4ShortName, p.posMasterNo, p.posLevelName, p.posTypeName, p.position, p.Number, p.Date, p.Location, p.Reason, }) .FirstOrDefaultAsync(); if (data == null) return null; // string Prefix = string.IsNullOrEmpty(data.Prefix.ToString()) ? string.Empty : data.Prefix.ToString(); // string FirstName = string.IsNullOrEmpty(data.FirstName.ToString()) ? string.Empty : data.FirstName.ToString(); // string LastName = string.IsNullOrEmpty(data.LastName.ToString()) ? string.Empty : data.LastName.ToString(); // string FullName = $"{Prefix} {FirstName} {LastName}"; string Date = string.IsNullOrEmpty(data.Date.ToString()) ? "-" : DateTime.Parse(data.Date.ToString()).ToThaiFullDate().ToString().ToThaiNumber(); string CurrentDate = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd")).ToThaiFullDate().ToString().ToThaiNumber(); return new { FullName = $"{data.prefix} {data.firstName} {data.lastName}", Date, CurrentDate, data.profileId, data.prefix, data.firstName, data.lastName, data.root, data.rootShortName, data.child1, data.child1ShortName, data.child2, data.child2ShortName, data.child3, data.child3ShortName, data.child4, data.child4ShortName, data.posMasterNo, data.posLevelName, data.posTypeName, Number = data.Number != null ? data.Number.ToThaiNumber() : "-", Location = data.Location != null ? data.Location.ToThaiNumber() : "-", data.Reason, Position = data.position, }; } #endregion #region หัวกระดาษหนังสือเวียน public async Task GetHeadRetirementDeceasedAsync(Guid id) { var data = await _dbContext.Set().AsQueryable() // .Include(x => x.Profile) .Where(x => x.Id == id) .FirstOrDefaultAsync(); var oc = ""; if (data == null) return new { Oc = oc, Number = $"กท /", Date = "", Subject = "ข้าราชการถึงแก่กรรม", Send = "หัวหน้าสำนักงาน ก.ก.", }; // if (data.Profile.OcId != null) // { // var organization = await _dbContext.Set().AsQueryable() // .Where(x => x.Id == data.Profile.OcId) // .FirstOrDefaultAsync(); // if (organization != null) // { // var organizationAgency = await _dbContext.Set().AsQueryable() // .Where(x => x.Id == organization.OrganizationAgencyId) // .FirstOrDefaultAsync(); // if (organizationAgency != null) // { // var agency = await _dbContext.Set().AsQueryable() // .Where(x => x.Id == organizationAgency.Id) // .FirstOrDefaultAsync(); // if (agency != null) // { // oc = agency.OrganizationOrganization?.Name; // } // } // } // } return new { Oc = oc, Number = $"กท /{(data.CreatedAt.Year.ToThaiYear()).ToString().ToThaiNumber()}", Date = data.CreatedAt.ToThaiFullDate2().ToString().ToThaiNumber(), Subject = "ข้าราชการถึงแก่กรรม", Send = "หัวหน้าสำนักงาน ก.ก.", }; } #endregion #region บันทึกหนังสือเวียน public async Task UploadFileRetirementDeceasedAsync(Guid id, Domain.Models.Documents.Document file) { var data = await _dbContext.Set().AsQueryable() // .Include(x => x.Profile) .Where(x => x.Id == id) .FirstOrDefaultAsync(); if (data != null) data.DocumentForward = file; await _dbContext.SaveChangesAsync(); } #endregion #region แบบฟอร์มหนังสือขอลาออกจากราชการ public async Task GetResignByUser(Guid id) { var data = await _dbContext.Set().AsQueryable() .Where(x => x.Id == id) .Select(p => new { p.Id, p.prefix, p.firstName, p.lastName, p.profileId, p.Location, p.SendDate, p.ActiveDate, p.Reason, p.ReasonResign, p.Remark, p.Status, salary = p.AmountOld, p.ApproveReason, p.RejectReason, p.IsActive, p.CreatedAt, p.PositionTypeOld, p.PositionLevelOld, p.PositionNumberOld, p.OrganizationPositionOld, p.OligarchReject, p.OligarchApproveReason, p.OligarchRejectReason, p.OligarchRejectDate, p.CommanderReject, p.CommanderApproveReason, p.CommanderRejectReason, p.CommanderRejectDate, p.RemarkHorizontal, Type = "OFFICER" }) .FirstOrDefaultAsync(); if (data == null) data = await _dbContext.Set().AsQueryable() .Where(x => x.Id == id) .Select(p => new { p.Id, p.prefix, p.firstName, p.lastName, p.profileId, p.Location, p.SendDate, p.ActiveDate, p.Reason, p.ReasonResign, p.Remark, p.Status, salary = p.AmountOld, p.ApproveReason, p.RejectReason, p.IsActive, p.CreatedAt, p.PositionTypeOld, p.PositionLevelOld, p.PositionNumberOld, p.OrganizationPositionOld, p.OligarchReject, p.OligarchApproveReason, p.OligarchRejectReason, p.OligarchRejectDate, p.CommanderReject, p.CommanderApproveReason, p.CommanderRejectReason, p.CommanderRejectDate, p.RemarkHorizontal, Type = "EMPLOYEE", }) .FirstOrDefaultAsync(); if (data == null) return null; var approverPositionExecutiveName = "..............."; var approverStatus = "☐ อนุญาต"; var approverRejectStatus = "☐ ยับยั้งการลาออกไว้จนถึงวันที่..................."; var approver = "..................."; var approverPosition = "..................."; var diffDate = "☐ ไม่น้อยกว่า ๓๐ วัน ☐ น้อยกว่า ๓๐ วัน"; if (data.SendDate.HasValue && data.ActiveDate.HasValue) { var time = data.ActiveDate.Value - data.SendDate.Value; var day = time.TotalDays; if (day < 30) { diffDate = "☐ ไม่น้อยกว่า ๓๐ วัน ☑ น้อยกว่า ๓๐ วัน"; } else { diffDate = "☑ ไม่น้อยกว่า ๓๐ วัน ☐ น้อยกว่า ๓๐ วัน"; } } var commanderDateUpdate = "วันที่..................."; var commanderStatus = "☐ อนุญาต ตั้งแต่วันที่..................."; var commanderCommentApprove = "..................."; var commanderRejectStatus = "☐ ยับยั้งการลาออกไว้จนถึงวันที่..................."; var commanderCommentReject = "..................."; var commander = "..................."; var commanderPosition = "..................."; if (data.Type == "OFFICER") { var Approver = _dbContext.Set() .Where(x => x.RetirementResign.Id == data.Id && x.ApproveType == "APPROVER") .ToList(); var Commander = _dbContext.Set() .Where(x => x.RetirementResign.Id == data.Id && x.ApproveType == "COMMANDER") .OrderByDescending(x => x.Seq) .ToList(); if (Approver.Count > 0) { approverPositionExecutiveName = Approver[0].PositionExecutiveName; approverStatus = Approver[0].ApproveStatus == "APPROVE" ? "☑ อนุญาต" : approverStatus; approverRejectStatus = Approver[0].ApproveStatus == "REJECT" ? $"☑ ยับยั้งการลาออกไว้จนถึง{(Approver[0].RejectDate != null ? DateTime.Parse(Approver[0].RejectDate.ToString()).ToThaiFullDate().ToString().ToThaiNumber() : "วันที่...................")}" : approverRejectStatus; approver = $"{Approver[0].Prefix}{Approver[0].FirstName} {Approver[0].LastName}"; approverPosition = Approver[0].PositionName; } if (Commander.Count > 0) { commanderDateUpdate = Commander.Count > 1 ? Commander[1].LastUpdatedAt != null ? DateTime.Parse(Commander[1].LastUpdatedAt.ToString()).ToThaiFullDate().ToString().ToThaiNumber() : commanderDateUpdate : Commander[0].LastUpdatedAt != null ? DateTime.Parse(Commander[0].LastUpdatedAt.ToString()).ToThaiFullDate().ToString().ToThaiNumber() : commanderDateUpdate; commanderStatus = Commander[0].ApproveStatus == "APPROVE" ? $"☑ อนุญาต ตั้งแต่{(Commander[0].LastUpdatedAt != null ? DateTime.Parse(Commander[0].LastUpdatedAt.ToString()).ToThaiFullDate().ToString().ToThaiNumber() : "วันที่...................")}" : commanderStatus; commanderCommentApprove = Commander[0].ApproveStatus == "APPROVE" ? !string.IsNullOrWhiteSpace(Commander[0].Comment) ? Commander[0].Comment : commanderCommentApprove : commanderCommentApprove; commanderRejectStatus = Commander[0].ApproveStatus == "REJECT" ? $"☑ ยับยั้งการลาออกไว้จนถึง{(Commander[0].RejectDate != null ? DateTime.Parse(Commander[0].RejectDate.ToString()).ToThaiFullDate().ToString().ToThaiNumber() : "วันที่...................")}" : approverRejectStatus; commanderCommentReject = Commander[0].ApproveStatus == "REJECT" ? !string.IsNullOrWhiteSpace(Commander[0].Comment) ? Commander[0].Comment : commanderCommentReject : commanderCommentReject; commander = $"{Commander[0].Prefix}{Commander[0].FirstName} {Commander[0].LastName}"; commanderPosition = Commander[0].PositionName; } } else { var EmpApproves = _dbContext.Set() .Where(x => x.RetirementResignEmployee.Id == data.Id && x.ApproveType == "APPROVER") .ToList(); var EmpCommander = _dbContext.Set() .Where(x => x.RetirementResignEmployee.Id == data.Id && x.ApproveType == "COMMANDER") .OrderByDescending(x => x.Seq) .ToList(); if (EmpApproves.Count > 0) { approverPositionExecutiveName = EmpApproves[0].PositionExecutiveName; approverStatus = EmpApproves[0].ApproveStatus == "APPROVE" ? "☑ อนุญาต" : approverStatus; approverRejectStatus = EmpApproves[0].ApproveStatus == "REJECT" ? $"☑ ยับยั้งการลาออกไว้จนถึง{(EmpApproves[0].RejectDate != null ? DateTime.Parse(EmpApproves[0].RejectDate.ToString()).ToThaiFullDate().ToString().ToThaiNumber() : "วันที่...................")}" : approverRejectStatus; approver = $"{EmpApproves[0].Prefix}{EmpApproves[0].FirstName} {EmpApproves[0].LastName}"; approverPosition = EmpApproves[0].PositionName; } if (EmpCommander.Count > 0) { commanderDateUpdate = EmpCommander.Count > 1 ? EmpCommander[1].LastUpdatedAt != null ? DateTime.Parse(EmpCommander[1].LastUpdatedAt.ToString()).ToThaiFullDate().ToString().ToThaiNumber() : commanderDateUpdate : EmpCommander[0].LastUpdatedAt != null ? DateTime.Parse(EmpCommander[0].LastUpdatedAt.ToString()).ToThaiFullDate().ToString().ToThaiNumber() : commanderDateUpdate; commanderStatus = EmpCommander[0].ApproveStatus == "APPROVE" ? $"☑ อนุญาต ตั้งแต่{(EmpCommander[0].LastUpdatedAt != null ? DateTime.Parse(EmpCommander[0].LastUpdatedAt.ToString()).ToThaiFullDate().ToString().ToThaiNumber() : "วันที่...................")}" : commanderStatus; commanderCommentApprove = EmpCommander[0].ApproveStatus == "APPROVE" ? !string.IsNullOrWhiteSpace(EmpCommander[0].Comment) ? EmpCommander[0].Comment : commanderCommentApprove : commanderCommentApprove; commanderRejectStatus = EmpCommander[0].ApproveStatus == "REJECT" ? $"☑ ยับยั้งการลาออกไว้จนถึง{(EmpCommander[0].RejectDate != null ? DateTime.Parse(EmpCommander[0].RejectDate.ToString()).ToThaiFullDate().ToString().ToThaiNumber() : "วันที่...................")}" : approverRejectStatus; commanderCommentReject = EmpCommander[0].ApproveStatus == "REJECT" ? !string.IsNullOrWhiteSpace(EmpCommander[0].Comment) ? EmpCommander[0].Comment : commanderCommentReject : commanderCommentReject; commander = $"{EmpCommander[0].Prefix}{EmpCommander[0].FirstName} {EmpCommander[0].LastName}"; commanderPosition = EmpCommander[0].PositionName; } } var _data = new { data.Id, data.profileId, data.prefix, data.firstName, data.lastName, Location = string.IsNullOrEmpty(data.Location) ? string.Empty : data.Location.ToThaiNumber(), FullName = $"{data.prefix}{data.firstName} {data.lastName}", SendDate = string.IsNullOrEmpty(data.SendDate.ToString()) ? string.Empty : DateTime.Parse(data.SendDate.ToString()).ToThaiFullDate().ToString().ToThaiNumber(), ActiveDate = string.IsNullOrEmpty(data.ActiveDate.ToString()) ? string.Empty : DateTime.Parse(data.ActiveDate.ToString()).ToThaiFullDate().ToString().ToThaiNumber(), data.Reason, data.ReasonResign, data.Remark, ReasonRemark = data.Reason == "OTHER" ? string.IsNullOrEmpty(data.Remark) ? data.ReasonResign : $"{data.ReasonResign}({data.Remark})" : data.ReasonResign, data.Status, data.salary, data.PositionTypeOld, data.PositionLevelOld, data.PositionNumberOld, data.OrganizationPositionOld, data.ApproveReason, data.RejectReason, data.IsActive, data.CreatedAt, data.OligarchReject, data.OligarchApproveReason, data.OligarchRejectReason, OligarchRejectDate = string.IsNullOrEmpty(data.OligarchRejectDate.ToString()) ? string.Empty : DateTime.Parse(data.OligarchRejectDate.ToString()).ToThaiFullDate().ToString().ToThaiNumber(), data.CommanderReject, data.CommanderApproveReason, data.CommanderRejectReason, CommanderRejectDate = string.IsNullOrEmpty(data.CommanderRejectDate.ToString()) ? string.Empty : DateTime.Parse(data.CommanderRejectDate.ToString()).ToThaiFullDate().ToString().ToThaiNumber(), data.RemarkHorizontal, dear = approverPositionExecutiveName, approverStatus, approverRejectStatus, approver, approverPosition, diffDate, commanderDateUpdate, commanderStatus, commanderCommentApprove, commanderRejectStatus, commanderCommentReject, commander, commanderPosition }; return _data; } #endregion #endregion } }