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; 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"; private readonly UserProfileRepository _userProfileRepository; private readonly IHttpContextAccessor _httpContextAccessor; #endregion #region " Constructor and Destructor " public InsigniaReportRepository(IApplicationDBContext dbContext, OrganizationCommonRepository organizationCommonRepository, InsigniaPeriodsRepository repositoryInsignia, NotificationRepository repositoryNoti, IWebHostEnvironment hostEnvironment, UserProfileRepository userProfileRepository, IHttpContextAccessor httpContextAccessor) { _dbContext = dbContext; _hostingEnvironment = hostEnvironment; _repositoryNoti = repositoryNoti; _organizationCommonRepository = organizationCommonRepository; _repositoryInsignia = repositoryInsignia; _userProfileRepository = userProfileRepository; _httpContextAccessor = httpContextAccessor; } #endregion private string? AccessToken => _httpContextAccessor?.HttpContext?.Request.Headers["Authorization"]; #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.Id == period.Id) .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, Gendor = x.Gender ?? "",// _userProfileRepository.GetOfficerProfileById(x.ProfileId, AccessToken).Gender ?? "", RequestInsigniaName = x.RequestInsignia.Name, OcId = x.Request.OrganizationId }) .ToListAsync(); var insignia = (from r in data_insignia group r by new { OcId = r.OcId } into g select new { RowNo = 1, DepartmentName = _userProfileRepository.GetOc(g.Key.OcId, 0, AccessToken).Root,// _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; } 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.Id == period.Id) .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, Gendor = x.Gender ?? "", //_userProfileRepository.GetOfficerProfileById(x.ProfileId, AccessToken).Gender ?? "", RequestInsigniaName = x.RequestInsignia.Name, OcId = x.Request.OrganizationId }) .ToListAsync(); var insignia = (from r in data_insignia group r by new { OcId = r.OcId } into g select new { RowNo = 1, DepartmentName = _userProfileRepository.GetOc(g.Key.OcId, 0, AccessToken).Root,// _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 = "", }; } //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.Id == period.Id) .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, Gendor = x.Gender ?? "", //_userProfileRepository.GetOfficerProfileById(x.ProfileId, AccessToken).Gender ?? "", RequestInsigniaName = x.RequestInsignia.Name, OcId = x.Request.OrganizationId }) .ToListAsync(); var insignia = (from r in data_insignia group r by new { OcId = r.OcId } into g select new { RowNo = 1, DepartmentName = _userProfileRepository.GetOc(g.Key.OcId, 0, AccessToken).Root,// _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; } 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.Id == period.Id) .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, Gendor = x.Gender ?? "", //_userProfileRepository.GetOfficerProfileById(x.ProfileId, AccessToken).Gender ?? "", RequestInsigniaName = x.RequestInsignia.Name, OcId = x.Request.OrganizationId }) .ToListAsync(); var insignia = (from r in data_insignia group r by new { OcId = r.OcId } into g select new { RowNo = 1, DepartmentName = _userProfileRepository.GetOc(g.Key.OcId, 0, AccessToken).Root,// _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 = "", }; } //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.ProfileId, FullName = $"{r.Prefix}{r.FirstName} {r.LastName}", Gender = r.Gender ?? "", Male = r.Gender == null ? 0 : (r.Gender == "ชาย" ? 1 : 0), Female = r.Gender == null ? 0 : (r.Gender == "หญิง" ? 1 : 0), InsigniaId = r.RequestInsignia.Id, OCName = _userProfileRepository.GetOc(r.Request.OrganizationId, 0, AccessToken).Root, // _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; } 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.ProfileId, CitizenId = r.CitizenId.ToThaiNumber(), // r.Profile.CitizenId == null ? null : r.Profile.CitizenId.ToThaiNumber(), FullName = $"{r.Prefix}{r.FirstName} {r.LastName}", // $"{r.Profile.Prefix?.Name}{r.Profile.FirstName} {r.Profile.LastName}", ShowProfileId = r.ProfileId, Type = r.PosTypeName, AcademicStanding = "", Level = r.PosLevelName, DateStart = r.DateAppoint.Value.ToThaiShortDate().ToThaiNumber(), SalaryAmount = r.Amount.Value.ToNumericText().ToThaiNumber(), InsigniaRecv = "", InsigniaRecvDate = "", InsigniaRequest = r.RequestInsignia.ShortName, Remark = "", Position = (r.Position ?? "") + (" ประเภท" + r.PosTypeName) + (" ระดับ" + r.PosLevelName) + (" สังกัด" + CRLF + _userProfileRepository.GetOc(r.Request.OrganizationId, 0, AccessToken).Root) , OCName = _userProfileRepository.GetOc(r.Request.OrganizationId, 0, AccessToken).Root, }) .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; } //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.Id == period.Id) .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, Gendor = x.Gender, //_userProfileRepository.GetOfficerProfileById(x.ProfileId, AccessToken).Gender ?? "", RequestInsigniaName = x.RequestInsignia.Name, InsigniaInitial = $"{x.RequestInsignia.Name}({x.RequestInsignia.ShortName})", OcId = x.Request.OrganizationId }) .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 = _userProfileRepository.GetOc(g.Key.OcId, 0, AccessToken).Root, //_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; } 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.Id == period.Id) .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, Gendor = x.Gender, // _userProfileRepository.GetOfficerProfileById(x.ProfileId, AccessToken).Gender ?? "", RequestInsigniaName = x.RequestInsignia.Name, OcId = x.Request.OrganizationId }) .ToListAsync(); var insignia = (from r in data_insignia group r by new { OcId = r.OcId } into g select new { RowNo = 1, DepartmentName = _userProfileRepository.GetOc(g.Key.OcId, 0, AccessToken).Root, //_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.Gender == "ชาย" ? 1 : 0, Female = r.Gender == "หญิง" ? 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.ProfileId, FullName = $"{r.Prefix}{r.FirstName} {r.LastName}", // $"{r.Profile.Prefix?.Name}{r.Profile.FirstName} {r.Profile.LastName}", Gender = r.Gender, Male = gender.Sum(x => x.Male), Female = gender.Sum(x => x.Female), InsigniaId = r.RequestInsignia.Id, OCName = _userProfileRepository.GetOc(r.Request.OrganizationId, 0, AccessToken).Root, //_organizationCommonRepository.GetOrganizationNameFullPath(g.Key.OcId, 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); } //46-ประวัติสำหรับการเสนอขอพระราชทานเหรียญจักรพรรดิมาลา public async Task GetHistorySalaryReport(Guid id) { //var profile = await _dbContext.Set() // .FirstOrDefaultAsync(x => x.Id == id); var profile = _userProfileRepository.GetOfficerProfileById(id, AccessToken); 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 s_data = profile.ProfileSalary.ToList() .Select(r => new { Date = r.Date, DateTh = r.Date == null ? "-" : r.Date.Value.ToThaiShortDate().ToString().ToThaiNumber(), Position = r.Position, OCName = "", Age = r.Date == null ? "-" : (r.Date.Value.Year - profile.BirthDate.Year).ToNumericText().ToThaiNumber(), Amount = r.Amount == null ? null : r.Amount.Value.ToNumericText().ToThaiNumber(), Remark = "" }) .Distinct() .OrderBy(x => x.Date) .ToList(); return s_data; } //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 } }