using Amazon.S3.Model.Internal.MarshallTransformations; using BMA.EHR.Application.Common.Interfaces; using BMA.EHR.Application.Repositories.MessageQueue; using BMA.EHR.Application.Responses; using BMA.EHR.Domain.Extensions; using BMA.EHR.Domain.Models.HR; using BMA.EHR.Domain.Models.Insignias; using BMA.EHR.Domain.Models.MetaData; using BMA.EHR.Domain.Models.Organizations; using BMA.EHR.Domain.Models.Retirement; using BMA.EHR.Domain.Shared; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http.Metadata; using Microsoft.EntityFrameworkCore; using System.Net; namespace BMA.EHR.Application.Repositories.Reports { public class InsigniaReportRepository { #region " Fields " private readonly IApplicationDBContext _dbContext; private readonly IWebHostEnvironment _hostingEnvironment; private readonly OrganizationCommonRepository _organizationCommonRepository; private readonly NotificationRepository _repositoryNoti; private readonly InsigniaPeriodsRepository _repositoryInsignia; private readonly string CRLF = "\r\n"; #endregion #region " Constructor and Destructor " public InsigniaReportRepository(IApplicationDBContext dbContext, OrganizationCommonRepository organizationCommonRepository, InsigniaPeriodsRepository repositoryInsignia, NotificationRepository repositoryNoti, IWebHostEnvironment hostEnvironment) { _dbContext = dbContext; _hostingEnvironment = hostEnvironment; _repositoryNoti = repositoryNoti; _organizationCommonRepository = organizationCommonRepository; _repositoryInsignia = repositoryInsignia; } #endregion #region " Methods " // private string GetPositionByYear(string profileID, int year) // { // using (var ctx = new ApplicationDbContext()) // { // var ret = (from x in ctx.ProfileSalaryPositions.AsQueryable() // where x.IdNavigation.ProfileId == profileID && // x.IdNavigation.SalaryDateAnnounce.Value.Year == year // orderby x.IdNavigation.Order descending // select x) // .Include(x => x.Position) // .FirstOrDefault(); // if (ret != null) // return ret.Position.Name; // else // return "ไม่ระบุ"; // } // } // private string GetPositionLevelByYear(string profileID, int year) // { // using (var ctx = new ApplicationDbContext()) // { // var ret = (from x in ctx.ProfileSalaryPositionLevels.AsQueryable() // where x.IdNavigation.ProfileId == profileID && // x.IdNavigation.SalaryDateAnnounce.Value.Year == year // orderby x.IdNavigation.Order descending // select x) // .Include(x => x.PositionLevel) // .FirstOrDefault(); // if (ret != null) // return ret.PositionLevel.Name; // else // return "ไม่ระบุ"; // } // } // private string GetPositionTypeByYear(string profileID, int year) // { // using (var ctx = new ApplicationDbContext()) // { // var ret = (from x in ctx.ProfileSalaryPositionTypes.AsQueryable() // where x.IdNavigation.ProfileId == profileID && // x.IdNavigation.SalaryDateAnnounce.Value.Year == year // orderby x.IdNavigation.Order descending // select x) // .Include(x => x.PositionType) // .FirstOrDefault(); // if (ret != null) // return ret.PositionType.Name; // else // return "ไม่ระบุ"; // } // } public async Task GetYearInsigniaPeriod(Guid id) { var period = await _dbContext.Set() .FirstOrDefaultAsync(x => x.Id == id); if (period == null) throw new Exception(GlobalMessages.InsigniaPeriodNotFound); string thaiYear = period.Year.ToThaiYear().ToString().ToThaiNumber(); return thaiYear; } public async Task Get2YearInsigniaPeriod(Guid id) { var period = await _dbContext.Set() .FirstOrDefaultAsync(x => x.Id == id); if (period == null) throw new Exception(GlobalMessages.InsigniaPeriodNotFound); string thaiYear = period.Year.ToThaiYear().ToString().ToThaiNumber(); return thaiYear.Substring(2); } public async Task GetInsigniaPeriod(Guid id) { var period = await _dbContext.Set() .FirstOrDefaultAsync(x => x.Id == id); if (period == null) throw new Exception(GlobalMessages.InsigniaPeriodNotFound); return period; } public async Task GetDateInsigniaPeriod(Guid id) { var period = await _dbContext.Set() .FirstOrDefaultAsync(x => x.Id == id); if (period == null) throw new Exception(GlobalMessages.InsigniaPeriodNotFound); return new { StartDater = period.StartDate.ToThaiFullDate().ToString().ToThaiNumber(), EndDate = period.EndDate.ToThaiFullDate().ToString().ToThaiNumber(), }; } public async Task GetProfileInsignia(Guid id) { var profile = (from r in await _dbContext.Set() .Include(x => x.Prefix) .Include(x => x.Position) .ToListAsync() where r.Id == id select new { FullName = $"{r.Prefix?.Name}{r.FirstName} {r.LastName}", Position = r.Position == null ? "-" : r.Position.Name, OCName = r.OcId == null ? "-" : _organizationCommonRepository.GetOrganizationNameFullPath(r.OcId.Value, false, false), BirthDate = r.BirthDate.ToThaiFullDate().ToString().ToThaiNumber(), DateAppoint = !string.IsNullOrEmpty(r.DateAppoint.ToString()) ? DateTime.Parse((r.DateAppoint.Value.AddYears(25).AddDays(-1)).ToString()).ToThaiFullDate().ToString().ToThaiNumber() : string.Empty, }) .FirstOrDefault(); if (profile == null) throw new Exception(GlobalMessages.DataNotFound); return profile; } //39-แบบ ขร1 บัญชีแสดงจำนวนชั้นตราเครื่องราชฯ ข้าราชการ ชั้นสายสะพาย public async Task GetKhr1Report(Guid id) { //var period = await _dbContext.Set() // .FirstOrDefaultAsync(x => x.Id == id); //if (period == null) // throw new Exception(GlobalMessages.InsigniaPeriodNotFound); //var data_insignia = await _dbContext.Set() // //.Include(x => x.Profile) // .Where(x => x.Request.Period == period) // .Where(x => x.IsApprove == true) // .Where(x => x.Status == "PENDING") // .Where(x => x.RequestInsignia.InsigniaType != null) // .Where(x => x.RequestInsignia.InsigniaType.Name == "ชั้นสายสะพาย") // .Select(x => new // { // Gendor = x.Profile.Gender == null ? null : x.Profile.Gender.Name, // RequestInsigniaName = x.RequestInsignia.Name, // OcId = x.Request.Organization.Id // }) // .ToListAsync(); //var insignia = (from r in data_insignia // group r by new { OcId = r.OcId } into g // select new // { // RowNo = 1, // DepartmentName = _organizationCommonRepository.GetOrganizationNameFullPath(g.Key.OcId, false, false), // G1Male = g.Sum(x => x.Gendor == "ชาย" && x.RequestInsigniaName == "มหาปรมาภรณ์ช้างเผือก" ? 1 : 0), // G1Female = g.Sum(x => x.Gendor == "หญิง" && x.RequestInsigniaName == "มหาปรมาภรณ์ช้างเผือก" ? 1 : 0), // G2Male = g.Sum(x => x.Gendor == "ชาย" && x.RequestInsigniaName == "มหาวชิรมงกุฎ" ? 1 : 0), // G2Female = g.Sum(x => x.Gendor == "หญิง" && x.RequestInsigniaName == "มหาวชิรมงกุฎ" ? 1 : 0), // G3Male = g.Sum(x => x.Gendor == "ชาย" && x.RequestInsigniaName == "ประถมาภรณ์ช้างเผือก" ? 1 : 0), // G3Female = g.Sum(x => x.Gendor == "หญิง" && x.RequestInsigniaName == "ประถมาภรณ์ช้างเผือก" ? 1 : 0), // G4Male = g.Sum(x => x.Gendor == "ชาย" && x.RequestInsigniaName == "ประถมาภรณ์มงกุฎไทย" ? 1 : 0), // G4Female = g.Sum(x => x.Gendor == "หญิง" && x.RequestInsigniaName == "ประถมาภรณ์มงกุฎไทย" ? 1 : 0), // G5Male = g.Sum(x => x.Gendor == "ชาย" ? 1 : 0), // G5Female = g.Sum(x => x.Gendor == "หญิง" ? 1 : 0), // Remark = "", // }).ToList(); //return insignia; return new { }; } public async Task GetKhr1TotalReport(Guid id) { //var period = await _dbContext.Set() // .FirstOrDefaultAsync(x => x.Id == id); //if (period == null) // throw new Exception(GlobalMessages.InsigniaPeriodNotFound); //var data_insignia = await _dbContext.Set() // .Include(x => x.Profile) // .Where(x => x.Request.Period == period) // .Where(x => x.IsApprove == true) // .Where(x => x.Status == "PENDING") // .Where(x => x.RequestInsignia.InsigniaType != null) // .Where(x => x.RequestInsignia.InsigniaType.Name == "ชั้นสายสะพาย") // .Select(x => new // { // Gendor = x.Profile.Gender == null ? null : x.Profile.Gender.Name, // RequestInsigniaName = x.RequestInsignia.Name, // OcId = x.Request.Organization.Id // }) // .ToListAsync(); //var insignia = (from r in data_insignia // group r by new { OcId = r.OcId } into g // select new // { // RowNo = 1, // DepartmentName = _organizationCommonRepository.GetOrganizationNameFullPath(g.Key.OcId, false, false), // G1Male = g.Sum(x => x.Gendor == "ชาย" && x.RequestInsigniaName == "มหาปรมาภรณ์ช้างเผือก" ? 1 : 0), // G1Female = g.Sum(x => x.Gendor == "หญิง" && x.RequestInsigniaName == "มหาปรมาภรณ์ช้างเผือก" ? 1 : 0), // G2Male = g.Sum(x => x.Gendor == "ชาย" && x.RequestInsigniaName == "มหาวชิรมงกุฎ" ? 1 : 0), // G2Female = g.Sum(x => x.Gendor == "หญิง" && x.RequestInsigniaName == "มหาวชิรมงกุฎ" ? 1 : 0), // G3Male = g.Sum(x => x.Gendor == "ชาย" && x.RequestInsigniaName == "ประถมาภรณ์ช้างเผือก" ? 1 : 0), // G3Female = g.Sum(x => x.Gendor == "หญิง" && x.RequestInsigniaName == "ประถมาภรณ์ช้างเผือก" ? 1 : 0), // G4Male = g.Sum(x => x.Gendor == "ชาย" && x.RequestInsigniaName == "ประถมาภรณ์มงกุฎไทย" ? 1 : 0), // G4Female = g.Sum(x => x.Gendor == "หญิง" && x.RequestInsigniaName == "ประถมาภรณ์มงกุฎไทย" ? 1 : 0), // G5Male = g.Sum(x => x.Gendor == "ชาย" ? 1 : 0), // G5Female = g.Sum(x => x.Gendor == "หญิง" ? 1 : 0), // Remark = "", // }).ToList(); //return new //{ // G1Male = insignia.Sum(x => x.G1Male), // G1Female = insignia.Sum(x => x.G1Female), // G2Male = insignia.Sum(x => x.G2Male), // G2Female = insignia.Sum(x => x.G2Female), // G3Male = insignia.Sum(x => x.G3Male), // G3Female = insignia.Sum(x => x.G3Female), // G4Male = insignia.Sum(x => x.G4Male), // G4Female = insignia.Sum(x => x.G4Female), // G5Male = insignia.Sum(x => x.G5Male), // G5Female = insignia.Sum(x => x.G5Female), // Remark = "", //}; return new { }; } //40-แบบ ขร2 บัญชีแสดงจำนวนชั้นตราเครื่องราชฯ ข้าราชการ ชั้นต่ำกว่าสายสะพาย public async Task GetKhr2Report(Guid id) { //var period = await _dbContext.Set() // .FirstOrDefaultAsync(x => x.Id == id); //if (period == null) // throw new Exception(GlobalMessages.InsigniaPeriodNotFound); //var data_insignia = await _dbContext.Set() // .Include(x => x.Profile) // .Where(x => x.Request.Period == period) // .Where(x => x.IsApprove == true) // .Where(x => x.Status == "PENDING") // .Where(x => x.RequestInsignia.InsigniaType != null) // .Where(x => x.RequestInsignia.InsigniaType.Name == "ชั้นต่ำกว่าสายสะพาย") // .Select(x => new // { // Gendor = x.Profile.Gender == null ? null : x.Profile.Gender.Name, // RequestInsigniaName = x.RequestInsignia.Name, // OcId = x.Request.Organization.Id // }) // .ToListAsync(); //var insignia = (from r in data_insignia // group r by new { OcId = r.OcId } into g // select new // { // RowNo = 1, // DepartmentName = _organizationCommonRepository.GetOrganizationNameFullPath(g.Key.OcId, false, false), // G1Male = g.Sum(x => x.Gendor == "ชาย" && x.RequestInsigniaName == "ทวีติยาภรณ์ช้างเผือก" ? 1 : 0), // G1Female = g.Sum(x => x.Gendor == "หญิง" && x.RequestInsigniaName == "ทวีติยาภรณ์ช้างเผือก" ? 1 : 0), // G2Male = g.Sum(x => x.Gendor == "ชาย" && x.RequestInsigniaName == "ทวีติยาภรณ์มงกุฎไทย" ? 1 : 0), // G2Female = g.Sum(x => x.Gendor == "หญิง" && x.RequestInsigniaName == "ทวีติยาภรณ์มงกุฎไทย" ? 1 : 0), // G3Male = g.Sum(x => x.Gendor == "ชาย" && x.RequestInsigniaName == "ตริตาภรณ์ช้างเผือก" ? 1 : 0), // G3Female = g.Sum(x => x.Gendor == "หญิง" && x.RequestInsigniaName == "ตริตาภรณ์ช้างเผือก" ? 1 : 0), // G4Male = g.Sum(x => x.Gendor == "ชาย" && x.RequestInsigniaName == "ตริตาภรณ์มงกุฎไทย" ? 1 : 0), // G4Female = g.Sum(x => x.Gendor == "หญิง" && x.RequestInsigniaName == "ตริตาภรณ์มงกุฎไทย" ? 1 : 0), // G5Male = g.Sum(x => x.Gendor == "ชาย" && x.RequestInsigniaName == "จัตุรถาภรณ์ช้างเผือก" ? 1 : 0), // G5Female = g.Sum(x => x.Gendor == "หญิง" && x.RequestInsigniaName == "จัตุรถาภรณ์ช้างเผือก" ? 1 : 0), // G6Male = g.Sum(x => x.Gendor == "ชาย" && x.RequestInsigniaName == "จัตุรถาภรณ์มงกุฎไทย" ? 1 : 0), // G6Female = g.Sum(x => x.Gendor == "หญิง" && x.RequestInsigniaName == "จัตุรถาภรณ์มงกุฎไทย" ? 1 : 0), // G7Male = g.Sum(x => x.Gendor == "ชาย" && x.RequestInsigniaName == "เบญจมาภรณ์ช้างเผือก" ? 1 : 0), // G7Female = g.Sum(x => x.Gendor == "หญิง" && x.RequestInsigniaName == "เบญจมาภรณ์ช้างเผือก" ? 1 : 0), // G8Male = g.Sum(x => x.Gendor == "ชาย" && x.RequestInsigniaName == "เบญจมาภรณ์มงกุฎไทย" ? 1 : 0), // G8Female = g.Sum(x => x.Gendor == "หญิง" && x.RequestInsigniaName == "เบญจมาภรณ์มงกุฎไทย" ? 1 : 0), // G9Male = g.Sum(x => x.Gendor == "ชาย" ? 1 : 0), // G9Female = g.Sum(x => x.Gendor == "หญิง" ? 1 : 0), // Remark = "", // }).ToList(); //return insignia; return new { }; } public async Task GetKhr2TotalReport(Guid id) { //var period = await _dbContext.Set() // .FirstOrDefaultAsync(x => x.Id == id); //if (period == null) // throw new Exception(GlobalMessages.InsigniaPeriodNotFound); //var data_insignia = await _dbContext.Set() // .Include(x => x.Profile) // .Where(x => x.Request.Period == period) // .Where(x => x.IsApprove == true) // .Where(x => x.Status == "PENDING") // .Where(x => x.RequestInsignia.InsigniaType != null) // .Where(x => x.RequestInsignia.InsigniaType.Name == "ชั้นต่ำกว่าสายสะพาย") // .Select(x => new // { // Gendor = x.Profile.Gender == null ? null : x.Profile.Gender.Name, // RequestInsigniaName = x.RequestInsignia.Name, // OcId = x.Request.Organization.Id // }) // .ToListAsync(); //var insignia = (from r in data_insignia // group r by new { OcId = r.OcId } into g // select new // { // RowNo = 1, // DepartmentName = _organizationCommonRepository.GetOrganizationNameFullPath(g.Key.OcId, false, false), // G1Male = g.Sum(x => x.Gendor == "ชาย" && x.RequestInsigniaName == "ทวีติยาภรณ์ช้างเผือก" ? 1 : 0), // G1Female = g.Sum(x => x.Gendor == "หญิง" && x.RequestInsigniaName == "ทวีติยาภรณ์ช้างเผือก" ? 1 : 0), // G2Male = g.Sum(x => x.Gendor == "ชาย" && x.RequestInsigniaName == "ทวีติยาภรณ์มงกุฎไทย" ? 1 : 0), // G2Female = g.Sum(x => x.Gendor == "หญิง" && x.RequestInsigniaName == "ทวีติยาภรณ์มงกุฎไทย" ? 1 : 0), // G3Male = g.Sum(x => x.Gendor == "ชาย" && x.RequestInsigniaName == "ตริตาภรณ์ช้างเผือก" ? 1 : 0), // G3Female = g.Sum(x => x.Gendor == "หญิง" && x.RequestInsigniaName == "ตริตาภรณ์ช้างเผือก" ? 1 : 0), // G4Male = g.Sum(x => x.Gendor == "ชาย" && x.RequestInsigniaName == "ตริตาภรณ์มงกุฎไทย" ? 1 : 0), // G4Female = g.Sum(x => x.Gendor == "หญิง" && x.RequestInsigniaName == "ตริตาภรณ์มงกุฎไทย" ? 1 : 0), // G5Male = g.Sum(x => x.Gendor == "ชาย" && x.RequestInsigniaName == "จัตุรถาภรณ์ช้างเผือก" ? 1 : 0), // G5Female = g.Sum(x => x.Gendor == "หญิง" && x.RequestInsigniaName == "จัตุรถาภรณ์ช้างเผือก" ? 1 : 0), // G6Male = g.Sum(x => x.Gendor == "ชาย" && x.RequestInsigniaName == "จัตุรถาภรณ์มงกุฎไทย" ? 1 : 0), // G6Female = g.Sum(x => x.Gendor == "หญิง" && x.RequestInsigniaName == "จัตุรถาภรณ์มงกุฎไทย" ? 1 : 0), // G7Male = g.Sum(x => x.Gendor == "ชาย" && x.RequestInsigniaName == "เบญจมาภรณ์ช้างเผือก" ? 1 : 0), // G7Female = g.Sum(x => x.Gendor == "หญิง" && x.RequestInsigniaName == "เบญจมาภรณ์ช้างเผือก" ? 1 : 0), // G8Male = g.Sum(x => x.Gendor == "ชาย" && x.RequestInsigniaName == "เบญจมาภรณ์มงกุฎไทย" ? 1 : 0), // G8Female = g.Sum(x => x.Gendor == "หญิง" && x.RequestInsigniaName == "เบญจมาภรณ์มงกุฎไทย" ? 1 : 0), // G9Male = g.Sum(x => x.Gendor == "ชาย" ? 1 : 0), // G9Female = g.Sum(x => x.Gendor == "หญิง" ? 1 : 0), // Remark = "", // }).ToList(); //return new //{ // G1Male = insignia.Sum(x => x.G1Male), // G1Female = insignia.Sum(x => x.G1Female), // G2Male = insignia.Sum(x => x.G2Male), // G2Female = insignia.Sum(x => x.G2Female), // G3Male = insignia.Sum(x => x.G3Male), // G3Female = insignia.Sum(x => x.G3Female), // G4Male = insignia.Sum(x => x.G4Male), // G4Female = insignia.Sum(x => x.G4Female), // G5Male = insignia.Sum(x => x.G5Male), // G5Female = insignia.Sum(x => x.G5Female), // G6Male = insignia.Sum(x => x.G6Male), // G6Female = insignia.Sum(x => x.G6Female), // G7Male = insignia.Sum(x => x.G7Male), // G7Female = insignia.Sum(x => x.G7Female), // G8Male = insignia.Sum(x => x.G8Male), // G8Female = insignia.Sum(x => x.G8Female), // G9Male = insignia.Sum(x => x.G9Male), // G9Female = insignia.Sum(x => x.G9Female), // Remark = "", //}; return new { }; } //41-แบบ ขร3 บัญชีรายชื่อข้าราชการผู้ขอพระราชทานเครื่องราชฯ public async Task GetKhr3Report(Guid id) { //var period = await _dbContext.Set() // .FirstOrDefaultAsync(x => x.Id == id); //if (period == null) // throw new Exception(GlobalMessages.InsigniaPeriodNotFound); //var data = (from r in await _dbContext.Set() // .Include(x => x.Profile) // .ThenInclude(x => x.Gender) // .Include(x => x.Profile) // .ThenInclude(x => x.Prefix) // .Include(x => x.Request) // .ThenInclude(x => x.Period) // .Include(x => x.Request) // .ThenInclude(x => x.Organization) // .Include(x => x.RequestInsignia) // .ThenInclude(x => x.InsigniaType) // .ToListAsync() // where r.Request.Period == period // && r.IsApprove == true // && r.Status == "PENDING" // && r.RequestInsignia.InsigniaType != null // && r.RequestInsignia.InsigniaType.Name != "เหรียญบำเหน็จในราชการ" // select new // { // InsigniaInitial = r.RequestInsignia.ShortName, // InsigniaName = r.RequestInsignia.Name, // ProfileId = r.Profile.Id, // FullName = $"{r.Profile.Prefix?.Name}{r.Profile.FirstName} {r.Profile.LastName}", // Gender = r.Profile.Gender == null ? null : r.Profile.Gender.Name, // Male = r.Profile.Gender == null ? 0 : (r.Profile.Gender.Name == "ชาย" ? 1 : 0), // Female = r.Profile.Gender == null ? 0 : (r.Profile.Gender.Name == "หญิง" ? 1 : 0), // InsigniaId = r.RequestInsignia.Id, // OCName = _organizationCommonRepository.GetOrganizationNameFullPath(r.Request.Organization.Id, false, false) // }) // .Distinct() // .ToList(); //// loop to add temp row with 50 rows per page //var insigniaList = data.Select(x => new { InsigniaId = x.InsigniaId, InsigniaInitial = x.InsigniaInitial, InsigniaName = x.InsigniaName }) // .Distinct().ToList(); //var tmpOC = data.First().OCName; //var sumData = (from x in data // group x by x.InsigniaName into grp // select new // { // InsigniaName = grp.Key, // SumMale = grp.Sum(x => x.Male), // SumFemale = grp.Sum(x => x.Female) // }).ToList(); //var ret = new List(); //foreach (var item in data) //{ // var p = new // { // InsigniaInitial = item.InsigniaInitial, // InsigniaName = item.InsigniaName, // ProfileId = item.ProfileId, // FullName = item.FullName, // Gender = item.Gender, // Male = item.Male, // Female = item.Female, // InsigniaId = item.InsigniaId, // OCName = item.OCName, // SumMale = sumData.FirstOrDefault(x => x.InsigniaName == item.InsigniaName) == null ? 0 : sumData.FirstOrDefault(x => x.InsigniaName == item.InsigniaName)!.SumMale, // SumFemale = sumData.FirstOrDefault(x => x.InsigniaName == item.InsigniaName) == null ? 0 : sumData.FirstOrDefault(x => x.InsigniaName == item.InsigniaName)!.SumFemale, // }; // ret.Add(p); //} //foreach (var ins in insigniaList) //{ // var count = data.Where(x => x.InsigniaId == ins.InsigniaId).Count(); // var mod_val = count <= 50 ? 50 - count : count % 50.0; // for (int i = 0; i < mod_val; i++) // { // var p = new // { // InsigniaInitial = ins.InsigniaInitial, // InsigniaName = ins.InsigniaName, // ProfileId = Guid.Parse("00000000-0000-0000-0000-000000000000"), // FullName = "", // Gender = "", // Male = 0, // Female = 0, // InsigniaId = ins.InsigniaId, // // OCName = "" // OCName = tmpOC, // SumMale = sumData.FirstOrDefault(x => x.InsigniaName == ins.InsigniaName) == null ? 0 : sumData.FirstOrDefault(x => x.InsigniaName == ins.InsigniaName)!.SumMale, // SumFemale = sumData.FirstOrDefault(x => x.InsigniaName == ins.InsigniaName) == null ? 0 : sumData.FirstOrDefault(x => x.InsigniaName == ins.InsigniaName)!.SumFemale, // }; // ret.Add(p); // } //} //return ret; return new { }; } public async Task GetKhr3ReportV2(Guid id) { //var period = await _dbContext.Set() // .FirstOrDefaultAsync(x => x.Id == id); //if (period == null) // throw new Exception(GlobalMessages.InsigniaPeriodNotFound); //var data = (from r in await _dbContext.Set() // .Include(x => x.Profile) // .ThenInclude(x => x.Gender) // .Include(x => x.Profile) // .ThenInclude(x => x.Prefix) // .Include(x => x.Request) // .ThenInclude(x => x.Period) // .Include(x => x.Request) // .ThenInclude(x => x.Organization) // .Include(x => x.RequestInsignia) // .ThenInclude(x => x.InsigniaType) // .ToListAsync() // where r.Request.Period == period // && r.IsApprove == true // && r.Status == "PENDING" // && r.RequestInsignia.InsigniaType != null // && r.RequestInsignia.InsigniaType.Name != "เหรียญบำเหน็จในราชการ" // select new // { // InsigniaInitial = r.RequestInsignia.ShortName, // InsigniaName = r.RequestInsignia.Name, // ProfileId = r.Profile.Id, // FullName = $"{r.Profile.Prefix?.Name}{r.Profile.FirstName} {r.Profile.LastName}", // Gender = r.Profile.Gender == null ? null : r.Profile.Gender.Name, // Male = r.Profile.Gender == null ? 0 : (r.Profile.Gender.Name == "ชาย" ? 1 : 0), // Female = r.Profile.Gender == null ? 0 : (r.Profile.Gender.Name == "หญิง" ? 1 : 0), // InsigniaId = r.RequestInsignia.Id, // OCName = _organizationCommonRepository.GetOrganizationNameFullPath(r.Request.Organization.Id, false, false) // }) // .Distinct() // .ToList(); //// loop to add temp row with 50 rows per page //var insigniaList = data.Select(x => new { InsigniaId = x.InsigniaId, InsigniaInitial = x.InsigniaInitial, InsigniaName = x.InsigniaName }) // .Distinct().ToList(); //// var tmpOC = data.First().OCName; //// var sumData = (from x in data //// group x by x.InsigniaName into grp //// select new //// { //// InsigniaName = grp.Key, //// SumMale = grp.Sum(x => x.Male), //// SumFemale = grp.Sum(x => x.Female) //// }).ToList(); //// var ret = new List(); //// foreach (var item in data) //// { //// var p = new //// { //// InsigniaInitial = item.InsigniaInitial, //// InsigniaName = item.InsigniaName, //// ProfileId = item.ProfileId, //// FullName = item.FullName, //// Gender = item.Gender, //// Male = item.Male, //// Female = item.Female, //// InsigniaId = item.InsigniaId, //// OCName = item.OCName, //// SumMale = sumData.FirstOrDefault(x => x.InsigniaName == item.InsigniaName) == null ? 0 : sumData.FirstOrDefault(x => x.InsigniaName == item.InsigniaName)!.SumMale, //// SumFemale = sumData.FirstOrDefault(x => x.InsigniaName == item.InsigniaName) == null ? 0 : sumData.FirstOrDefault(x => x.InsigniaName == item.InsigniaName)!.SumFemale, //// }; //// ret.Add(p); //// } //foreach (var ins in insigniaList) //{ // var count = data.Where(x => x.InsigniaId == ins.InsigniaId).Count(); // var mod_val = count <= 50 ? 50 - count : count % 50.0; // for (int i = 0; i < mod_val; i++) // { // var p = new // { // InsigniaInitial = ins.InsigniaInitial, // InsigniaName = ins.InsigniaName, // ProfileId = Guid.Parse("00000000-0000-0000-0000-000000000000"), // FullName = "", // Gender = "", // Male = 0, // Female = 0, // InsigniaId = ins.InsigniaId, // OCName = "" // // OCName = tmpOC, // // SumMale = sumData.FirstOrDefault(x => x.InsigniaName == ins.InsigniaName) == null ? 0 : sumData.FirstOrDefault(x => x.InsigniaName == ins.InsigniaName)!.SumMale, // // SumFemale = sumData.FirstOrDefault(x => x.InsigniaName == ins.InsigniaName) == null ? 0 : sumData.FirstOrDefault(x => x.InsigniaName == ins.InsigniaName)!.SumFemale, // }; // data.Add(p); // } //} //var sumData = (from x in data // group x by x.InsigniaName into grp // select new // { // InsigniaName = grp.Key, // SumMale = grp.Sum(x => x.Male), // SumFemale = grp.Sum(x => x.Female), // Data = grp.ToList(), // }).ToList(); //return sumData; return new { }; } //42-แบบ ขร4 บัญชีแสดงคุณสมบัติของข้าราชการซึ่งเสนอขอเครื่องราชฯ public async Task GetKhr4Report(Guid id) { //var period = await _dbContext.Set() // .FirstOrDefaultAsync(x => x.Id == id); //if (period == null) // throw new Exception(GlobalMessages.InsigniaPeriodNotFound); //var teacher_data = (from r in await _dbContext.Set() // .Include(x => x.Profile) // .ThenInclude(x => x.Salaries) // .Include(x => x.Profile) // .ThenInclude(x => x.Gender) // .Include(x => x.Profile) // .ThenInclude(x => x.Prefix) // .Include(x => x.Profile) // .ThenInclude(x => x.PositionType) // .Include(x => x.Profile) // .ThenInclude(x => x.PositionLevel) // .Include(x => x.Request) // .ThenInclude(x => x.Period) // .Include(x => x.RequestInsignia) // .ThenInclude(x => x.InsigniaType) // .Include(x => x.Request) // .ThenInclude(x => x.Organization) // .ToListAsync() // where r.Request.Period == period // && r.IsApprove == true // && r.Status == "PENDING" // && r.RequestInsignia.InsigniaType != null // && r.RequestInsignia.InsigniaType.Name != "เหรียญบำเหน็จในราชการ" // select new // { // InsigniaInitial = r.RequestInsignia.ShortName, // InsigniaName = r.RequestInsignia.Name, // ProfileId = r.Profile.Id, // CitizenId = r.Profile.CitizenId == null ? null : r.Profile.CitizenId.ToThaiNumber(), // FullName = $"{r.Profile.Prefix?.Name}{r.Profile.FirstName} {r.Profile.LastName}", // ShowProfileId = r.Profile.Id, // Type = r.Profile.PositionType == null ? "-" : r.Profile.PositionType.Name, // AcademicStanding = "", // Level = r.Profile.PositionLevel == null ? "-" : r.Profile.PositionLevel.Name, // DateStart = r.Profile.DateStart == null ? null : r.Profile.DateStart.Value.ToThaiShortDate().ToThaiNumber(), // SalaryAmount = r.Profile.Salaries.Count() == 0 ? "-" : // Convert.ToInt32(r.Profile.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount).ToNumericText().ToThaiNumber(), // InsigniaRecv = "", // InsigniaRecvDate = "", // InsigniaRequest = r.RequestInsignia.ShortName, // Remark = "", // Position = r.Profile.Position?.Name + // (r.Profile.PositionType == null ? null : " ประเภท" + r.Profile.PositionType?.Name) + // (r.Profile.PositionLevel == null ? null : " สังกัด" + r.Profile.PositionLevel?.Name) + // (r.Request.Organization == null ? null : " ระดับ" + CRLF + _organizationCommonRepository.GetOrganizationNameFullPath(r.Request.Organization.Id, false, false)) // , // OCName = _organizationCommonRepository.GetOrganizationNameFullPath(r.Request.Organization.Id, false, false) // }) // .Distinct() // .ToList(); //// var insignia_data = (from r in await _dbContext.Set() //// .Include(x => x.Profile) //// .ThenInclude(x => x.Gender) //// .Include(x => x.Profile) //// .ThenInclude(x => x.Insignias) //// .ThenInclude(x => x.Insignia) //// .Include(x => x.Request) //// .ThenInclude(x => x.Period) //// .Include(x => x.Request) //// .ThenInclude(x => x.Organization) //// .Include(x => x.RequestInsignia) //// .ThenInclude(x => x.InsigniaType) //// .ToListAsync() //// where r.Request.Period == period //// && r.IsApprove == true //// && r.Status == "PENDING" //// && r.RequestInsignia.InsigniaType != null //// && r.RequestInsignia.InsigniaType.Name != "เหรียญบำเหน็จในราชการ" //// select new //// { //// InsigniaInitial = r.RequestInsignia.ShortName, //// InsigniaName = r.RequestInsignia.Name, //// ProfileId = r.Profile.Id, //// CitizenId = r.Profile.CitizenId, //// FullName = $"", //// ShowProfileId = Guid.Parse("00000000-0000-0000-0000-000000000000"), //// Type = "", //// AcademicStanding = "", //// Level = "", //// DateStart = "", //// SalaryAmount = new double?(0), //// InsigniaRecv = r.Profile.Insignias.Count() == 0 ? null : //// (r.Profile.Insignias.OrderByDescending(x => x.Year).FirstOrDefault().Insignia == null ? null : r.Profile.Insignias.OrderByDescending(x => x.Year).FirstOrDefault().Insignia.ShortName), //// InsigniaRecvDate = r.Profile.Insignias.Count() == 0 ? null : //// (r.Profile.Insignias.OrderByDescending(x => x.Year).FirstOrDefault().DateAnnounce == null ? null : r.Profile.Insignias.OrderByDescending(x => x.Year).FirstOrDefault().DateAnnounce.Value.ToThaiShortDate()), //// InsigniaRequest = "", //// Remark = "", //// Position = "", //// // Position = GetPositionByYear(r.Profile.Id, r.Request.Period.Year) + " ประเภท" + //// // GetPositionTypeByYear(r.Profile.Id, r.Request.Period.Year) + " ระดับ" + //// // GetPositionLevelByYear(r.Profile.Id, r.Request.Period.Year), //// OCName = _organizationCommonRepository.GetOrganizationNameFullPath(r.Request.Organization.Id, false, false) //// }) //// .Distinct() //// .ToList(); //// var data2 = teacher_data.Union(insignia_data).ToList(); //return teacher_data; return new { }; } //44-บัญชีแสดงจำนวนชั้นตราเครื่องราชฯ public async Task GetSummaryCoinReport(Guid id) { //var period = await _dbContext.Set() // .FirstOrDefaultAsync(x => x.Id == id); //if (period == null) // throw new Exception(GlobalMessages.InsigniaPeriodNotFound); //var data_insignia = await _dbContext.Set() // .Include(x => x.Profile) // .Where(x => x.Request.Period == period) // .Where(x => x.IsApprove == true) // .Where(x => x.Status == "PENDING") // .Where(x => x.RequestInsignia.InsigniaType != null) // .Where(x => x.RequestInsignia.InsigniaType.Name == "เหรียญบำเหน็จในราชการ") // .Select(x => new // { // Gendor = x.Profile.Gender == null ? null : x.Profile.Gender.Name, // RequestInsigniaName = x.RequestInsignia.Name, // InsigniaInitial = $"{x.RequestInsignia.Name}({x.RequestInsignia.ShortName})", // OcId = x.Request.Organization.Id // }) // .ToListAsync(); //var insignia = (from r in data_insignia // group r by new { OcId = r.OcId, InsigniaInitial = r.InsigniaInitial } into g // select new // { // RowNo = 1, // DepartmentName = _organizationCommonRepository.GetOrganizationNameFullPath(g.Key.OcId, false, false), // InsigniaInitial = g.Key.InsigniaInitial, // G1Male = g.Sum(x => x.Gendor == "ชาย" && x.RequestInsigniaName == "เหรียญจักรพรรดิมาลา" ? 1 : 0).ToString().ToThaiNumber(), // G1Female = g.Sum(x => x.Gendor == "หญิง" && x.RequestInsigniaName == "เหรียญจักรพรรดิมาลา" ? 1 : 0).ToString().ToThaiNumber(), // G2Male = g.Sum(x => x.Gendor == "ชาย" ? 1 : 0).ToString().ToThaiNumber(), // G2Female = g.Sum(x => x.Gendor == "หญิง" ? 1 : 0).ToString().ToThaiNumber(), // Remark = "", // }).ToList(); //return insignia; return new { }; } public async Task GetSummaryTotalCoinReport(Guid id) { //var period = await _dbContext.Set() // .FirstOrDefaultAsync(x => x.Id == id); //if (period == null) // throw new Exception(GlobalMessages.InsigniaPeriodNotFound); //var data_insignia = await _dbContext.Set() // .Include(x => x.Profile) // .Where(x => x.Request.Period == period) // .Where(x => x.IsApprove == true) // .Where(x => x.Status == "PENDING") // .Where(x => x.RequestInsignia.InsigniaType != null) // .Where(x => x.RequestInsignia.InsigniaType.Name == "เหรียญบำเหน็จในราชการ") // .Select(x => new // { // Gendor = x.Profile.Gender == null ? null : x.Profile.Gender.Name, // RequestInsigniaName = x.RequestInsignia.Name, // OcId = x.Request.Organization.Id // }) // .ToListAsync(); //var insignia = (from r in data_insignia // group r by new { OcId = r.OcId } into g // select new // { // RowNo = 1, // DepartmentName = _organizationCommonRepository.GetOrganizationNameFullPath(g.Key.OcId, false, false), // G1Male = g.Sum(x => x.Gendor == "ชาย" && x.RequestInsigniaName == "เหรียญจักรพรรดิมาลา" ? 1 : 0), // G1Female = g.Sum(x => x.Gendor == "หญิง" && x.RequestInsigniaName == "เหรียญจักรพรรดิมาลา" ? 1 : 0), // G2Male = g.Sum(x => x.Gendor == "ชาย" ? 1 : 0), // G2Female = g.Sum(x => x.Gendor == "หญิง" ? 1 : 0), // Remark = "", // }).ToList(); //return new //{ // G1Male = insignia.Sum(x => x.G1Male).ToString().ToThaiNumber(), // G1Female = insignia.Sum(x => x.G1Female).ToString().ToThaiNumber(), // G2Male = insignia.Sum(x => x.G2Male).ToString().ToThaiNumber(), // G2Female = insignia.Sum(x => x.G2Female).ToString().ToThaiNumber(), // Remark = "", //}; return new { }; } //45-บัญชีแสดงรายชื่อผู้ขอพระราชทานเหรียญจักรพรรดิมาลา public async Task GetCoinReport(Guid id) { //var period = await _dbContext.Set() // .FirstOrDefaultAsync(x => x.Id == id); //if (period == null) // throw new Exception(GlobalMessages.InsigniaPeriodNotFound); //var gender = (from r in await _dbContext.Set() // .Include(x => x.Profile) // .ThenInclude(x => x.Gender) // .Include(x => x.Profile) // .ThenInclude(x => x.Prefix) // .Include(x => x.Request) // .ThenInclude(x => x.Period) // .Include(x => x.Request) // .ThenInclude(x => x.Organization) // .Include(x => x.RequestInsignia) // .ThenInclude(x => x.InsigniaType) // .ToListAsync() // where r.Request.Period == period // && r.IsApprove == true // && r.Status == "PENDING" // && r.RequestInsignia.InsigniaType != null // && r.RequestInsignia.InsigniaType.Name != "เหรียญบำเหน็จในราชการ" // select new // { // Male = r.Profile.Gender == null ? 0 : (r.Profile.Gender.Name == "ชาย" ? 1 : 0), // Female = r.Profile.Gender == null ? 0 : (r.Profile.Gender.Name == "หญิง" ? 1 : 0), // }) // .Distinct() // .ToList(); //var data = (from r in await _dbContext.Set() // .Include(x => x.Profile) // .ThenInclude(x => x.Gender) // .Include(x => x.Profile) // .ThenInclude(x => x.Prefix) // .Include(x => x.Request) // .ThenInclude(x => x.Period) // .Include(x => x.Request) // .ThenInclude(x => x.Organization) // .Include(x => x.RequestInsignia) // .ThenInclude(x => x.InsigniaType) // .ToListAsync() // where r.Request.Period == period // && r.IsApprove == true // && r.Status == "PENDING" // && r.RequestInsignia.InsigniaType != null // && r.RequestInsignia.InsigniaType.Name != "เหรียญบำเหน็จในราชการ" // select new // { // InsigniaInitial = r.RequestInsignia.ShortName, // InsigniaName = r.RequestInsignia.Name, // ProfileId = r.Profile.Id, // FullName = $"{r.Profile.Prefix?.Name}{r.Profile.FirstName} {r.Profile.LastName}", // Gender = r.Profile.Gender == null ? null : r.Profile.Gender.Name, // Male = gender.Sum(x => x.Male), // Female = gender.Sum(x => x.Female), // InsigniaId = r.RequestInsignia.Id, // OCName = _organizationCommonRepository.GetOrganizationNameFullPath(r.Request.Organization.Id, false, false) // }) // .Distinct() // .ToList(); //// loop to add temp row with 50 rows per page //var insigniaList = data.Select(x => new { InsigniaId = x.InsigniaId, InsigniaInitial = x.InsigniaInitial, InsigniaName = x.InsigniaName }) // .Distinct().ToList(); //foreach (var ins in insigniaList) //{ // var count = data.Where(x => x.InsigniaId == ins.InsigniaId).Count(); // var mod_val = count <= 50 ? 50 - count : 50 - (count % 50.0); // for (int i = 0; i < mod_val; i++) // { // var p = new // { // InsigniaInitial = ins.InsigniaInitial, // InsigniaName = ins.InsigniaName, // ProfileId = Guid.Parse("00000000-0000-0000-0000-000000000000"), // FullName = "", // Gender = "", // Male = 0, // Female = 0, // InsigniaId = ins.InsigniaId, // OCName = "" // }; // data.Add(p); // } //} //return data.OrderBy(x => x.InsigniaName); return new { }; } //46-ประวัติสำหรับการเสนอขอพระราชทานเหรียญจักรพรรดิมาลา public async Task GetHistorySalaryReport(Guid id) { //var profile = await _dbContext.Set() // .FirstOrDefaultAsync(x => x.Id == id); //if (profile == null) // throw new Exception(GlobalMessages.DataNotFound); //var positions = await _dbContext.Set() // .ToListAsync(); //var organizations = await _dbContext.Set() // .Include(x => x.Parent) // .ThenInclude(x => x.OrganizationOrganization) // .ToListAsync(); //var data = (from r in await _dbContext.Set() // .Include(x => x.Profile) // .ToListAsync() // join p in positions on r?.PositionId equals p.Id into pGroup // from p in pGroup.DefaultIfEmpty() // join o in organizations on r?.OcId equals o.Id into oGroup // from o in oGroup.DefaultIfEmpty() // where r.Profile == profile // select new // { // DateTh = r.Date == null ? "-" : r.Date.Value.ToThaiShortDate().ToString().ToThaiNumber(), // Position = p == null ? "-" : p.Name, // OCName = o == null || o.Parent == null ? "-" : (o.Parent.OrganizationOrganization == null ? "-" : o.Parent.OrganizationOrganization.Name), // Age = r.Date == null ? "-" : (r.Date.Value.Year - r.Profile.BirthDate.Year).ToNumericText().ToThaiNumber(), // Amount = r.Amount == null ? null : r.Amount.Value.ToNumericText().ToThaiNumber(), // Date = r.Date, // Remark = "", // }) // .Distinct() // .OrderBy(x => x.Date) // .ToList(); //return data; return new { }; } //noti ยื่นเสนอคน public async Task NotifyInsignia() { var insigniaPeriods = await _dbContext.Set() .AsQueryable() .ToListAsync(); foreach (var insigniaPeriod in insigniaPeriods) { if (insigniaPeriod.EndDate.AddDays(-insigniaPeriod.Amount).Date == DateTime.Now.Date) { await _repositoryNoti.PushNotificationAsync( Guid.Parse("08dbc953-6441-408a-86d0-4df4ce449039"), $"แจ้งเตือนรอบการเสนอขอ {insigniaPeriod.Name} รอบที่{insigniaPeriod.Round}", $"แจ้งเตือนรอบการเสนอขอ {insigniaPeriod.Name} รอบที่{insigniaPeriod.Round}", "", true ); await _repositoryNoti.PushNotificationAsync( Guid.Parse("08dbca3a-8b6a-4a4e-8b23-1f62e4f30ef6"), $"แจ้งเตือนรอบการเสนอขอ {insigniaPeriod.Name} รอบที่{insigniaPeriod.Round}", $"แจ้งเตือนรอบการเสนอขอ {insigniaPeriod.Name} รอบที่{insigniaPeriod.Round}", "", true ); } } } //ล็อกข้อมูล โอนคนไปบันทึกผล public async Task LockInsignia() { var insigniaPeriods = await _dbContext.Set() .AsQueryable() .Include(x => x.InsigniaRequests) .Include(x => x.ReliefDoc) .ToListAsync(); foreach (var insigniaPeriod in insigniaPeriods) { if (insigniaPeriod.EndDate.Date.AddDays(5) == DateTime.Now.Date) continue; insigniaPeriod.IsLock = true; var insigniaNote = await _dbContext.Set() .Include(x => x.InsigniaNoteProfiles) //.ThenInclude(x => x.Profile) .Include(x => x.InsigniaNoteProfiles) .ThenInclude(x => x.RequestInsignia) .FirstOrDefaultAsync(x => x.Year == insigniaPeriod.Year); if (insigniaNote == null) { insigniaNote = new InsigniaNote { // Round = insigniaPeriod.Round, Name = $"รอบการเสนอขอพระราชทานเครื่องราชฯ ปี {insigniaPeriod.Year + 543}", Year = insigniaPeriod.Year, // StartDate = insigniaPeriod.StartDate, // EndDate = insigniaPeriod.EndDate, // Amount = insigniaPeriod.Amount, // ReliefDoc = insigniaPeriod.ReliefDoc, CreatedFullName = "System Administrator", CreatedUserId = "", CreatedAt = DateTime.Now, LastUpdateFullName = "System Administrator", LastUpdateUserId = "", LastUpdatedAt = DateTime.Now, }; await _dbContext.Set().AddAsync(insigniaNote); await _dbContext.SaveChangesAsync(); insigniaNote = await _dbContext.Set() .Include(x => x.InsigniaNoteProfiles) //.ThenInclude(x => x.Profile) .Include(x => x.InsigniaNoteProfiles) .ThenInclude(x => x.RequestInsignia) .FirstOrDefaultAsync(x => x.Id == insigniaNote.Id); } var requestOlds = await _dbContext.Set() .Where(p => p.Period == insigniaPeriod) .Where(p => p.RequestStatus == "st5") .ToListAsync(); foreach (var requestOld in requestOlds) { var profileOlds = await _dbContext.Set() //.Include(x => x.Profile) .Include(x => x.RequestInsignia) .Where(p => p.Request == requestOld) .ToListAsync(); foreach (var profileOld in profileOlds) { if (profileOld.Status == "DELETE" || profileOld.Status == "REJECT") continue; var noreProfileOld = insigniaNote.InsigniaNoteProfiles .Where(x => x.ProfileId == profileOld.ProfileId) .FirstOrDefault(); if (noreProfileOld != null) { noreProfileOld.RequestDate = profileOld.RequestDate; noreProfileOld.Salary = profileOld.Salary; noreProfileOld.IsApprove = profileOld.IsApprove; noreProfileOld.RequestInsignia = profileOld.RequestInsignia; noreProfileOld.CreatedFullName = "System Administrator"; noreProfileOld.CreatedUserId = ""; noreProfileOld.CreatedAt = DateTime.Now; noreProfileOld.LastUpdateFullName = "System Administrator"; noreProfileOld.LastUpdateUserId = ""; noreProfileOld.LastUpdatedAt = DateTime.Now; } else { if (profileOld.ProfileId == null) continue; await _dbContext.Set().AddAsync(new InsigniaNoteProfile { RequestDate = profileOld.RequestDate, Salary = profileOld.Salary, IsApprove = profileOld.IsApprove, Status = "PENDING", ProfileId = profileOld.ProfileId, RequestInsignia = profileOld.RequestInsignia, OrganizationOrganizationSend = null, InsigniaNote = insigniaNote, CreatedFullName = "System Administrator", CreatedUserId = "", CreatedAt = DateTime.Now, LastUpdateFullName = "System Administrator", LastUpdateUserId = "", LastUpdatedAt = DateTime.Now, }); } } } await _dbContext.SaveChangesAsync(); } } //คำนวนผู้ได้รับเครื่องราชฯ public async Task CalInsignaiRequestBkk() { var insigniaPeriods = await _dbContext.Set() .AsQueryable() .ToListAsync(); foreach (var insigniaPeriod in insigniaPeriods) { if (insigniaPeriod.StartDate == DateTime.Now.Date) continue; var organizationType = await _dbContext.Set().Where(x => x.Name == "หน่วยงาน").FirstOrDefaultAsync(); if (organizationType == null) continue; var organizations = await _dbContext.Set().Where(x => x.OrganizationType == organizationType).ToListAsync(); foreach (var organization in organizations) { if (organization == null) continue; var result = await _repositoryInsignia.GetInsigniaRequest(insigniaPeriod.Id, organization.Id); if (result != null) { Guid period = result.PeriodId; string requestStatus = result.RequestStatus; var candidate = await _repositoryInsignia.GetInsigniaCandidateBKK(insigniaPeriod.Id, organization.Id); // ตรวจสอบว่ารายการอยู่ใน table insignia_request_new if (requestStatus == null) { // บันทึกรายชื่อ await _repositoryInsignia.InsertCandidate(period, organization.Id, candidate); } } } } } #endregion } }