// using BMA.EHR.Application.Common.Interfaces; // using BMA.EHR.Application.Requests; // using BMA.EHR.Domain.Models.HR; // using BMA.EHR.Domain.Models.Insignias; // using BMA.EHR.Domain.Models.MetaData; // using BMA.EHR.Domain.Models.OrganizationEmployee; // using BMA.EHR.Domain.Shared; // using Microsoft.AspNetCore.Http; // using Microsoft.EntityFrameworkCore; // using Newtonsoft.Json; // namespace BMA.EHR.Application.Repositories // { // public class InsigniaPeriodsRepository : GenericRepository // { // private readonly IApplicationDBContext _dbContext; // private readonly IHttpContextAccessor _httpContextAccessor; // public InsigniaPeriodsRepository(IApplicationDBContext dbContext, IHttpContextAccessor httpContextAccessor) : base(dbContext, httpContextAccessor) // { // _dbContext = dbContext; // _httpContextAccessor = httpContextAccessor; // } // public async Task> FindByNameAsync(string name) // { // var data = await _dbContext.Set().Where(x => x.Name == name).ToListAsync(); // return data; // } // #region " Private " // private async Task GetInsigniaByName(string name) // { // try // { // var insignia = await _dbContext.Set() // .Include(x => x.InsigniaType) // .Where(x => x.Name == name) // .Select(i => new InsigniaItem // { // Id = i.Id, // Name = i.Name, // ShortName = i.ShortName, // Level = i.InsigniaType.Name, // LevelId = i.InsigniaType.Id // }) // .FirstOrDefaultAsync(); // return insignia; // } // catch // { // throw; // } // } // // private bool IsHigherLevel2(string last, string request) // // { // // try // // { // // var last_ins = await _dbContext.Set().FirstOrDefault(x => x.Name.ToLower().Trim() == last.ToLower().Trim()); // // if (last_ins == null) // // return true; // // var req_ins = await _dbContext.Set().FirstOrDefault(x => x.Name.ToLower().Trim() == request.ToLower().Trim()); // // if (req_ins == null) // // throw new Exception("Invalid Request Insignia!!"); // // return req_ins.Level > last_ins.Level; // // } // // catch // // { // // throw; // // } // // } // private static bool IsHigherLevel(string last, string request) // { // if (request.Contains("ตริตาภรณ์ช้างเผือก")) // return (last.Contains("ตริตาภรณ์มงกุฎไทย")) ? false : true; // else if (request.Contains("ทวีติยาภรณ์มงกุฎไทย")) // return (last.Contains("ตริตาภรณ์มงกุฎไทย") || // last.Contains("ตริตาภรณ์ช้างเผือก")) ? false : true; // else if (request.Contains("ทวีติยาภรณ์ช้างเผือก")) // return (last.Contains("ตริตาภรณ์มงกุฎไทย") || // last.Contains("ตริตาภรณ์ช้างเผือก") || // last.Contains("ทวีติยาภรณ์มงกุฎไทย")) ? false : true; // else if (request.Contains("ประถมาภรณ์มงกุฎไทย")) // return (last.Contains("ตริตาภรณ์มงกุฎไทย") || // last.Contains("ตริตาภรณ์ช้างเผือก") || // last.Contains("ทวีติยาภรณ์มงกุฎไทย") || // last.Contains("ทวีติยาภรณ์ช้างเผือก")) ? false : true; // else if (request.Contains("ประถมาภรณ์ช้างเผือก")) // return (last.Contains("ตริตาภรณ์มงกุฎไทย") || // last.Contains("ตริตาภรณ์ช้างเผือก") || // last.Contains("ทวีติยาภรณ์มงกุฎไทย") || // last.Contains("ทวีติยาภรณ์ช้างเผือก") || // last.Contains("ประถมาภรณ์มงกุฎไทย")) ? false : true; // else if (request.Contains("มหาวชิรมงกุฎ")) // return (last.Contains("ตริตาภรณ์มงกุฎไทย") || // last.Contains("ตริตาภรณ์ช้างเผือก") || // last.Contains("ทวีติยาภรณ์มงกุฎไทย") || // last.Contains("ทวีติยาภรณ์ช้างเผือก") || // last.Contains("ประถมาภรณ์มงกุฎไทย") || // last.Contains("ประถมาภรณ์ช้างเผือก")) ? false : true; // else return false; // } // // private InsigniaItem GetNextInsignia(string name) // // { // // if (name.Contains("ตริตาภรณ์มงกุฎไทย")) // // return GetInsigniaByName("ตริตาภรณ์ช้างเผือก"); // // else if (name.Contains("ตริตาภรณ์ช้างเผือก")) // // return GetInsigniaByName("ทวีติยาภรณ์มงกุฎไทย"); // // else if (name.Contains("ทวีติยาภรณ์มงกุฎไทย")) // // return GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก"); // // else if (name.Contains("ทวีติยาภรณ์ช้างเผือก")) // // return GetInsigniaByName("ประถมาภรณ์มงกุฎไทย"); // // else if (name.Contains("ประถมาภรณ์มงกุฎไทย")) // // return GetInsigniaByName("ประถมาภรณ์ช้างเผือก"); // // else if (name.Contains("ประถมาภรณ์ช้างเผือก")) // // return GetInsigniaByName("มหาวชิรมงกุฎ"); // // else return null; // // } // // private async bool CanRequestInsignia(string profileId, int year) // // { // // try // // { // // var ce_year = year; // // var insignia = await _dbContext.Set() // // .Where(x => x.Profile.Id == profileId) // // .Where(x => x.Year == ce_year - 1) // // .FirstOrDefaultAsync(); // // if (insignia != null) // // return false; // // else // // { // // var prev_period = await _dbContext.Set().FirstOrDefault(x => x.Year == ce_year - 1); // // if (prev_period == null) // // return true; // // else // // { // // var req = await _dbContext.Set() // // .FirstOrDefault(x => x.Request.Period.Id == prev_period.Id && x.Profile.Id == profileId); // // if (req != null) // // return false; // // else // // return true; // // } // // } // // } // // catch // // { // // throw; // // } // // } // #region " ทั่วไป " // /// // /// Gets the insignia candidate ประเภททั่วไป ระดับปฎิบัติงาน. // /// // /// The period identifier. // /// The oc identifier. // /// // // public async List GetInsigniaCandidate_Type1_Level1(int periodId, int ocId) // // { // // try // // { // // var allOc = profileService.GetAllIdByRoot(ocId); // // var period = await _dbContext.Set().FirstOrDefault(p => p.Id == periodId); // // if (period == null) // // throw new Exception(GlobalMessages.InvalidCoinPeriod); // // var oc = await _dbContext.Set().FirstOrDefault(x => x.OCId == ocId); // // if (oc == null) // // throw new Exception(GlobalMessages.InvalidOC); // // var CurrentRetireDate = new DateTime(period.Year, 9, 30); // // var inst_profile = await _dbContext.Set().AsQueryable() // // .Include(p => p.Position) // // .Include(p => p.PositionNumber) // // .Include(p => p.AcademicStanding) // // .Include(p => p.PositionType) // // .Include(p => p.PositionLevel) // // .Include(p => p.Insignias) // // .ThenInclude(i => i.Insignia) // // .Include(p => p.Salaries) // // .Where(p => // // allOc.Contains(p.OrganizationChart.OCId) && // // p.IsActive == true && // // p.IsLeave == false && // // p.DateAppoint != null && // // p.PositionType.Id == 1 // ประเภททั่วไป // // ) // // .Select(p => new // // { // // ProfileId = p.Id, // // Prefix = p.Prefix, // // FullName = $"{p.FirstName} {p.LastName}", // // Position = p.Position.Name, // // Rank = p.AcademicStanding.Name, // // ProfileDateAppoint = p.DateAppoint.Value, // // GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), // // PosNo = p.PositionNumber.Id, // // PositionLevelId = p.PositionLevel.Id, // // PositionLevelName = p.PositionLevel.Name, // // PositionTypeId = p.PositionType.Id, // // PositionTypeName = p.PositionType.Name, // // Gender = p.Gendor.IsNull("") == "male" ? "1" : "2", // // LastInsignia = p.Insignias.Count == 0 ? "" : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, // // LastInsigniaId = p.Insignias.Count == 0 ? -1 : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Id, // // Salary = p.Salaries.Count() == 0 ? "0" : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, // // PostionSalaryAmount = p.Salaries.Count() == 0 ? "0" : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().PositionSalaryAmount // // //CanRequestInsignia = CanRequestInsignia(p.Id, period.Year.ToString()) // // }); // // // check วันที่บรรจะต้องน้อยกว่า 29/5/ปี-5 // // var s1 = ((from p in inst_profile // // //where p.CanRequestInsignia == true // // where p.ProfileDateAppoint <= new DateTime(period.Year - 5, 5, 29) // // && p.LastInsigniaId == -1 // // && p.PositionLevelId == 1 // ปฎิบัติงาน // // select p) // // .ToList() // // .Select(p => new InsigniaResultSet // // { // // ProfileId = p.ProfileId, // // Prefix = p.Prefix, // // FullName = p.FullName, // // Position = p.Position, // // PosNo = p.PosNo, // // Rank = p.Rank, // // GovAge = p.GovAge, // // LastInsignia = p.LastInsignia, // // LastInsigniaId = p.LastInsigniaId, // // Salary = p.Salary, // // RequestInsignia = GetInsigniaByName("เบญจมาภรณ์มงกุฎไทย"), // // Seq = 1, // // Gender = p.Gender, // // MatchingConditions = new List // // { // // new MatchingCondition // // { // // Condition = $"1.รับราชการก่อน { new DateTime(period.Year - 5, 5, 29).ToThaiFullDate3() }", // // Result = $"วันที่บรรจุเข้ารับราชการ { p.ProfileDateAppoint.ToThaiFullDate3() }" // // } // // } // // })).ToList(); // // var s2 = (from p in await _dbContext.Set().AsQueryable() // // .Include(p => p.Position) // // .Include(p => p.PositionNumber) // // .Include(p => p.AcademicStanding) // // .Include(p => p.PositionType) // // .Include(p => p.PositionLevel) // // .Include(p => p.Insignias) // // .ThenInclude(i => i.Insignia) // // .Include(p => p.Salaries) // // where p.OrganizationChart != null // // && allOc.Contains(p.OrganizationChart.OCId) // // && p.IsActive == true // // && p.IsLeave == false // // && p.DateAppoint != null // // && p.PositionType.Id == 1 // ทั่วไป // // && p.PositionLevel.Id == 1 // ปฎิบัติงาน // // && !p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name.Contains("เบญจมาภรณ์ช้างเผือก") // // //&& !IsHigherLevel(p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, "ตริตาภรณ์ช้างเผือก") // // //&& CanRequestInsignia(p.Id, period.Year.ToString()) // // select new // // { // // ProfileId = p.Id, // // Prefix = p.Prefix, // // FullName = $"{p.FirstName} {p.LastName}", // // Position = p.Position.Name, // // Rank = p.AcademicStanding.Name, // // GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), // // ProfileDateAppoint = p.DateAppoint.Value, // // LastInsignia = p.Insignias.Count == 0 ? "" : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, // // LastInsigniaId = p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Id, // // Salary = p.Salaries.Count() == 0 ? "0" : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, // // SalaryCondition = p.Salaries.Count() == 0 ? 0 : p.Salaries.Where(x => x.SalaryDate <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount.Replace(".00", "").Replace(",", "").ToInteger(), // // PosNo = p.PositionNumber.Id, // // Gender = p.Gendor.IsNull("") == "male" ? "1" : "2", // // IsHigherLevel = InsigniaService.IsHigherLevel(p.Insignias // // .Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name, // // "เบญจมาภรณ์ช้างเผือก"), // // //CanRequestInsignia = CanRequestInsignia(p.Id, period.Year.ToString()) // // //RequestInsignia = GetInsigniaByName("ตริตาภรณ์มงกุฎไทย") // // }) // // .ToList() // // .Where(x => x.SalaryCondition < 10190 && !x.IsHigherLevel) // // .Where(x => x.ProfileDateAppoint <= new DateTime(period.Year - 10, 5, 29)) // // .Select(p => new InsigniaResultSet // // { // // ProfileId = p.ProfileId, // // Prefix = p.Prefix, // // FullName = p.FullName, // // Position = p.Position, // // PosNo = p.PosNo, // // Rank = p.Rank, // // GovAge = p.GovAge, // // LastInsignia = p.LastInsignia, // // LastInsigniaId = p.LastInsigniaId, // // Salary = p.Salary, // // RequestInsignia = GetInsigniaByName("เบญจมาภรณ์ช้างเผือก"), // // Seq = 2, // // Gender = p.Gender, // // MatchingConditions = new List // // { // // new MatchingCondition // // { // // Condition = $"1.ได้รับเงินเดือนต่ำกว่าขั้นต่ำของระดับชำนาญงาน (เงินเดือนน้อยกว่า 10,190 บาท)", // // Result = $"ได้รับเงินเดือน { p.SalaryCondition } บาท" // // }, // // new MatchingCondition // // { // // Condition = $"2.ดำรงตำแหน่งมาแล้วไม่น้อยกว่า 10 ปี บริบูรณ์ (รับราชการก่อน { new DateTime(period.Year - 10, 5, 29).ToThaiFullDate3() })", // // Result = $"วันที่บรรจุเข้ารับราชการ { p.ProfileDateAppoint.ToThaiFullDate3() }" // // } // // } // // }) // // .ToList(); // // var s3 = (from p in await _dbContext.Set().AsQueryable() // // .Include(p => p.Position) // // .Include(p => p.PositionNumber) // // .Include(p => p.AcademicStanding) // // .Include(p => p.PositionType) // // .Include(p => p.PositionLevel) // // .Include(p => p.Insignias) // // .ThenInclude(i => i.Insignia) // // .Include(p => p.Salaries) // // where p.OrganizationChart != null // // && allOc.Contains(p.OrganizationChart.OCId) // // && p.IsActive == true // // && p.IsLeave == false // // && p.DateAppoint != null // // && p.PositionType.Id == 1 // ทั่วไป // // && p.PositionLevel.Id == 1 // ปฎิบัติงาน // // && !p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name.Contains("จัตุรถาภรณ์มงกุฎไทย") // // //&& !IsHigherLevel(p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, "ตริตาภรณ์ช้างเผือก") // // //&& CanRequestInsignia(p.Id, period.Year.ToString()) // // select new // // { // // ProfileId = p.Id, // // Prefix = p.Prefix, // // FullName = $"{p.FirstName} {p.LastName}", // // Position = p.Position.Name, // // Rank = p.AcademicStanding.Name, // // GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), // // ProfileDateAppoint = p.DateAppoint.Value, // // LastInsignia = p.Insignias.Count == 0 ? "" : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, // // LastInsigniaId = p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Id, // // Salary = p.Salaries.Count() == 0 ? "0" : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, // // SalaryCondition = p.Salaries.Count() == 0 ? 0 : p.Salaries.Where(x => x.SalaryDate <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount.Replace(".00", "").Replace(",", "").ToInteger(), // // PosNo = p.PositionNumber.Id, // // Gender = p.Gendor.IsNull("") == "male" ? "1" : "2", // // IsHigherLevel = InsigniaService.IsHigherLevel(p.Insignias // // .Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name, // // "จัตุรถาภรณ์มงกุฎไทย"), // // //CanRequestInsignia = CanRequestInsignia(p.Id, period.Year.ToString()) // // //RequestInsignia = GetInsigniaByName("ตริตาภรณ์มงกุฎไทย") // // }) // // .ToList() // // .Where(x => x.SalaryCondition >= 10190 && !x.IsHigherLevel) // // .Select(p => new InsigniaResultSet // // { // // ProfileId = p.ProfileId, // // Prefix = p.Prefix, // // FullName = p.FullName, // // Position = p.Position, // // PosNo = p.PosNo, // // Rank = p.Rank, // // GovAge = p.GovAge, // // LastInsignia = p.LastInsignia, // // LastInsigniaId = p.LastInsigniaId, // // Salary = p.Salary, // // RequestInsignia = GetInsigniaByName("จัตุรถาภรณ์มงกุฎไทย"), // // Seq = 3, // // Gender = p.Gender, // // MatchingConditions = new List // // { // // new MatchingCondition // // { // // Condition = $"1.ได้รับเงินเดือนไม่ต่ำกว่าขั้นต่ำของระดับชำนาญงาน (เงินเดือน ณ วันที่ { (new DateTime(period.Year, 4, 29)).ToThaiFullDate3() } 10,190 บาทขึ้นไป)", // // Result = $"ได้รับเงินเดือน { p.SalaryCondition } บาท" // // } // // } // // }) // // .ToList(); // // var s4 = (from p in await _dbContext.Set().AsQueryable() // // .Include(p => p.Position) // // .Include(p => p.PositionNumber) // // .Include(p => p.AcademicStanding) // // .Include(p => p.PositionType) // // .Include(p => p.PositionLevel) // // .Include(p => p.Insignias) // // .ThenInclude(i => i.Insignia) // // .Include(p => p.Salaries) // // where p.OrganizationChart != null // // && allOc.Contains(p.OrganizationChart.OCId) // // && p.IsActive == true // // && p.IsLeave == false // // && p.DateAppoint != null // // && p.PositionType.Id == 1 // ทั่วไป // // && p.PositionLevel.Id == 1 // ปฎิบัติงาน // // && !p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name.Contains("จัตุรถาภรณ์ช้างเผือก") // // //&& !IsHigherLevel(p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, "ตริตาภรณ์ช้างเผือก") // // //&& CanRequestInsignia(p.Id, period.Year.ToString()) // // select new // // { // // ProfileId = p.Id, // // Prefix = p.Prefix, // // FullName = $"{p.FirstName} {p.LastName}", // // Position = p.Position.Name, // // Rank = p.AcademicStanding.Name, // // GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), // // ProfileDateAppoint = p.DateAppoint.Value, // // LastInsignia = p.Insignias.Count == 0 ? "" : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, // // LastInsigniaId = p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Id, // // Salary = p.Salaries.Count() == 0 ? "0" : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, // // SalaryCondition = p.Salaries.Count() == 0 ? 0 : p.Salaries.Where(x => x.SalaryDate <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount.Replace(".00", "").Replace(",", "").ToInteger(), // // PosNo = p.PositionNumber.Id, // // Gender = p.Gendor.IsNull("") == "male" ? "1" : "2", // // IsHigherLevel = InsigniaService.IsHigherLevel(p.Insignias // // .Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name, // // "จัตุรถาภรณ์ช้างเผือก"), // // //CanRequestInsignia = CanRequestInsignia(p.Id, period.Year.ToString()) // // //RequestInsignia = GetInsigniaByName("ตริตาภรณ์มงกุฎไทย") // // }) // // .ToList() // // .Where(x => x.SalaryCondition >= 10190 && !x.IsHigherLevel) // // .Where(x => x.ProfileDateAppoint <= new DateTime(period.Year - 10, 5, 29)) // // .Select(p => new InsigniaResultSet // // { // // ProfileId = p.ProfileId, // // Prefix = p.Prefix, // // FullName = p.FullName, // // Position = p.Position, // // PosNo = p.PosNo, // // Rank = p.Rank, // // GovAge = p.GovAge, // // LastInsignia = p.LastInsignia, // // LastInsigniaId = p.LastInsigniaId, // // Salary = p.Salary, // // RequestInsignia = GetInsigniaByName("จัตุรถาภรณ์ช้างเผือก"), // // Seq = 4, // // Gender = p.Gender, // // MatchingConditions = new List // // { // // new MatchingCondition // // { // // Condition = $"1.ได้รับเงินเดือนไม่ต่ำกว่าขั้นต่ำของระดับชำนาญงาน (เงินเดือน ณ วันที่ { (new DateTime(period.Year, 4, 29)).ToThaiFullDate3() } 10,190 บาทขึ้นไป)", // // Result = $"ได้รับเงินเดือน { p.SalaryCondition } บาท" // // }, // // new MatchingCondition // // { // // Condition = $"2.ดำรงตำแหน่งมาแล้วไม่น้อยกว่า 10 ปี บริบูรณ์ (รับราชการก่อน { new DateTime(period.Year - 10, 5, 29).ToThaiFullDate3() })", // // Result = $"วันที่บรรจุเข้ารับราชการ { p.ProfileDateAppoint.ToThaiFullDate3() }" // // } // // } // // }) // // .ToList(); // // var result_candidate = new List(); // // foreach (var r in s4) // // { // // var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); // // // Check ได้รับหรือเคยยื่นขอไปในปีที่แล้วหรือไม่? // // if (!CanRequestInsignia(r.ProfileId, period.Year)) // // continue; // // // Check ว่าชั้นที่ขอสูงกว่าชั้นที่เคยได้รับแล้วหรือไม่? // // if (!IsHigherLevel2(r.LastInsignia, r.RequestInsignia.Name)) // // continue; // // if (old == null) // // { // // result_candidate.Add(r); // // } // // } // // foreach (var r in s3) // // { // // var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); // // // Check ได้รับหรือเคยยื่นขอไปในปีที่แล้วหรือไม่? // // if (!CanRequestInsignia(r.ProfileId, period.Year)) // // continue; // // // Check ว่าชั้นที่ขอสูงกว่าชั้นที่เคยได้รับแล้วหรือไม่? // // if (!IsHigherLevel2(r.LastInsignia, r.RequestInsignia.Name)) // // continue; // // if (old == null) // // { // // result_candidate.Add(r); // // } // // } // // foreach (var r in s2) // // { // // var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); // // // Check ได้รับหรือเคยยื่นขอไปในปีที่แล้วหรือไม่? // // if (!CanRequestInsignia(r.ProfileId, period.Year)) // // continue; // // // Check ว่าชั้นที่ขอสูงกว่าชั้นที่เคยได้รับแล้วหรือไม่? // // if (!IsHigherLevel2(r.LastInsignia, r.RequestInsignia.Name)) // // continue; // // if (old == null) // // { // // result_candidate.Add(r); // // } // // } // // foreach (var r in s1) // // { // // var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); // // // Check ได้รับหรือเคยยื่นขอไปในปีที่แล้วหรือไม่? // // if (!CanRequestInsignia(r.ProfileId, period.Year)) // // continue; // // // Check ว่าชั้นที่ขอสูงกว่าชั้นที่เคยได้รับแล้วหรือไม่? // // if (!IsHigherLevel2(r.LastInsignia, r.RequestInsignia.Name)) // // continue; // // if (old == null) // // { // // result_candidate.Add(r); // // } // // } // // return result_candidate; // // } // // catch // // { // // throw; // // } // // } // /// // /// Gets the insignia candidate ประเภททั่วไป ระดับชำนาญงาน. // /// // /// The period identifier. // /// The oc identifier. // /// // /// // // public async List GetInsigniaCandidate_Type1_Level2(int periodId, int ocId) // // { // // try // // { // // var allOc = profileService.GetAllIdByRoot(ocId); // // var period = await _dbContext.Set().FirstOrDefault(p => p.Id == periodId); // // if (period == null) // // throw new Exception(GlobalMessages.InvalidCoinPeriod); // // var oc = await _dbContext.Set().FirstOrDefault(x => x.OCId == ocId); // // if (oc == null) // // throw new Exception(GlobalMessages.InvalidOC); // // var CurrentRetireDate = new DateTime(period.Year, 9, 30); // // var s1 = (from p in await _dbContext.Set().AsQueryable() // // .Include(p => p.Position) // // .Include(p => p.PositionNumber) // // .Include(p => p.AcademicStanding) // // .Include(p => p.PositionType) // // .Include(p => p.PositionLevel) // // .Include(p => p.Insignias) // // .ThenInclude(i => i.Insignia) // // .Include(p => p.Salaries) // // where p.OrganizationChart != null // // && allOc.Contains(p.OrganizationChart.OCId) // // && p.IsActive == true // // && p.IsLeave == false // // && p.DateAppoint != null // // && p.PositionType.Id == 1 // ทั่วไป // // && p.PositionLevel.Id == 2 // ชำนาญงาน // // && !p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name.Contains("ตริตาภรณ์มงกุฎไทย") // // //&& !IsHigherLevel(p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, "ตริตาภรณ์ช้างเผือก") // // //&& CanRequestInsignia(p.Id, period.Year.ToString()) // // select new // // { // // ProfileId = p.Id, // // Prefix = p.Prefix, // // FullName = $"{p.FirstName} {p.LastName}", // // Position = p.Position.Name, // // PositionLevel = p.PositionLevel.Name, // // PositionType = p.PositionType.Name, // // Rank = p.AcademicStanding.Name, // // GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), // // ProfileDateAppoint = p.DateAppoint.Value, // // LastInsignia = p.Insignias.Count == 0 ? "" : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, // // LastInsigniaId = p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Id, // // Salary = p.Salaries.Count() == 0 ? "0" : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, // // SalaryCondition = p.Salaries.Count() == 0 ? 0 : p.Salaries.Where(x => x.SalaryDate <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount.Replace(".00", "").Replace(",", "").ToInteger(), // // PosNo = p.PositionNumber.Id, // // Gender = p.Gendor.IsNull("") == "male" ? "1" : "2", // // IsHigherLevel = InsigniaService.IsHigherLevel(p.Insignias // // .Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name, // // "ตริตาภรณ์มงกุฎไทย"), // // //CanRequestInsignia = CanRequestInsignia(p.Id, period.Year.ToString()) // // //RequestInsignia = GetInsigniaByName("ตริตาภรณ์มงกุฎไทย") // // }) // // .ToList() // // .Select(p => new InsigniaResultSet // // { // // ProfileId = p.ProfileId, // // Prefix = p.Prefix, // // FullName = p.FullName, // // Position = p.Position, // // PosNo = p.PosNo, // // Rank = p.Rank, // // GovAge = p.GovAge, // // LastInsignia = p.LastInsignia, // // LastInsigniaId = p.LastInsigniaId, // // Salary = p.Salary, // // RequestInsignia = GetInsigniaByName("ตริตาภรณ์มงกุฎไทย"), // // Seq = 2, // // Gender = p.Gender, // // MatchingConditions = new List // // { // // new MatchingCondition // // { // // Condition = $"1.เป็นระดับชำนาญงาน", // // Result = $"ตำแหน่ง { p.Position } ประเภท { p.PositionType } ระดับ { p.PositionLevel }" // // }, // // } // // }) // // .ToList(); // // var s2 = (from p in await _dbContext.Set().AsQueryable() // // .Include(p => p.Position) // // .Include(p => p.PositionNumber) // // .Include(p => p.AcademicStanding) // // .Include(p => p.PositionType) // // .Include(p => p.PositionLevel) // // .Include(p => p.Insignias) // // .ThenInclude(i => i.Insignia) // // .Include(p => p.Salaries) // // .ThenInclude(p => p.SalaryPositionLevel) // // .ThenInclude(p => p.PositionLevel) // // where p.OrganizationChart != null // // && allOc.Contains(p.OrganizationChart.OCId) // // && p.IsActive == true // // && p.IsLeave == false // // && p.DateAppoint != null // // && p.PositionType.Id == 1 // ทั่วไป // // && p.PositionLevel.Id == 2 // ชำนาญงาน // // && !p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name.Contains("ตริตาภรณ์ช้างเผือก") // // //&& !IsHigherLevel(p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, "ตริตาภรณ์ช้างเผือก") // // //&& CanRequestInsignia(p.Id, period.Year.ToString()) // // select new // // { // // ProfileId = p.Id, // // Prefix = p.Prefix, // // FullName = $"{p.FirstName} {p.LastName}", // // Position = p.Position.Name, // // PositionLevel = p.PositionLevel.Name, // // PositionType = p.PositionType.Name, // // Rank = p.AcademicStanding.Name, // // GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), // // ProfileDateAppoint = p.DateAppoint.Value, // // LastInsignia = p.Insignias.Count == 0 ? "" : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, // // LastInsigniaId = p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Id, // // Salary = p.Salaries.Count() == 0 ? "0" : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, // // SalaryCondition = p.Salaries.Count() == 0 ? 0 : p.Salaries.Where(x => x.SalaryDate <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount.Replace(".00", "").Replace(",", "").ToInteger(), // // PosNo = p.PositionNumber.Id, // // Gender = p.Gendor.IsNull("") == "male" ? "1" : "2", // // IsHigherLevel = InsigniaService.IsHigherLevel(p.Insignias // // .Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name, // // "ตริตาภรณ์ช้างเผือก"), // // FirstPositonLevelDate = p.Salaries.Count == 0 ? null : // // p.Salaries.Where(x => x.SalaryPositionLevel.PositionLevel.Id == 2).OrderBy(p => p.SalaryDateAnnounce).FirstOrDefault().SalaryDateAnnounce // // //CanRequestInsignia = CanRequestInsignia(p.Id, period.Year.ToString()) // // //RequestInsignia = GetInsigniaByName("ตริตาภรณ์มงกุฎไทย") // // }) // // .ToList() // // .Where(x => x.FirstPositonLevelDate < new DateTime(period.Year - 5, 5, 29)) // // .Select(p => new InsigniaResultSet // // { // // ProfileId = p.ProfileId, // // Prefix = p.Prefix, // // FullName = p.FullName, // // Position = p.Position, // // PosNo = p.PosNo, // // Rank = p.Rank, // // GovAge = p.GovAge, // // LastInsignia = p.LastInsignia, // // LastInsigniaId = p.LastInsigniaId, // // Salary = p.Salary, // // RequestInsignia = GetInsigniaByName("ตริตาภรณ์ช้างเผือก"), // // Seq = 2, // // Gender = p.Gender, // // MatchingConditions = new List // // { // // new MatchingCondition // // { // // Condition = $"1.ดำรงตำแหน่งมาแล้วไม่น้อยกว่า 5 ปี บริบูรณ์ (เป็นระดับชำนาญงาน ก่อนวันที่ {(new DateTime(period.Year - 5, 5, 29)).ToThaiFullDate3()})", // // Result = $"ดำรงตำแหน่ง { p.Position } ประเภท { p.PositionType } ระดับ { p.PositionLevel } ตั้งแต่วันที่ { (p.FirstPositonLevelDate == null ? "-" : p.FirstPositonLevelDate.Value.ToThaiFullDate3()) }" // // }, // // } // // }) // // .ToList(); // // var result_candidate = new List(); // // foreach (var r in s2) // // { // // var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); // // // Check ได้รับหรือเคยยื่นขอไปในปีที่แล้วหรือไม่? // // if (!CanRequestInsignia(r.ProfileId, period.Year)) // // continue; // // // Check ว่าชั้นที่ขอสูงกว่าชั้นที่เคยได้รับแล้วหรือไม่? // // if (!IsHigherLevel2(r.LastInsignia, r.RequestInsignia.Name)) // // continue; // // if (old == null) // // { // // result_candidate.Add(r); // // } // // } // // foreach (var r in s1) // // { // // var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); // // // Check ได้รับหรือเคยยื่นขอไปในปีที่แล้วหรือไม่? // // if (!CanRequestInsignia(r.ProfileId, period.Year)) // // continue; // // // Check ว่าชั้นที่ขอสูงกว่าชั้นที่เคยได้รับแล้วหรือไม่? // // if (!IsHigherLevel2(r.LastInsignia, r.RequestInsignia.Name)) // // continue; // // if (old == null) // // { // // result_candidate.Add(r); // // } // // } // // return result_candidate; // // } // // catch // // { // // throw; // // } // // } // /// // /// Gets the insignia candidate ประเภททั่วไป ระดับอาวุโส. // /// // /// The period identifier. // /// The oc identifier. // /// // /// // // public async List GetInsigniaCandidate_Type1_Level3(int periodId, int ocId) // // { // // try // // { // // var allOc = profileService.GetAllIdByRoot(ocId); // // var period = await _dbContext.Set().FirstOrDefault(p => p.Id == periodId); // // if (period == null) // // throw new Exception(GlobalMessages.InvalidCoinPeriod); // // var oc = await _dbContext.Set().FirstOrDefault(x => x.OCId == ocId); // // if (oc == null) // // throw new Exception(GlobalMessages.InvalidOC); // // var CurrentRetireDate = new DateTime(period.Year, 9, 30); // // var s1 = (from p in await _dbContext.Set().AsQueryable() // // .Include(p => p.Position) // // .Include(p => p.PositionNumber) // // .Include(p => p.AcademicStanding) // // .Include(p => p.PositionType) // // .Include(p => p.PositionLevel) // // .Include(p => p.Insignias) // // .ThenInclude(i => i.Insignia) // // .Include(p => p.Salaries) // // where p.OrganizationChart != null // // && allOc.Contains(p.OrganizationChart.OCId) // // && p.IsActive == true // // && p.IsLeave == false // // && p.DateAppoint != null // // && p.PositionType.Id == 1 // ทั่วไป // // && p.PositionLevel.Id == 3 // อาวุโส // // && !p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name.Contains("ทวีติยาภรณ์มงกุฎไทย") // // //&& !IsHigherLevel(p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, "ตริตาภรณ์ช้างเผือก") // // //&& CanRequestInsignia(p.Id, period.Year.ToString()) // // select new // // { // // ProfileId = p.Id, // // Prefix = p.Prefix, // // FullName = $"{p.FirstName} {p.LastName}", // // Position = p.Position.Name, // // PositionLevel = p.PositionLevel.Name, // // PositionType = p.PositionType.Name, // // Rank = p.AcademicStanding.Name, // // GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), // // ProfileDateAppoint = p.DateAppoint.Value, // // LastInsignia = p.Insignias.Count == 0 ? "" : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, // // LastInsigniaId = p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Id, // // Salary = p.Salaries.Count() == 0 ? "0" : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, // // SalaryCondition = p.Salaries.Count() == 0 ? 0 : p.Salaries.Where(x => x.SalaryDate <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount.Replace(".00", "").Replace(",", "").ToInteger(), // // PosNo = p.PositionNumber.Id, // // Gender = p.Gendor.IsNull("") == "male" ? "1" : "2", // // IsHigherLevel = InsigniaService.IsHigherLevel(p.Insignias // // .Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name, // // "ทวีติยาภรณ์มงกุฎไทย"), // // //CanRequestInsignia = CanRequestInsignia(p.Id, period.Year.ToString()) // // //RequestInsignia = GetInsigniaByName("ตริตาภรณ์มงกุฎไทย") // // }) // // .ToList() // // .Select(p => new InsigniaResultSet // // { // // ProfileId = p.ProfileId, // // Prefix = p.Prefix, // // FullName = p.FullName, // // Position = p.Position, // // PosNo = p.PosNo, // // Rank = p.Rank, // // GovAge = p.GovAge, // // LastInsignia = p.LastInsignia, // // LastInsigniaId = p.LastInsigniaId, // // Salary = p.Salary, // // RequestInsignia = GetInsigniaByName("ทวีติยาภรณ์มงกุฎไทย"), // // Seq = 2, // // Gender = p.Gender, // // MatchingConditions = new List // // { // // new MatchingCondition // // { // // Condition = $"1.เป็นระดับอาวุโส", // // Result = $"ตำแหน่ง { p.Position } ประเภท { p.PositionType } ระดับ { p.PositionLevel }" // // }, // // } // // }) // // .ToList(); // // var s2 = (from p in await _dbContext.Set().AsQueryable() // // .Include(p => p.Position) // // .Include(p => p.PositionNumber) // // .Include(p => p.AcademicStanding) // // .Include(p => p.PositionType) // // .Include(p => p.PositionLevel) // // .Include(p => p.Insignias) // // .ThenInclude(i => i.Insignia) // // .Include(p => p.Salaries) // // .ThenInclude(p => p.SalaryPositionLevel) // // .ThenInclude(p => p.PositionLevel) // // where p.OrganizationChart != null // // && allOc.Contains(p.OrganizationChart.OCId) // // && p.IsActive == true // // && p.IsLeave == false // // && p.DateAppoint != null // // && p.PositionType.Id == 1 // ทั่วไป // // && p.PositionLevel.Id == 3 // อาวุโส // // && !p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name.Contains("ทวีติยาภรณ์ช้างเผือก") // // //&& !IsHigherLevel(p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, "ตริตาภรณ์ช้างเผือก") // // //&& CanRequestInsignia(p.Id, period.Year.ToString()) // // select new // // { // // ProfileId = p.Id, // // Prefix = p.Prefix, // // FullName = $"{p.FirstName} {p.LastName}", // // Position = p.Position.Name, // // PositionLevel = p.PositionLevel.Name, // // PositionType = p.PositionType.Name, // // Rank = p.AcademicStanding.Name, // // GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), // // ProfileDateAppoint = p.DateAppoint.Value, // // LastInsignia = p.Insignias.Count == 0 ? "" : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, // // LastInsigniaId = p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Id, // // Salary = p.Salaries.Count() == 0 ? "0" : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, // // SalaryCondition = p.Salaries.Count() == 0 ? 0 : p.Salaries.Where(x => x.SalaryDate <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount.Replace(".00", "").Replace(",", "").ToInteger(), // // PosNo = p.PositionNumber.Id, // // Gender = p.Gendor.IsNull("") == "male" ? "1" : "2", // // IsHigherLevel = InsigniaService.IsHigherLevel(p.Insignias // // .Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name, // // "ทวีติยาภรณ์ช้างเผือก"), // // FirstPositonLevelDate = p.Salaries.Count == 0 ? null : // // p.Salaries.Where(x => x.SalaryPositionLevel.PositionLevel.Id == 3).OrderBy(p => p.SalaryDateAnnounce).FirstOrDefault().SalaryDateAnnounce // // //CanRequestInsignia = CanRequestInsignia(p.Id, period.Year.ToString()) // // //RequestInsignia = GetInsigniaByName("ตริตาภรณ์มงกุฎไทย") // // }) // // .ToList() // // .Where(x => x.FirstPositonLevelDate < new DateTime(period.Year - 5, 5, 29)) // // .Select(p => new InsigniaResultSet // // { // // ProfileId = p.ProfileId, // // Prefix = p.Prefix, // // FullName = p.FullName, // // Position = p.Position, // // PosNo = p.PosNo, // // Rank = p.Rank, // // GovAge = p.GovAge, // // LastInsignia = p.LastInsignia, // // LastInsigniaId = p.LastInsigniaId, // // Salary = p.Salary, // // RequestInsignia = GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก"), // // Seq = 2, // // Gender = p.Gender, // // MatchingConditions = new List // // { // // new MatchingCondition // // { // // Condition = $"1.ดำรงตำแหน่งมาแล้วไม่น้อยกว่า 5 ปี บริบูรณ์ (เป็นระดับอาวุโส ก่อนวันที่ {(new DateTime(period.Year - 5, 5, 29)).ToThaiFullDate3()})", // // Result = $"ดำรงตำแหน่ง { p.Position } ประเภท { p.PositionType } ระดับ { p.PositionLevel } ตั้งแต่วันที่ { (p.FirstPositonLevelDate == null ? "-" : p.FirstPositonLevelDate.Value.ToThaiFullDate3()) }" // // }, // // } // // }) // // .ToList(); // // var result_candidate = new List(); // // foreach (var r in s2) // // { // // var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); // // // Check ได้รับหรือเคยยื่นขอไปในปีที่แล้วหรือไม่? // // if (!CanRequestInsignia(r.ProfileId, period.Year)) // // continue; // // // Check ว่าชั้นที่ขอสูงกว่าชั้นที่เคยได้รับแล้วหรือไม่? // // if (!IsHigherLevel2(r.LastInsignia, r.RequestInsignia.Name)) // // continue; // // if (old == null) // // { // // result_candidate.Add(r); // // } // // } // // foreach (var r in s1) // // { // // var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); // // // Check ได้รับหรือเคยยื่นขอไปในปีที่แล้วหรือไม่? // // if (!CanRequestInsignia(r.ProfileId, period.Year)) // // continue; // // // Check ว่าชั้นที่ขอสูงกว่าชั้นที่เคยได้รับแล้วหรือไม่? // // if (!IsHigherLevel2(r.LastInsignia, r.RequestInsignia.Name)) // // continue; // // if (old == null) // // { // // result_candidate.Add(r); // // } // // } // // return result_candidate; // // } // // catch // // { // // throw; // // } // // } // /// // /// Gets the insignia candidate ประเภททั่วไป ระดับทักษะพิเศษ. // /// // /// The period identifier. // /// The oc identifier. // /// // /// // // public async List GetInsigniaCandidate_Type1_Level4(int periodId, int ocId) // // { // // try // // { // // var allOc = profileService.GetAllIdByRoot(ocId); // // var period = await _dbContext.Set().FirstOrDefault(p => p.Id == periodId); // // if (period == null) // // throw new Exception(GlobalMessages.InvalidCoinPeriod); // // var oc = await _dbContext.Set().FirstOrDefault(x => x.OCId == ocId); // // if (oc == null) // // throw new Exception(GlobalMessages.InvalidOC); // // var CurrentRetireDate = new DateTime(period.Year, 9, 30); // // var s1 = (from p in await _dbContext.Set().AsQueryable() // // .Include(p => p.Position) // // .Include(p => p.PositionNumber) // // .Include(p => p.AcademicStanding) // // .Include(p => p.PositionType) // // .Include(p => p.PositionLevel) // // .Include(p => p.Insignias) // // .ThenInclude(i => i.Insignia) // // .Include(p => p.Salaries) // // where p.OrganizationChart != null // // && allOc.Contains(p.OrganizationChart.OCId) // // && p.IsActive == true // // && p.IsLeave == false // // && p.DateAppoint != null // // && p.PositionType.Id == 1 // ทั่วไป // // && (p.PositionLevel.Id == 3 || p.PositionLevel.Id == 13) // อาวุโส // // && !p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name.Contains("ทวีติยาภรณ์ช้างเผือก") // // //&& !IsHigherLevel(p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, "ตริตาภรณ์ช้างเผือก") // // //&& CanRequestInsignia(p.Id, period.Year.ToString()) // // select new // // { // // ProfileId = p.Id, // // Prefix = p.Prefix, // // FullName = $"{p.FirstName} {p.LastName}", // // Position = p.Position.Name, // // PositionLevel = p.PositionLevel.Name, // // PositionType = p.PositionType.Name, // // Rank = p.AcademicStanding.Name, // // GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), // // ProfileDateAppoint = p.DateAppoint.Value, // // LastInsignia = p.Insignias.Count == 0 ? "" : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, // // LastInsigniaId = p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Id, // // Salary = p.Salaries.Count() == 0 ? "0" : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, // // SalaryCondition = p.Salaries.Count() == 0 ? 0 : p.Salaries.Where(x => x.SalaryDate <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount.Replace(".00", "").Replace(",", "").ToInteger(), // // PosNo = p.PositionNumber.Id, // // Gender = p.Gendor.IsNull("") == "male" ? "1" : "2", // // IsHigherLevel = InsigniaService.IsHigherLevel(p.Insignias // // .Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name, // // "ทวีติยาภรณ์ช้างเผือก"), // // //CanRequestInsignia = CanRequestInsignia(p.Id, period.Year.ToString()) // // //RequestInsignia = GetInsigniaByName("ตริตาภรณ์มงกุฎไทย") // // }) // // .ToList() // // .Select(p => new InsigniaResultSet // // { // // ProfileId = p.ProfileId, // // Prefix = p.Prefix, // // FullName = p.FullName, // // Position = p.Position, // // PosNo = p.PosNo, // // Rank = p.Rank, // // GovAge = p.GovAge, // // LastInsignia = p.LastInsignia, // // LastInsigniaId = p.LastInsigniaId, // // Salary = p.Salary, // // RequestInsignia = GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก"), // // Seq = 2, // // Gender = p.Gender, // // MatchingConditions = new List // // { // // new MatchingCondition // // { // // Condition = $"1.เป็นระดับทักษะพิเศษ", // // Result = $"ตำแหน่ง { p.Position } ประเภท { p.PositionType } ระดับ { p.PositionLevel }" // // }, // // } // // }) // // .ToList(); // // var s2 = (from p in await _dbContext.Set().AsQueryable() // // .Include(p => p.Position) // // .Include(p => p.PositionNumber) // // .Include(p => p.AcademicStanding) // // .Include(p => p.PositionType) // // .Include(p => p.PositionLevel) // // .Include(p => p.Insignias) // // .ThenInclude(i => i.Insignia) // // .Include(p => p.Salaries) // // .ThenInclude(p => p.SalaryPositionLevel) // // .ThenInclude(p => p.PositionLevel) // // where p.OrganizationChart != null // // && allOc.Contains(p.OrganizationChart.OCId) // // && p.IsActive == true // // && p.IsLeave == false // // && p.DateAppoint != null // // && p.PositionType.Id == 1 // ทั่วไป // // && (p.PositionLevel.Id == 3 || p.PositionLevel.Id == 13) // อาวุโส // // && !p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name.Contains("ประถมาภรณ์มงกุฎไทย") // // //&& !IsHigherLevel(p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, "ตริตาภรณ์ช้างเผือก") // // //&& CanRequestInsignia(p.Id, period.Year.ToString()) // // select new // // { // // ProfileId = p.Id, // // Prefix = p.Prefix, // // FullName = $"{p.FirstName} {p.LastName}", // // Position = p.Position.Name, // // PositionLevel = p.PositionLevel.Name, // // PositionType = p.PositionType.Name, // // Rank = p.AcademicStanding.Name, // // GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), // // ProfileDateAppoint = p.DateAppoint.Value, // // LastInsignia = p.Insignias.Count == 0 ? "" : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, // // LastInsigniaId = p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Id, // // Salary = p.Salaries.Count() == 0 ? "0" : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, // // SalaryCondition = p.Salaries.Count() == 0 ? 0 : p.Salaries.Where(x => x.SalaryDate <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount.Replace(".00", "").Replace(",", "").ToInteger(), // // PosNo = p.PositionNumber.Id, // // Gender = p.Gendor.IsNull("") == "male" ? "1" : "2", // // IsHigherLevel = InsigniaService.IsHigherLevel(p.Insignias // // .Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name, // // "ประถมาภรณ์มงกุฎไทย"), // // FirstRecvInsigniaYear = p.Insignias.Count == 0 ? 0 : // // p.Insignias.Where(x => x.Insignia.Name == "ทวีติยาภรณ์ช้างเผือก").OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : // // p.Insignias.Where(x => x.Insignia.Name == "ทวีติยาภรณ์ช้างเผือก").OrderBy(x => x.Year).FirstOrDefault().Year, // // FirstPositonLevelDate = p.Salaries.Count == 0 ? null : // // p.Salaries.Where(x => x.SalaryPositionLevel.PositionLevel.Id == 3).OrderBy(p => p.SalaryDateAnnounce).FirstOrDefault().SalaryDateAnnounce // // //CanRequestInsignia = CanRequestInsignia(p.Id, period.Year.ToString()) // // //RequestInsignia = GetInsigniaByName("ตริตาภรณ์มงกุฎไทย") // // }) // // .ToList() // // .Where(x => x.FirstRecvInsigniaYear != 0 && x.FirstRecvInsigniaYear <= period.Year - 3) // // .Select(p => new InsigniaResultSet // // { // // ProfileId = p.ProfileId, // // Prefix = p.Prefix, // // FullName = p.FullName, // // Position = p.Position, // // PosNo = p.PosNo, // // Rank = p.Rank, // // GovAge = p.GovAge, // // LastInsignia = p.LastInsignia, // // LastInsigniaId = p.LastInsigniaId, // // Salary = p.Salary, // // RequestInsignia = GetInsigniaByName("ประถมาภรณ์มงกุฎไทย"), // // Seq = 2, // // Gender = p.Gender, // // MatchingConditions = new List // // { // // new MatchingCondition // // { // // Condition = $"1.ได้ ท.ช. มาแล้วไม่น้อยกว่า 3 ปี บริบูรณ์ (ได้รับ ท.ช. ก่อนวันที่ {(new DateTime(period.Year - 3, 7, 28)).ToThaiFullDate3()})", // // Result = $"ได้รับ ท.ช. ในปี { p.FirstRecvInsigniaYear.ToThaiYear() }" // // }, // // } // // }) // // .ToList(); // // var s3 = (from p in await _dbContext.Set().AsQueryable() // // .Include(p => p.Position) // // .Include(p => p.PositionNumber) // // .Include(p => p.AcademicStanding) // // .Include(p => p.PositionType) // // .Include(p => p.PositionLevel) // // .Include(p => p.Insignias) // // .ThenInclude(i => i.Insignia) // // .Include(p => p.Salaries) // // .ThenInclude(p => p.SalaryPositionLevel) // // .ThenInclude(p => p.PositionLevel) // // where p.OrganizationChart != null // // && allOc.Contains(p.OrganizationChart.OCId) // // && p.IsActive == true // // && p.IsLeave == false // // && p.DateAppoint != null // // && p.PositionType.Id == 1 // ทั่วไป // // && (p.PositionLevel.Id == 3 || p.PositionLevel.Id == 13) // อาวุโส // // && !p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name.Contains("ประถมาภรณ์ช้างเผือก") // // //&& !IsHigherLevel(p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, "ตริตาภรณ์ช้างเผือก") // // //&& CanRequestInsignia(p.Id, period.Year.ToString()) // // select new // // { // // ProfileId = p.Id, // // Prefix = p.Prefix, // // FullName = $"{p.FirstName} {p.LastName}", // // Position = p.Position.Name, // // PositionLevel = p.PositionLevel.Name, // // PositionType = p.PositionType.Name, // // Rank = p.AcademicStanding.Name, // // GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), // // ProfileDateAppoint = p.DateAppoint.Value, // // LastInsignia = p.Insignias.Count == 0 ? "" : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, // // LastInsigniaId = p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Id, // // Salary = p.Salaries.Count() == 0 ? "0" : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, // // SalaryCondition = p.Salaries.Count() == 0 ? 0 : p.Salaries.Where(x => x.SalaryDate <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount.Replace(".00", "").Replace(",", "").ToInteger(), // // PosNo = p.PositionNumber.Id, // // Gender = p.Gendor.IsNull("") == "male" ? "1" : "2", // // IsHigherLevel = InsigniaService.IsHigherLevel(p.Insignias // // .Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name, // // "ประถมาภรณ์ช้างเผือก"), // // FirstRecvInsigniaYear = p.Insignias.Count == 0 ? 0 : // // p.Insignias.Where(x => x.Insignia.Name == "ประถมาภรณ์มงกุฎไทย").OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : // // p.Insignias.Where(x => x.Insignia.Name == "ประถมาภรณ์มงกุฎไทย").OrderBy(x => x.Year).FirstOrDefault().Year, // // FirstPositonLevelDate = p.Salaries.Count == 0 ? null : // // p.Salaries.Where(x => x.SalaryPositionLevel.PositionLevel.Id == 3).OrderBy(p => p.SalaryDateAnnounce).FirstOrDefault().SalaryDateAnnounce // // //CanRequestInsignia = CanRequestInsignia(p.Id, period.Year.ToString()) // // //RequestInsignia = GetInsigniaByName("ตริตาภรณ์มงกุฎไทย") // // }) // // .ToList() // // .Where(x => x.FirstRecvInsigniaYear != 0 && x.FirstRecvInsigniaYear <= period.Year - 5) // // .Select(p => new InsigniaResultSet // // { // // ProfileId = p.ProfileId, // // Prefix = p.Prefix, // // FullName = p.FullName, // // Position = p.Position, // // PosNo = p.PosNo, // // Rank = p.Rank, // // GovAge = p.GovAge, // // LastInsignia = p.LastInsignia, // // LastInsigniaId = p.LastInsigniaId, // // Salary = p.Salary, // // RequestInsignia = GetInsigniaByName("ประถมาภรณ์ช้างเผือก"), // // Seq = 2, // // Gender = p.Gender, // // MatchingConditions = new List // // { // // new MatchingCondition // // { // // Condition = $"1.ได้ ป.ม. มาแล้วไม่น้อยกว่า 5 ปี บริบูรณ์ (ได้รับ ป.ม. ก่อนวันที่ {(new DateTime(period.Year - 5, 7, 28)).ToThaiFullDate3()})", // // Result = $"ได้รับ ป.ม. ในปี { p.FirstRecvInsigniaYear }" // // }, // // } // // }) // // .ToList(); // // var result_candidate = new List(); // // foreach (var r in s3) // // { // // var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); // // // Check ได้รับหรือเคยยื่นขอไปในปีที่แล้วหรือไม่? // // if (!CanRequestInsignia(r.ProfileId, period.Year)) // // continue; // // // Check ว่าชั้นที่ขอสูงกว่าชั้นที่เคยได้รับแล้วหรือไม่? // // if (!IsHigherLevel2(r.LastInsignia, r.RequestInsignia.Name)) // // continue; // // if (old == null) // // { // // result_candidate.Add(r); // // } // // } // // foreach (var r in s2) // // { // // var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); // // // Check ได้รับหรือเคยยื่นขอไปในปีที่แล้วหรือไม่? // // if (!CanRequestInsignia(r.ProfileId, period.Year)) // // continue; // // // Check ว่าชั้นที่ขอสูงกว่าชั้นที่เคยได้รับแล้วหรือไม่? // // if (!IsHigherLevel2(r.LastInsignia, r.RequestInsignia.Name)) // // continue; // // if (old == null) // // { // // result_candidate.Add(r); // // } // // } // // foreach (var r in s1) // // { // // var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); // // // Check ได้รับหรือเคยยื่นขอไปในปีที่แล้วหรือไม่? // // if (!CanRequestInsignia(r.ProfileId, period.Year)) // // continue; // // // Check ว่าชั้นที่ขอสูงกว่าชั้นที่เคยได้รับแล้วหรือไม่? // // if (!IsHigherLevel2(r.LastInsignia, r.RequestInsignia.Name)) // // continue; // // if (old == null) // // { // // result_candidate.Add(r); // // } // // } // // return result_candidate; // // } // // catch // // { // // throw; // // } // // } // #endregion // #region " วิชาการ " // /// // /// Gets the insignia candidate ประเภทวิชาการ ระดับปฎิบัติการ. // /// // /// The period identifier. // /// The oc identifier. // /// // // public async List GetInsigniaCandidate_Type2_Level5(int periodId, int ocId) // // { // // try // // { // // var allOc = profileService.GetAllIdByRoot(ocId); // // var period = await _dbContext.Set().FirstOrDefault(p => p.Id == periodId); // // if (period == null) // // throw new Exception(GlobalMessages.InvalidCoinPeriod); // // var oc = await _dbContext.Set().FirstOrDefault(x => x.OCId == ocId); // // if (oc == null) // // throw new Exception(GlobalMessages.InvalidOC); // // var CurrentRetireDate = new DateTime(period.Year, 9, 30); // // var inst_profile = await _dbContext.Set().AsQueryable() // // .Include(p => p.Position) // // .Include(p => p.PositionNumber) // // .Include(p => p.AcademicStanding) // // .Include(p => p.PositionType) // // .Include(p => p.PositionLevel) // // .Include(p => p.Insignias) // // .ThenInclude(i => i.Insignia) // // .Include(p => p.Salaries) // // .Where(p => // // allOc.Contains(p.OrganizationChart.OCId) && // // p.IsActive == true && // // p.IsLeave == false && // // p.DateAppoint != null && // // p.PositionType.Id == 2 // ประเภทวิชาการ // // ) // // .Select(p => new // // { // // ProfileId = p.Id, // // Prefix = p.Prefix, // // FullName = $"{p.FirstName} {p.LastName}", // // Position = p.Position.Name, // // Rank = p.AcademicStanding.Name, // // ProfileDateAppoint = p.DateAppoint.Value, // // GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), // // PosNo = p.PositionNumber.Id, // // PositionLevelId = p.PositionLevel.Id, // // PositionLevelName = p.PositionLevel.Name, // // PositionTypeId = p.PositionType.Id, // // PositionTypeName = p.PositionType.Name, // // Gender = p.Gendor.IsNull("") == "male" ? "1" : "2", // // LastInsignia = p.Insignias.Count == 0 ? "" : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, // // LastInsigniaId = p.Insignias.Count == 0 ? -1 : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Id, // // Salary = p.Salaries.Count() == 0 ? "0" : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, // // PostionSalaryAmount = p.Salaries.Count() == 0 ? "0" : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().PositionSalaryAmount // // //CanRequestInsignia = CanRequestInsignia(p.Id, period.Year.ToString()) // // }); // // // check วันที่บรรจะต้องน้อยกว่า 29/5/ปี-5 // // var s1 = ((from p in inst_profile // // //where p.CanRequestInsignia == true // // where p.ProfileDateAppoint <= new DateTime(period.Year - 5, 5, 29) // // && p.LastInsigniaId == -1 // // && p.PositionLevelId == 5 // ปฎิบัติการ // // select p) // // .ToList() // // .Select(p => new InsigniaResultSet // // { // // ProfileId = p.ProfileId, // // Prefix = p.Prefix, // // FullName = p.FullName, // // Position = p.Position, // // PosNo = p.PosNo, // // Rank = p.Rank, // // GovAge = p.GovAge, // // LastInsignia = p.LastInsignia, // // LastInsigniaId = p.LastInsigniaId, // // Salary = p.Salary, // // RequestInsignia = GetInsigniaByName("ตริตาภรณ์มงกุฎไทย"), // // Seq = 1, // // Gender = p.Gender, // // MatchingConditions = new List // // { // // new MatchingCondition // // { // // Condition = $"1.รับราชการก่อน { new DateTime(period.Year - 5, 5, 29).ToThaiFullDate3() }", // // Result = $"วันที่บรรจุเข้ารับราชการ { p.ProfileDateAppoint.ToThaiFullDate3() }" // // } // // } // // })).ToList(); // // var result_candidate = new List(); // // foreach (var r in s1) // // { // // var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); // // // Check ได้รับหรือเคยยื่นขอไปในปีที่แล้วหรือไม่? // // if (!CanRequestInsignia(r.ProfileId, period.Year)) // // continue; // // // Check ว่าชั้นที่ขอสูงกว่าชั้นที่เคยได้รับแล้วหรือไม่? // // if (!IsHigherLevel2(r.LastInsignia, r.RequestInsignia.Name)) // // continue; // // if (old == null) // // { // // result_candidate.Add(r); // // } // // } // // return result_candidate; // // } // // catch // // { // // throw; // // } // // } // /// // /// Gets the insignia candidate ประเภทวิชาการ ระดับชำนาญการ. // /// // /// The period identifier. // /// The oc identifier. // /// // // public async List GetInsigniaCandidate_Type2_Level6(int periodId, int ocId) // // { // // try // // { // // var allOc = profileService.GetAllIdByRoot(ocId); // // var period = await _dbContext.Set().FirstOrDefault(p => p.Id == periodId); // // if (period == null) // // throw new Exception(GlobalMessages.InvalidCoinPeriod); // // var oc = await _dbContext.Set().FirstOrDefault(x => x.OCId == ocId); // // if (oc == null) // // throw new Exception(GlobalMessages.InvalidOC); // // var CurrentRetireDate = new DateTime(period.Year, 9, 30); // // var s1 = (from p in await _dbContext.Set().AsQueryable() // // .Include(p => p.Position) // // .Include(p => p.PositionNumber) // // .Include(p => p.AcademicStanding) // // .Include(p => p.PositionType) // // .Include(p => p.PositionLevel) // // .Include(p => p.Insignias) // // .ThenInclude(i => i.Insignia) // // .Include(p => p.Salaries) // // where p.OrganizationChart != null // // && allOc.Contains(p.OrganizationChart.OCId) // // && p.IsActive == true // // && p.IsLeave == false // // && p.DateAppoint != null // // && p.PositionType.Id == 2 // วิชาการ // // && p.PositionLevel.Id == 6 // ชำนาญการ // // && !p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name.Contains("ตริตาภรณ์ช้างเผือก") // // //&& !IsHigherLevel(p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, "ตริตาภรณ์ช้างเผือก") // // //&& CanRequestInsignia(p.Id, period.Year.ToString()) // // select new // // { // // ProfileId = p.Id, // // Prefix = p.Prefix, // // FullName = $"{p.FirstName} {p.LastName}", // // Position = p.Position.Name, // // PositionLevel = p.PositionLevel.Name, // // PositionType = p.PositionType.Name, // // Rank = p.AcademicStanding.Name, // // GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), // // ProfileDateAppoint = p.DateAppoint.Value, // // LastInsignia = p.Insignias.Count == 0 ? "" : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, // // LastInsigniaId = p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Id, // // Salary = p.Salaries.Count() == 0 ? "0" : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, // // SalaryCondition = p.Salaries.Count() == 0 ? 0 : p.Salaries.Where(x => x.SalaryDate <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount.Replace(".00", "").Replace(",", "").ToInteger(), // // PosNo = p.PositionNumber.Id, // // Gender = p.Gendor.IsNull("") == "male" ? "1" : "2", // // IsHigherLevel = InsigniaService.IsHigherLevel(p.Insignias // // .Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name, // // "ตริตาภรณ์ช้างเผือก"), // // //CanRequestInsignia = CanRequestInsignia(p.Id, period.Year.ToString()) // // //RequestInsignia = GetInsigniaByName("ตริตาภรณ์มงกุฎไทย") // // }) // // .ToList() // // .Select(p => new InsigniaResultSet // // { // // ProfileId = p.ProfileId, // // Prefix = p.Prefix, // // FullName = p.FullName, // // Position = p.Position, // // PosNo = p.PosNo, // // Rank = p.Rank, // // GovAge = p.GovAge, // // LastInsignia = p.LastInsignia, // // LastInsigniaId = p.LastInsigniaId, // // Salary = p.Salary, // // RequestInsignia = GetInsigniaByName("ตริตาภรณ์ช้างเผือก"), // // Seq = 2, // // Gender = p.Gender, // // MatchingConditions = new List // // { // // new MatchingCondition // // { // // Condition = $"1.เป็นระดับชำนาญการ", // // Result = $"ตำแหน่ง { p.Position } ประเภท { p.PositionType } ระดับ { p.PositionLevel }" // // }, // // } // // }) // // .ToList(); // // var s2 = (from p in await _dbContext.Set().AsQueryable() // // .Include(p => p.Position) // // .Include(p => p.PositionNumber) // // .Include(p => p.AcademicStanding) // // .Include(p => p.PositionType) // // .Include(p => p.PositionLevel) // // .Include(p => p.Insignias) // // .ThenInclude(i => i.Insignia) // // .Include(p => p.Salaries) // // where p.OrganizationChart != null // // && allOc.Contains(p.OrganizationChart.OCId) // // && p.IsActive == true // // && p.IsLeave == false // // && p.DateAppoint != null // // && p.PositionType.Id == 2 // วิชาการ // // && p.PositionLevel.Id == 6 // ชำนาญการ // // && !p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name.Contains("ทวีติยาภรณ์มงกุฎไทย") // // //&& !IsHigherLevel(p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, "ตริตาภรณ์ช้างเผือก") // // //&& CanRequestInsignia(p.Id, period.Year.ToString()) // // select new // // { // // ProfileId = p.Id, // // Prefix = p.Prefix, // // FullName = $"{p.FirstName} {p.LastName}", // // Position = p.Position.Name, // // PositionLevel = p.PositionLevel.Name, // // PositionType = p.PositionType.Name, // // Rank = p.AcademicStanding.Name, // // GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), // // ProfileDateAppoint = p.DateAppoint.Value, // // LastInsignia = p.Insignias.Count == 0 ? "" : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, // // LastInsigniaId = p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Id, // // Salary = p.Salaries.Count() == 0 ? "0" : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, // // SalaryCondition = p.Salaries.Count() == 0 ? 0 : p.Salaries.Where(x => x.SalaryDate <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount.Replace(".00", "").Replace(",", "").ToInteger(), // // PosNo = p.PositionNumber.Id, // // Gender = p.Gendor.IsNull("") == "male" ? "1" : "2", // // IsHigherLevel = InsigniaService.IsHigherLevel(p.Insignias // // .Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name, // // "ทวีติยาภรณ์มงกุฎไทย"), // // //CanRequestInsignia = CanRequestInsignia(p.Id, period.Year.ToString()) // // //RequestInsignia = GetInsigniaByName("ตริตาภรณ์มงกุฎไทย") // // }) // // .ToList() // // .Where(p => p.SalaryCondition >= 22140) // // .Select(p => new InsigniaResultSet // // { // // ProfileId = p.ProfileId, // // Prefix = p.Prefix, // // FullName = p.FullName, // // Position = p.Position, // // PosNo = p.PosNo, // // Rank = p.Rank, // // GovAge = p.GovAge, // // LastInsignia = p.LastInsignia, // // LastInsigniaId = p.LastInsigniaId, // // Salary = p.Salary, // // RequestInsignia = GetInsigniaByName("ทวีติยาภรณ์มงกุฎไทย"), // // Seq = 2, // // Gender = p.Gender, // // MatchingConditions = new List // // { // // new MatchingCondition // // { // // Condition = $"1.ได้รับเงินเดือนไม่ต่ำกว่าขั้นต่ำของระดับชำนาญการพิเศษ (เงินเดือน ณ วันที่ { (new DateTime(period.Year, 4, 29)).ToThaiFullDate3() } 22,140 บาท)", // // Result = $"เงินเดือน ณ วันที่ { (new DateTime(period.Year, 4, 29)).ToThaiFullDate3() } เป็นเงิน { p.SalaryCondition.ToNumericText() } บาท" // // }, // // } // // }) // // .ToList(); // // var s3 = (from p in await _dbContext.Set().AsQueryable() // // .Include(p => p.Position) // // .Include(p => p.PositionNumber) // // .Include(p => p.AcademicStanding) // // .Include(p => p.PositionType) // // .Include(p => p.PositionLevel) // // .Include(p => p.Insignias) // // .ThenInclude(i => i.Insignia) // // .Include(p => p.Salaries) // // where p.OrganizationChart != null // // && allOc.Contains(p.OrganizationChart.OCId) // // && p.IsActive == true // // && p.IsLeave == false // // && p.DateAppoint != null // // && p.PositionType.Id == 2 // วิชาการ // // && p.PositionLevel.Id == 6 // ชำนาญการ // // && !p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name.Contains("ทวีติยาภรณ์ช้างเผือก") // // //&& !IsHigherLevel(p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, "ตริตาภรณ์ช้างเผือก") // // //&& CanRequestInsignia(p.Id, period.Year.ToString()) // // select new // // { // // ProfileId = p.Id, // // Prefix = p.Prefix, // // FullName = $"{p.FirstName} {p.LastName}", // // Position = p.Position.Name, // // PositionLevel = p.PositionLevel.Name, // // PositionType = p.PositionType.Name, // // Rank = p.AcademicStanding.Name, // // GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), // // ProfileDateAppoint = p.DateAppoint.Value, // // LastInsignia = p.Insignias.Count == 0 ? "" : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, // // LastInsigniaId = p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Id, // // Salary = p.Salaries.Count() == 0 ? "0" : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, // // SalaryCondition = p.Salaries.Count() == 0 ? 0 : p.Salaries.Where(x => x.SalaryDate < new DateTime(period.Year - 5, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount.Replace(".00", "").Replace(",", "").ToInteger(), // // PosNo = p.PositionNumber.Id, // // Gender = p.Gendor.IsNull("") == "male" ? "1" : "2", // // IsHigherLevel = InsigniaService.IsHigherLevel(p.Insignias // // .Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name, // // "ทวีติยาภรณ์ช้างเผือก"), // // //CanRequestInsignia = CanRequestInsignia(p.Id, period.Year.ToString()) // // //RequestInsignia = GetInsigniaByName("ตริตาภรณ์มงกุฎไทย") // // }) // // .ToList() // // .Where(p => p.SalaryCondition >= 22140) // // .Select(p => new InsigniaResultSet // // { // // ProfileId = p.ProfileId, // // Prefix = p.Prefix, // // FullName = p.FullName, // // Position = p.Position, // // PosNo = p.PosNo, // // Rank = p.Rank, // // GovAge = p.GovAge, // // LastInsignia = p.LastInsignia, // // LastInsigniaId = p.LastInsigniaId, // // Salary = p.Salary, // // RequestInsignia = GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก"), // // Seq = 2, // // Gender = p.Gender, // // MatchingConditions = new List // // { // // new MatchingCondition // // { // // Condition = $"1.ได้รับเงินเดือนไม่ต่ำกว่าขั้นต่ำของระดับชำนาญการพิเศษมาแล้วไม่น้อยกว่า 5 ปี (เงินเดือนก่อนวันที่ { (new DateTime(period.Year-5, 4, 29)).ToThaiFullDate3() } 22,140 บาท)", // // Result = $"เงินเดือนก่อนวันที่ { (new DateTime(period.Year-5, 4, 29)).ToThaiFullDate3() } เป็นเงิน { p.SalaryCondition.ToNumericText() } บาท" // // }, // // } // // }) // // .ToList(); // // var result_candidate = new List(); // // foreach (var r in s3) // // { // // var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); // // // Check ได้รับหรือเคยยื่นขอไปในปีที่แล้วหรือไม่? // // if (!CanRequestInsignia(r.ProfileId, period.Year)) // // continue; // // // Check ว่าชั้นที่ขอสูงกว่าชั้นที่เคยได้รับแล้วหรือไม่? // // if (!IsHigherLevel2(r.LastInsignia, r.RequestInsignia.Name)) // // continue; // // if (old == null) // // { // // result_candidate.Add(r); // // } // // } // // foreach (var r in s2) // // { // // var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); // // // Check ได้รับหรือเคยยื่นขอไปในปีที่แล้วหรือไม่? // // if (!CanRequestInsignia(r.ProfileId, period.Year)) // // continue; // // // Check ว่าชั้นที่ขอสูงกว่าชั้นที่เคยได้รับแล้วหรือไม่? // // if (!IsHigherLevel2(r.LastInsignia, r.RequestInsignia.Name)) // // continue; // // if (old == null) // // { // // result_candidate.Add(r); // // } // // } // // foreach (var r in s1) // // { // // var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); // // // Check ได้รับหรือเคยยื่นขอไปในปีที่แล้วหรือไม่? // // if (!CanRequestInsignia(r.ProfileId, period.Year)) // // continue; // // // Check ว่าชั้นที่ขอสูงกว่าชั้นที่เคยได้รับแล้วหรือไม่? // // if (!IsHigherLevel2(r.LastInsignia, r.RequestInsignia.Name)) // // continue; // // if (old == null) // // { // // result_candidate.Add(r); // // } // // } // // return result_candidate; // // } // // catch // // { // // throw; // // } // // } // /// // /// Gets the insignia candidate ประเภทวิชาการ ระดับชำนาญการพิเศษ. // /// // /// The period identifier. // /// The oc identifier. // /// // // public async List GetInsigniaCandidate_Type2_Level7(int periodId, int ocId) // // { // // try // // { // // var allOc = profileService.GetAllIdByRoot(ocId); // // var period = await _dbContext.Set().FirstOrDefault(p => p.Id == periodId); // // if (period == null) // // throw new Exception(GlobalMessages.InvalidCoinPeriod); // // var oc = await _dbContext.Set().FirstOrDefault(x => x.OCId == ocId); // // if (oc == null) // // throw new Exception(GlobalMessages.InvalidOC); // // var CurrentRetireDate = new DateTime(period.Year, 9, 30); // // var s1 = (from p in await _dbContext.Set().AsQueryable() // // .Include(p => p.Position) // // .Include(p => p.PositionNumber) // // .Include(p => p.AcademicStanding) // // .Include(p => p.PositionType) // // .Include(p => p.PositionLevel) // // .Include(p => p.Insignias) // // .ThenInclude(i => i.Insignia) // // .Include(p => p.Salaries) // // where p.OrganizationChart != null // // && allOc.Contains(p.OrganizationChart.OCId) // // && p.IsActive == true // // && p.IsLeave == false // // && p.DateAppoint != null // // && p.PositionType.Id == 2 // วิชาการ // // && p.PositionLevel.Id == 7 // ชำนาญการพิเศษ // // && !p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name.Contains("ทวีติยาภรณ์ช้างเผือก") // // //&& !IsHigherLevel(p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, "ตริตาภรณ์ช้างเผือก") // // //&& CanRequestInsignia(p.Id, period.Year.ToString()) // // select new // // { // // ProfileId = p.Id, // // Prefix = p.Prefix, // // FullName = $"{p.FirstName} {p.LastName}", // // Position = p.Position.Name, // // PositionLevel = p.PositionLevel.Name, // // PositionType = p.PositionType.Name, // // Rank = p.AcademicStanding.Name, // // GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), // // ProfileDateAppoint = p.DateAppoint.Value, // // LastInsignia = p.Insignias.Count == 0 ? "" : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, // // LastInsigniaId = p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Id, // // Salary = p.Salaries.Count() == 0 ? "0" : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, // // SalaryCondition = p.Salaries.Count() == 0 ? 0 : p.Salaries.Where(x => x.SalaryDate <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount.Replace(".00", "").Replace(",", "").ToInteger(), // // PosNo = p.PositionNumber.Id, // // Gender = p.Gendor.IsNull("") == "male" ? "1" : "2", // // IsHigherLevel = InsigniaService.IsHigherLevel(p.Insignias // // .Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name, // // "ทวีติยาภรณ์ช้างเผือก"), // // //CanRequestInsignia = CanRequestInsignia(p.Id, period.Year.ToString()) // // //RequestInsignia = GetInsigniaByName("ตริตาภรณ์มงกุฎไทย") // // }) // // .ToList() // // .Select(p => new InsigniaResultSet // // { // // ProfileId = p.ProfileId, // // Prefix = p.Prefix, // // FullName = p.FullName, // // Position = p.Position, // // PosNo = p.PosNo, // // Rank = p.Rank, // // GovAge = p.GovAge, // // LastInsignia = p.LastInsignia, // // LastInsigniaId = p.LastInsigniaId, // // Salary = p.Salary, // // RequestInsignia = GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก"), // // Seq = 2, // // Gender = p.Gender, // // MatchingConditions = new List // // { // // new MatchingCondition // // { // // Condition = $"1.เป็นระดับชำนาญการพิเศษ", // // Result = $"ตำแหน่ง { p.Position } ประเภท { p.PositionType } ระดับ { p.PositionLevel }" // // }, // // } // // }) // // .ToList(); // // var s2 = (from p in await _dbContext.Set().AsQueryable() // // .Include(p => p.Position) // // .Include(p => p.PositionNumber) // // .Include(p => p.AcademicStanding) // // .Include(p => p.PositionType) // // .Include(p => p.PositionLevel) // // .Include(p => p.Insignias) // // .ThenInclude(i => i.Insignia) // // .Include(p => p.Salaries) // // where p.OrganizationChart != null // // && allOc.Contains(p.OrganizationChart.OCId) // // && p.IsActive == true // // && p.IsLeave == false // // && p.DateAppoint != null // // && p.PositionType.Id == 2 // วิชาการ // // && p.PositionLevel.Id == 7 // ชำนาญการพิเศษ // // && !p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name.Contains("ประถมาภรณ์มงกุฎไทย") // // //&& !IsHigherLevel(p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, "ตริตาภรณ์ช้างเผือก") // // //&& CanRequestInsignia(p.Id, period.Year.ToString()) // // select new // // { // // ProfileId = p.Id, // // Prefix = p.Prefix, // // FullName = $"{p.FirstName} {p.LastName}", // // Position = p.Position.Name, // // PositionLevel = p.PositionLevel.Name, // // PositionType = p.PositionType.Name, // // Rank = p.AcademicStanding.Name, // // GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), // // ProfileDateAppoint = p.DateAppoint.Value, // // LastInsignia = p.Insignias.Count == 0 ? "" : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, // // LastInsigniaId = p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Id, // // Salary = p.Salaries.Count() == 0 ? "0" : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, // // SalaryCondition = p.Salaries.Count() == 0 ? 0 : p.Salaries.Where(x => x.SalaryDate <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount.Replace(".00", "").Replace(",", "").ToInteger(), // // PosNo = p.PositionNumber.Id, // // Gender = p.Gendor.IsNull("") == "male" ? "1" : "2", // // IsHigherLevel = InsigniaService.IsHigherLevel(p.Insignias // // .Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name, // // "ประถมาภรณ์มงกุฎไทย"), // // FirstRecvInsigniaYear = p.Insignias.Count == 0 ? 0 : // // p.Insignias.Where(x => x.Insignia.Name == "ทวีติยาภรณ์ช้างเผือก").OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : // // p.Insignias.Where(x => x.Insignia.Name == "ทวีติยาภรณ์ช้างเผือก").OrderBy(x => x.Year).FirstOrDefault().Year // // //CanRequestInsignia = CanRequestInsignia(p.Id, period.Year.ToString()) // // //RequestInsignia = GetInsigniaByName("ตริตาภรณ์มงกุฎไทย") // // }) // // .ToList() // // .Where(p => p.SalaryCondition >= 58390) // // .Where(p => p.FirstRecvInsigniaYear != 0 && p.FirstRecvInsigniaYear <= period.Year - 5) // // .Select(p => new InsigniaResultSet // // { // // ProfileId = p.ProfileId, // // Prefix = p.Prefix, // // FullName = p.FullName, // // Position = p.Position, // // PosNo = p.PosNo, // // Rank = p.Rank, // // GovAge = p.GovAge, // // LastInsignia = p.LastInsignia, // // LastInsigniaId = p.LastInsigniaId, // // Salary = p.Salary, // // RequestInsignia = GetInsigniaByName("ประถมาภรณ์มงกุฎไทย"), // // Seq = 2, // // Gender = p.Gender, // // MatchingConditions = new List // // { // // new MatchingCondition // // { // // Condition = $"1.ได้รับเงินเดือนขั้นสูง (เงินเดือน ณ วันที่ { (new DateTime(period.Year, 4, 29)).ToThaiFullDate3() } 58,390 บาท)", // // Result = $"เงินเดือน ณ วันที่ { (new DateTime(period.Year, 4, 29)).ToThaiFullDate3() } เป็นเงิน { p.SalaryCondition.ToNumericText() } บาท" // // }, // // new MatchingCondition // // { // // Condition = $"2.ได้ ท.ช. มาแล้วไม่น้อยกว่า 5 ปี บริบูรณ์ (ได้ ท.ช. วันที่ { (new DateTime(period.Year-5, 7, 28)).ToThaiFullDate3() } หรือก่อนหน้านั้น)", // // Result = $"ได้รับ ท.ช. ในปี { p.FirstRecvInsigniaYear.ToThaiYear() }" // // }, // // } // // }) // // .ToList(); // // var result_candidate = new List(); // // foreach (var r in s2) // // { // // var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); // // // Check ได้รับหรือเคยยื่นขอไปในปีที่แล้วหรือไม่? // // if (!CanRequestInsignia(r.ProfileId, period.Year)) // // continue; // // // Check ว่าชั้นที่ขอสูงกว่าชั้นที่เคยได้รับแล้วหรือไม่? // // if (!IsHigherLevel2(r.LastInsignia, r.RequestInsignia.Name)) // // continue; // // if (old == null) // // { // // result_candidate.Add(r); // // } // // } // // foreach (var r in s1) // // { // // var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); // // // Check ได้รับหรือเคยยื่นขอไปในปีที่แล้วหรือไม่? // // if (!CanRequestInsignia(r.ProfileId, period.Year)) // // continue; // // // Check ว่าชั้นที่ขอสูงกว่าชั้นที่เคยได้รับแล้วหรือไม่? // // if (!IsHigherLevel2(r.LastInsignia, r.RequestInsignia.Name)) // // continue; // // if (old == null) // // { // // result_candidate.Add(r); // // } // // } // // return result_candidate; // // } // // catch // // { // // throw; // // } // // } // /// // /// Gets the insignia candidate ประเภทวิชาการ ระดับเชี่ยวชาญ. // /// // /// The period identifier. // /// The oc identifier. // /// // // public async List GetInsigniaCandidate_Type2_Level8(int periodId, int ocId) // // { // // try // // { // // var allOc = profileService.GetAllIdByRoot(ocId); // // var period = await _dbContext.Set().FirstOrDefault(p => p.Id == periodId); // // if (period == null) // // throw new Exception(GlobalMessages.InvalidCoinPeriod); // // var oc = await _dbContext.Set().FirstOrDefault(x => x.OCId == ocId); // // if (oc == null) // // throw new Exception(GlobalMessages.InvalidOC); // // var CurrentRetireDate = new DateTime(period.Year, 9, 30); // // var s1 = (from p in await _dbContext.Set().AsQueryable() // // .Include(p => p.Position) // // .Include(p => p.PositionNumber) // // .Include(p => p.AcademicStanding) // // .Include(p => p.PositionType) // // .Include(p => p.PositionLevel) // // .Include(p => p.Insignias) // // .ThenInclude(i => i.Insignia) // // .Include(p => p.Salaries) // // where p.OrganizationChart != null // // && allOc.Contains(p.OrganizationChart.OCId) // // && p.IsActive == true // // && p.IsLeave == false // // && p.DateAppoint != null // // && p.PositionType.Id == 2 // วิชาการ // // && p.PositionLevel.Id == 8 // เชี่ยวชสญ // // && !p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name.Contains("ทวีติยาภรณ์ช้างเผือก") // // //&& !IsHigherLevel(p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, "ตริตาภรณ์ช้างเผือก") // // //&& CanRequestInsignia(p.Id, period.Year.ToString()) // // select new // // { // // ProfileId = p.Id, // // Prefix = p.Prefix, // // FullName = $"{p.FirstName} {p.LastName}", // // Position = p.Position.Name, // // PositionLevel = p.PositionLevel.Name, // // PositionType = p.PositionType.Name, // // Rank = p.AcademicStanding.Name, // // GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), // // ProfileDateAppoint = p.DateAppoint.Value, // // LastInsignia = p.Insignias.Count == 0 ? "" : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, // // LastInsigniaId = p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Id, // // Salary = p.Salaries.Count() == 0 ? "0" : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, // // SalaryCondition = p.Salaries.Count() == 0 ? 0 : p.Salaries.Where(x => x.SalaryDate <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount.Replace(".00", "").Replace(",", "").ToInteger(), // // PosNo = p.PositionNumber.Id, // // Gender = p.Gendor.IsNull("") == "male" ? "1" : "2", // // IsHigherLevel = InsigniaService.IsHigherLevel(p.Insignias // // .Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name, // // "ทวีติยาภรณ์ช้างเผือก"), // // //CanRequestInsignia = CanRequestInsignia(p.Id, period.Year.ToString()) // // //RequestInsignia = GetInsigniaByName("ตริตาภรณ์มงกุฎไทย") // // }) // // .ToList() // // .Select(p => new InsigniaResultSet // // { // // ProfileId = p.ProfileId, // // Prefix = p.Prefix, // // FullName = p.FullName, // // Position = p.Position, // // PosNo = p.PosNo, // // Rank = p.Rank, // // GovAge = p.GovAge, // // LastInsignia = p.LastInsignia, // // LastInsigniaId = p.LastInsigniaId, // // Salary = p.Salary, // // RequestInsignia = GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก"), // // Seq = 2, // // Gender = p.Gender, // // MatchingConditions = new List // // { // // new MatchingCondition // // { // // Condition = $"1.เป็นระดับเชี่ยวชาญ", // // Result = $"ตำแหน่ง { p.Position } ประเภท { p.PositionType } ระดับ { p.PositionLevel }" // // }, // // } // // }) // // .ToList(); // // var s2 = (from p in await _dbContext.Set().AsQueryable() // // .Include(p => p.Position) // // .Include(p => p.PositionNumber) // // .Include(p => p.AcademicStanding) // // .Include(p => p.PositionType) // // .Include(p => p.PositionLevel) // // .Include(p => p.Insignias) // // .ThenInclude(i => i.Insignia) // // .Include(p => p.Salaries) // // where p.OrganizationChart != null // // && allOc.Contains(p.OrganizationChart.OCId) // // && p.IsActive == true // // && p.IsLeave == false // // && p.DateAppoint != null // // && p.PositionType.Id == 2 // วิชาการ // // && p.PositionLevel.Id == 8 // เชี่ยวชาญ // // && !p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name.Contains("ประถมาภรณ์มงกุฎไทย") // // //&& !IsHigherLevel(p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, "ตริตาภรณ์ช้างเผือก") // // //&& CanRequestInsignia(p.Id, period.Year.ToString()) // // select new // // { // // ProfileId = p.Id, // // Prefix = p.Prefix, // // FullName = $"{p.FirstName} {p.LastName}", // // Position = p.Position.Name, // // PositionLevel = p.PositionLevel.Name, // // PositionType = p.PositionType.Name, // // Rank = p.AcademicStanding.Name, // // GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), // // ProfileDateAppoint = p.DateAppoint.Value, // // LastInsignia = p.Insignias.Count == 0 ? "" : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, // // LastInsigniaId = p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Id, // // Salary = p.Salaries.Count() == 0 ? "0" : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, // // SalaryCondition = p.Salaries.Count() == 0 ? 0 : p.Salaries.Where(x => x.SalaryDate <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount.Replace(".00", "").Replace(",", "").ToInteger(), // // PosNo = p.PositionNumber.Id, // // Gender = p.Gendor.IsNull("") == "male" ? "1" : "2", // // IsHigherLevel = InsigniaService.IsHigherLevel(p.Insignias // // .Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name, // // "ประถมาภรณ์มงกุฎไทย"), // // FirstRecvInsigniaYear = p.Insignias.Count == 0 ? 0 : // // p.Insignias.Where(x => x.Insignia.Name == "ทวีติยาภรณ์ช้างเผือก").OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : // // p.Insignias.Where(x => x.Insignia.Name == "ทวีติยาภรณ์ช้างเผือก").OrderBy(x => x.Year).FirstOrDefault().Year // // //CanRequestInsignia = CanRequestInsignia(p.Id, period.Year.ToString()) // // //RequestInsignia = GetInsigniaByName("ตริตาภรณ์มงกุฎไทย") // // }) // // .ToList() // // .Where(p => p.FirstRecvInsigniaYear != 0 && p.FirstRecvInsigniaYear <= period.Year - 3) // // .Select(p => new InsigniaResultSet // // { // // ProfileId = p.ProfileId, // // Prefix = p.Prefix, // // FullName = p.FullName, // // Position = p.Position, // // PosNo = p.PosNo, // // Rank = p.Rank, // // GovAge = p.GovAge, // // LastInsignia = p.LastInsignia, // // LastInsigniaId = p.LastInsigniaId, // // Salary = p.Salary, // // RequestInsignia = GetInsigniaByName("ประถมาภรณ์มงกุฎไทย"), // // Seq = 2, // // Gender = p.Gender, // // MatchingConditions = new List // // { // // new MatchingCondition // // { // // Condition = $"1.ได้ ท.ช. มาแล้วไม่น้อยกว่า 3 ปี บริบูรณ์ (ได้ ท.ช. ก่อนวันที่ { (new DateTime(period.Year-3, 7, 28)).ToThaiFullDate3() })", // // Result = $"ได้รับ ท.ช. ในปี { p.FirstRecvInsigniaYear.ToThaiYear() }" // // }, // // } // // }) // // .ToList(); // // var s3 = (from p in await _dbContext.Set().AsQueryable() // // .Include(p => p.Position) // // .Include(p => p.PositionNumber) // // .Include(p => p.AcademicStanding) // // .Include(p => p.PositionType) // // .Include(p => p.PositionLevel) // // .Include(p => p.Insignias) // // .ThenInclude(i => i.Insignia) // // .Include(p => p.Salaries) // // where p.OrganizationChart != null // // && allOc.Contains(p.OrganizationChart.OCId) // // && p.IsActive == true // // && p.IsLeave == false // // && p.DateAppoint != null // // && p.PositionType.Id == 2 // วิชาการ // // && p.PositionLevel.Id == 8 // เชี่ยวชาญ // // && !p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name.Contains("ประถมาภรณ์ช้างเผือก") // // //&& !IsHigherLevel(p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, "ตริตาภรณ์ช้างเผือก") // // //&& CanRequestInsignia(p.Id, period.Year.ToString()) // // select new // // { // // ProfileId = p.Id, // // Prefix = p.Prefix, // // FullName = $"{p.FirstName} {p.LastName}", // // Position = p.Position.Name, // // PositionLevel = p.PositionLevel.Name, // // PositionType = p.PositionType.Name, // // Rank = p.AcademicStanding.Name, // // GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), // // ProfileDateAppoint = p.DateAppoint.Value, // // LastInsignia = p.Insignias.Count == 0 ? "" : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, // // LastInsigniaId = p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Id, // // Salary = p.Salaries.Count() == 0 ? "0" : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, // // SalaryCondition = p.Salaries.Count() == 0 ? 0 : p.Salaries.Where(x => x.SalaryDate <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount.Replace(".00", "").Replace(",", "").ToInteger(), // // PosNo = p.PositionNumber.Id, // // Gender = p.Gendor.IsNull("") == "male" ? "1" : "2", // // IsHigherLevel = InsigniaService.IsHigherLevel(p.Insignias // // .Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name, // // "ประถมาภรณ์ช้างเผือก"), // // FirstRecvInsigniaYear = p.Insignias.Count == 0 ? 0 : // // p.Insignias.Where(x => x.Insignia.Name == "ประถมาภรณ์มงกุฎไทย").OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : // // p.Insignias.Where(x => x.Insignia.Name == "ประถมาภรณ์มงกุฎไทย").OrderBy(x => x.Year).FirstOrDefault().Year // // //CanRequestInsignia = CanRequestInsignia(p.Id, period.Year.ToString()) // // //RequestInsignia = GetInsigniaByName("ตริตาภรณ์มงกุฎไทย") // // }) // // .ToList() // // .Where(p => p.FirstRecvInsigniaYear != 0 && p.FirstRecvInsigniaYear <= period.Year - 5) // // .Select(p => new InsigniaResultSet // // { // // ProfileId = p.ProfileId, // // Prefix = p.Prefix, // // FullName = p.FullName, // // Position = p.Position, // // PosNo = p.PosNo, // // Rank = p.Rank, // // GovAge = p.GovAge, // // LastInsignia = p.LastInsignia, // // LastInsigniaId = p.LastInsigniaId, // // Salary = p.Salary, // // RequestInsignia = GetInsigniaByName("ประถมาภรณ์ช้างเผือก"), // // Seq = 2, // // Gender = p.Gender, // // MatchingConditions = new List // // { // // new MatchingCondition // // { // // Condition = $"1.ได้ ป.ม. มาแล้วไม่น้อยกว่า 5 ปี บริบูรณ์ (ได้ ท.ช. ก่อนวันที่ { (new DateTime(period.Year-5, 7, 28)).ToThaiFullDate3() })", // // Result = $"ได้รับ ป.ม. ในปี { p.FirstRecvInsigniaYear.ToThaiYear() }" // // }, // // } // // }) // // .ToList(); // // var result_candidate = new List(); // // foreach (var r in s3) // // { // // var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); // // // Check ได้รับหรือเคยยื่นขอไปในปีที่แล้วหรือไม่? // // if (!CanRequestInsignia(r.ProfileId, period.Year)) // // continue; // // // Check ว่าชั้นที่ขอสูงกว่าชั้นที่เคยได้รับแล้วหรือไม่? // // if (!IsHigherLevel2(r.LastInsignia, r.RequestInsignia.Name)) // // continue; // // if (old == null) // // { // // result_candidate.Add(r); // // } // // } // // foreach (var r in s2) // // { // // var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); // // // Check ได้รับหรือเคยยื่นขอไปในปีที่แล้วหรือไม่? // // if (!CanRequestInsignia(r.ProfileId, period.Year)) // // continue; // // // Check ว่าชั้นที่ขอสูงกว่าชั้นที่เคยได้รับแล้วหรือไม่? // // if (!IsHigherLevel2(r.LastInsignia, r.RequestInsignia.Name)) // // continue; // // if (old == null) // // { // // result_candidate.Add(r); // // } // // } // // foreach (var r in s1) // // { // // var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); // // // Check ได้รับหรือเคยยื่นขอไปในปีที่แล้วหรือไม่? // // if (!CanRequestInsignia(r.ProfileId, period.Year)) // // continue; // // // Check ว่าชั้นที่ขอสูงกว่าชั้นที่เคยได้รับแล้วหรือไม่? // // if (!IsHigherLevel2(r.LastInsignia, r.RequestInsignia.Name)) // // continue; // // if (old == null) // // { // // result_candidate.Add(r); // // } // // } // // return result_candidate; // // } // // catch // // { // // throw; // // } // // } // /// // /// Gets the insignia candidate ประเภทวิชาการ ระดับทรงคุณวุฒิ ได้เงินตำแหน้ง 13000. // /// // /// The period identifier. // /// The oc identifier. // /// // // public async List GetInsigniaCandidate_Type2_Level9_1(int periodId, int ocId) // // { // // try // // { // // var allOc = profileService.GetAllIdByRoot(ocId); // // var period = await _dbContext.Set().FirstOrDefault(p => p.Id == periodId); // // if (period == null) // // throw new Exception(GlobalMessages.InvalidCoinPeriod); // // var oc = await _dbContext.Set().FirstOrDefault(x => x.OCId == ocId); // // if (oc == null) // // throw new Exception(GlobalMessages.InvalidOC); // // var CurrentRetireDate = new DateTime(period.Year, 9, 30); // // var s1 = (from p in await _dbContext.Set().AsQueryable() // // .Include(p => p.Position) // // .Include(p => p.PositionNumber) // // .Include(p => p.AcademicStanding) // // .Include(p => p.PositionType) // // .Include(p => p.PositionLevel) // // .Include(p => p.Insignias) // // .ThenInclude(i => i.Insignia) // // .Include(p => p.Salaries) // // where p.OrganizationChart != null // // && allOc.Contains(p.OrganizationChart.OCId) // // && p.IsActive == true // // && p.IsLeave == false // // && p.DateAppoint != null // // && p.PositionType.Id == 2 // วิชาการ // // && (p.PositionLevel.Id == 9 || p.PositionLevel.Id == 12) // ทรงคุณวุฒิ // // && !p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name.Contains("ประถมาภรณ์ช้างเผือก") // // //&& !IsHigherLevel(p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, "ตริตาภรณ์ช้างเผือก") // // //&& CanRequestInsignia(p.Id, period.Year.ToString()) // // select new // // { // // ProfileId = p.Id, // // Prefix = p.Prefix, // // FullName = $"{p.FirstName} {p.LastName}", // // Position = p.Position.Name, // // PositionLevel = p.PositionLevel.Name, // // PositionType = p.PositionType.Name, // // Rank = p.AcademicStanding.Name, // // GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), // // ProfileDateAppoint = p.DateAppoint.Value, // // LastInsignia = p.Insignias.Count == 0 ? "" : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, // // LastInsigniaId = p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Id, // // Salary = p.Salaries.Count() == 0 ? "0" : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, // // SalaryCondition = p.Salaries.Count() == 0 ? 0 : p.Salaries.Where(x => x.SalaryDate <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount.Replace(".00", "").Replace(",", "").ToInteger(), // // PosNo = p.PositionNumber.Id, // // Gender = p.Gendor.IsNull("") == "male" ? "1" : "2", // // IsHigherLevel = InsigniaService.IsHigherLevel(p.Insignias // // .Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name, // // "ประถมาภรณ์ช้างเผือก"), // // FirstRecvInsigniaYear = p.Insignias.Count == 0 ? 0 : // // p.Insignias.Where(x => x.Insignia.Name == "ประถมาภรณ์มงกุฎไทย").OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : // // p.Insignias.Where(x => x.Insignia.Name == "ประถมาภรณ์มงกุฎไทย").OrderBy(x => x.Year).FirstOrDefault().Year, // // SalaryPosition = p.Salaries.Count == 0 ? 0 : // // p.Salaries.AsQueryable().OrderBy(x => x.Order).LastOrDefault().PositionSalaryAmount == null ? 0 : // // p.Salaries.AsQueryable().OrderBy(x => x.Order).LastOrDefault().PositionSalaryAmount.ToInteger() // // //CanRequestInsignia = CanRequestInsignia(p.Id, period.Year.ToString()) // // //RequestInsignia = GetInsigniaByName("ตริตาภรณ์มงกุฎไทย") // // }) // // .ToList() // // .Where(x => x.FirstRecvInsigniaYear != 0 && x.FirstRecvInsigniaYear <= period.Year - 3) // // .Where(x => x.SalaryPosition == 13000) // // .Select(p => new InsigniaResultSet // // { // // ProfileId = p.ProfileId, // // Prefix = p.Prefix, // // FullName = p.FullName, // // Position = p.Position, // // PosNo = p.PosNo, // // Rank = p.Rank, // // GovAge = p.GovAge, // // LastInsignia = p.LastInsignia, // // LastInsigniaId = p.LastInsigniaId, // // Salary = p.Salary, // // RequestInsignia = GetInsigniaByName("ประถมาภรณ์ช้างเผือก"), // // Seq = 2, // // Gender = p.Gender, // // MatchingConditions = new List // // { // // new MatchingCondition // // { // // Condition = $"1.ได้ ป.ม. มาแล้วไม่น้อยกว่า 3 ปี บริบูรณ์ (ได้ ป.ม. ก่อนวันที่ { (new DateTime(period.Year-3, 7, 28)).ToThaiFullDate3() })", // // Result = $"ได้รับ ป.ม. ในปี { p.FirstRecvInsigniaYear.ToThaiYear() }" // // }, // // new MatchingCondition // // { // // Condition = $"ได้รับเงินประจำตำแหน่ง 13,000 บาท", // // Result = $"ได้รับเงินประจำตำแหน่ง { p.SalaryPosition.ToNumericText() } บาท" // // } // // } // // }) // // .ToList(); // // var s2 = (from p in await _dbContext.Set().AsQueryable() // // .Include(p => p.Position) // // .Include(p => p.PositionNumber) // // .Include(p => p.AcademicStanding) // // .Include(p => p.PositionType) // // .Include(p => p.PositionLevel) // // .Include(p => p.Insignias) // // .ThenInclude(i => i.Insignia) // // .Include(p => p.Salaries) // // where p.OrganizationChart != null // // && allOc.Contains(p.OrganizationChart.OCId) // // && p.IsActive == true // // && p.IsLeave == false // // && p.DateAppoint != null // // && p.PositionType.Id == 2 // วิชาการ // // && (p.PositionLevel.Id == 9 || p.PositionLevel.Id == 12) // ทรงคุณวุฒิ // // && !p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name.Contains("มหาวชิรมงกุฎ") // // //&& !IsHigherLevel(p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, "ตริตาภรณ์ช้างเผือก") // // //&& CanRequestInsignia(p.Id, period.Year.ToString()) // // select new // // { // // ProfileId = p.Id, // // Prefix = p.Prefix, // // FullName = $"{p.FirstName} {p.LastName}", // // Position = p.Position.Name, // // PositionLevel = p.PositionLevel.Name, // // PositionType = p.PositionType.Name, // // Rank = p.AcademicStanding.Name, // // GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), // // ProfileDateAppoint = p.DateAppoint.Value, // // LastInsignia = p.Insignias.Count == 0 ? "" : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, // // LastInsigniaId = p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Id, // // Salary = p.Salaries.Count() == 0 ? "0" : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, // // SalaryCondition = p.Salaries.Count() == 0 ? 0 : p.Salaries.Where(x => x.SalaryDate <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount.Replace(".00", "").Replace(",", "").ToInteger(), // // PosNo = p.PositionNumber.Id, // // Gender = p.Gendor.IsNull("") == "male" ? "1" : "2", // // IsHigherLevel = InsigniaService.IsHigherLevel(p.Insignias // // .Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name, // // "มหาวชิรมงกุฎ"), // // FirstRecvInsigniaYear = p.Insignias.Count == 0 ? 0 : // // p.Insignias.Where(x => x.Insignia.Name == "ประถมาภรณ์ช้างเผือก").OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : // // p.Insignias.Where(x => x.Insignia.Name == "ประถมาภรณ์ช้างเผือก").OrderBy(x => x.Year).FirstOrDefault().Year, // // SalaryPosition = p.Salaries.Count == 0 ? 0 : // // p.Salaries.AsQueryable().OrderBy(x => x.Order).LastOrDefault().PositionSalaryAmount == null ? 0 : // // p.Salaries.AsQueryable().OrderBy(x => x.Order).LastOrDefault().PositionSalaryAmount.ToInteger() // // //CanRequestInsignia = CanRequestInsignia(p.Id, period.Year.ToString()) // // //RequestInsignia = GetInsigniaByName("ตริตาภรณ์มงกุฎไทย") // // }) // // .ToList() // // .Where(p => p.FirstRecvInsigniaYear != 0 && p.FirstRecvInsigniaYear <= period.Year - 3) // // .Where(p => p.SalaryPosition == 13000) // // .Select(p => new InsigniaResultSet // // { // // ProfileId = p.ProfileId, // // Prefix = p.Prefix, // // FullName = p.FullName, // // Position = p.Position, // // PosNo = p.PosNo, // // Rank = p.Rank, // // GovAge = p.GovAge, // // LastInsignia = p.LastInsignia, // // LastInsigniaId = p.LastInsigniaId, // // Salary = p.Salary, // // RequestInsignia = GetInsigniaByName("มหาวชิรมงกุฎ"), // // Seq = 2, // // Gender = p.Gender, // // MatchingConditions = new List // // { // // new MatchingCondition // // { // // Condition = $"1.ได้ ป.ช. มาแล้วไม่น้อยกว่า 3 ปี บริบูรณ์ (ได้ ป.ช. ก่อนวันที่ { (new DateTime(period.Year-3, 7, 28)).ToThaiFullDate3() })", // // Result = $"ได้รับ ป.ช. ในปี { p.FirstRecvInsigniaYear.ToThaiYear() }" // // }, // // new MatchingCondition // // { // // Condition = $"ได้รับเงินประจำตำแหน่ง 13,000 บาท", // // Result = $"ได้รับเงินประจำตำแหน่ง { p.SalaryPosition.ToNumericText() } บาท" // // } // // } // // }) // // .ToList(); // // var s3 = (from p in await _dbContext.Set().AsQueryable() // // .Include(p => p.Position) // // .Include(p => p.PositionNumber) // // .Include(p => p.AcademicStanding) // // .Include(p => p.PositionType) // // .Include(p => p.PositionLevel) // // .Include(p => p.Insignias) // // .ThenInclude(i => i.Insignia) // // .Include(p => p.Salaries) // // where p.OrganizationChart != null // // && allOc.Contains(p.OrganizationChart.OCId) // // && p.IsActive == true // // && p.IsLeave == false // // && p.DateAppoint != null // // && p.PositionType.Id == 2 // วิชาการ // // && (p.PositionLevel.Id == 9 || p.PositionLevel.Id == 12) // ทรงคุณวุฒิ // // && !p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name.Contains("มหาปรมาภรณ์ช้างเผือก") // // //&& !IsHigherLevel(p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, "ตริตาภรณ์ช้างเผือก") // // //&& CanRequestInsignia(p.Id, period.Year.ToString()) // // select new // // { // // ProfileId = p.Id, // // Prefix = p.Prefix, // // FullName = $"{p.FirstName} {p.LastName}", // // Position = p.Position.Name, // // PositionLevel = p.PositionLevel.Name, // // PositionType = p.PositionType.Name, // // Rank = p.AcademicStanding.Name, // // GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), // // ProfileDateAppoint = p.DateAppoint.Value, // // LastInsignia = p.Insignias.Count == 0 ? "" : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, // // LastInsigniaId = p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Id, // // Salary = p.Salaries.Count() == 0 ? "0" : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, // // SalaryCondition = p.Salaries.Count() == 0 ? 0 : p.Salaries.Where(x => x.SalaryDate <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount.Replace(".00", "").Replace(",", "").ToInteger(), // // PosNo = p.PositionNumber.Id, // // Gender = p.Gendor.IsNull("") == "male" ? "1" : "2", // // IsHigherLevel = InsigniaService.IsHigherLevel(p.Insignias // // .Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name, // // "มหาปรมาภรณ์ช้างเผือก"), // // FirstRecvInsigniaYear = p.Insignias.Count == 0 ? 0 : // // p.Insignias.Where(x => x.Insignia.Name == "มหาวชิรมงกุฎ").OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : // // p.Insignias.Where(x => x.Insignia.Name == "มหาวชิรมงกุฎ").OrderBy(x => x.Year).FirstOrDefault().Year, // // SalaryPosition = p.Salaries.Count == 0 ? 0 : // // p.Salaries.AsQueryable().OrderBy(x => x.Order).LastOrDefault().PositionSalaryAmount == null ? 0 : // // p.Salaries.AsQueryable().OrderBy(x => x.Order).LastOrDefault().PositionSalaryAmount.ToInteger() // // //CanRequestInsignia = CanRequestInsignia(p.Id, period.Year.ToString()) // // //RequestInsignia = GetInsigniaByName("ตริตาภรณ์มงกุฎไทย") // // }) // // .ToList() // // .Where(p => p.FirstRecvInsigniaYear != 0 && p.FirstRecvInsigniaYear <= period.Year - 5) // // .Where(p => p.SalaryPosition == 13000) // // .Select(p => new InsigniaResultSet // // { // // ProfileId = p.ProfileId, // // Prefix = p.Prefix, // // FullName = p.FullName, // // Position = p.Position, // // PosNo = p.PosNo, // // Rank = p.Rank, // // GovAge = p.GovAge, // // LastInsignia = p.LastInsignia, // // LastInsigniaId = p.LastInsigniaId, // // Salary = p.Salary, // // RequestInsignia = GetInsigniaByName("มหาปรมาภรณ์ช้างเผือก"), // // Seq = 2, // // Gender = p.Gender, // // MatchingConditions = new List // // { // // new MatchingCondition // // { // // Condition = $"1.ได้ ม.ว.ม. มาแล้วไม่น้อยกว่า 5 ปี บริบูรณ์ (ได้ ม.ว.ม. ก่อนวันที่ { (new DateTime(period.Year-5, 7, 28)).ToThaiFullDate3() })", // // Result = $"ได้รับ ม.ว.ม. ในปี { p.FirstRecvInsigniaYear.ToThaiYear() }" // // }, // // new MatchingCondition // // { // // Condition = $"ได้รับเงินประจำตำแหน่ง 13,000 บาท", // // Result = $"ได้รับเงินประจำตำแหน่ง { p.SalaryPosition.ToNumericText() } บาท" // // } // // } // // }) // // .ToList(); // // var result_candidate = new List(); // // foreach (var r in s3) // // { // // var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); // // // Check ได้รับหรือเคยยื่นขอไปในปีที่แล้วหรือไม่? // // if (!CanRequestInsignia(r.ProfileId, period.Year)) // // continue; // // // Check ว่าชั้นที่ขอสูงกว่าชั้นที่เคยได้รับแล้วหรือไม่? // // if (!IsHigherLevel2(r.LastInsignia, r.RequestInsignia.Name)) // // continue; // // if (old == null) // // { // // result_candidate.Add(r); // // } // // } // // foreach (var r in s2) // // { // // var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); // // // Check ได้รับหรือเคยยื่นขอไปในปีที่แล้วหรือไม่? // // if (!CanRequestInsignia(r.ProfileId, period.Year)) // // continue; // // // Check ว่าชั้นที่ขอสูงกว่าชั้นที่เคยได้รับแล้วหรือไม่? // // if (!IsHigherLevel2(r.LastInsignia, r.RequestInsignia.Name)) // // continue; // // if (old == null) // // { // // result_candidate.Add(r); // // } // // } // // foreach (var r in s1) // // { // // var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); // // // Check ได้รับหรือเคยยื่นขอไปในปีที่แล้วหรือไม่? // // if (!CanRequestInsignia(r.ProfileId, period.Year)) // // continue; // // // Check ว่าชั้นที่ขอสูงกว่าชั้นที่เคยได้รับแล้วหรือไม่? // // if (!IsHigherLevel2(r.LastInsignia, r.RequestInsignia.Name)) // // continue; // // if (old == null) // // { // // result_candidate.Add(r); // // } // // } // // return result_candidate; // // } // // catch // // { // // throw; // // } // // } // /// // /// Gets the insignia candidate ประเภทวิชาการ ระดับทรงคุณวุฒิ ได้เงินตำแหน้ง 15600. // /// // /// The period identifier. // /// The oc identifier. // /// // // public async List GetInsigniaCandidate_Type2_Level9_2(int periodId, int ocId) // // { // // try // // { // // var allOc = profileService.GetAllIdByRoot(ocId); // // var period = await _dbContext.Set().FirstOrDefault(p => p.Id == periodId); // // if (period == null) // // throw new Exception(GlobalMessages.InvalidCoinPeriod); // // var oc = await _dbContext.Set().FirstOrDefault(x => x.OCId == ocId); // // if (oc == null) // // throw new Exception(GlobalMessages.InvalidOC); // // var CurrentRetireDate = new DateTime(period.Year, 9, 30); // // var s1 = (from p in await _dbContext.Set().AsQueryable() // // .Include(p => p.Position) // // .Include(p => p.PositionNumber) // // .Include(p => p.AcademicStanding) // // .Include(p => p.PositionType) // // .Include(p => p.PositionLevel) // // .Include(p => p.Insignias) // // .ThenInclude(i => i.Insignia) // // .Include(p => p.Salaries) // // where p.OrganizationChart != null // // && allOc.Contains(p.OrganizationChart.OCId) // // && p.IsActive == true // // && p.IsLeave == false // // && p.DateAppoint != null // // && p.PositionType.Id == 2 // วิชาการ // // && (p.PositionLevel.Id == 9 || p.PositionLevel.Id == 12) // ทรงคุณวุฒิ // // && !p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name.Contains("ประถมาภรณ์ช้างเผือก") // // //&& !IsHigherLevel(p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, "ตริตาภรณ์ช้างเผือก") // // //&& CanRequestInsignia(p.Id, period.Year.ToString()) // // select new // // { // // ProfileId = p.Id, // // Prefix = p.Prefix, // // FullName = $"{p.FirstName} {p.LastName}", // // Position = p.Position.Name, // // PositionLevel = p.PositionLevel.Name, // // PositionType = p.PositionType.Name, // // Rank = p.AcademicStanding.Name, // // GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), // // ProfileDateAppoint = p.DateAppoint.Value, // // LastInsignia = p.Insignias.Count == 0 ? "" : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, // // LastInsigniaId = p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Id, // // Salary = p.Salaries.Count() == 0 ? "0" : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, // // SalaryCondition = p.Salaries.Count() == 0 ? 0 : p.Salaries.Where(x => x.SalaryDate <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount.Replace(".00", "").Replace(",", "").ToInteger(), // // PosNo = p.PositionNumber.Id, // // Gender = p.Gendor.IsNull("") == "male" ? "1" : "2", // // IsHigherLevel = InsigniaService.IsHigherLevel(p.Insignias // // .Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name, // // "ประถมาภรณ์ช้างเผือก"), // // FirstRecvInsigniaYear = p.Insignias.Count == 0 ? 0 : // // p.Insignias.Where(x => x.Insignia.Name == "ประถมาภรณ์มงกุฎไทย").OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : // // p.Insignias.Where(x => x.Insignia.Name == "ประถมาภรณ์มงกุฎไทย").OrderBy(x => x.Year).FirstOrDefault().Year, // // SalaryPosition = p.Salaries.Count == 0 ? 0 : // // p.Salaries.AsQueryable().OrderBy(x => x.Order).LastOrDefault().PositionSalaryAmount == null ? 0 : // // p.Salaries.AsQueryable().OrderBy(x => x.Order).LastOrDefault().PositionSalaryAmount.ToInteger() // // //CanRequestInsignia = CanRequestInsignia(p.Id, period.Year.ToString()) // // //RequestInsignia = GetInsigniaByName("ตริตาภรณ์มงกุฎไทย") // // }) // // .ToList() // // .Where(x => x.FirstRecvInsigniaYear != 0 && x.FirstRecvInsigniaYear <= period.Year - 3) // // .Where(x => x.SalaryPosition == 15600) // // .Select(p => new InsigniaResultSet // // { // // ProfileId = p.ProfileId, // // Prefix = p.Prefix, // // FullName = p.FullName, // // Position = p.Position, // // PosNo = p.PosNo, // // Rank = p.Rank, // // GovAge = p.GovAge, // // LastInsignia = p.LastInsignia, // // LastInsigniaId = p.LastInsigniaId, // // Salary = p.Salary, // // RequestInsignia = GetInsigniaByName("ประถมาภรณ์ช้างเผือก"), // // Seq = 2, // // Gender = p.Gender, // // MatchingConditions = new List // // { // // new MatchingCondition // // { // // Condition = $"1.ได้ ป.ม. มาแล้วไม่น้อยกว่า 3 ปี บริบูรณ์ (ได้ ป.ม. ก่อนวันที่ { (new DateTime(period.Year-3, 7, 28)).ToThaiFullDate3() })", // // Result = $"ได้รับ ป.ม. ในปี { p.FirstRecvInsigniaYear.ToThaiYear() }" // // }, // // new MatchingCondition // // { // // Condition = $"ได้รับเงินประจำตำแหน่ง 15,600 บาท", // // Result = $"ได้รับเงินประจำตำแหน่ง { p.SalaryPosition.ToNumericText() } บาท" // // } // // } // // }) // // .ToList(); // // var s2 = (from p in await _dbContext.Set().AsQueryable() // // .Include(p => p.Position) // // .Include(p => p.PositionNumber) // // .Include(p => p.AcademicStanding) // // .Include(p => p.PositionType) // // .Include(p => p.PositionLevel) // // .Include(p => p.Insignias) // // .ThenInclude(i => i.Insignia) // // .Include(p => p.Salaries) // // where p.OrganizationChart != null // // && allOc.Contains(p.OrganizationChart.OCId) // // && p.IsActive == true // // && p.IsLeave == false // // && p.DateAppoint != null // // && p.PositionType.Id == 2 // วิชาการ // // && (p.PositionLevel.Id == 9 || p.PositionLevel.Id == 12) // ทรงคุณวุฒิ // // && !p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name.Contains("มหาวชิรมงกุฎ") // // //&& !IsHigherLevel(p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, "ตริตาภรณ์ช้างเผือก") // // //&& CanRequestInsignia(p.Id, period.Year.ToString()) // // select new // // { // // ProfileId = p.Id, // // Prefix = p.Prefix, // // FullName = $"{p.FirstName} {p.LastName}", // // Position = p.Position.Name, // // PositionLevel = p.PositionLevel.Name, // // PositionType = p.PositionType.Name, // // Rank = p.AcademicStanding.Name, // // GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), // // ProfileDateAppoint = p.DateAppoint.Value, // // LastInsignia = p.Insignias.Count == 0 ? "" : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, // // LastInsigniaId = p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Id, // // Salary = p.Salaries.Count() == 0 ? "0" : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, // // SalaryCondition = p.Salaries.Count() == 0 ? 0 : p.Salaries.Where(x => x.SalaryDate <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount.Replace(".00", "").Replace(",", "").ToInteger(), // // PosNo = p.PositionNumber.Id, // // Gender = p.Gendor.IsNull("") == "male" ? "1" : "2", // // IsHigherLevel = InsigniaService.IsHigherLevel(p.Insignias // // .Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name, // // "มหาวชิรมงกุฎ"), // // FirstRecvInsigniaYear = p.Insignias.Count == 0 ? 0 : // // p.Insignias.Where(x => x.Insignia.Name == "ประถมาภรณ์ช้างเผือก").OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : // // p.Insignias.Where(x => x.Insignia.Name == "ประถมาภรณ์ช้างเผือก").OrderBy(x => x.Year).FirstOrDefault().Year, // // SalaryPosition = p.Salaries.Count == 0 ? 0 : // // p.Salaries.AsQueryable().OrderBy(x => x.Order).LastOrDefault().PositionSalaryAmount == null ? 0 : // // p.Salaries.AsQueryable().OrderBy(x => x.Order).LastOrDefault().PositionSalaryAmount.ToInteger() // // //CanRequestInsignia = CanRequestInsignia(p.Id, period.Year.ToString()) // // //RequestInsignia = GetInsigniaByName("ตริตาภรณ์มงกุฎไทย") // // }) // // .ToList() // // .Where(p => p.FirstRecvInsigniaYear != 0 && p.FirstRecvInsigniaYear <= period.Year - 3) // // .Where(p => p.SalaryPosition == 15600) // // .Select(p => new InsigniaResultSet // // { // // ProfileId = p.ProfileId, // // Prefix = p.Prefix, // // FullName = p.FullName, // // Position = p.Position, // // PosNo = p.PosNo, // // Rank = p.Rank, // // GovAge = p.GovAge, // // LastInsignia = p.LastInsignia, // // LastInsigniaId = p.LastInsigniaId, // // Salary = p.Salary, // // RequestInsignia = GetInsigniaByName("มหาวชิรมงกุฎ"), // // Seq = 2, // // Gender = p.Gender, // // MatchingConditions = new List // // { // // new MatchingCondition // // { // // Condition = $"1.ได้ ป.ช. มาแล้วไม่น้อยกว่า 3 ปี บริบูรณ์ (ได้ ป.ช. ก่อนวันที่ { (new DateTime(period.Year-3, 7, 28)).ToThaiFullDate3() })", // // Result = $"ได้รับ ป.ช. ในปี { p.FirstRecvInsigniaYear.ToThaiYear() }" // // }, // // new MatchingCondition // // { // // Condition = $"ได้รับเงินประจำตำแหน่ง 15,600 บาท", // // Result = $"ได้รับเงินประจำตำแหน่ง { p.SalaryPosition.ToNumericText() } บาท" // // } // // } // // }) // // .ToList(); // // var s3 = (from p in await _dbContext.Set().AsQueryable() // // .Include(p => p.Position) // // .Include(p => p.PositionNumber) // // .Include(p => p.AcademicStanding) // // .Include(p => p.PositionType) // // .Include(p => p.PositionLevel) // // .Include(p => p.Insignias) // // .ThenInclude(i => i.Insignia) // // .Include(p => p.Salaries) // // where p.OrganizationChart != null // // && allOc.Contains(p.OrganizationChart.OCId) // // && p.IsActive == true // // && p.IsLeave == false // // && p.DateAppoint != null // // && p.PositionType.Id == 2 // วิชาการ // // && (p.PositionLevel.Id == 9 || p.PositionLevel.Id == 12) // ทรงคุณวุฒิ // // && !p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name.Contains("มหาปรมาภรณ์ช้างเผือก") // // //&& !IsHigherLevel(p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, "ตริตาภรณ์ช้างเผือก") // // //&& CanRequestInsignia(p.Id, period.Year.ToString()) // // select new // // { // // ProfileId = p.Id, // // Prefix = p.Prefix, // // FullName = $"{p.FirstName} {p.LastName}", // // Position = p.Position.Name, // // PositionLevel = p.PositionLevel.Name, // // PositionType = p.PositionType.Name, // // Rank = p.AcademicStanding.Name, // // GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), // // ProfileDateAppoint = p.DateAppoint.Value, // // LastInsignia = p.Insignias.Count == 0 ? "" : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, // // LastInsigniaId = p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Id, // // Salary = p.Salaries.Count() == 0 ? "0" : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, // // SalaryCondition = p.Salaries.Count() == 0 ? 0 : p.Salaries.Where(x => x.SalaryDate <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount.Replace(".00", "").Replace(",", "").ToInteger(), // // PosNo = p.PositionNumber.Id, // // Gender = p.Gendor.IsNull("") == "male" ? "1" : "2", // // IsHigherLevel = InsigniaService.IsHigherLevel(p.Insignias // // .Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name, // // "มหาปรมาภรณ์ช้างเผือก"), // // FirstRecvInsigniaYear = p.Insignias.Count == 0 ? 0 : // // p.Insignias.Where(x => x.Insignia.Name == "มหาวชิรมงกุฎ").OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : // // p.Insignias.Where(x => x.Insignia.Name == "มหาวชิรมงกุฎ").OrderBy(x => x.Year).FirstOrDefault().Year, // // SalaryPosition = p.Salaries.Count == 0 ? 0 : // // p.Salaries.AsQueryable().OrderBy(x => x.Order).LastOrDefault().PositionSalaryAmount == null ? 0 : // // p.Salaries.AsQueryable().OrderBy(x => x.Order).LastOrDefault().PositionSalaryAmount.ToInteger() // // //CanRequestInsignia = CanRequestInsignia(p.Id, period.Year.ToString()) // // //RequestInsignia = GetInsigniaByName("ตริตาภรณ์มงกุฎไทย") // // }) // // .ToList() // // .Where(p => p.FirstRecvInsigniaYear != 0 && p.FirstRecvInsigniaYear <= period.Year - 3) // // .Where(p => p.SalaryPosition == 15600) // // .Select(p => new InsigniaResultSet // // { // // ProfileId = p.ProfileId, // // Prefix = p.Prefix, // // FullName = p.FullName, // // Position = p.Position, // // PosNo = p.PosNo, // // Rank = p.Rank, // // GovAge = p.GovAge, // // LastInsignia = p.LastInsignia, // // LastInsigniaId = p.LastInsigniaId, // // Salary = p.Salary, // // RequestInsignia = GetInsigniaByName("มหาปรมาภรณ์ช้างเผือก"), // // Seq = 2, // // Gender = p.Gender, // // MatchingConditions = new List // // { // // new MatchingCondition // // { // // Condition = $"1.ได้ ม.ว.ม. มาแล้วไม่น้อยกว่า 3 ปี บริบูรณ์ (ได้ ม.ว.ม. ก่อนวันที่ { (new DateTime(period.Year-3, 7, 28)).ToThaiFullDate3() })", // // Result = $"ได้รับ ม.ว.ม. ในปี { p.FirstRecvInsigniaYear.ToThaiYear() }" // // }, // // new MatchingCondition // // { // // Condition = $"ได้รับเงินประจำตำแหน่ง 15,600 บาท", // // Result = $"ได้รับเงินประจำตำแหน่ง { p.SalaryPosition.ToNumericText() } บาท" // // } // // } // // }) // // .ToList(); // // var result_candidate = new List(); // // foreach (var r in s3) // // { // // var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); // // // Check ได้รับหรือเคยยื่นขอไปในปีที่แล้วหรือไม่? // // if (!CanRequestInsignia(r.ProfileId, period.Year)) // // continue; // // // Check ว่าชั้นที่ขอสูงกว่าชั้นที่เคยได้รับแล้วหรือไม่? // // if (!IsHigherLevel2(r.LastInsignia, r.RequestInsignia.Name)) // // continue; // // if (old == null) // // { // // result_candidate.Add(r); // // } // // } // // foreach (var r in s2) // // { // // var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); // // // Check ได้รับหรือเคยยื่นขอไปในปีที่แล้วหรือไม่? // // if (!CanRequestInsignia(r.ProfileId, period.Year)) // // continue; // // // Check ว่าชั้นที่ขอสูงกว่าชั้นที่เคยได้รับแล้วหรือไม่? // // if (!IsHigherLevel2(r.LastInsignia, r.RequestInsignia.Name)) // // continue; // // if (old == null) // // { // // result_candidate.Add(r); // // } // // } // // foreach (var r in s1) // // { // // var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); // // // Check ได้รับหรือเคยยื่นขอไปในปีที่แล้วหรือไม่? // // if (!CanRequestInsignia(r.ProfileId, period.Year)) // // continue; // // // Check ว่าชั้นที่ขอสูงกว่าชั้นที่เคยได้รับแล้วหรือไม่? // // if (!IsHigherLevel2(r.LastInsignia, r.RequestInsignia.Name)) // // continue; // // if (old == null) // // { // // result_candidate.Add(r); // // } // // } // // return result_candidate; // // } // // catch // // { // // throw; // // } // // } // #endregion // #region " อำนวยการ " // // public async List GetInsigniaCandidate_Type3_Level10(int periodId, int ocId) // // { // // try // // { // // var allOc = profileService.GetAllIdByRoot(ocId); // // var period = await _dbContext.Set().FirstOrDefault(p => p.Id == periodId); // // if (period == null) // // throw new Exception(GlobalMessages.InvalidCoinPeriod); // // var oc = await _dbContext.Set().FirstOrDefault(x => x.OCId == ocId); // // if (oc == null) // // throw new Exception(GlobalMessages.InvalidOC); // // var CurrentRetireDate = new DateTime(period.Year, 9, 30); // // var s1 = (from p in await _dbContext.Set().AsQueryable() // // .Include(p => p.Position) // // .Include(p => p.PositionNumber) // // .Include(p => p.AcademicStanding) // // .Include(p => p.PositionType) // // .Include(p => p.PositionLevel) // // .Include(p => p.Insignias) // // .ThenInclude(i => i.Insignia) // // .Include(p => p.Salaries) // // where p.OrganizationChart != null // // && allOc.Contains(p.OrganizationChart.OCId) // // && p.IsActive == true // // && p.IsLeave == false // // && p.DateAppoint != null // // && p.PositionType.Id == 3 // ทั่วไป // // && p.PositionLevel.Id == 10 // ระดับต้น // // && !p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name.Contains("ทวีติยาภรณ์ช้างเผือก") // // //&& !IsHigherLevel(p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, "ตริตาภรณ์ช้างเผือก") // // //&& CanRequestInsignia(p.Id, period.Year.ToString()) // // select new // // { // // ProfileId = p.Id, // // Prefix = p.Prefix, // // FullName = $"{p.FirstName} {p.LastName}", // // Position = p.Position.Name, // // PositionLevel = p.PositionLevel.Name, // // PositionType = p.PositionType.Name, // // Rank = p.AcademicStanding.Name, // // GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), // // ProfileDateAppoint = p.DateAppoint.Value, // // LastInsignia = p.Insignias.Count == 0 ? "" : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, // // LastInsigniaId = p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Id, // // Salary = p.Salaries.Count() == 0 ? "0" : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, // // SalaryCondition = p.Salaries.Count() == 0 ? 0 : p.Salaries.Where(x => x.SalaryDate <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount.Replace(".00", "").Replace(",", "").ToInteger(), // // PosNo = p.PositionNumber.Id, // // Gender = p.Gendor.IsNull("") == "male" ? "1" : "2", // // IsHigherLevel = InsigniaService.IsHigherLevel(p.Insignias // // .Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name, // // "ทวีติยาภรณ์ช้างเผือก"), // // //CanRequestInsignia = CanRequestInsignia(p.Id, period.Year.ToString()) // // //RequestInsignia = GetInsigniaByName("ตริตาภรณ์มงกุฎไทย") // // }) // // .ToList() // // .Select(p => new InsigniaResultSet // // { // // ProfileId = p.ProfileId, // // Prefix = p.Prefix, // // FullName = p.FullName, // // Position = p.Position, // // PosNo = p.PosNo, // // Rank = p.Rank, // // GovAge = p.GovAge, // // LastInsignia = p.LastInsignia, // // LastInsigniaId = p.LastInsigniaId, // // Salary = p.Salary, // // RequestInsignia = GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก"), // // Seq = 2, // // Gender = p.Gender, // // MatchingConditions = new List // // { // // new MatchingCondition // // { // // Condition = $"1.เป็นระดับอำนวยการ/ต้น", // // Result = $"ตำแหน่ง { p.Position } ประเภท { p.PositionType } ระดับ { p.PositionLevel }" // // }, // // } // // }) // // .ToList(); // // var s2 = (from p in await _dbContext.Set().AsQueryable() // // .Include(p => p.Position) // // .Include(p => p.PositionNumber) // // .Include(p => p.AcademicStanding) // // .Include(p => p.PositionType) // // .Include(p => p.PositionLevel) // // .Include(p => p.Insignias) // // .ThenInclude(i => i.Insignia) // // .Include(p => p.Salaries) // // where p.OrganizationChart != null // // && allOc.Contains(p.OrganizationChart.OCId) // // && p.IsActive == true // // && p.IsLeave == false // // && p.DateAppoint != null // // && p.PositionType.Id == 2 // วิชาการ // // && p.PositionLevel.Id == 7 // ชำนาญการพิเศษ // // && !p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name.Contains("ประถมาภรณ์มงกุฎไทย") // // //&& !IsHigherLevel(p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, "ตริตาภรณ์ช้างเผือก") // // //&& CanRequestInsignia(p.Id, period.Year.ToString()) // // select new // // { // // ProfileId = p.Id, // // Prefix = p.Prefix, // // FullName = $"{p.FirstName} {p.LastName}", // // Position = p.Position.Name, // // PositionLevel = p.PositionLevel.Name, // // PositionType = p.PositionType.Name, // // Rank = p.AcademicStanding.Name, // // GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), // // ProfileDateAppoint = p.DateAppoint.Value, // // LastInsignia = p.Insignias.Count == 0 ? "" : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, // // LastInsigniaId = p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Id, // // Salary = p.Salaries.Count() == 0 ? "0" : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, // // SalaryCondition = p.Salaries.Count() == 0 ? 0 : p.Salaries.Where(x => x.SalaryDate <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount.Replace(".00", "").Replace(",", "").ToInteger(), // // PosNo = p.PositionNumber.Id, // // Gender = p.Gendor.IsNull("") == "male" ? "1" : "2", // // IsHigherLevel = InsigniaService.IsHigherLevel(p.Insignias // // .Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name, // // "ประถมาภรณ์มงกุฎไทย"), // // FirstRecvInsigniaYear = p.Insignias.Count == 0 ? 0 : // // p.Insignias.Where(x => x.Insignia.Name == "ทวีติยาภรณ์ช้างเผือก").OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : // // p.Insignias.Where(x => x.Insignia.Name == "ทวีติยาภรณ์ช้างเผือก").OrderBy(x => x.Year).FirstOrDefault().Year // // //CanRequestInsignia = CanRequestInsignia(p.Id, period.Year.ToString()) // // //RequestInsignia = GetInsigniaByName("ตริตาภรณ์มงกุฎไทย") // // }) // // .ToList() // // .Where(p => p.SalaryCondition >= 58390) // // .Where(p => p.FirstRecvInsigniaYear != 0 && p.FirstRecvInsigniaYear <= period.Year - 5) // // .Select(p => new InsigniaResultSet // // { // // ProfileId = p.ProfileId, // // Prefix = p.Prefix, // // FullName = p.FullName, // // Position = p.Position, // // PosNo = p.PosNo, // // Rank = p.Rank, // // GovAge = p.GovAge, // // LastInsignia = p.LastInsignia, // // LastInsigniaId = p.LastInsigniaId, // // Salary = p.Salary, // // RequestInsignia = GetInsigniaByName("ประถมาภรณ์มงกุฎไทย"), // // Seq = 2, // // Gender = p.Gender, // // MatchingConditions = new List // // { // // new MatchingCondition // // { // // Condition = $"1.ได้รับเงินเดือนขั้นสูง (เงินเดือน ณ วันที่ { (new DateTime(period.Year, 4, 29)).ToThaiFullDate3() } 58,390 บาท)", // // Result = $"เงินเดือน ณ วันที่ { (new DateTime(period.Year, 4, 29)).ToThaiFullDate3() } เป็นเงิน { p.SalaryCondition.ToNumericText() } บาท" // // }, // // new MatchingCondition // // { // // Condition = $"2.ได้ ท.ช. มาแล้วไม่น้อยกว่า 5 ปี บริบูรณ์ (ได้ ท.ช. วันที่ { (new DateTime(period.Year-5, 7, 28)).ToThaiFullDate3() } หรือก่อนหน้านั้น)", // // Result = $"ได้รับ ท.ช. ในปี { p.FirstRecvInsigniaYear.ToThaiYear() }" // // }, // // } // // }) // // .ToList(); // // var result_candidate = new List(); // // foreach (var r in s2) // // { // // var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); // // // Check ได้รับหรือเคยยื่นขอไปในปีที่แล้วหรือไม่? // // if (!CanRequestInsignia(r.ProfileId, period.Year)) // // continue; // // // Check ว่าชั้นที่ขอสูงกว่าชั้นที่เคยได้รับแล้วหรือไม่? // // if (!IsHigherLevel2(r.LastInsignia, r.RequestInsignia.Name)) // // continue; // // if (old == null) // // { // // result_candidate.Add(r); // // } // // } // // foreach (var r in s1) // // { // // var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); // // // Check ได้รับหรือเคยยื่นขอไปในปีที่แล้วหรือไม่? // // if (!CanRequestInsignia(r.ProfileId, period.Year)) // // continue; // // // Check ว่าชั้นที่ขอสูงกว่าชั้นที่เคยได้รับแล้วหรือไม่? // // if (!IsHigherLevel2(r.LastInsignia, r.RequestInsignia.Name)) // // continue; // // if (old == null) // // { // // result_candidate.Add(r); // // } // // } // // return result_candidate; // // } // // catch // // { // // throw; // // } // // } // // public async List GetInsigniaCandidate_Type3_Level11(int periodId, int ocId) // // { // // try // // { // // var allOc = profileService.GetAllIdByRoot(ocId); // // var period = await _dbContext.Set().FirstOrDefault(p => p.Id == periodId); // // if (period == null) // // throw new Exception(GlobalMessages.InvalidCoinPeriod); // // var oc = await _dbContext.Set().FirstOrDefault(x => x.OCId == ocId); // // if (oc == null) // // throw new Exception(GlobalMessages.InvalidOC); // // var CurrentRetireDate = new DateTime(period.Year, 9, 30); // // var s1 = (from p in await _dbContext.Set().AsQueryable() // // .Include(p => p.Position) // // .Include(p => p.PositionNumber) // // .Include(p => p.AcademicStanding) // // .Include(p => p.PositionType) // // .Include(p => p.PositionLevel) // // .Include(p => p.Insignias) // // .ThenInclude(i => i.Insignia) // // .Include(p => p.Salaries) // // where p.OrganizationChart != null // // && allOc.Contains(p.OrganizationChart.OCId) // // && p.IsActive == true // // && p.IsLeave == false // // && p.DateAppoint != null // // && p.PositionType.Id == 3 // ทั่วไป // // && p.PositionLevel.Id == 11 // ระดับสูง // // && !p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name.Contains("ประถมาภรณ์มงกุฎไทย") // // //&& !IsHigherLevel(p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, "ตริตาภรณ์ช้างเผือก") // // //&& CanRequestInsignia(p.Id, period.Year.ToString()) // // select new // // { // // ProfileId = p.Id, // // Prefix = p.Prefix, // // FullName = $"{p.FirstName} {p.LastName}", // // Position = p.Position.Name, // // PositionLevel = p.PositionLevel.Name, // // PositionType = p.PositionType.Name, // // Rank = p.AcademicStanding.Name, // // GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), // // ProfileDateAppoint = p.DateAppoint.Value, // // LastInsignia = p.Insignias.Count == 0 ? "" : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, // // LastInsigniaId = p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Id, // // Salary = p.Salaries.Count() == 0 ? "0" : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, // // SalaryCondition = p.Salaries.Count() == 0 ? 0 : p.Salaries.Where(x => x.SalaryDate <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount.Replace(".00", "").Replace(",", "").ToInteger(), // // PosNo = p.PositionNumber.Id, // // Gender = p.Gendor.IsNull("") == "male" ? "1" : "2", // // IsHigherLevel = InsigniaService.IsHigherLevel(p.Insignias // // .Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name, // // "ประถมาภรณ์มงกุฎไทย"), // // FirstRecvInsigniaYear = p.Insignias.Count == 0 ? 0 : // // p.Insignias.Where(x => x.Insignia.Name == "ทวีติยาภรณ์ช้างเผือก").OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : // // p.Insignias.Where(x => x.Insignia.Name == "ทวีติยาภรณ์ช้างเผือก").OrderBy(x => x.Year).FirstOrDefault().Year // // //CanRequestInsignia = CanRequestInsignia(p.Id, period.Year.ToString()) // // //RequestInsignia = GetInsigniaByName("ตริตาภรณ์มงกุฎไทย") // // }) // // .ToList() // // .Where(p => p.FirstRecvInsigniaYear != 0 && p.FirstRecvInsigniaYear <= period.Year - 3) // // .Select(p => new InsigniaResultSet // // { // // ProfileId = p.ProfileId, // // Prefix = p.Prefix, // // FullName = p.FullName, // // Position = p.Position, // // PosNo = p.PosNo, // // Rank = p.Rank, // // GovAge = p.GovAge, // // LastInsignia = p.LastInsignia, // // LastInsigniaId = p.LastInsigniaId, // // Salary = p.Salary, // // RequestInsignia = GetInsigniaByName("ประถมาภรณ์มงกุฎไทย"), // // Seq = 2, // // Gender = p.Gender, // // MatchingConditions = new List // // { // // new MatchingCondition // // { // // Condition = $"1.ได้ ท.ช. มาแล้วไม่น้อยกว่า 3 ปี บริบูรณ์ (ได้ ท.ช. วันที่ { (new DateTime(period.Year-3, 7, 28)).ToThaiFullDate3() } หรือก่อนหน้านั้น)", // // Result = $"ได้รับ ท.ช. ในปี { p.FirstRecvInsigniaYear.ToThaiYear() }" // // }, // // } // // }) // // .ToList(); // // var s2 = (from p in await _dbContext.Set().AsQueryable() // // .Include(p => p.Position) // // .Include(p => p.PositionNumber) // // .Include(p => p.AcademicStanding) // // .Include(p => p.PositionType) // // .Include(p => p.PositionLevel) // // .Include(p => p.Insignias) // // .ThenInclude(i => i.Insignia) // // .Include(p => p.Salaries) // // where p.OrganizationChart != null // // && allOc.Contains(p.OrganizationChart.OCId) // // && p.IsActive == true // // && p.IsLeave == false // // && p.DateAppoint != null // // && p.PositionType.Id == 3 // ทั่วไป // // && p.PositionLevel.Id == 11 // ระดับสูง // // && !p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name.Contains("ประถมาภรณ์ช้างเผือก") // // //&& !IsHigherLevel(p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, "ตริตาภรณ์ช้างเผือก") // // //&& CanRequestInsignia(p.Id, period.Year.ToString()) // // select new // // { // // ProfileId = p.Id, // // Prefix = p.Prefix, // // FullName = $"{p.FirstName} {p.LastName}", // // Position = p.Position.Name, // // PositionLevel = p.PositionLevel.Name, // // PositionType = p.PositionType.Name, // // Rank = p.AcademicStanding.Name, // // GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), // // ProfileDateAppoint = p.DateAppoint.Value, // // LastInsignia = p.Insignias.Count == 0 ? "" : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, // // LastInsigniaId = p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Id, // // Salary = p.Salaries.Count() == 0 ? "0" : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, // // SalaryCondition = p.Salaries.Count() == 0 ? 0 : p.Salaries.Where(x => x.SalaryDate <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount.Replace(".00", "").Replace(",", "").ToInteger(), // // PosNo = p.PositionNumber.Id, // // Gender = p.Gendor.IsNull("") == "male" ? "1" : "2", // // IsHigherLevel = InsigniaService.IsHigherLevel(p.Insignias // // .Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name, // // "ประถมาภรณ์ช้างเผือก"), // // FirstRecvInsigniaYear = p.Insignias.Count == 0 ? 0 : // // p.Insignias.Where(x => x.Insignia.Name == "ประถมาภรณ์มงกุฎไทย").OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : // // p.Insignias.Where(x => x.Insignia.Name == "ประถมาภรณ์มงกุฎไทย").OrderBy(x => x.Year).FirstOrDefault().Year // // //CanRequestInsignia = CanRequestInsignia(p.Id, period.Year.ToString()) // // //RequestInsignia = GetInsigniaByName("ตริตาภรณ์มงกุฎไทย") // // }) // // .ToList() // // .Where(p => p.FirstRecvInsigniaYear != 0 && p.FirstRecvInsigniaYear <= period.Year - 3) // // .Select(p => new InsigniaResultSet // // { // // ProfileId = p.ProfileId, // // Prefix = p.Prefix, // // FullName = p.FullName, // // Position = p.Position, // // PosNo = p.PosNo, // // Rank = p.Rank, // // GovAge = p.GovAge, // // LastInsignia = p.LastInsignia, // // LastInsigniaId = p.LastInsigniaId, // // Salary = p.Salary, // // RequestInsignia = GetInsigniaByName("ประถมาภรณ์ช้างเผือก"), // // Seq = 2, // // Gender = p.Gender, // // MatchingConditions = new List // // { // // new MatchingCondition // // { // // Condition = $"1.ได้ ป.ม. มาแล้วไม่น้อยกว่า 3 ปี บริบูรณ์ (ได้ ป.ม. วันที่ { (new DateTime(period.Year-3, 7, 28)).ToThaiFullDate3() } หรือก่อนหน้านั้น)", // // Result = $"ได้รับ ป.ม. ในปี { p.FirstRecvInsigniaYear.ToThaiYear() }" // // }, // // } // // }) // // .ToList(); // // var s3 = (from p in await _dbContext.Set().AsQueryable() // // .Include(p => p.Position) // // .Include(p => p.PositionNumber) // // .Include(p => p.AcademicStanding) // // .Include(p => p.PositionType) // // .Include(p => p.PositionLevel) // // .Include(p => p.Insignias) // // .ThenInclude(i => i.Insignia) // // .Include(p => p.Salaries) // // where p.OrganizationChart != null // // && allOc.Contains(p.OrganizationChart.OCId) // // && p.IsActive == true // // && p.IsLeave == false // // && p.DateAppoint != null // // && p.PositionType.Id == 3 // ทั่วไป // // && p.PositionLevel.Id == 11 // ระดับสูง // // && !p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name.Contains("มหาวชิรมงกุฎ") // // //&& !IsHigherLevel(p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, "ตริตาภรณ์ช้างเผือก") // // //&& CanRequestInsignia(p.Id, period.Year.ToString()) // // select new // // { // // ProfileId = p.Id, // // Prefix = p.Prefix, // // FullName = $"{p.FirstName} {p.LastName}", // // Position = p.Position.Name, // // PositionLevel = p.PositionLevel.Name, // // PositionType = p.PositionType.Name, // // Rank = p.AcademicStanding.Name, // // GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), // // ProfileDateAppoint = p.DateAppoint.Value, // // LastInsignia = p.Insignias.Count == 0 ? "" : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, // // LastInsigniaId = p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Id, // // Salary = p.Salaries.Count() == 0 ? "0" : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, // // SalaryCondition = p.Salaries.Count() == 0 ? 0 : p.Salaries.Where(x => x.SalaryDate <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount.Replace(".00", "").Replace(",", "").ToInteger(), // // PosNo = p.PositionNumber.Id, // // Gender = p.Gendor.IsNull("") == "male" ? "1" : "2", // // IsHigherLevel = InsigniaService.IsHigherLevel(p.Insignias // // .Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name, // // "มหาวชิรมงกุฎ"), // // FirstRecvInsigniaYear = p.Insignias.Count == 0 ? 0 : // // p.Insignias.Where(x => x.Insignia.Name == "ประถมาภรณ์ช้างเผือก").OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : // // p.Insignias.Where(x => x.Insignia.Name == "ประถมาภรณ์ช้างเผือก").OrderBy(x => x.Year).FirstOrDefault().Year // // //CanRequestInsignia = CanRequestInsignia(p.Id, period.Year.ToString()) // // //RequestInsignia = GetInsigniaByName("ตริตาภรณ์มงกุฎไทย") // // }) // // .ToList() // // .Where(p => p.FirstRecvInsigniaYear != 0 && p.FirstRecvInsigniaYear <= period.Year - 5) // // .Select(p => new InsigniaResultSet // // { // // ProfileId = p.ProfileId, // // Prefix = p.Prefix, // // FullName = p.FullName, // // Position = p.Position, // // PosNo = p.PosNo, // // Rank = p.Rank, // // GovAge = p.GovAge, // // LastInsignia = p.LastInsignia, // // LastInsigniaId = p.LastInsigniaId, // // Salary = p.Salary, // // RequestInsignia = GetInsigniaByName("มหาวชิรมงกุฎ"), // // Seq = 2, // // Gender = p.Gender, // // MatchingConditions = new List // // { // // new MatchingCondition // // { // // Condition = $"1.ได้ ป.ช. มาแล้วไม่น้อยกว่า 5 ปี บริบูรณ์ (ได้ ป.ช. วันที่ { (new DateTime(period.Year-3, 7, 28)).ToThaiFullDate3() } หรือก่อนหน้านั้น)", // // Result = $"ได้รับ ป.ช. ในปี { p.FirstRecvInsigniaYear.ToThaiYear() }" // // }, // // } // // }) // // .ToList(); // // var result_candidate = new List(); // // foreach (var r in s3) // // { // // var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); // // // Check ได้รับหรือเคยยื่นขอไปในปีที่แล้วหรือไม่? // // if (!CanRequestInsignia(r.ProfileId, period.Year)) // // continue; // // // Check ว่าชั้นที่ขอสูงกว่าชั้นที่เคยได้รับแล้วหรือไม่? // // if (!IsHigherLevel2(r.LastInsignia, r.RequestInsignia.Name)) // // continue; // // if (old == null) // // { // // result_candidate.Add(r); // // } // // } // // foreach (var r in s2) // // { // // var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); // // // Check ได้รับหรือเคยยื่นขอไปในปีที่แล้วหรือไม่? // // if (!CanRequestInsignia(r.ProfileId, period.Year)) // // continue; // // // Check ว่าชั้นที่ขอสูงกว่าชั้นที่เคยได้รับแล้วหรือไม่? // // if (!IsHigherLevel2(r.LastInsignia, r.RequestInsignia.Name)) // // continue; // // if (old == null) // // { // // result_candidate.Add(r); // // } // // } // // foreach (var r in s1) // // { // // var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); // // // Check ได้รับหรือเคยยื่นขอไปในปีที่แล้วหรือไม่? // // if (!CanRequestInsignia(r.ProfileId, period.Year)) // // continue; // // // Check ว่าชั้นที่ขอสูงกว่าชั้นที่เคยได้รับแล้วหรือไม่? // // if (!IsHigherLevel2(r.LastInsignia, r.RequestInsignia.Name)) // // continue; // // if (old == null) // // { // // result_candidate.Add(r); // // } // // } // // return result_candidate; // // } // // catch // // { // // throw; // // } // // } // #endregion // #region " บริหาร " // // public async List GetInsigniaCandidate_Type4_Level10(int periodId, int ocId) // // { // // try // // { // // var allOc = profileService.GetAllIdByRoot(ocId); // // var period = await _dbContext.Set().FirstOrDefault(p => p.Id == periodId); // // if (period == null) // // throw new Exception(GlobalMessages.InvalidCoinPeriod); // // var oc = await _dbContext.Set().FirstOrDefault(x => x.OCId == ocId); // // if (oc == null) // // throw new Exception(GlobalMessages.InvalidOC); // // var CurrentRetireDate = new DateTime(period.Year, 9, 30); // // var s1 = (from p in await _dbContext.Set().AsQueryable() // // .Include(p => p.Position) // // .Include(p => p.PositionNumber) // // .Include(p => p.AcademicStanding) // // .Include(p => p.PositionType) // // .Include(p => p.PositionLevel) // // .Include(p => p.Insignias) // // .ThenInclude(i => i.Insignia) // // .Include(p => p.Salaries) // // where p.OrganizationChart != null // // && allOc.Contains(p.OrganizationChart.OCId) // // && p.IsActive == true // // && p.IsLeave == false // // && p.DateAppoint != null // // && p.PositionType.Id == 4 // ทั่วไป // // && p.PositionLevel.Id == 10 // ระดับสูง // // && !p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name.Contains("ประถมาภรณ์มงกุฎไทย") // // //&& !IsHigherLevel(p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, "ตริตาภรณ์ช้างเผือก") // // //&& CanRequestInsignia(p.Id, period.Year.ToString()) // // select new // // { // // ProfileId = p.Id, // // Prefix = p.Prefix, // // FullName = $"{p.FirstName} {p.LastName}", // // Position = p.Position.Name, // // PositionLevel = p.PositionLevel.Name, // // PositionType = p.PositionType.Name, // // Rank = p.AcademicStanding.Name, // // GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), // // ProfileDateAppoint = p.DateAppoint.Value, // // LastInsignia = p.Insignias.Count == 0 ? "" : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, // // LastInsigniaId = p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Id, // // Salary = p.Salaries.Count() == 0 ? "0" : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, // // SalaryCondition = p.Salaries.Count() == 0 ? 0 : p.Salaries.Where(x => x.SalaryDate <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount.Replace(".00", "").Replace(",", "").ToInteger(), // // PosNo = p.PositionNumber.Id, // // Gender = p.Gendor.IsNull("") == "male" ? "1" : "2", // // IsHigherLevel = InsigniaService.IsHigherLevel(p.Insignias // // .Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name, // // "ประถมาภรณ์มงกุฎไทย"), // // FirstRecvInsigniaYear = p.Insignias.Count == 0 ? 0 : // // p.Insignias.Where(x => x.Insignia.Name == "ทวีติยาภรณ์ช้างเผือก").OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : // // p.Insignias.Where(x => x.Insignia.Name == "ทวีติยาภรณ์ช้างเผือก").OrderBy(x => x.Year).FirstOrDefault().Year // // //CanRequestInsignia = CanRequestInsignia(p.Id, period.Year.ToString()) // // //RequestInsignia = GetInsigniaByName("ตริตาภรณ์มงกุฎไทย") // // }) // // .ToList() // // .Where(p => p.FirstRecvInsigniaYear != 0 && p.FirstRecvInsigniaYear <= period.Year - 3) // // .Select(p => new InsigniaResultSet // // { // // ProfileId = p.ProfileId, // // Prefix = p.Prefix, // // FullName = p.FullName, // // Position = p.Position, // // PosNo = p.PosNo, // // Rank = p.Rank, // // GovAge = p.GovAge, // // LastInsignia = p.LastInsignia, // // LastInsigniaId = p.LastInsigniaId, // // Salary = p.Salary, // // RequestInsignia = GetInsigniaByName("ประถมาภรณ์มงกุฎไทย"), // // Seq = 2, // // Gender = p.Gender, // // MatchingConditions = new List // // { // // new MatchingCondition // // { // // Condition = $"1.ได้ ท.ช. มาแล้วไม่น้อยกว่า 3 ปี บริบูรณ์ (ได้ ท.ช. วันที่ { (new DateTime(period.Year-3, 7, 28)).ToThaiFullDate3() } หรือก่อนหน้านั้น)", // // Result = $"ได้รับ ท.ช. ในปี { p.FirstRecvInsigniaYear.ToThaiYear() }" // // }, // // } // // }) // // .ToList(); // // var s2 = (from p in await _dbContext.Set().AsQueryable() // // .Include(p => p.Position) // // .Include(p => p.PositionNumber) // // .Include(p => p.AcademicStanding) // // .Include(p => p.PositionType) // // .Include(p => p.PositionLevel) // // .Include(p => p.Insignias) // // .ThenInclude(i => i.Insignia) // // .Include(p => p.Salaries) // // where p.OrganizationChart != null // // && allOc.Contains(p.OrganizationChart.OCId) // // && p.IsActive == true // // && p.IsLeave == false // // && p.DateAppoint != null // // && p.PositionType.Id == 4 // ทั่วไป // // && p.PositionLevel.Id == 10 // ระดับสูง // // && !p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name.Contains("ประถมาภรณ์ช้างเผือก") // // //&& !IsHigherLevel(p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, "ตริตาภรณ์ช้างเผือก") // // //&& CanRequestInsignia(p.Id, period.Year.ToString()) // // select new // // { // // ProfileId = p.Id, // // Prefix = p.Prefix, // // FullName = $"{p.FirstName} {p.LastName}", // // Position = p.Position.Name, // // PositionLevel = p.PositionLevel.Name, // // PositionType = p.PositionType.Name, // // Rank = p.AcademicStanding.Name, // // GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), // // ProfileDateAppoint = p.DateAppoint.Value, // // LastInsignia = p.Insignias.Count == 0 ? "" : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, // // LastInsigniaId = p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Id, // // Salary = p.Salaries.Count() == 0 ? "0" : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, // // SalaryCondition = p.Salaries.Count() == 0 ? 0 : p.Salaries.Where(x => x.SalaryDate <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount.Replace(".00", "").Replace(",", "").ToInteger(), // // PosNo = p.PositionNumber.Id, // // Gender = p.Gendor.IsNull("") == "male" ? "1" : "2", // // IsHigherLevel = InsigniaService.IsHigherLevel(p.Insignias // // .Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name, // // "ประถมาภรณ์ช้างเผือก"), // // FirstRecvInsigniaYear = p.Insignias.Count == 0 ? 0 : // // p.Insignias.Where(x => x.Insignia.Name == "ประถมาภรณ์มงกุฎไทย").OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : // // p.Insignias.Where(x => x.Insignia.Name == "ประถมาภรณ์มงกุฎไทย").OrderBy(x => x.Year).FirstOrDefault().Year // // //CanRequestInsignia = CanRequestInsignia(p.Id, period.Year.ToString()) // // //RequestInsignia = GetInsigniaByName("ตริตาภรณ์มงกุฎไทย") // // }) // // .ToList() // // .Where(p => p.FirstRecvInsigniaYear != 0 && p.FirstRecvInsigniaYear <= period.Year - 3) // // .Select(p => new InsigniaResultSet // // { // // ProfileId = p.ProfileId, // // Prefix = p.Prefix, // // FullName = p.FullName, // // Position = p.Position, // // PosNo = p.PosNo, // // Rank = p.Rank, // // GovAge = p.GovAge, // // LastInsignia = p.LastInsignia, // // LastInsigniaId = p.LastInsigniaId, // // Salary = p.Salary, // // RequestInsignia = GetInsigniaByName("ประถมาภรณ์ช้างเผือก"), // // Seq = 2, // // Gender = p.Gender, // // MatchingConditions = new List // // { // // new MatchingCondition // // { // // Condition = $"1.ได้ ป.ม. มาแล้วไม่น้อยกว่า 3 ปี บริบูรณ์ (ได้ ป.ม. วันที่ { (new DateTime(period.Year-3, 7, 28)).ToThaiFullDate3() } หรือก่อนหน้านั้น)", // // Result = $"ได้รับ ป.ม. ในปี { p.FirstRecvInsigniaYear.ToThaiYear() }" // // }, // // } // // }) // // .ToList(); // // var s3 = (from p in await _dbContext.Set().AsQueryable() // // .Include(p => p.Position) // // .Include(p => p.PositionNumber) // // .Include(p => p.AcademicStanding) // // .Include(p => p.PositionType) // // .Include(p => p.PositionLevel) // // .Include(p => p.Insignias) // // .ThenInclude(i => i.Insignia) // // .Include(p => p.Salaries) // // where p.OrganizationChart != null // // && allOc.Contains(p.OrganizationChart.OCId) // // && p.IsActive == true // // && p.IsLeave == false // // && p.DateAppoint != null // // && p.PositionType.Id == 4 // ทั่วไป // // && p.PositionLevel.Id == 10 // ระดับสูง // // && !p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name.Contains("มหาวชิรมงกุฎ") // // //&& !IsHigherLevel(p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, "ตริตาภรณ์ช้างเผือก") // // //&& CanRequestInsignia(p.Id, period.Year.ToString()) // // select new // // { // // ProfileId = p.Id, // // Prefix = p.Prefix, // // FullName = $"{p.FirstName} {p.LastName}", // // Position = p.Position.Name, // // PositionLevel = p.PositionLevel.Name, // // PositionType = p.PositionType.Name, // // Rank = p.AcademicStanding.Name, // // GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), // // ProfileDateAppoint = p.DateAppoint.Value, // // LastInsignia = p.Insignias.Count == 0 ? "" : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, // // LastInsigniaId = p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Id, // // Salary = p.Salaries.Count() == 0 ? "0" : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, // // SalaryCondition = p.Salaries.Count() == 0 ? 0 : p.Salaries.Where(x => x.SalaryDate <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount.Replace(".00", "").Replace(",", "").ToInteger(), // // PosNo = p.PositionNumber.Id, // // Gender = p.Gendor.IsNull("") == "male" ? "1" : "2", // // IsHigherLevel = InsigniaService.IsHigherLevel(p.Insignias // // .Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name, // // "มหาวชิรมงกุฎ"), // // FirstRecvInsigniaYear = p.Insignias.Count == 0 ? 0 : // // p.Insignias.Where(x => x.Insignia.Name == "ประถมาภรณ์ช้างเผือก").OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : // // p.Insignias.Where(x => x.Insignia.Name == "ประถมาภรณ์ช้างเผือก").OrderBy(x => x.Year).FirstOrDefault().Year // // //CanRequestInsignia = CanRequestInsignia(p.Id, period.Year.ToString()) // // //RequestInsignia = GetInsigniaByName("ตริตาภรณ์มงกุฎไทย") // // }) // // .ToList() // // .Where(p => p.FirstRecvInsigniaYear != 0 && p.FirstRecvInsigniaYear <= period.Year - 5) // // .Select(p => new InsigniaResultSet // // { // // ProfileId = p.ProfileId, // // Prefix = p.Prefix, // // FullName = p.FullName, // // Position = p.Position, // // PosNo = p.PosNo, // // Rank = p.Rank, // // GovAge = p.GovAge, // // LastInsignia = p.LastInsignia, // // LastInsigniaId = p.LastInsigniaId, // // Salary = p.Salary, // // RequestInsignia = GetInsigniaByName("มหาวชิรมงกุฎ"), // // Seq = 2, // // Gender = p.Gender, // // MatchingConditions = new List // // { // // new MatchingCondition // // { // // Condition = $"1.ได้ ป.ช. มาแล้วไม่น้อยกว่า 5 ปี บริบูรณ์ (ได้ ป.ช. วันที่ { (new DateTime(period.Year-3, 7, 28)).ToThaiFullDate3() } หรือก่อนหน้านั้น)", // // Result = $"ได้รับ ป.ช. ในปี { p.FirstRecvInsigniaYear.ToThaiYear() }" // // }, // // } // // }) // // .ToList(); // // var result_candidate = new List(); // // foreach (var r in s3) // // { // // var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); // // if (old == null) // // { // // result_candidate.Add(r); // // } // // } // // foreach (var r in s2) // // { // // var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); // // if (old == null) // // { // // result_candidate.Add(r); // // } // // } // // foreach (var r in s1) // // { // // var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); // // if (old == null) // // { // // result_candidate.Add(r); // // } // // } // // return result_candidate; // // } // // catch // // { // // throw; // // } // // } // // public async List GetInsigniaCandidate_Type4_Level11(int periodId, int ocId) // // { // // try // // { // // var allOc = profileService.GetAllIdByRoot(ocId); // // var period = await _dbContext.Set().FirstOrDefault(p => p.Id == periodId); // // if (period == null) // // throw new Exception(GlobalMessages.InvalidCoinPeriod); // // var oc = await _dbContext.Set().FirstOrDefault(x => x.OCId == ocId); // // if (oc == null) // // throw new Exception(GlobalMessages.InvalidOC); // // var CurrentRetireDate = new DateTime(period.Year, 9, 30); // // var s1 = (from p in await _dbContext.Set().AsQueryable() // // .Include(p => p.Position) // // .Include(p => p.PositionNumber) // // .Include(p => p.AcademicStanding) // // .Include(p => p.PositionType) // // .Include(p => p.PositionLevel) // // .Include(p => p.Insignias) // // .ThenInclude(i => i.Insignia) // // .Include(p => p.Salaries) // // where p.OrganizationChart != null // // && allOc.Contains(p.OrganizationChart.OCId) // // && p.IsActive == true // // && p.IsLeave == false // // && p.DateAppoint != null // // && p.PositionType.Id == 4 // ทั่วไป // // && p.PositionLevel.Id == 11 // ระดับสูง // // && !p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name.Contains("ประถมาภรณ์ช้างเผือก") // // //&& !IsHigherLevel(p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, "ตริตาภรณ์ช้างเผือก") // // //&& CanRequestInsignia(p.Id, period.Year.ToString()) // // select new // // { // // ProfileId = p.Id, // // Prefix = p.Prefix, // // FullName = $"{p.FirstName} {p.LastName}", // // Position = p.Position.Name, // // PositionLevel = p.PositionLevel.Name, // // PositionType = p.PositionType.Name, // // Rank = p.AcademicStanding.Name, // // GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), // // ProfileDateAppoint = p.DateAppoint.Value, // // LastInsignia = p.Insignias.Count == 0 ? "" : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, // // LastInsigniaId = p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Id, // // Salary = p.Salaries.Count() == 0 ? "0" : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, // // SalaryCondition = p.Salaries.Count() == 0 ? 0 : p.Salaries.Where(x => x.SalaryDate <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount.Replace(".00", "").Replace(",", "").ToInteger(), // // PosNo = p.PositionNumber.Id, // // Gender = p.Gendor.IsNull("") == "male" ? "1" : "2", // // IsHigherLevel = InsigniaService.IsHigherLevel(p.Insignias // // .Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name, // // "ประถมาภรณ์ช้างเผือก"), // // FirstRecvInsigniaYear = p.Insignias.Count == 0 ? 0 : // // p.Insignias.Where(x => x.Insignia.Name == "ประถมาภรณ์มงกุฎไทย").OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : // // p.Insignias.Where(x => x.Insignia.Name == "ประถมาภรณ์มงกุฎไทย").OrderBy(x => x.Year).FirstOrDefault().Year, // // SalaryPosition = p.Salaries.Count == 0 ? 0 : // // p.Salaries.AsQueryable().OrderBy(x => x.Order).LastOrDefault().PositionSalaryAmount == null ? 0 : // // p.Salaries.AsQueryable().OrderBy(x => x.Order).LastOrDefault().PositionSalaryAmount.ToInteger() // // //CanRequestInsignia = CanRequestInsignia(p.Id, period.Year.ToString()) // // //RequestInsignia = GetInsigniaByName("ตริตาภรณ์มงกุฎไทย") // // }) // // .ToList() // // .Where(p => p.FirstRecvInsigniaYear != 0 && p.FirstRecvInsigniaYear <= period.Year - 3) // // .Where(x => x.SalaryPosition == 14500) // // .Select(p => new InsigniaResultSet // // { // // ProfileId = p.ProfileId, // // Prefix = p.Prefix, // // FullName = p.FullName, // // Position = p.Position, // // PosNo = p.PosNo, // // Rank = p.Rank, // // GovAge = p.GovAge, // // LastInsignia = p.LastInsignia, // // LastInsigniaId = p.LastInsigniaId, // // Salary = p.Salary, // // RequestInsignia = GetInsigniaByName("ประถมาภรณ์ช้างเผือก"), // // Seq = 2, // // Gender = p.Gender, // // MatchingConditions = new List // // { // // new MatchingCondition // // { // // Condition = $"1.ได้ ป.ม. มาแล้วไม่น้อยกว่า 3 ปี บริบูรณ์ (ได้ ป.ม. วันที่ { (new DateTime(period.Year-3, 7, 28)).ToThaiFullDate3() } หรือก่อนหน้านั้น)", // // Result = $"ได้รับ ป.ม. ในปี { p.FirstRecvInsigniaYear.ToThaiYear() }" // // }, // // new MatchingCondition // // { // // Condition = $"ได้รับเงินประจำตำแหน่ง 14,500 บาท", // // Result = $"ได้รับเงินประจำตำแหน่ง { p.SalaryPosition.ToNumericText() } บาท" // // } // // } // // }) // // .ToList(); // // var s2 = (from p in await _dbContext.Set().AsQueryable() // // .Include(p => p.Position) // // .Include(p => p.PositionNumber) // // .Include(p => p.AcademicStanding) // // .Include(p => p.PositionType) // // .Include(p => p.PositionLevel) // // .Include(p => p.Insignias) // // .ThenInclude(i => i.Insignia) // // .Include(p => p.Salaries) // // where p.OrganizationChart != null // // && allOc.Contains(p.OrganizationChart.OCId) // // && p.IsActive == true // // && p.IsLeave == false // // && p.DateAppoint != null // // && p.PositionType.Id == 4 // ทั่วไป // // && p.PositionLevel.Id == 11 // ระดับสูง // // && !p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name.Contains("มหาวชิรมงกุฎ") // // //&& !IsHigherLevel(p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, "ตริตาภรณ์ช้างเผือก") // // //&& CanRequestInsignia(p.Id, period.Year.ToString()) // // select new // // { // // ProfileId = p.Id, // // Prefix = p.Prefix, // // FullName = $"{p.FirstName} {p.LastName}", // // Position = p.Position.Name, // // PositionLevel = p.PositionLevel.Name, // // PositionType = p.PositionType.Name, // // Rank = p.AcademicStanding.Name, // // GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), // // ProfileDateAppoint = p.DateAppoint.Value, // // LastInsignia = p.Insignias.Count == 0 ? "" : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, // // LastInsigniaId = p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Id, // // Salary = p.Salaries.Count() == 0 ? "0" : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, // // SalaryCondition = p.Salaries.Count() == 0 ? 0 : p.Salaries.Where(x => x.SalaryDate <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount.Replace(".00", "").Replace(",", "").ToInteger(), // // PosNo = p.PositionNumber.Id, // // Gender = p.Gendor.IsNull("") == "male" ? "1" : "2", // // IsHigherLevel = InsigniaService.IsHigherLevel(p.Insignias // // .Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name, // // "มหาวชิรมงกุฎ"), // // FirstRecvInsigniaYear = p.Insignias.Count == 0 ? 0 : // // p.Insignias.Where(x => x.Insignia.Name == "ประถมาภรณ์ช้างเผือก").OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : // // p.Insignias.Where(x => x.Insignia.Name == "ประถมาภรณ์ช้างเผือก").OrderBy(x => x.Year).FirstOrDefault().Year, // // SalaryPosition = p.Salaries.Count == 0 ? 0 : // // p.Salaries.AsQueryable().OrderBy(x => x.Order).LastOrDefault().PositionSalaryAmount == null ? 0 : // // p.Salaries.AsQueryable().OrderBy(x => x.Order).LastOrDefault().PositionSalaryAmount.ToInteger() // // //CanRequestInsignia = CanRequestInsignia(p.Id, period.Year.ToString()) // // //RequestInsignia = GetInsigniaByName("ตริตาภรณ์มงกุฎไทย") // // }) // // .ToList() // // .Where(p => p.FirstRecvInsigniaYear != 0 && p.FirstRecvInsigniaYear <= period.Year - 3) // // .Where(x => x.SalaryPosition == 14500) // // .Select(p => new InsigniaResultSet // // { // // ProfileId = p.ProfileId, // // Prefix = p.Prefix, // // FullName = p.FullName, // // Position = p.Position, // // PosNo = p.PosNo, // // Rank = p.Rank, // // GovAge = p.GovAge, // // LastInsignia = p.LastInsignia, // // LastInsigniaId = p.LastInsigniaId, // // Salary = p.Salary, // // RequestInsignia = GetInsigniaByName("มหาวชิรมงกุฎ"), // // Seq = 2, // // Gender = p.Gender, // // MatchingConditions = new List // // { // // new MatchingCondition // // { // // Condition = $"1.ได้ ป.ช. มาแล้วไม่น้อยกว่า 3 ปี บริบูรณ์ (ได้ ป.ช. วันที่ { (new DateTime(period.Year-3, 7, 28)).ToThaiFullDate3() } หรือก่อนหน้านั้น)", // // Result = $"ได้รับ ป.ช. ในปี { p.FirstRecvInsigniaYear.ToThaiYear() }" // // }, // // new MatchingCondition // // { // // Condition = $"ได้รับเงินประจำตำแหน่ง 14,500 บาท", // // Result = $"ได้รับเงินประจำตำแหน่ง { p.SalaryPosition.ToNumericText() } บาท" // // } // // } // // }) // // .ToList(); // // var s3 = (from p in await _dbContext.Set().AsQueryable() // // .Include(p => p.Position) // // .Include(p => p.PositionNumber) // // .Include(p => p.AcademicStanding) // // .Include(p => p.PositionType) // // .Include(p => p.PositionLevel) // // .Include(p => p.Insignias) // // .ThenInclude(i => i.Insignia) // // .Include(p => p.Salaries) // // where p.OrganizationChart != null // // && allOc.Contains(p.OrganizationChart.OCId) // // && p.IsActive == true // // && p.IsLeave == false // // && p.DateAppoint != null // // && p.PositionType.Id == 4 // ทั่วไป // // && p.PositionLevel.Id == 11 // ระดับสูง // // && !p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name.Contains("มหาปรมาภรณ์ช้างเผือก") // // //&& !IsHigherLevel(p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, "ตริตาภรณ์ช้างเผือก") // // //&& CanRequestInsignia(p.Id, period.Year.ToString()) // // select new // // { // // ProfileId = p.Id, // // Prefix = p.Prefix, // // FullName = $"{p.FirstName} {p.LastName}", // // Position = p.Position.Name, // // PositionLevel = p.PositionLevel.Name, // // PositionType = p.PositionType.Name, // // Rank = p.AcademicStanding.Name, // // GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), // // ProfileDateAppoint = p.DateAppoint.Value, // // LastInsignia = p.Insignias.Count == 0 ? "" : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, // // LastInsigniaId = p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Id, // // Salary = p.Salaries.Count() == 0 ? "0" : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, // // SalaryCondition = p.Salaries.Count() == 0 ? 0 : p.Salaries.Where(x => x.SalaryDate <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount.Replace(".00", "").Replace(",", "").ToInteger(), // // PosNo = p.PositionNumber.Id, // // Gender = p.Gendor.IsNull("") == "male" ? "1" : "2", // // IsHigherLevel = InsigniaService.IsHigherLevel(p.Insignias // // .Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")) // // .OrderByDescending(x => x.Year) // // .FirstOrDefault().Insignia.Name, // // "มหาปรมาภรณ์ช้างเผือก"), // // FirstRecvInsigniaYear = p.Insignias.Count == 0 ? 0 : // // p.Insignias.Where(x => x.Insignia.Name == "มหาวชิรมงกุฎ").OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : // // p.Insignias.Where(x => x.Insignia.Name == "มหาวชิรมงกุฎ").OrderBy(x => x.Year).FirstOrDefault().Year, // // SalaryPosition = p.Salaries.Count == 0 ? 0 : // // p.Salaries.AsQueryable().OrderBy(x => x.Order).LastOrDefault().PositionSalaryAmount == null ? 0 : // // p.Salaries.AsQueryable().OrderBy(x => x.Order).LastOrDefault().PositionSalaryAmount.ToInteger() // // //CanRequestInsignia = CanRequestInsignia(p.Id, period.Year.ToString()) // // //RequestInsignia = GetInsigniaByName("ตริตาภรณ์มงกุฎไทย") // // }) // // .ToList() // // .Where(p => p.FirstRecvInsigniaYear != 0 && p.FirstRecvInsigniaYear <= period.Year - 5) // // .Where(x => x.SalaryPosition == 14500) // // .Select(p => new InsigniaResultSet // // { // // ProfileId = p.ProfileId, // // Prefix = p.Prefix, // // FullName = p.FullName, // // Position = p.Position, // // PosNo = p.PosNo, // // Rank = p.Rank, // // GovAge = p.GovAge, // // LastInsignia = p.LastInsignia, // // LastInsigniaId = p.LastInsigniaId, // // Salary = p.Salary, // // RequestInsignia = GetInsigniaByName("มหาปรมาภรณ์ช้างเผือก"), // // Seq = 2, // // Gender = p.Gender, // // MatchingConditions = new List // // { // // new MatchingCondition // // { // // Condition = $"1.ได้ ม.ว.ม. มาแล้วไม่น้อยกว่า 5 ปี บริบูรณ์ (ได้ ม.ว.ม. วันที่ { (new DateTime(period.Year-3, 7, 28)).ToThaiFullDate3() } หรือก่อนหน้านั้น)", // // Result = $"ได้รับ ม.ว.ม. ในปี { p.FirstRecvInsigniaYear.ToThaiYear() }" // // }, // // new MatchingCondition // // { // // Condition = $"ได้รับเงินประจำตำแหน่ง 14,500 บาท", // // Result = $"ได้รับเงินประจำตำแหน่ง { p.SalaryPosition.ToNumericText() } บาท" // // } // // } // // }) // // .ToList(); // // var result_candidate = new List(); // // foreach (var r in s3) // // { // // var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); // // if (old == null) // // { // // result_candidate.Add(r); // // } // // } // // foreach (var r in s2) // // { // // var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); // // if (old == null) // // { // // result_candidate.Add(r); // // } // // } // // foreach (var r in s1) // // { // // var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); // // if (old == null) // // { // // result_candidate.Add(r); // // } // // } // // return result_candidate; // // } // // catch // // { // // throw; // // } // // } // #endregion // #endregion // #region " Public " // /// // /// กรองรายชื่อผู้มิสิทธิ์ยื่นขอเครื่องราช // /// // /// รหัสของรอบการขอ // /// รหัสโรงเรียน // /// // public async Task> GetInsigniaCandidate(Guid periodId, Guid ocId) // { // try // { // var allOc = profileService.GetAllIdByRoot(ocId); // var period = await _dbContext.Set().FirstOrDefaultAsync(p => p.Id == periodId); // if (period == null) // throw new Exception(GlobalMessages.DataNotFound); // var oc = await _dbContext.Set().FirstOrDefaultAsync(x => x.Id == ocId); // if (oc == null) // throw new Exception(GlobalMessages.DataNotFound); // var CurrentRetireDate = new DateTime(period.Year, 9, 30); // var inst_profile = await _dbContext.Set() // .Include(p => p.Position) // // .Include(p => p.PositionNumber) // // .Include(p => p.AcademicStanding) // .Include(p => p.Insignias) // .ThenInclude(i => i.Insignia) // .Include(p => p.Salaries) // .Where(p => // // allOc.Contains(p.OrganizationOrganization.Id) && // p.IsActive == true && // p.IsLeave == false && // p.DateAppoint != null // ) // .Select(p => new // { // ProfileId = p.Id, // Prefix = p.Prefix, // FullName = $"{p.FirstName} {p.LastName}", // Position = p.Position.Name, // // Rank = p.AcademicStanding.Name, // ProfileDateAppoint = p.DateAppoint.Value, // GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), // // PosNo = p.PositionNumber.Id, // Gender = p.Gendor.IsNull("") == "male" ? "1" : "2", // LastInsignia = p.Insignias.Count == 0 ? "" : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, // LastInsigniaId = p.Insignias.Count == 0 ? -1 : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Id, // Salary = p.Salaries.Count() == 0 ? "0" : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, // //CanRequestInsignia = CanRequestInsignia(p.Id, period.Year.ToString()) // }); // // check วันที่บรรจะต้องน้อยกว่า 29/5/ปี-5 // var s1 = ((from p in inst_profile // //where p.CanRequestInsignia == true // where p.ProfileDateAppoint <= new DateTime(period.Year - 5, 5, 29) // && p.LastInsigniaId == -1 // select p) // .ToList() // .Select(p => new InsigniaResultSet // { // ProfileId = p.ProfileId, // Prefix = p.Prefix, // FullName = p.FullName, // Position = p.Position, // PosNo = p.PosNo, // Rank = p.Rank, // GovAge = p.GovAge, // LastInsignia = p.LastInsignia, // LastInsigniaId = p.LastInsigniaId, // Salary = p.Salary, // RequestInsignia = await GetInsigniaByName("ตริตาภรณ์มงกุฎไทย"), // Seq = 1, // Gender = p.Gender // })).ToList(); // var s2 = (from p in _dbContext.Set() // .Include(p => p.Position) // // .Include(p => p.PositionNumber) // // .Include(p => p.AcademicStanding) // .Include(p => p.Insignias) // .ThenInclude(i => i.Insignia) // .Include(p => p.Salaries) // where p.OrganizationOrganization != null // // && allOc.Contains(p.OrganizationOrganization.Id) // && p.IsActive == true // && p.IsLeave == false // && p.DateAppoint != null // // && p.AcademicStanding.Name == "ชำนาญการ" // && !p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name.Contains("ตริตาภรณ์ช้างเผือก") // //&& !IsHigherLevel(p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, "ตริตาภรณ์ช้างเผือก") // //&& CanRequestInsignia(p.Id, period.Year.ToString()) // select new // { // ProfileId = p.Id, // Prefix = p.Prefix, // FullName = $"{p.FirstName} {p.LastName}", // Position = p.Position.Name, // Rank = p.AcademicStanding.Name, // GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), // LastInsignia = p.Insignias.Count == 0 ? "" : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, // LastInsigniaId = p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Id, // Salary = p.Salaries.Count() == 0 ? "0" : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, // SalaryCondition = p.Salaries.Count() == 0 ? 0 : p.Salaries.Where(x => x.SalaryDate <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount.Replace(".00", "").Replace(",", "").ToInteger(), // PosNo = p.PositionNumber.Id, // Gender = p.Gendor.IsNull("") == "male" ? "1" : "2", // IsHigherLevel = InsigniaService.IsHigherLevel(p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, "ตริตาภรณ์ช้างเผือก"), // }) // .ToList() // .Where(x => x.SalaryCondition < 22140 && !x.IsHigherLevel) // .Select(p => new InsigniaResultSet // { // ProfileId = p.ProfileId, // Prefix = p.Prefix, // FullName = p.FullName, // Position = p.Position, // PosNo = p.PosNo, // Rank = p.Rank, // GovAge = p.GovAge, // LastInsignia = p.LastInsignia, // LastInsigniaId = p.LastInsigniaId, // Salary = p.Salary, // RequestInsignia = GetInsigniaByName("ตริตาภรณ์ช้างเผือก"), // Seq = 2, // Gender = p.Gender // }) // .ToList(); // // คศ2 ขอ ทม // var s3 = (from p in _dbContext.Set() // .Include(p => p.Position) // // .Include(p => p.PositionNumber) // // .Include(p => p.AcademicStanding) // .Include(p => p.Insignias) // .ThenInclude(i => i.Insignia) // .Include(p => p.Salaries) // where p.IsActive == true // // && allOc.Contains(p.OrganizationChart.OCId) // && p.IsLeave == false // && p.DateAppoint != null // // && p.AcademicStanding.Name == "ชำนาญการ" // && !p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name.Contains("ทวีติยาภรณ์มงกุฎไทย") // select new // { // ProfileId = p.Id, // Prefix = p.Prefix, // FullName = $"{p.FirstName} {p.LastName}", // Position = p.Position.Name, // Rank = p.AcademicStanding.Name, // GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), // LastInsignia = p.Insignias.Count == 0 ? "" : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, // LastInsigniaId = p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Id, // Salary = p.Salaries.Count() == 0 ? "0" : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, // SalaryCondition = p.Salaries.Count() == 0 ? 0 : p.Salaries.Where(x => x.SalaryDate <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount.Replace(".00", "").Replace(",", "").ToInteger(), // PosNo = p.PositionNumber.Id, // Gender = p.Gendor.IsNull("") == "male" ? "1" : "2" // }) // .ToList() // .Where(x => x.SalaryCondition >= 22140) // .Select(p => new InsigniaResultSet // { // ProfileId = p.ProfileId, // Prefix = p.Prefix, // FullName = p.FullName, // Position = p.Position, // PosNo = p.PosNo, // Rank = p.Rank, // GovAge = p.GovAge, // LastInsignia = p.LastInsignia, // LastInsigniaId = p.LastInsigniaId, // Salary = p.Salary, // RequestInsignia = GetInsigniaByName("ทวีติยาภรณ์มงกุฎไทย"), // Seq = 3, // Gender = p.Gender // }) // .ToList(); // // คศ2 ขอ ทช // var s4 = (from p in _dbContext.Set() // .Include(p => p.Position) // // .Include(p => p.PositionNumber) // // .Include(p => p.AcademicStanding) // .Include(p => p.Insignias) // .ThenInclude(i => i.Insignia) // .Include(p => p.Salaries) // where p.IsActive == true // // && allOc.Contains(p.OrganizationOrganization.OCId) // && p.IsLeave == false // && p.DateAppoint != null // && p.AcademicStanding.Name == "ชำนาญการ" // && !p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name.Contains("ทวีติยาภรณ์ช้างเผือก") // select new // { // ProfileId = p.Id, // Prefix = p.Prefix, // FullName = $"{p.FirstName} {p.LastName}", // Position = p.Position.Name, // Rank = p.AcademicStanding.Name, // GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), // LastInsignia = p.Insignias.Count == 0 ? "" : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, // LastInsigniaId = p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Id, // Salary = p.Salaries.Count() == 0 ? "0" : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, // SalaryCondition = p.Salaries.Count() == 0 ? 0 : p.Salaries.Where(x => x.SalaryDate < new DateTime(period.Year - 5, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount.Replace(".00", "").Replace(",", "").ToInteger(), // PosNo = p.PositionNumber.Id, // Gender = p.Gendor.IsNull("") == "male" ? "1" : "2", // SalaryCondition2 = p.Salaries.Count() == 0 ? null : p.Salaries.Where(x => x.SalaryDate < new DateTime(period.Year - 5, 4, 29)).Select(x => new { order = x.Order, AsId = x.SalaryAcademicStanding.Id, salary = x.Amount.Replace(".00", "").Replace(",", "").ToInteger() }) // }) // .ToList() // .Where(x => x.SalaryCondition2 != null && (x.SalaryCondition2.Where(x => x.AsId == 1).Count() > 0 && x.SalaryCondition2.Where(x => x.AsId == 1).OrderByDescending(x => x.order).FirstOrDefault().salary >= 22140)) // .Select(p => new InsigniaResultSet // { // ProfileId = p.ProfileId, // Prefix = p.Prefix, // FullName = p.FullName, // Position = p.Position, // PosNo = p.PosNo, // Rank = p.Rank, // GovAge = p.GovAge, // LastInsignia = p.LastInsignia, // LastInsigniaId = p.LastInsigniaId, // Salary = p.Salary, // RequestInsignia = GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก"), // Seq = 4, // Gender = p.Gender // }) // .ToList(); // // คศ3 ขอ ทช // var s5 = ((from p in _dbContext.Set() // .Include(p => p.Position) // // .Include(p => p.PositionNumber) // // .Include(p => p.AcademicStanding) // .Include(p => p.Insignias) // .ThenInclude(i => i.Insignia) // .Include(p => p.Salaries) // where p.IsActive == true // // && allOc.Contains(p.OrganizationOrganization.OCId) // && p.IsLeave == false // && p.DateAppoint != null // && !p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name.Contains("ทวีติยาภรณ์ช้างเผือก") // select p) // .ToList() // .Select(p => new InsigniaResultSet // { // ProfileId = p.Id, // Prefix = p.Prefix, // FullName = $"{p.FirstName} {p.LastName}", // Position = p.Position.Name, // PosNo = p.PositionNumber.Id, // Rank = p.AcademicStanding.Name, // GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), // LastInsignia = p.Insignias.Count == 0 ? "" : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, // LastInsigniaId = p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Id, // Salary = p.Salaries.Count() == 0 ? "0" : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, // RequestInsignia = GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก"), // Seq = 4, // Gender = p.Gendor.IsNull("") == "male" ? "1" : "2" // })) // .ToList(); // // คศ3 ขอ ปม // var s6 = (from p in _dbContext.Set() // .Include(p => p.Position) // // .Include(p => p.PositionNumber) // // .Include(p => p.AcademicStanding) // .Include(p => p.Insignias) // .ThenInclude(i => i.Insignia) // .Include(p => p.Salaries) // where p.IsActive == true // // && allOc.Contains(p.OrganizationOrganization.OCId) // && p.IsLeave == false // && p.DateAppoint != null // // && p.AcademicStanding.Name == "ชำนาญการพิเศษ" // && !p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name.Contains("ประถมาภรณ์มงกุฎไทย") // select new // { // ProfileId = p.Id, // Prefix = p.Prefix, // FullName = $"{p.FirstName} {p.LastName}", // Position = p.Position.Name, // Rank = p.AcademicStanding.Name, // GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), // LastInsignia = p.Insignias.Count == 0 ? "" : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, // LastInsigniaId = p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Id, // Salary = p.Salaries.Count() == 0 ? "0" : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, // SalaryCondition = p.Salaries.Count() == 0 ? 0 : p.Salaries.Where(x => x.SalaryDate <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount.Replace(".00", "").Replace(",", "").ToInteger(), // PosNo = p.PositionNumber.Id, // Gender = p.Gendor.IsNull("") == "male" ? "1" : "2", // InsigniaConditionYear = p.Insignias.Where(x => x.Insignia.Name.Contains("ทวีติยาภรณ์ช้างเผือก")).Count() > 0 ? p.Insignias.Where(x => x.Insignia.Name.Contains("ทวีติยาภรณ์ช้างเผือก")).FirstOrDefault() != null ? p.Insignias.Where(x => x.Insignia.Name.Contains("ทวีติยาภรณ์ช้างเผือก")).FirstOrDefault().Year : 9999 : 9999, // RetireDate = p.BirthDate.CalculateRetireDate() // }) // .ToList() // .Where(x => x.RetireDate == CurrentRetireDate && x.SalaryCondition >= 58390 && x.InsigniaConditionYear <= period.Year - 5) // .Select(p => new InsigniaResultSet // { // ProfileId = p.ProfileId, // Prefix = p.Prefix, // FullName = p.FullName, // Position = p.Position, // PosNo = p.PosNo, // Rank = p.Rank, // GovAge = p.GovAge, // LastInsignia = p.LastInsignia, // LastInsigniaId = p.LastInsigniaId, // Salary = p.Salary, // RequestInsignia = GetInsigniaByName("ประถมาภรณ์มงกุฎไทย"), // Seq = 5, // Gender = p.Gender // }) // .ToList(); // // คศ4 ขอ ปม // var s7 = (from p in _dbContext.Set() // .Include(p => p.Position) // // .Include(p => p.PositionNumber) // // .Include(p => p.AcademicStanding) // .Include(p => p.Insignias) // .ThenInclude(i => i.Insignia) // .Include(p => p.Salaries) // where p.IsActive == true // // && allOc.Contains(p.OrganizationOrganization.OCId) // && p.IsLeave == false // && p.DateAppoint != null // // && p.AcademicStanding.Name == "เชี่ยวชาญ" // && !p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name.Contains("ประถมาภรณ์มงกุฎไทย") // select new // { // ProfileId = p.Id, // Prefix = p.Prefix, // FullName = $"{p.FirstName} {p.LastName}", // Position = p.Position.Name, // Rank = p.AcademicStanding.Name, // GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), // LastInsignia = p.Insignias.Count == 0 ? "" : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, // LastInsigniaId = p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Id, // Salary = p.Salaries.Count() == 0 ? "0" : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, // SalaryCondition = p.Salaries.Count() == 0 ? 0 : p.Salaries.Where(x => x.SalaryDate <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount.Replace(".00", "").Replace(",", "").ToInteger(), // PosNo = p.PositionNumber.Id, // Gender = p.Gendor.IsNull("") == "male" ? "1" : "2", // InsigniaConditionYear = p.Insignias.Where(x => x.Insignia.Name.Contains("ทวีติยาภรณ์ช้างเผือก")).Count() > 0 ? p.Insignias.Where(x => x.Insignia.Name.Contains("ทวีติยาภรณ์ช้างเผือก")).FirstOrDefault() != null ? p.Insignias.Where(x => x.Insignia.Name.Contains("ทวีติยาภรณ์ช้างเผือก")).FirstOrDefault().Year : 9999 : 9999 // }) // .ToList() // .Where(x => x.InsigniaConditionYear <= period.Year - 3) // .Select(p => new InsigniaResultSet // { // ProfileId = p.ProfileId, // Prefix = p.Prefix, // FullName = p.FullName, // Position = p.Position, // PosNo = p.PosNo, // Rank = p.Rank, // GovAge = p.GovAge, // LastInsignia = p.LastInsignia, // LastInsigniaId = p.LastInsigniaId, // Salary = p.Salary, // RequestInsignia = GetInsigniaByName("ประถมาภรณ์มงกุฎไทย"), // Seq = 5, // Gender = p.Gender // }) // .ToList(); // // คศ4 ขอ ปชa // var s8 = (from p in _dbContext.Set() // .Include(p => p.Position) // // .Include(p => p.PositionNumber) // // .Include(p => p.AcademicStanding) // .Include(p => p.Insignias) // .ThenInclude(i => i.Insignia) // .Include(p => p.Salaries) // where p.IsActive == true // // && allOc.Contains(p.OrganizationOrganization.OCId) // && p.IsLeave == false // && p.DateAppoint != null // // && p.AcademicStanding.Name == "เชี่ยวชาญ" // && !p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name.Contains("ประถมาภรณ์ช้างเผือก") // select new // { // ProfileId = p.Id, // Prefix = p.Prefix, // FullName = $"{p.FirstName} {p.LastName}", // Position = p.Position.Name, // Rank = p.AcademicStanding.Name, // GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), // LastInsignia = p.Insignias.Count == 0 ? "" : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, // LastInsigniaId = p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Id, // Salary = p.Salaries.Count() == 0 ? "0" : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, // SalaryCondition = p.Salaries.Count() == 0 ? 0 : p.Salaries.Where(x => x.SalaryDate <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount.Replace(".00", "").Replace(",", "").ToInteger(), // PosNo = p.PositionNumber.Id, // Gender = p.Gendor.IsNull("") == "male" ? "1" : "2", // InsigniaConditionYear = p.Insignias.Where(x => x.Insignia.Name.Contains("ประถมาภรณ์มงกุฎไทย")).Count() > 0 ? p.Insignias.Where(x => x.Insignia.Name.Contains("ประถมาภรณ์มงกุฎไทย")).FirstOrDefault() != null ? p.Insignias.Where(x => x.Insignia.Name.Contains("ประถมาภรณ์มงกุฎไทย")).FirstOrDefault().Year : 9999 : 9999 // }) // .ToList() // .Where(x => x.InsigniaConditionYear <= period.Year - 3) // .Select(p => new InsigniaResultSet // { // ProfileId = p.ProfileId, // Prefix = p.Prefix, // FullName = p.FullName, // Position = p.Position, // PosNo = p.PosNo, // Rank = p.Rank, // GovAge = p.GovAge, // LastInsignia = p.LastInsignia, // LastInsigniaId = p.LastInsigniaId, // Salary = p.Salary, // RequestInsignia = GetInsigniaByName("ประถมาภรณ์ช้างเผือก"), // Seq = 6, // Gender = p.Gender // }) // .ToList(); // // คศ4 ขอ มวม // var s9 = (from p in _dbContext.Set() // .Include(p => p.Position) // // .Include(p => p.PositionNumber) // // .Include(p => p.AcademicStanding) // .Include(p => p.Insignias) // .ThenInclude(i => i.Insignia) // .Include(p => p.Salaries) // where p.IsActive == true // // && allOc.Contains(p.OrganizationOrganization.OCId) // && p.IsLeave == false // && p.DateAppoint != null // // && p.AcademicStanding.Name == "เชี่ยวชาญ" // && !p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name.Contains("มหาวชิรมงกุฎ") // select new // { // ProfileId = p.Id, // Prefix = p.Prefix, // FullName = $"{p.FirstName} {p.LastName}", // Position = p.Position.Name, // Rank = p.AcademicStanding.Name, // GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), // LastInsignia = p.Insignias.Count == 0 ? "" : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, // LastInsigniaId = p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Id, // Salary = p.Salaries.Count() == 0 ? "0" : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, // SalaryCondition = p.Salaries.Count() == 0 ? 0 : p.Salaries.Where(x => x.SalaryDate <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount.Replace(".00", "").Replace(",", "").ToInteger(), // PosNo = p.PositionNumber.Id, // Gender = p.Gendor.IsNull("") == "male" ? "1" : "2", // InsigniaConditionYear = p.Insignias.Where(x => x.Insignia.Name.Contains("ประถมาภรณ์ช้างเผือก")).Count() > 0 ? p.Insignias.Where(x => x.Insignia.Name.Contains("ประถมาภรณ์ช้างเผือก")).FirstOrDefault() != null ? p.Insignias.Where(x => x.Insignia.Name.Contains("ประถมาภรณ์ช้างเผือก")).FirstOrDefault().Year : 9999 : 9999 // }) // .ToList() // .Where(x => x.InsigniaConditionYear <= period.Year - 5) // .Select(p => new InsigniaResultSet // { // ProfileId = p.ProfileId, // Prefix = p.Prefix, // FullName = p.FullName, // Position = p.Position, // PosNo = p.PosNo, // Rank = p.Rank, // GovAge = p.GovAge, // LastInsignia = p.LastInsignia, // LastInsigniaId = p.LastInsigniaId, // Salary = p.Salary, // RequestInsignia = GetInsigniaByName("มหาวชิรมงกุฎ"), // Seq = 7, // Gender = p.Gender // }) // .ToList(); // // คัดรายชื่อซ้ำออก // var s2_criteria = s4.Select(p => p.ProfileId).Union(s3.Select(p => p.ProfileId)); // var s3_criteria = s4.Select(p => p.ProfileId).Union(s6.Select(p => p.ProfileId)); // var s5_criteria = s4.Select(p => p.ProfileId); // var s7_criteria = s9.Select(p => p.ProfileId).Union(s8.Select(p => p.ProfileId)); // var s8_criteria = s9.Select(p => p.ProfileId); // var s2_1 = s2.Where(x => s2_criteria.Contains(x.ProfileId)).ToList(); // var s3_1 = s3.Where(x => s3_criteria.Contains(x.ProfileId)).ToList(); // var s5_1 = s5.Where(x => s5_criteria.Contains(x.ProfileId)).ToList(); // var s7_1 = s7.Where(x => s7_criteria.Contains(x.ProfileId)).ToList(); // var s8_1 = s8.Where(x => s8_criteria.Contains(x.ProfileId)).ToList(); // var ret = new List(); // if (s1.Count > 0) // ret.AddRange(s1); // if (s2_1.Count > 0) // ret.AddRange(s2_1); // if (s3_1.Count > 0) // ret.AddRange(s3_1); // if (s4.Count > 0) // ret.AddRange(s4); // if (s5_1.Count > 0) // ret.AddRange(s5_1); // if (s6.Count > 0) // ret.AddRange(s6); // if (s7_1.Count > 0) // ret.AddRange(s7_1); // if (s8_1.Count > 0) // ret.AddRange(s8_1); // if (s9.Count > 0) // ret.AddRange(s9); // return ret.OrderBy(x => x.Seq).ThenBy(x => x.Gender).ThenBy(x => x.ProfileId).ToList(); // } // catch // { // throw; // } // } // public async Task> GetInsigniaCandidateBKK(Guid periodId, Guid ocId) // { // try // { // var result_candidate = new List(); // var type1_level1 = GetInsigniaCandidate_Type1_Level1(periodId, ocId); // var type1_level2 = GetInsigniaCandidate_Type1_Level2(periodId, ocId); // var type1_level3 = GetInsigniaCandidate_Type1_Level3(periodId, ocId); // var type1_level4 = GetInsigniaCandidate_Type1_Level4(periodId, ocId); // var type2_level5 = GetInsigniaCandidate_Type2_Level5(periodId, ocId); // var type2_level6 = GetInsigniaCandidate_Type2_Level6(periodId, ocId); // var type2_level7 = GetInsigniaCandidate_Type2_Level7(periodId, ocId); // var type2_level8 = GetInsigniaCandidate_Type2_Level8(periodId, ocId); // var type2_level9_1 = GetInsigniaCandidate_Type2_Level9_1(periodId, ocId); // var type2_level9_2 = GetInsigniaCandidate_Type2_Level9_2(periodId, ocId); // var type3_level10 = GetInsigniaCandidate_Type3_Level10(periodId, ocId); // var type3_level11 = GetInsigniaCandidate_Type3_Level11(periodId, ocId); // var type4_level10 = GetInsigniaCandidate_Type4_Level10(periodId, ocId); // var type4_level11 = GetInsigniaCandidate_Type4_Level11(periodId, ocId); // // union result // result_candidate.AddRange(type1_level1); // result_candidate.AddRange(type1_level2); // result_candidate.AddRange(type1_level3); // result_candidate.AddRange(type1_level4); // result_candidate.AddRange(type2_level5); // result_candidate.AddRange(type2_level6); // result_candidate.AddRange(type2_level7); // result_candidate.AddRange(type2_level8); // result_candidate.AddRange(type2_level9_1); // result_candidate.AddRange(type2_level9_2); // result_candidate.AddRange(type3_level10); // result_candidate.AddRange(type3_level11); // result_candidate.AddRange(type4_level10); // result_candidate.AddRange(type4_level11); // return result_candidate.OrderBy(x => x.Seq).ThenBy(x => x.Gender).ThenBy(x => x.ProfileId).ToList(); // } // catch // { // throw; // } // } // // // /// กรองรายชื่อผู้มิสิทธิ์ยื่นขอเหรียญจักรพรรดิมาลา // /// // /// รหัสของรอบการขอ // /// รหัสโรงเรียน // /// // // public async List GetCoinCandidate(Guid periodId, Guid ocId) // // { // // try // // { // // var allOc = profileService.GetAllIdByRoot(ocId); // // var period = await _dbContext.Set().FirstOrDefault(p => p.Id == periodId); // // if (period == null) // // throw new Exception(GlobalMessages.InvalidCoinPeriod); // // var oc = await _dbContext.Set().FirstOrDefault(x => x.OCId == ocId); // // if (oc == null) // // throw new Exception(GlobalMessages.InvalidOC); // // var result = await _dbContext.Set().AsQueryable() // // .Include(p => p.Position) // // .Include(p => p.PositionNumber) // // .Include(p => p.AcademicStanding) // // .Include(p => p.Insignias) // // .ThenInclude(i => i.Insignia) // // .Include(p => p.Salaries) // // .Where(p => allOc.Contains(p.OrganizationChart.OCId) // // && p.IsLeave == false // // && p.IsActive == true // // && p.DateAppoint != null // // && p.DateAppoint.Value.CalculateGovAgeInYear(0, 0).ToInteger() >= 25) // // .Select(p => new InsigniaResultSet // // { // // ProfileId = p.Id, // // Prefix = p.Prefix, // // FullName = $"{p.FirstName} {p.LastName}", // // Position = p.Position.Name, // // Rank = p.AcademicStanding.Name, // // GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), // // LastInsignia = p.Insignias.Count == 0 ? "" : p.Insignias.OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, // // Salary = p.Salaries.Count() == 0 ? "0" : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, // // PosNo = p.PositionNumber.Id, // // RequestInsignia = GetInsigniaByName("เหรียญจักรพรรดิมาลา") // // }); // // result = result.Where(x => !x.LastInsignia.Contains("เหรียญจักรพรรดิมาลา")); // // return result.ToList(); // // } // // catch // // { // // throw; // // } // // } // #endregion // #region " From Ming " // // คำนวณระยะเวลาของรอบการยืนขอ // // public async string CalStatusByDate(DateTime start, DateTime end, string year) // // { // // var nowDate = DateTime.Now; // // if (nowDate.Year < Int32.Parse(year) || nowDate.Year > Int32.Parse(year)) return "ไม่ใช้งาน"; // // if (nowDate.Date >= start.Date && nowDate.Date <= end.Date) return "ใช้งาน"; // // return "ไม่ใช้งาน"; // // } // public async Task GetRequestId(Guid period, Guid ocId) // { // try // { // var req = await _dbContext.Set() // .Where(x => x.OrganizationOrganization != null) // .FirstOrDefaultAsync(x => x.Period.Id == period && x.OrganizationOrganization.Id == ocId); // if (req == null) // return null; // return req.Id; // } // catch // { // throw; // } // } // // Save Aprove // public async Task SaveAprove(Guid period, Guid ocId, InsigniaApproveRequest prm) // { // try // { // var req = await GetRequestId(period, ocId); // if (req != null) // { // foreach (var item in prm.Items) // { // var approve = await _dbContext.Set() // .FirstOrDefaultAsync(x => x.Profile.Id == item.ProfileId && x.Request.Id == req); // approve.IsApprove = item.IsApprove; // } // } // // await _dbContext.Set < SaveChanges(); // } // catch // { // throw; // } // } // // เช็คข้อมูล ใน table insignia_request_new // public async Task GetInsigniaRequest(string type, Guid ocId) // { // try // { // var period = await _dbContext.Set() // .Select(p => new // { // Id = p.Id, // Name = p.Name, // Type = p.Type, // Year = p.Year, // //Status = CalStatusByDate(p.StartDate.Date, p.EndDate.Date, p.Year.ToString()) // }) // .FirstOrDefaultAsync(x => x.Type == type && x.Year == DateTime.Now.Year + 1); // if (period == null) // return null; // else // { // var request = await _dbContext.Set() // .Include(x => x.OrganizationOrganization) // .Where(x => x.OrganizationOrganization != null) // .FirstOrDefaultAsync(x => x.Period.Id == period.Id && x.OrganizationOrganization.Id == ocId); // return new InsigniaResults // { // PeriodId = period.Id, // Year = period.Year.ToString(), // Name = period.Name, // RequestStatus = request != null ? request.RequestStatus : null, // OrganizationName = request == null ? "" : request.OrganizationOrganization.Name // }; // } // } // catch // { // throw; // } // } // // public async InsigniaItem GetInsigniaLast(Guid? id) // // { // // try // // { // // var insignia = await _dbContext.Set().AsQueryable() // // .Include(x => x.InsigniaType) // // .Where(x => id != null ? x.Id == id : x.Name.Contains("ตริตาภรณ์มงกุฎไทย")) // // .Select(i => new InsigniaItem // // { // // Id = i.Id, // // Name = i.Name, // // ShortName = i.ShortName, // // Level = i.InsigniaType.Description, // // LevelId = i.InsigniaType.Id // // }).FirstOrDefault(); // // return insignia; // // } // // catch // // { // // throw; // // } // // } // // ดึงข้อมูลเอกสารแนบ // // TODO: return empty for POC Only. // // public async List GetDocFile(string profile) // // { // // // return empty for POC Only. // // return new List(); // // } // // Get Profile // // public async List GetProfileByInstitute(Guid ocId) // // { // // try // // { // // var profiles = (await _dbContext.Set().AsQueryable() // // .Include(x => x.Salaries) // // .Include(x => x.AcademicStanding) // // .Include(x => x.Position) // // .Include(x => x.PositionNumber) // // .Include(x => x.OrganizationChart) // // .Where(x => x.OrganizationChart.OCId == ocId) // // .Select(p => new InsigniaProfileResult // // { // // ProfileId = p.Id, // // Prefix = p.Prefix, // // FullName = $"{p.Prefix}{p.FirstName} {p.LastName}", // // Position = p.Position.Name, // // Rank = p.AcademicStanding.Name, // // Salary = p.Salaries.Count() == 0 ? "0" : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, // // PosNo = p.PositionNumber.Id, // // Organization = p.OrganizationChart.OrganizationName // // })).ToList(); // // return profiles; // // } // // catch // // { // // throw; // // } // // } // // Get Data Table insignai_has_profile // public async Task> InsigniaHasProfile(Guid period, Guid ocId) // { // try // { // var id = await GetRequestId(period, ocId); // if (id != null) // { // var result = (_dbContext.Set() // .Include(x => x.Request) // .Include(x => x.RequestInsignia) // .ThenInclude(x => x.InsigniaType) // .Include(x => x.Profile) // .ThenInclude(x => x.Salaries) // .Include(x => x.Profile) // .ThenInclude(x => x.Position) // .Include(x => x.Profile) // // .ThenInclude(x => x.PositionNumber) // .Include(x => x.Profile) // .ThenInclude(x => x.PositionLevel) // .Include(x => x.Profile) // .ThenInclude(x => x.PositionType) // .Include(x => x.Profile) // .ThenInclude(x => x.OrganizationOrganization) // .Include(x => x.Profile) // // .ThenInclude(x => x.AcademicStanding) // .Include(x => x.Profile) // .ThenInclude(x => x.Insignias) // .ThenInclude(x => x.Insignia) // .Where(h => h.Request.Id == id) // .ToList() // .Select(h => new InsigniaRequestItem // { // ProfileId = h.Profile.Id, // FullName = $"{h.Profile.FirstName} {h.Profile.LastName}", // // Position = h.Profile.Position.Name, // // PosNo = h.Profile.PositionNumber.Id, // // Rank = $"{h.Profile.PositionType.Name}/{h.Profile.PositionLevel.Name}", // Salary = h.Salary.ToString(), // // LastInsignia = h.Profile.Insignias.Count == 0 ? "" : h.Profile.Insignias.OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, // RequestInsignia = h.RequestInsignia.Name, // RequestInsigniaShortName = h.RequestInsignia.ShortName, // Level = h.RequestInsignia.InsigniaType.Name, // IsApprove = h.IsApprove, // RequestDate = h.RequestDate, // RequestNote = "", // // Docs = GetDocFile(h.Profile.Id), // MatchingConditions = JsonConvert.DeserializeObject>(h.MatchingConditions) // })).ToList(); // return result; // } // else // { // return null; // } // } // catch // { // throw; // } // } // // เช็คข้อมูลนำเข้า กับข้อมูลที่อยู่ใน database // // public async List GetDuplicate(List income, Guid period, Guid ocId, bool Duplicate = false) // // { // // try // // { // // var id = GetRequestId(period, ocId); // // var req = await _dbContext.Set().FirstOrDefault(x => x.Id == id); // // if (req == null) // // throw new Exception(GlobalMessages.InvalidInsigniaRequest); // // var profile = await _dbContext.Set().AsQueryable() // // .Include(x => x.RequestInsignia) // // .ThenInclude(x => x.InsigniaType) // // .Include(x => x.Profile) // // .ThenInclude(x => x.Insignias) // // .Where(x => x.Request.Id == id) // // .Select(h => new DuplicateProfile // // { // // ProfileId = h.Profile.Id, // // IsApprove = h.IsApprove, // // RequestQualificationStatus = h.QualificationStatus, // // RequestDocumentStatus = h.DocumentStatus, // // Special = h.Special // // }); // // var newIncome = income.GroupJoin(profile, // // pdb => pdb.Profile.Id, // // dp => dp.ProfileId, // // (pdb, dp) => new // // { // // Profile = pdb.Profile, // // pdb.Profile.Insignias, // // pdb.RequestInsignia, // // //pdb.RequestInsignia.InsigniaType, // // pdb.Salary, // // pdb.RequestDate, // // ProfileDB = dp // // }) // // .ToList() // // .Where(d => !Duplicate ? d.ProfileDB.Count() == 0 : d.ProfileDB.Count() != 0) // // .Select(d => !Duplicate ? new InsigniaRequestProfile // // { // // Request = req, // // Profile = d.Profile, // // RequestInsignia = d.RequestInsignia, // // Salary = d.Salary, // // RequestDate = d.RequestDate, // // } : new InsigniaRequestProfile // // { // // Request = req, // // Profile = d.Profile, // // RequestInsignia = d.RequestInsignia, // // Salary = d.Salary, // // RequestDate = d.RequestDate, // // IsApprove = d.ProfileDB.First().IsApprove, // // QualificationStatus = d.ProfileDB.First().RequestQualificationStatus, // // DocumentStatus = d.ProfileDB.First().RequestDocumentStatus, // // Special = d.ProfileDB.First().Special // // }) // // .ToList(); // // return newIncome; // // } // // catch // // { // // throw; // // } // // } // // ลบข้อมูลใน db ที่ไม่เท่ากับ income // // public async List DeleteProfile(List income, Guid period, Guid ocId) // // { // // try // // { // // var id = GetRequestId(period, ocId); // // var incomProfileId = income.Select(i => i.Profile.Id).ToList(); // // var arrayData = await _dbContext.Set().AsQueryable() // // .Where(i => !(incomProfileId.Contains(i.Profile.Id)) && i.Request.Id == id) // // .ToList(); // // return arrayData; // // } // // catch // // { // // throw; // // } // // } // // insert candidate list // public async Task InsertCandidate(Guid periodId, Guid ocId, List items) // { // try // { // var period = await _dbContext.Set().FirstOrDefaultAsync(x => x.Id == periodId); // if (period == null) // throw new Exception(GlobalMessages.InvalidInsigniaPeriod); // var oc = await _dbContext.Set().FirstOrDefaultAsync(x => x.Id == ocId); // if (oc == null) // throw new Exception(GlobalMessages.DataNotFound); // var req = new InsigniaRequest // { // Period = period, // OrganizationOrganization = oc, // RequestStatus = "st1" // }; // foreach (var item in items) // { // var pf = await _dbContext.Set().FirstOrDefaultAsync(p => p.Id == item.ProfileId); // var req_insignia = await _dbContext.Set().FirstOrDefaultAsync(i => i.Id == item.RequestInsignia.Id); // if (pf != null) // { // req.RequestProfiles.Add(new InsigniaRequestProfile // { // Profile = pf, // RequestInsignia = req_insignia, // Salary = item.Salary == null ? 0 : Decimal.Parse(item.Salary), // RequestDate = DateTime.Now, // MatchingConditions = System.Text.Json.JsonSerializer.Serialize(item.MatchingConditions) // serialize to string // }); // } // } // await _dbContext.Set().AddAsync(req); // await _dbContext.SaveChangesAsync(); // } // catch // { // throw; // } // } // // เช็คข้อมูลใน kp7insignia // // public async ProfileInsignia ListKp7Insignia(string name, string profile, int year) // // { // // try // // { // // var item = await _dbContext.Set().AsQueryable() // // .Include(x => x.Insignia) // // .Include(x => x.Profile) // // .FirstOrDefault(x => x.Profile.Id == profile && // // x.Year == year && // // x.Insignia.Name.Contains(name)); // // return item; // // } // // catch // // { // // throw; // // } // // } // // บันทึกข้อมูลลง กพ.7 // // public async ProfileInsignia InsertKp7Insignia(InsigniaKp7Item kp7, InsigniaProfile profile) // // { // // try // // { // // var pf = await _dbContext.Set().FirstOrDefault(x => x.Id == profile.FkProfileId); // // var insignia = await _dbContext.Set().FirstOrDefault(x => x.Name == profile.InsigniaName); // // var kp7Insignia = new ProfileInsignia // // { // // Profile = pf, // // Year = DateTime.Now.Year, // // DateReceive = kp7.InsigniaDatereceive.Value, // // Insignia = insignia, // // Level = kp7.InsigniaLevel, // // No = profile.InsigniaNo, // // Issue = kp7.InsigniaIssue, // // VolumeNo = kp7.InsigniaVolumeno.Value.ToString(), // // Volume = kp7.InsigniaVolume, // // Section = kp7.InsigniaSection, // // DateStamp = DateTime.Now, // // DateAnnounce = kp7.InsigniaDateannounce.Value, // // Page = profile.InsigniaPage, // // }; // // return kp7Insignia; // // } // // catch // // { // // throw; // // } // // } // // update กพ.7 // // public async ProfileInsignia UpdateKp7Insignia(Guid id) // // { // // try // // { // // var item = await _dbContext.Set().FirstOrDefaultAsync(x => x.Id == id); // // return item; // // } // // catch // // { // // throw; // // } // // } // #endregion // } // }