From d8580104144fa9c3d9c294ace08c241c3a5f976d Mon Sep 17 00:00:00 2001 From: Suphonchai Phoonsawat Date: Fri, 5 Jul 2024 16:49:50 +0700 Subject: [PATCH] =?UTF-8?q?fix=20:=20=E0=B9=80=E0=B8=84=E0=B8=A3=E0=B8=B7?= =?UTF-8?q?=E0=B9=88=E0=B8=AD=E0=B8=87=E0=B8=A3=E0=B8=B2=E0=B8=8A=E0=B8=A2?= =?UTF-8?q?=E0=B9=8C=20=E0=B9=80=E0=B8=81=E0=B9=87=E0=B8=9A=E0=B8=82?= =?UTF-8?q?=E0=B9=89=E0=B8=AD=E0=B8=A1=E0=B8=B9=E0=B8=A5=E0=B8=88=E0=B8=B2?= =?UTF-8?q?=E0=B8=81=E0=B8=97=E0=B8=B0=E0=B9=80=E0=B8=9A=E0=B8=B5=E0=B8=A2?= =?UTF-8?q?=E0=B8=99=E0=B8=9B=E0=B8=A3=E0=B8=B0=E0=B8=A7=E0=B8=B1=E0=B8=95?= =?UTF-8?q?=E0=B8=B4=E0=B8=A5=E0=B8=87=20Field=20****=20=E0=B8=A2=E0=B8=B1?= =?UTF-8?q?=E0=B8=87=E0=B9=84=E0=B8=A1=E0=B9=88=E0=B9=84=E0=B8=94=E0=B9=89?= =?UTF-8?q?=20run=20migrate=20****?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Repositories/InsigniaPeriodsRepository.cs | 9816 ++++++++++------- .../Requests/InsigniaResultSet.cs | 38 +- .../Insignias/InsigniaRequestProfile.cs | 2 + .../BMA.EHR.Insignia.Service.csproj | 89 +- .../Controllers/InsigniaRequestController.cs | 331 +- 5 files changed, 5878 insertions(+), 4398 deletions(-) diff --git a/BMA.EHR.Application/Repositories/InsigniaPeriodsRepository.cs b/BMA.EHR.Application/Repositories/InsigniaPeriodsRepository.cs index 11ff2103..29aadd1d 100644 --- a/BMA.EHR.Application/Repositories/InsigniaPeriodsRepository.cs +++ b/BMA.EHR.Application/Repositories/InsigniaPeriodsRepository.cs @@ -1,6 +1,5 @@ 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; @@ -11,6 +10,8 @@ using Microsoft.EntityFrameworkCore; using Newtonsoft.Json; using BMA.EHR.Domain.Models.Organizations; using Amazon.S3.Model.Internal.MarshallTransformations; +using BMA.EHR.Application.Responses.Profiles; +using ProfileInsignia = BMA.EHR.Domain.Models.HR.ProfileInsignia; namespace BMA.EHR.Application.Repositories { @@ -24,9 +25,9 @@ namespace BMA.EHR.Application.Repositories public InsigniaPeriodsRepository(IApplicationDBContext dbContext, - MinIOService documentService, - IHttpContextAccessor httpContextAccessor, - UserProfileRepository userProfileRepository) : base(dbContext, httpContextAccessor) + MinIOService documentService, + IHttpContextAccessor httpContextAccessor, + UserProfileRepository userProfileRepository) : base(dbContext, httpContextAccessor) { _dbContext = dbContext; _httpContextAccessor = httpContextAccessor; @@ -57,7 +58,8 @@ namespace BMA.EHR.Application.Repositories if (oc != null) ret.Add(oc.Id); - var child = _dbContext.Set().AsQueryable().Where(x => x.Parent != null && x.Parent.Id == id).ToList(); + var child = _dbContext.Set().AsQueryable() + .Where(x => x.Parent != null && x.Parent.Id == id).ToList(); if (child.Any()) { foreach (var item in child) @@ -79,16 +81,16 @@ namespace BMA.EHR.Application.Repositories try { var insignia = _insigniaLists - .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 - }) - .FirstOrDefault(); + .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 + }) + .FirstOrDefault(); //var insignia = _dbContext.Set() // .Include(x => x.InsigniaType) @@ -116,16 +118,16 @@ namespace BMA.EHR.Application.Repositories try { var insignia = _insigniaLists - .Where(x => x.Id == id) - .Select(i => new InsigniaItem - { - Id = i.Id, - Name = i.Name, - ShortName = i.ShortName, - Level = i.InsigniaType.Name, - LevelId = i.InsigniaType.Id - }) - .FirstOrDefault(); + .Where(x => x.Id == id) + .Select(i => new InsigniaItem + { + Id = i.Id, + Name = i.Name, + ShortName = i.ShortName, + Level = i.InsigniaType.Name, + LevelId = i.InsigniaType.Id + }) + .FirstOrDefault(); //var insignia = _dbContext.Set() // .Include(x => x.InsigniaType) @@ -152,12 +154,14 @@ namespace BMA.EHR.Application.Repositories { try { - var last_ins = _dbContext.Set().FirstOrDefault(x => x.Name.ToLower().Trim() == last.ToLower().Trim()); + var last_ins = _dbContext.Set() + .FirstOrDefault(x => x.Name.ToLower().Trim() == last.ToLower().Trim()); if (last_ins == null) return true; - var req_ins = _dbContext.Set().FirstOrDefault(x => x.Name.ToLower().Trim() == request.ToLower().Trim()); + var req_ins = _dbContext.Set() + .FirstOrDefault(x => x.Name.ToLower().Trim() == request.ToLower().Trim()); if (req_ins == null) throw new Exception("Invalid Request Insignia!!"); @@ -176,29 +180,39 @@ namespace BMA.EHR.Application.Repositories return (last.Contains("ตริตาภรณ์มงกุฎไทย")) ? false : true; else if (request.Contains("ทวีติยาภรณ์มงกุฎไทย")) return (last.Contains("ตริตาภรณ์มงกุฎไทย") || - last.Contains("ตริตาภรณ์ช้างเผือก")) ? false : true; + last.Contains("ตริตาภรณ์ช้างเผือก")) + ? false + : true; else if (request.Contains("ทวีติยาภรณ์ช้างเผือก")) return (last.Contains("ตริตาภรณ์มงกุฎไทย") || last.Contains("ตริตาภรณ์ช้างเผือก") || - last.Contains("ทวีติยาภรณ์มงกุฎไทย")) ? false : true; + last.Contains("ทวีติยาภรณ์มงกุฎไทย")) + ? false + : true; else if (request.Contains("ประถมาภรณ์มงกุฎไทย")) return (last.Contains("ตริตาภรณ์มงกุฎไทย") || last.Contains("ตริตาภรณ์ช้างเผือก") || last.Contains("ทวีติยาภรณ์มงกุฎไทย") || - last.Contains("ทวีติยาภรณ์ช้างเผือก")) ? false : true; + last.Contains("ทวีติยาภรณ์ช้างเผือก")) + ? false + : true; else if (request.Contains("ประถมาภรณ์ช้างเผือก")) return (last.Contains("ตริตาภรณ์มงกุฎไทย") || last.Contains("ตริตาภรณ์ช้างเผือก") || last.Contains("ทวีติยาภรณ์มงกุฎไทย") || last.Contains("ทวีติยาภรณ์ช้างเผือก") || - last.Contains("ประถมาภรณ์มงกุฎไทย")) ? false : true; + last.Contains("ประถมาภรณ์มงกุฎไทย")) + ? false + : true; else if (request.Contains("มหาวชิรมงกุฎ")) return (last.Contains("ตริตาภรณ์มงกุฎไทย") || last.Contains("ตริตาภรณ์ช้างเผือก") || last.Contains("ทวีติยาภรณ์มงกุฎไทย") || last.Contains("ทวีติยาภรณ์ช้างเผือก") || last.Contains("ประถมาภรณ์มงกุฎไทย") || - last.Contains("ประถมาภรณ์ช้างเผือก")) ? false : true; + last.Contains("ประถมาภรณ์ช้างเผือก")) + ? false + : true; else return false; } @@ -227,9 +241,9 @@ namespace BMA.EHR.Application.Repositories var ce_year = year; var insignia = _dbContext.Set() - .Where(x => x.ProfileId == profileId) - .Where(x => x.Year == ce_year - 1) - .FirstOrDefault(); + .Where(x => x.ProfileId == profileId) + .Where(x => x.Year == ce_year - 1) + .FirstOrDefault(); if (insignia != null) { @@ -244,7 +258,7 @@ namespace BMA.EHR.Application.Repositories else { var req = _dbContext.Set() - .FirstOrDefault(x => x.Request.Period.Id == prev_period.Id && x.ProfileId == profileId); + .FirstOrDefault(x => x.Request.Period.Id == prev_period.Id && x.ProfileId == profileId); if (req != null) return false; @@ -267,7 +281,8 @@ namespace BMA.EHR.Application.Repositories /// /// /// - public async Task> GetEmployeeInsignia_Type1(Guid periodId, Guid ocId) + public async Task> GetEmployeeInsignia_Type1(Guid periodId, Guid ocId, + List allProfilesByRoot) { try { @@ -285,236 +300,342 @@ namespace BMA.EHR.Application.Repositories var CurrentRetireDate = new DateTime(period.Year, 9, 30); - var coinInsignia = await _dbContext.Set().FirstOrDefaultAsync(x => x.Name.Contains("เหรียญจักรพรรดิมาลา")); + var coinInsignia = await _dbContext.Set() + .FirstOrDefaultAsync(x => x.Name.Contains("เหรียญจักรพรรดิมาลา")); - var allProfilesByRoot = (await _userProfileRepository.GetEmployeeProfileByRootIdAsync(ocId, AccessToken)); + // var allProfilesByRoot = + // (await _userProfileRepository.GetEmployeeProfileByRootIdAsync(ocId, AccessToken)); var inst_profile = allProfilesByRoot - .Select(p => new - { - ProfileId = p.Id, - Prefix = p.Prefix ?? "", - FullName = $"{(p.Prefix ?? "")}{p.FirstName} {p.LastName}", - Position = p.Position ?? "", - Rank = p.PosLevel == null ? null : p.PosLevel.PosLevelName, - ProfileDateAppoint = p.DateAppoint.Value, - GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), - PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? "" : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, - PositionLevelId = p.PosLevel == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.PosLevel.Id, - PositionLevelName = p.PosLevel == null ? null : p.PosLevel.PosLevelName, - PositionTypeId = p.PosType == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.PosType.Id, - PositionTypeName = p.PosType == null ? null : p.PosType.PosTypeName, - Gender = p.Gender ?? "", - LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? null : GetInsigniaById(p.ProfileInsignia!.OrderByDescending(x => x.Year).FirstOrDefault()!.InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.ProfileInsignia!.OrderByDescending(x => x.Year).FirstOrDefault()!.InsigniaId.Value, - Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.Amount, - //SalaryCondition = p.ProfileSalary == null ? 0 : p.ProfileSalary.Amount, - SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault() != null ? - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount : - p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, - PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PositionSalaryAmount, - }); + .Select(p => new + { + ProfileId = p.Id, + p.CitizenId, + p.FirstName, + p.LastName, + p.BirthDate, + p.DateAppoint, + Prefix = p.Prefix ?? "", + FullName = $"{(p.Prefix ?? "")}{p.FirstName} {p.LastName}", + Position = p.Position ?? "", + Rank = p.PosLevel == null ? null : p.PosLevel.PosLevelName, + ProfileDateAppoint = p.DateAppoint.Value, + GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), + PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? "" + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, + PositionLevelId = p.PosLevel == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosLevel.Id, + PositionLevelName = p.PosLevel == null ? null : p.PosLevel.PosLevelName, + PositionTypeId = p.PosType == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosType.Id, + PositionTypeName = p.PosType == null ? null : p.PosType.PosTypeName, + Gender = p.Gender ?? "", + LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 + ? null + : GetInsigniaById(p.ProfileInsignia!.OrderByDescending(x => x.Year).FirstOrDefault()! + .InsigniaId.Value).Name, + LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.ProfileInsignia!.OrderByDescending(x => x.Year).FirstOrDefault()!.InsigniaId.Value, + Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? 0 + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.Amount, + //SalaryCondition = p.ProfileSalary == null ? 0 : p.ProfileSalary.Amount, + SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : + p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault() != null ? p.ProfileSalary + .Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault().Amount : + p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, + PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? 0 + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PositionSalaryAmount, + }); // check วันที่บรรจะต้องน้อยกว่า 29/5/ปี-8 ขอ บม. var s1 = ((from p in inst_profile - where p.ProfileDateAppoint <= new DateTime(period.Year - 8, 5, 29) + where p.ProfileDateAppoint <= new DateTime(period.Year - 8, 5, 29) && p.LastInsigniaId == Guid.Parse("00000000-0000-0000-0000-000000000000") && (p.SalaryCondition >= 8340 - && p.SalaryCondition < 15050) - 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 - 8, 5, 29).ToThaiFullDate3() }", - Result = $"วันที่บรรจุเข้ารับราชการ { p.ProfileDateAppoint.ToThaiFullDate3() }" - }, - new MatchingCondition - { - Condition = $"2.ได้รับอัตราค่าจ้างตั้งแต่อัตราเงินเดือนขั้นต่ำของข้าราขการพลเรือนระดับปฏิบัติการ (8,340) แต่ไม่ถึงขั้นต่ำของอัตราเงินเดือนข้าราชการพลเรือนระดับชำนาญการ (15,050)", - Result = $"อัตราค่าจ้าง { p.SalaryCondition.Value.ToString("#,##0") }" - }, - } - })).ToList(); + && p.SalaryCondition < 15050) + select p) + .ToList() + .Select(p => new InsigniaResultSet + { + ProfileId = p.ProfileId, + CitizenId = p.CitizenId, + FirstName = p.FirstName, + LastName = p.LastName, + PosLevelName = p.PositionLevelName, + PosTypeName = p.PositionTypeName, + PositionSalary = p.PostionSalaryAmount, + BirthDate = p.BirthDate, + DateAppoint = p.DateAppoint, + 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 - 8, 5, 29).ToThaiFullDate3()}", + Result = $"วันที่บรรจุเข้ารับราชการ {p.ProfileDateAppoint.ToThaiFullDate3()}" + }, + new MatchingCondition + { + Condition = + $"2.ได้รับอัตราค่าจ้างตั้งแต่อัตราเงินเดือนขั้นต่ำของข้าราขการพลเรือนระดับปฏิบัติการ (8,340) แต่ไม่ถึงขั้นต่ำของอัตราเงินเดือนข้าราชการพลเรือนระดับชำนาญการ (15,050)", + Result = $"อัตราค่าจ้าง {p.SalaryCondition.Value.ToString("#,##0")}" + }, + } + })).ToList(); - var bcpRoyal = await _dbContext.Set().FirstOrDefaultAsync(x => x.Name.Contains("เบญจมาภรณ์ช้างเผือก")); - var bcmRoyal = await _dbContext.Set().FirstOrDefaultAsync(x => x.Name.Contains("เบญจมาภรณ์มงกุฎไทย")); + var bcpRoyal = await _dbContext.Set() + .FirstOrDefaultAsync(x => x.Name.Contains("เบญจมาภรณ์ช้างเผือก")); + var bcmRoyal = await _dbContext.Set() + .FirstOrDefaultAsync(x => x.Name.Contains("เบญจมาภรณ์มงกุฎไทย")); - var jtmRoyal = await _dbContext.Set().FirstOrDefaultAsync(x => x.Name.Contains("จัตุรถาภรณ์มงกุฎไทย")); + var jtmRoyal = await _dbContext.Set() + .FirstOrDefaultAsync(x => x.Name.Contains("จัตุรถาภรณ์มงกุฎไทย")); var s2 = (from p in allProfilesByRoot - where p.ProfileInsignia != null - && p.ProfileInsignia.Count > 0 - && (p.ProfileInsignia.Where(x => x.InsigniaId.Value != coinInsignia.Id && - x.InsigniaId.Value == bcpRoyal.Id) - .ToList() - .Count() == 0) - //where !(p.ProfileInsignia.Where(x => x.InsigniaId != coinInsignia.Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId == bcpRoyal.Id) - select new - { - ProfileId = p.Id, - Prefix = p.Prefix ?? "", - FullName = $"{(p.Prefix ?? "")}{p.FirstName} {p.LastName}", - Position = p.Position ?? "", - Rank = p.PosLevel == null ? null : p.PosLevel.PosLevelName, - ProfileDateAppoint = p.DateAppoint.Value, - GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), - PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? "" : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, - PositionLevelId = p.PosLevel == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.PosLevel.Id, - PositionLevelName = p.PosLevel == null ? null : p.PosLevel.PosLevelName, - PositionTypeId = p.PosType == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.PosType.Id, - PositionTypeName = p.PosType == null ? null : p.PosType.PosTypeName, - Gender = p.Gender ?? "", - LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? null : GetInsigniaById(p.ProfileInsignia!.OrderByDescending(x => x.Year).FirstOrDefault()!.InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.ProfileInsignia!.OrderByDescending(x => x.Year).FirstOrDefault()!.InsigniaId.Value, - Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.Amount, - //SalaryCondition = p.ProfileSalary == null ? 0 : p.ProfileSalary.Amount, - SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault() != null ? - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount : - p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, - PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PositionSalaryAmount, + where p.ProfileInsignia != null + && p.ProfileInsignia.Count > 0 + && (p.ProfileInsignia.Where(x => x.InsigniaId.Value != coinInsignia.Id && + x.InsigniaId.Value == bcpRoyal.Id) + .ToList() + .Count() == 0) + //where !(p.ProfileInsignia.Where(x => x.InsigniaId != coinInsignia.Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId == bcpRoyal.Id) + select new + { + ProfileId = p.Id, + p.CitizenId, + p.FirstName, + p.LastName, + p.BirthDate, + p.DateAppoint, + Prefix = p.Prefix ?? "", + FullName = $"{(p.Prefix ?? "")}{p.FirstName} {p.LastName}", + Position = p.Position ?? "", + Rank = p.PosLevel == null ? null : p.PosLevel.PosLevelName, + ProfileDateAppoint = p.DateAppoint.Value, + GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), + PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? "" + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, + PositionLevelId = p.PosLevel == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosLevel.Id, + PositionLevelName = p.PosLevel == null ? null : p.PosLevel.PosLevelName, + PositionTypeId = p.PosType == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosType.Id, + PositionTypeName = p.PosType == null ? null : p.PosType.PosTypeName, + Gender = p.Gender ?? "", + LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 + ? null + : GetInsigniaById(p.ProfileInsignia!.OrderByDescending(x => x.Year).FirstOrDefault()! + .InsigniaId.Value).Name, + LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.ProfileInsignia!.OrderByDescending(x => x.Year).FirstOrDefault()!.InsigniaId.Value, + Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? 0 + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.Amount, + //SalaryCondition = p.ProfileSalary == null ? 0 : p.ProfileSalary.Amount, + SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : + p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault() != null ? p.ProfileSalary + .Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault().Amount : + p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, + PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? 0 + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()! + .PositionSalaryAmount, - IsHigherLevel = IsHigherLevel(GetInsigniaById(p.ProfileInsignia.ToList() - .Where(x => x.InsigniaId.Value != coinInsignia.Id) - .OrderByDescending(x => x.Year) - .FirstOrDefault().InsigniaId.Value).Name, - "เบญจมาภรณ์ช้างเผือก"), + IsHigherLevel = IsHigherLevel(GetInsigniaById(p.ProfileInsignia.ToList() + .Where(x => x.InsigniaId.Value != coinInsignia.Id) + .OrderByDescending(x => x.Year) + .FirstOrDefault().InsigniaId.Value).Name, + "เบญจมาภรณ์ช้างเผือก"), - FirstRecvInsigniaYear = p.ProfileInsignia == null ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == bcmRoyal.Id).OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == bcmRoyal.Id).OrderBy(x => x.Year).FirstOrDefault().Year, - }) - .ToList() - .Where(x => (x.SalaryCondition >= 8340 && x.SalaryCondition < 10150) && !x.IsHigherLevel) - .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.ได้รับอัตราค่าจ้างตั้งแต่อัตราเงินเดือนขั้นต่ำของข้าราขการพลเรือนระดับปฏิบัติการ (8,340) แต่ไม่ถึงขั้นต่ำของอัตราเงินเดือนข้าราชการพลเรือนระดับชำนาญการ (15,050)", - Result = $"อัตราค่าจ้าง { p.SalaryCondition.Value.ToString("#,##0") }" - }, - new MatchingCondition - { - Condition = $"2.ได้ บ.ม. มาแล้วไม่น้อยกว่า 5 ปี บริบูรณ์ (ได้รับ บ.ม. ก่อนวันที่ {(new DateTime(period.Year - 5, 7, 28)).ToThaiFullDate3()})", - Result = $"ได้รับ บ.ม. ในปี { p.FirstRecvInsigniaYear }" - } - } - }) - .ToList(); + FirstRecvInsigniaYear = p.ProfileInsignia == null ? 0 : + p.ProfileInsignia.Where(x => x.InsigniaId.Value == bcmRoyal.Id).OrderBy(x => x.Year) + .FirstOrDefault() == null ? 0 : + p.ProfileInsignia.Where(x => x.InsigniaId.Value == bcmRoyal.Id).OrderBy(x => x.Year) + .FirstOrDefault().Year, + }) + .ToList() + .Where(x => (x.SalaryCondition >= 8340 && x.SalaryCondition < 10150) && !x.IsHigherLevel) + .Where(x => x.FirstRecvInsigniaYear != 0 && x.FirstRecvInsigniaYear <= period.Year - 5) + .Select(p => new InsigniaResultSet + { + ProfileId = p.ProfileId, + CitizenId = p.CitizenId, + FirstName = p.FirstName, + LastName = p.LastName, + PosLevelName = p.PositionLevelName, + PosTypeName = p.PositionTypeName, + PositionSalary = p.PostionSalaryAmount, + BirthDate = p.BirthDate, + DateAppoint = p.DateAppoint, + 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.ได้รับอัตราค่าจ้างตั้งแต่อัตราเงินเดือนขั้นต่ำของข้าราขการพลเรือนระดับปฏิบัติการ (8,340) แต่ไม่ถึงขั้นต่ำของอัตราเงินเดือนข้าราชการพลเรือนระดับชำนาญการ (15,050)", + Result = $"อัตราค่าจ้าง {p.SalaryCondition.Value.ToString("#,##0")}" + }, + new MatchingCondition + { + Condition = + $"2.ได้ บ.ม. มาแล้วไม่น้อยกว่า 5 ปี บริบูรณ์ (ได้รับ บ.ม. ก่อนวันที่ {(new DateTime(period.Year - 5, 7, 28)).ToThaiFullDate3()})", + Result = $"ได้รับ บ.ม. ในปี {p.FirstRecvInsigniaYear}" + } + } + }) + .ToList(); var s3 = (from p in allProfilesByRoot - where p.ProfileInsignia != null - && p.ProfileInsignia.Count > 0 - && (p.ProfileInsignia.Where(x => x.InsigniaId.Value != coinInsignia.Id && - x.InsigniaId.Value == jtmRoyal.Id) - .ToList() - .Count() == 0) - //where !(p.ProfileInsignia.Where(x => x.InsigniaId != coinInsignia.Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId == jtmRoyal.Id) - select new - { - ProfileId = p.Id, - Prefix = p.Prefix ?? "", - FullName = $"{(p.Prefix ?? "")}{p.FirstName} {p.LastName}", - Position = p.Position ?? "", - Rank = p.PosLevel == null ? null : p.PosLevel.PosLevelName, - ProfileDateAppoint = p.DateAppoint.Value, - GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), - PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? "" : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, - PositionLevelId = p.PosLevel == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.PosLevel.Id, - PositionLevelName = p.PosLevel == null ? null : p.PosLevel.PosLevelName, - PositionTypeId = p.PosType == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.PosType.Id, - PositionTypeName = p.PosType == null ? null : p.PosType.PosTypeName, - Gender = p.Gender ?? "", - LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? null : GetInsigniaById(p.ProfileInsignia!.OrderByDescending(x => x.Year).FirstOrDefault()!.InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.ProfileInsignia!.OrderByDescending(x => x.Year).FirstOrDefault()!.InsigniaId.Value, - Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.Amount, - //SalaryCondition = p.ProfileSalary == null ? 0 : p.ProfileSalary.Amount, - SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault() != null ? - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount : - p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, + where p.ProfileInsignia != null + && p.ProfileInsignia.Count > 0 + && (p.ProfileInsignia.Where(x => x.InsigniaId.Value != coinInsignia.Id && + x.InsigniaId.Value == jtmRoyal.Id) + .ToList() + .Count() == 0) + //where !(p.ProfileInsignia.Where(x => x.InsigniaId != coinInsignia.Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId == jtmRoyal.Id) + select new + { + ProfileId = p.Id, + p.CitizenId, + p.FirstName, + p.LastName, + p.BirthDate, + p.DateAppoint, + Prefix = p.Prefix ?? "", + FullName = $"{(p.Prefix ?? "")}{p.FirstName} {p.LastName}", + Position = p.Position ?? "", + Rank = p.PosLevel == null ? null : p.PosLevel.PosLevelName, + ProfileDateAppoint = p.DateAppoint.Value, + GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), + PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? "" + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, + PositionLevelId = p.PosLevel == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosLevel.Id, + PositionLevelName = p.PosLevel == null ? null : p.PosLevel.PosLevelName, + PositionTypeId = p.PosType == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosType.Id, + PositionTypeName = p.PosType == null ? null : p.PosType.PosTypeName, + Gender = p.Gender ?? "", + LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 + ? null + : GetInsigniaById(p.ProfileInsignia!.OrderByDescending(x => x.Year).FirstOrDefault()! + .InsigniaId.Value).Name, + LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.ProfileInsignia!.OrderByDescending(x => x.Year).FirstOrDefault()!.InsigniaId.Value, + Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? 0 + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.Amount, + //SalaryCondition = p.ProfileSalary == null ? 0 : p.ProfileSalary.Amount, + SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : + p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault() != null ? p.ProfileSalary + .Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault().Amount : + p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, - PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PositionSalaryAmount, + PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? 0 + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()! + .PositionSalaryAmount, - IsHigherLevel = IsHigherLevel(GetInsigniaById(p.ProfileInsignia.ToList() - .Where(x => x.InsigniaId.Value != coinInsignia.Id) - .OrderByDescending(x => x.Year) - .FirstOrDefault().InsigniaId.Value).Name, - "จัตุรถาภรณ์มงกุฎไทย"), + IsHigherLevel = IsHigherLevel(GetInsigniaById(p.ProfileInsignia.ToList() + .Where(x => x.InsigniaId.Value != coinInsignia.Id) + .OrderByDescending(x => x.Year) + .FirstOrDefault().InsigniaId.Value).Name, + "จัตุรถาภรณ์มงกุฎไทย"), - FirstRecvInsigniaYear = p.ProfileInsignia == null ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == bcmRoyal.Id).OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == bcmRoyal.Id).OrderBy(x => x.Year).FirstOrDefault().Year, - }) - .ToList() - .Where(x => (x.SalaryCondition >= 8340 && x.SalaryCondition < 10150) && !x.IsHigherLevel) - .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.ได้รับอัตราค่าจ้างตั้งแต่อัตราเงินเดือนขั้นต่ำของข้าราขการพลเรือนระดับปฏิบัติการ (8,340) แต่ไม่ถึงขั้นต่ำของอัตราเงินเดือนข้าราชการพลเรือนระดับชำนาญการ (15,050)", - Result = $"อัตราค่าจ้าง { p.SalaryCondition.Value.ToString("#,##0") }" - }, - new MatchingCondition - { - Condition = $"2.ได้ บ.ช. มาแล้วไม่น้อยกว่า 5 ปี บริบูรณ์ (ได้รับ บ.ช. ก่อนวันที่ {(new DateTime(period.Year - 5, 7, 28)).ToThaiFullDate3()})", - Result = $"ได้รับ บ.ช. ในปี { p.FirstRecvInsigniaYear }" - } - } - }) - .ToList(); + FirstRecvInsigniaYear = p.ProfileInsignia == null ? 0 : + p.ProfileInsignia.Where(x => x.InsigniaId.Value == bcmRoyal.Id).OrderBy(x => x.Year) + .FirstOrDefault() == null ? 0 : + p.ProfileInsignia.Where(x => x.InsigniaId.Value == bcmRoyal.Id).OrderBy(x => x.Year) + .FirstOrDefault().Year, + }) + .ToList() + .Where(x => (x.SalaryCondition >= 8340 && x.SalaryCondition < 10150) && !x.IsHigherLevel) + .Where(x => x.FirstRecvInsigniaYear != 0 && x.FirstRecvInsigniaYear <= period.Year - 5) + .Select(p => new InsigniaResultSet + { + ProfileId = p.ProfileId, + CitizenId = p.CitizenId, + FirstName = p.FirstName, + LastName = p.LastName, + PosLevelName = p.PositionLevelName, + PosTypeName = p.PositionTypeName, + PositionSalary = p.PostionSalaryAmount, + BirthDate = p.BirthDate, + DateAppoint = p.DateAppoint, + 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.ได้รับอัตราค่าจ้างตั้งแต่อัตราเงินเดือนขั้นต่ำของข้าราขการพลเรือนระดับปฏิบัติการ (8,340) แต่ไม่ถึงขั้นต่ำของอัตราเงินเดือนข้าราชการพลเรือนระดับชำนาญการ (15,050)", + Result = $"อัตราค่าจ้าง {p.SalaryCondition.Value.ToString("#,##0")}" + }, + new MatchingCondition + { + Condition = + $"2.ได้ บ.ช. มาแล้วไม่น้อยกว่า 5 ปี บริบูรณ์ (ได้รับ บ.ช. ก่อนวันที่ {(new DateTime(period.Year - 5, 7, 28)).ToThaiFullDate3()})", + Result = $"ได้รับ บ.ช. ในปี {p.FirstRecvInsigniaYear}" + } + } + }) + .ToList(); var result_candidate = new List(); @@ -586,7 +707,8 @@ namespace BMA.EHR.Application.Repositories /// /// /// - public async Task> GetEmployeeInsignia_Type2(Guid periodId, Guid ocId) + public async Task> GetEmployeeInsignia_Type2(Guid periodId, Guid ocId, + List allProfilesByRoot) { try { @@ -604,234 +726,341 @@ namespace BMA.EHR.Application.Repositories var CurrentRetireDate = new DateTime(period.Year, 9, 30); - var coinInsignia = await _dbContext.Set().FirstOrDefaultAsync(x => x.Name.Contains("เหรียญจักรพรรดิมาลา")); + var coinInsignia = await _dbContext.Set() + .FirstOrDefaultAsync(x => x.Name.Contains("เหรียญจักรพรรดิมาลา")); - var allProfilesByRoot = (await _userProfileRepository.GetEmployeeProfileByRootIdAsync(ocId, AccessToken)); + // var allProfilesByRoot = + // (await _userProfileRepository.GetEmployeeProfileByRootIdAsync(ocId, AccessToken)); var inst_profile = allProfilesByRoot - .Select(p => new - { - ProfileId = p.Id, - Prefix = p.Prefix ?? "", - FullName = $"{(p.Prefix ?? "")}{p.FirstName} {p.LastName}", - Position = p.Position ?? "", - Rank = p.PosLevel == null ? null : p.PosLevel.PosLevelName, - ProfileDateAppoint = p.DateAppoint.Value, - GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), - PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? "" : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, - PositionLevelId = p.PosLevel == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.PosLevel.Id, - PositionLevelName = p.PosLevel == null ? null : p.PosLevel.PosLevelName, - PositionTypeId = p.PosType == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.PosType.Id, - PositionTypeName = p.PosType == null ? null : p.PosType.PosTypeName, - Gender = p.Gender ?? "", - LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? null : GetInsigniaById(p.ProfileInsignia!.OrderByDescending(x => x.Year).FirstOrDefault()!.InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.ProfileInsignia!.OrderByDescending(x => x.Year).FirstOrDefault()!.InsigniaId.Value, - Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.Amount, - //SalaryCondition = p.ProfileSalary == null ? 0 : p.ProfileSalary.Amount, - SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault() != null ? - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount : - p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, - PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PositionSalaryAmount, - }); + .Select(p => new + { + ProfileId = p.Id, + p.CitizenId, + p.FirstName, + p.LastName, + p.BirthDate, + p.DateAppoint, + Prefix = p.Prefix ?? "", + FullName = $"{(p.Prefix ?? "")}{p.FirstName} {p.LastName}", + Position = p.Position ?? "", + Rank = p.PosLevel == null ? null : p.PosLevel.PosLevelName, + ProfileDateAppoint = p.DateAppoint.Value, + GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), + PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? "" + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, + PositionLevelId = p.PosLevel == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosLevel.Id, + PositionLevelName = p.PosLevel == null ? null : p.PosLevel.PosLevelName, + PositionTypeId = p.PosType == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosType.Id, + PositionTypeName = p.PosType == null ? null : p.PosType.PosTypeName, + Gender = p.Gender ?? "", + LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 + ? null + : GetInsigniaById(p.ProfileInsignia!.OrderByDescending(x => x.Year).FirstOrDefault()! + .InsigniaId.Value).Name, + LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.ProfileInsignia!.OrderByDescending(x => x.Year).FirstOrDefault()!.InsigniaId.Value, + Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? 0 + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.Amount, + //SalaryCondition = p.ProfileSalary == null ? 0 : p.ProfileSalary.Amount, + SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : + p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault() != null ? p.ProfileSalary + .Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault().Amount : + p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, + PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? 0 + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PositionSalaryAmount, + }); var s1 = ((from p in inst_profile - where p.ProfileDateAppoint <= new DateTime(period.Year - 8, 5, 29) + where p.ProfileDateAppoint <= new DateTime(period.Year - 8, 5, 29) && p.LastInsigniaId == Guid.Parse("00000000-0000-0000-0000-000000000000") && (p.SalaryCondition >= 15050) - 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 - 8, 5, 29).ToThaiFullDate3() }", - Result = $"วันที่บรรจุเข้ารับราชการ { p.ProfileDateAppoint.ToThaiFullDate3() }" - }, - new MatchingCondition - { - Condition = $"2.ได้รับอัตราค่าจ้างตั้งแต่อัตราเงินเดือนขั้นต่ำของข้าราขการพลเรือนระดับชำนาญการขึ้นไป (15,050)", - Result = $"อัตราค่าจ้าง { p.SalaryCondition.Value.ToString("#,##0") }" - }, - } - })).ToList(); + select p) + .ToList() + .Select(p => new InsigniaResultSet + { + ProfileId = p.ProfileId, + CitizenId = p.CitizenId, + FirstName = p.FirstName, + LastName = p.LastName, + PosLevelName = p.PositionLevelName, + PosTypeName = p.PositionTypeName, + PositionSalary = p.PostionSalaryAmount, + BirthDate = p.BirthDate, + DateAppoint = p.DateAppoint, + 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 - 8, 5, 29).ToThaiFullDate3()}", + Result = $"วันที่บรรจุเข้ารับราชการ {p.ProfileDateAppoint.ToThaiFullDate3()}" + }, + new MatchingCondition + { + Condition = + $"2.ได้รับอัตราค่าจ้างตั้งแต่อัตราเงินเดือนขั้นต่ำของข้าราขการพลเรือนระดับชำนาญการขึ้นไป (15,050)", + Result = $"อัตราค่าจ้าง {p.SalaryCondition.Value.ToString("#,##0")}" + }, + } + })).ToList(); - var bcpRoyal = await _dbContext.Set().FirstOrDefaultAsync(x => x.Name.Contains("เบญจมาภรณ์ช้างเผือก")); - var bcmRoyal = await _dbContext.Set().FirstOrDefaultAsync(x => x.Name.Contains("เบญจมาภรณ์มงกุฎไทย")); + var bcpRoyal = await _dbContext.Set() + .FirstOrDefaultAsync(x => x.Name.Contains("เบญจมาภรณ์ช้างเผือก")); + var bcmRoyal = await _dbContext.Set() + .FirstOrDefaultAsync(x => x.Name.Contains("เบญจมาภรณ์มงกุฎไทย")); - var jtcRoyal = await _dbContext.Set().FirstOrDefaultAsync(x => x.Name.Contains("จัตุรถาภรณ์ช้างเผือก")); - var jtmRoyal = await _dbContext.Set().FirstOrDefaultAsync(x => x.Name.Contains("จัตุรถาภรณ์มงกุฎไทย")); + var jtcRoyal = await _dbContext.Set() + .FirstOrDefaultAsync(x => x.Name.Contains("จัตุรถาภรณ์ช้างเผือก")); + var jtmRoyal = await _dbContext.Set() + .FirstOrDefaultAsync(x => x.Name.Contains("จัตุรถาภรณ์มงกุฎไทย")); var s2 = (from p in allProfilesByRoot - where p.ProfileInsignia != null - && p.ProfileInsignia.Count > 0 - && (p.ProfileInsignia.Where(x => x.InsigniaId.Value != coinInsignia.Id && - x.InsigniaId.Value == jtmRoyal.Id) - .ToList() - .Count() == 0) - //where !(p.ProfileInsignia.Where(x => x.InsigniaId != coinInsignia.Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId == jtmRoyal.Id) - select new - { - ProfileId = p.Id, - Prefix = p.Prefix ?? "", - FullName = $"{(p.Prefix ?? "")}{p.FirstName} {p.LastName}", - Position = p.Position ?? "", - Rank = p.PosLevel == null ? null : p.PosLevel.PosLevelName, - ProfileDateAppoint = p.DateAppoint.Value, - GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), - PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? "" : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, - PositionLevelId = p.PosLevel == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.PosLevel.Id, - PositionLevelName = p.PosLevel == null ? null : p.PosLevel.PosLevelName, - PositionTypeId = p.PosType == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.PosType.Id, - PositionTypeName = p.PosType == null ? null : p.PosType.PosTypeName, - Gender = p.Gender ?? "", - LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? null : GetInsigniaById(p.ProfileInsignia!.OrderByDescending(x => x.Year).FirstOrDefault()!.InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.ProfileInsignia!.OrderByDescending(x => x.Year).FirstOrDefault()!.InsigniaId.Value, - Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.Amount, - //SalaryCondition = p.ProfileSalary == null ? 0 : p.ProfileSalary.Amount, - SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault() != null ? - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount : - p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, + where p.ProfileInsignia != null + && p.ProfileInsignia.Count > 0 + && (p.ProfileInsignia.Where(x => x.InsigniaId.Value != coinInsignia.Id && + x.InsigniaId.Value == jtmRoyal.Id) + .ToList() + .Count() == 0) + //where !(p.ProfileInsignia.Where(x => x.InsigniaId != coinInsignia.Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId == jtmRoyal.Id) + select new + { + ProfileId = p.Id, + p.CitizenId, + p.FirstName, + p.LastName, + p.BirthDate, + p.DateAppoint, + Prefix = p.Prefix ?? "", + FullName = $"{(p.Prefix ?? "")}{p.FirstName} {p.LastName}", + Position = p.Position ?? "", + Rank = p.PosLevel == null ? null : p.PosLevel.PosLevelName, + ProfileDateAppoint = p.DateAppoint.Value, + GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), + PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? "" + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, + PositionLevelId = p.PosLevel == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosLevel.Id, + PositionLevelName = p.PosLevel == null ? null : p.PosLevel.PosLevelName, + PositionTypeId = p.PosType == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosType.Id, + PositionTypeName = p.PosType == null ? null : p.PosType.PosTypeName, + Gender = p.Gender ?? "", + LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 + ? null + : GetInsigniaById(p.ProfileInsignia!.OrderByDescending(x => x.Year).FirstOrDefault()! + .InsigniaId.Value).Name, + LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.ProfileInsignia!.OrderByDescending(x => x.Year).FirstOrDefault()!.InsigniaId.Value, + Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? 0 + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.Amount, + //SalaryCondition = p.ProfileSalary == null ? 0 : p.ProfileSalary.Amount, + SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : + p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault() != null ? p.ProfileSalary + .Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault().Amount : + p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, - PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PositionSalaryAmount, + PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? 0 + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()! + .PositionSalaryAmount, - IsHigherLevel = IsHigherLevel(GetInsigniaById(p.ProfileInsignia.ToList() - .Where(x => x.InsigniaId.Value != coinInsignia.Id) - .OrderByDescending(x => x.Year) - .FirstOrDefault().InsigniaId.Value).Name, - "จัตุรถาภรณ์มงกุฎไทย"), + IsHigherLevel = IsHigherLevel(GetInsigniaById(p.ProfileInsignia.ToList() + .Where(x => x.InsigniaId.Value != coinInsignia.Id) + .OrderByDescending(x => x.Year) + .FirstOrDefault().InsigniaId.Value).Name, + "จัตุรถาภรณ์มงกุฎไทย"), - FirstRecvInsigniaYear = p.ProfileInsignia == null ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == bcpRoyal.Id).OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == bcpRoyal.Id).OrderBy(x => x.Year).FirstOrDefault().Year, - }) - .ToList() - .Where(x => (x.SalaryCondition >= 10150) && !x.IsHigherLevel) - .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.ได้รับอัตราค่าจ้างตั้งแต่อัตราเงินเดือนขั้นต่ำของข้าราขการพลเรือนระดับชำนาญการขึ้นไป (15,050)", - Result = $"อัตราค่าจ้าง { p.SalaryCondition.Value.ToString("#,##0") }" - }, - new MatchingCondition - { - Condition = $"2.ได้ บ.ช. มาแล้วไม่น้อยกว่า 5 ปี บริบูรณ์ (ได้รับ บ.ช. ก่อนวันที่ {(new DateTime(period.Year - 5, 7, 28)).ToThaiFullDate3()})", - Result = $"ได้รับ บ.ช. ในปี { p.FirstRecvInsigniaYear }" - } - } - }) - .ToList(); + FirstRecvInsigniaYear = p.ProfileInsignia == null ? 0 : + p.ProfileInsignia.Where(x => x.InsigniaId.Value == bcpRoyal.Id).OrderBy(x => x.Year) + .FirstOrDefault() == null ? 0 : + p.ProfileInsignia.Where(x => x.InsigniaId.Value == bcpRoyal.Id).OrderBy(x => x.Year) + .FirstOrDefault().Year, + }) + .ToList() + .Where(x => (x.SalaryCondition >= 10150) && !x.IsHigherLevel) + .Where(x => x.FirstRecvInsigniaYear != 0 && x.FirstRecvInsigniaYear <= period.Year - 5) + .Select(p => new InsigniaResultSet + { + ProfileId = p.ProfileId, + CitizenId = p.CitizenId, + FirstName = p.FirstName, + LastName = p.LastName, + PosLevelName = p.PositionLevelName, + PosTypeName = p.PositionTypeName, + PositionSalary = p.PostionSalaryAmount, + BirthDate = p.BirthDate, + DateAppoint = p.DateAppoint, + 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.ได้รับอัตราค่าจ้างตั้งแต่อัตราเงินเดือนขั้นต่ำของข้าราขการพลเรือนระดับชำนาญการขึ้นไป (15,050)", + Result = $"อัตราค่าจ้าง {p.SalaryCondition.Value.ToString("#,##0")}" + }, + new MatchingCondition + { + Condition = + $"2.ได้ บ.ช. มาแล้วไม่น้อยกว่า 5 ปี บริบูรณ์ (ได้รับ บ.ช. ก่อนวันที่ {(new DateTime(period.Year - 5, 7, 28)).ToThaiFullDate3()})", + Result = $"ได้รับ บ.ช. ในปี {p.FirstRecvInsigniaYear}" + } + } + }) + .ToList(); var s3 = (from p in allProfilesByRoot - where p.ProfileInsignia != null - && p.ProfileInsignia.Count > 0 - && (p.ProfileInsignia.Where(x => x.InsigniaId.Value != coinInsignia.Id && - x.InsigniaId.Value == jtcRoyal.Id) - .ToList() - .Count() == 0) - //where !(p.ProfileInsignia.Where(x => x.InsigniaId != coinInsignia.Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId == jtcRoyal.Id) - select new - { - ProfileId = p.Id, - Prefix = p.Prefix ?? "", - FullName = $"{(p.Prefix ?? "")}{p.FirstName} {p.LastName}", - Position = p.Position ?? "", - Rank = p.PosLevel == null ? null : p.PosLevel.PosLevelName, - ProfileDateAppoint = p.DateAppoint.Value, - GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), - PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? "" : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, - PositionLevelId = p.PosLevel == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.PosLevel.Id, - PositionLevelName = p.PosLevel == null ? null : p.PosLevel.PosLevelName, - PositionTypeId = p.PosType == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.PosType.Id, - PositionTypeName = p.PosType == null ? null : p.PosType.PosTypeName, - Gender = p.Gender ?? "", - LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? null : GetInsigniaById(p.ProfileInsignia!.OrderByDescending(x => x.Year).FirstOrDefault()!.InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.ProfileInsignia!.OrderByDescending(x => x.Year).FirstOrDefault()!.InsigniaId.Value, - Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.Amount, - //SalaryCondition = p.ProfileSalary == null ? 0 : p.ProfileSalary.Amount, - SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault() != null ? - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount : - p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, + where p.ProfileInsignia != null + && p.ProfileInsignia.Count > 0 + && (p.ProfileInsignia.Where(x => x.InsigniaId.Value != coinInsignia.Id && + x.InsigniaId.Value == jtcRoyal.Id) + .ToList() + .Count() == 0) + //where !(p.ProfileInsignia.Where(x => x.InsigniaId != coinInsignia.Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId == jtcRoyal.Id) + select new + { + ProfileId = p.Id, + p.CitizenId, + p.FirstName, + p.LastName, + p.BirthDate, + p.DateAppoint, + Prefix = p.Prefix ?? "", + FullName = $"{(p.Prefix ?? "")}{p.FirstName} {p.LastName}", + Position = p.Position ?? "", + Rank = p.PosLevel == null ? null : p.PosLevel.PosLevelName, + ProfileDateAppoint = p.DateAppoint.Value, + GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), + PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? "" + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, + PositionLevelId = p.PosLevel == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosLevel.Id, + PositionLevelName = p.PosLevel == null ? null : p.PosLevel.PosLevelName, + PositionTypeId = p.PosType == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosType.Id, + PositionTypeName = p.PosType == null ? null : p.PosType.PosTypeName, + Gender = p.Gender ?? "", + LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 + ? null + : GetInsigniaById(p.ProfileInsignia!.OrderByDescending(x => x.Year).FirstOrDefault()! + .InsigniaId.Value).Name, + LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.ProfileInsignia!.OrderByDescending(x => x.Year).FirstOrDefault()!.InsigniaId.Value, + Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? 0 + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.Amount, + //SalaryCondition = p.ProfileSalary == null ? 0 : p.ProfileSalary.Amount, + SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : + p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault() != null ? p.ProfileSalary + .Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault().Amount : + p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, - PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PositionSalaryAmount, + PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? 0 + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()! + .PositionSalaryAmount, - IsHigherLevel = IsHigherLevel(GetInsigniaById(p.ProfileInsignia.ToList() - .Where(x => x.InsigniaId.Value != coinInsignia.Id) - .OrderByDescending(x => x.Year) - .FirstOrDefault().InsigniaId.Value).Name, - "จัตุรถาภรณ์ช้างเผือก"), + IsHigherLevel = IsHigherLevel(GetInsigniaById(p.ProfileInsignia.ToList() + .Where(x => x.InsigniaId.Value != coinInsignia.Id) + .OrderByDescending(x => x.Year) + .FirstOrDefault().InsigniaId.Value).Name, + "จัตุรถาภรณ์ช้างเผือก"), - FirstRecvInsigniaYear = p.ProfileInsignia == null ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == jtmRoyal.Id).OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == jtmRoyal.Id).OrderBy(x => x.Year).FirstOrDefault().Year, - }) - .ToList() - .Where(x => (x.SalaryCondition >= 10150) && !x.IsHigherLevel) - .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.ได้รับอัตราค่าจ้างตั้งแต่อัตราเงินเดือนขั้นต่ำของข้าราขการพลเรือนระดับชำนาญการขึ้นไป (15,050)", - Result = $"อัตราค่าจ้าง { p.SalaryCondition.Value.ToString("#,##0") }" - }, - new MatchingCondition - { - Condition = $"2.ได้ จ.ม. มาแล้วไม่น้อยกว่า 5 ปี บริบูรณ์ (ได้รับ จ.ม. ก่อนวันที่ {(new DateTime(period.Year - 5, 7, 28)).ToThaiFullDate3()})", - Result = $"ได้รับ จ.ม. ในปี { p.FirstRecvInsigniaYear }" - } - } - }) - .ToList(); + FirstRecvInsigniaYear = p.ProfileInsignia == null ? 0 : + p.ProfileInsignia.Where(x => x.InsigniaId.Value == jtmRoyal.Id).OrderBy(x => x.Year) + .FirstOrDefault() == null ? 0 : + p.ProfileInsignia.Where(x => x.InsigniaId.Value == jtmRoyal.Id).OrderBy(x => x.Year) + .FirstOrDefault().Year, + }) + .ToList() + .Where(x => (x.SalaryCondition >= 10150) && !x.IsHigherLevel) + .Where(x => x.FirstRecvInsigniaYear != 0 && x.FirstRecvInsigniaYear <= period.Year - 5) + .Select(p => new InsigniaResultSet + { + ProfileId = p.ProfileId, + CitizenId = p.CitizenId, + FirstName = p.FirstName, + LastName = p.LastName, + PosLevelName = p.PositionLevelName, + PosTypeName = p.PositionTypeName, + PositionSalary = p.PostionSalaryAmount, + BirthDate = p.BirthDate, + DateAppoint = p.DateAppoint, + 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.ได้รับอัตราค่าจ้างตั้งแต่อัตราเงินเดือนขั้นต่ำของข้าราขการพลเรือนระดับชำนาญการขึ้นไป (15,050)", + Result = $"อัตราค่าจ้าง {p.SalaryCondition.Value.ToString("#,##0")}" + }, + new MatchingCondition + { + Condition = + $"2.ได้ จ.ม. มาแล้วไม่น้อยกว่า 5 ปี บริบูรณ์ (ได้รับ จ.ม. ก่อนวันที่ {(new DateTime(period.Year - 5, 7, 28)).ToThaiFullDate3()})", + Result = $"ได้รับ จ.ม. ในปี {p.FirstRecvInsigniaYear}" + } + } + }) + .ToList(); var result_candidate = new List(); @@ -897,7 +1126,6 @@ namespace BMA.EHR.Application.Repositories } } - #endregion #region " ทั่วไป " @@ -908,7 +1136,8 @@ namespace BMA.EHR.Application.Repositories /// The period identifier. /// The oc identifier. /// - public async Task> GetInsigniaCandidate_Type1_Level1(Guid periodId, Guid ocId) + public async Task> GetInsigniaCandidate_Type1_Level1(Guid periodId, Guid ocId, + List allProfilesByRoot) { try { @@ -926,299 +1155,471 @@ namespace BMA.EHR.Application.Repositories var CurrentRetireDate = new DateTime(period.Year, 9, 30); - var allProfilesByRoot = (await _userProfileRepository.GetOfficerProfileByRootIdAsync(ocId, AccessToken)); + // var allProfilesByRoot = + // (await _userProfileRepository.GetOfficerProfileByRootIdAsync(ocId, AccessToken)); var inst_profile = allProfilesByRoot - .Select(p => new - { - ProfileId = p.Id, - Prefix = p.Prefix ?? "", - FullName = $"{(p.Prefix ?? "")}{p.FirstName} {p.LastName}", - Position = p.Position ?? "", - Rank = p.PosLevel == null ? null : p.PosLevel.PosLevelName, - ProfileDateAppoint = p.DateAppoint.Value, - GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), - PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? "" : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, - PositionLevelId = p.PosLevel == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.PosLevel.Id, - PositionLevelName = p.PosLevel == null ? null : p.PosLevel.PosLevelName, - PositionTypeId = p.PosType == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.PosType.Id, - PositionTypeName = p.PosType == null ? null : p.PosType.PosTypeName, - Gender = p.Gender ?? "", - LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? "" : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? Guid.Empty : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, - Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.Amount, - //SalaryCondition = p.ProfileSalary == null ? 0 : p.ProfileSalary.Amount, - SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault() != null ? - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount : - p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, + .Select(p => new + { + ProfileId = p.Id, + p.CitizenId, + p.FirstName, + p.LastName, + p.BirthDate, + p.DateAppoint, - PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PositionSalaryAmount, - ProfileInsignia = p.ProfileInsignia - }); + Prefix = p.Prefix ?? "", + FullName = $"{(p.Prefix ?? "")}{p.FirstName} {p.LastName}", + Position = p.Position ?? "", + Rank = p.PosLevel == null ? null : p.PosLevel.PosLevelName, + ProfileDateAppoint = p.DateAppoint.Value, + GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), + PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? "" + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, + PositionLevelId = p.PosLevel == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosLevel.Id, + PositionLevelName = p.PosLevel == null ? null : p.PosLevel.PosLevelName, + PositionTypeId = p.PosType == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosType.Id, + PositionTypeName = p.PosType == null ? null : p.PosType.PosTypeName, + Gender = p.Gender ?? "", + LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? "" : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, + LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? Guid.Empty : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, + Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? 0 + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.Amount, + //SalaryCondition = p.ProfileSalary == null ? 0 : p.ProfileSalary.Amount, + SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : + p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault() != null ? p.ProfileSalary + .Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault().Amount : + p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, + + PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? 0 + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PositionSalaryAmount, + ProfileInsignia = p.ProfileInsignia + }); // check วันที่บรรจะต้องน้อยกว่า 29/5/ปี-5 var s1 = ((from p in inst_profile - where p.ProfileDateAppoint <= new DateTime(period.Year - 5, 5, 29) + where p.ProfileDateAppoint <= new DateTime(period.Year - 5, 5, 29) && p.LastInsigniaId == Guid.Parse("00000000-0000-0000-0000-000000000000") && p.PositionLevelName == "ปฏิบัติงาน" // ปฏิบัติงาน && p.ProfileInsignia == null - //&& p.ProfileInsignia.Count > 0 - //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && - // x.InsigniaId.Value == GetInsigniaByName("เบญจมาภรณ์มงกุฎไทย").Id) - // .ToList() - // .Count() == 0) - 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(); + //&& p.ProfileInsignia.Count > 0 + //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && + // x.InsigniaId.Value == GetInsigniaByName("เบญจมาภรณ์มงกุฎไทย").Id) + // .ToList() + // .Count() == 0) + select p) + .ToList() + .Select(p => new InsigniaResultSet + { + ProfileId = p.ProfileId, + CitizenId = p.CitizenId, + FirstName = p.FirstName, + LastName = p.LastName, + PosLevelName = p.PositionLevelName, + PosTypeName = p.PositionTypeName, + PositionSalary = p.PostionSalaryAmount, + BirthDate = p.BirthDate, + DateAppoint = p.DateAppoint, + 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 allProfilesByRoot - where p.PosType.PosTypeName == "ทั่วไป" - && p.PosLevel.PosLevelName == "ปฏิบัติงาน" - && p.ProfileInsignia != null - && p.ProfileInsignia.Count > 0 - && (p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && - x.InsigniaId.Value == GetInsigniaByName("เบญจมาภรณ์ช้างเผือก").Id) - .ToList() - .Count() == 0) - //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - // .OrderByDescending(x => x.Year) - // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("เบญจมาภรณ์ช้างเผือก").Id - select new - { - ProfileId = p.Id, - Prefix = p.Prefix == null ? null : p.Prefix, - FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", - Position = p.Position == null ? null : p.Position, - Rank = p.PosLevel.PosLevelName, - GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), - ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? "" : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? Guid.Empty : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, - Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, - SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault() != null ? - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount : - p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, + where p.PosType.PosTypeName == "ทั่วไป" + && p.PosLevel.PosLevelName == "ปฏิบัติงาน" + && p.ProfileInsignia != null + && p.ProfileInsignia.Count > 0 + && (p.ProfileInsignia.Where(x => + x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && + x.InsigniaId.Value == GetInsigniaByName("เบญจมาภรณ์ช้างเผือก").Id) + .ToList() + .Count() == 0) + //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + // .OrderByDescending(x => x.Year) + // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("เบญจมาภรณ์ช้างเผือก").Id + select new + { + ProfileId = p.Id, + p.CitizenId, + p.FirstName, + p.LastName, + p.BirthDate, + p.DateAppoint, + Prefix = p.Prefix == null ? null : p.Prefix, + FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", + Position = p.Position == null ? null : p.Position, + Rank = p.PosLevel.PosLevelName, + GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), + ProfileDateAppoint = p.DateAppoint.Value, + LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? "" : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, + LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? Guid.Empty : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, + Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? null + : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, + SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : + p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault() != null ? p.ProfileSalary + .Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault().Amount : + p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, - PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? "" : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, - Gender = p.Gender == null ? null : p.Gender, - IsHigherLevel = IsHigherLevel(GetInsigniaById(p.ProfileInsignia - .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - .OrderByDescending(x => x.Year) - .FirstOrDefault().InsigniaId.Value).Name, - "เบญจมาภรณ์ช้างเผือก"), - }) - .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(); + PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? "" + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, + Gender = p.Gender == null ? null : p.Gender, + PositionLevelId = p.PosLevel == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosLevel.Id, + PositionLevelName = p.PosLevel == null ? null : p.PosLevel.PosLevelName, + PositionTypeId = p.PosType == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosType.Id, + PositionTypeName = p.PosType == null ? null : p.PosType.PosTypeName, + IsHigherLevel = IsHigherLevel(GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year) + .FirstOrDefault().InsigniaId.Value).Name, + "เบญจมาภรณ์ช้างเผือก"), + PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? 0 + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PositionSalaryAmount, + }) + .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, + CitizenId = p.CitizenId, + FirstName = p.FirstName, + LastName = p.LastName, + PosLevelName = p.PositionLevelName, + PosTypeName = p.PositionTypeName, + PositionSalary = p.PostionSalaryAmount, + BirthDate = p.BirthDate, + DateAppoint = p.DateAppoint, + 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 allProfilesByRoot - where p.PosType.PosTypeName == "ทั่วไป" - && p.PosLevel.PosLevelName == "ปฏิบัติงาน" - && p.ProfileInsignia != null - && p.ProfileInsignia.Count > 0 - && (p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && - x.InsigniaId.Value == GetInsigniaByName("จัตุรถาภรณ์มงกุฎไทย").Id) - .ToList() - .Count() == 0) - //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - // .OrderByDescending(x => x.Year) - // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("จัตุรถาภรณ์มงกุฎไทย").Id - select new - { - ProfileId = p.Id, - Prefix = p.Prefix == null ? null : p.Prefix, - FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", - Position = p.Position == null ? null : p.Position, - Rank = p.PosLevel.PosLevelName, - GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), - ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? "" : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? Guid.Empty : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, - Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, - SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault() != null ? - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount : - p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, + where p.PosType.PosTypeName == "ทั่วไป" + && p.PosLevel.PosLevelName == "ปฏิบัติงาน" + && p.ProfileInsignia != null + && p.ProfileInsignia.Count > 0 + && (p.ProfileInsignia.Where(x => + x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && + x.InsigniaId.Value == GetInsigniaByName("จัตุรถาภรณ์มงกุฎไทย").Id) + .ToList() + .Count() == 0) + //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + // .OrderByDescending(x => x.Year) + // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("จัตุรถาภรณ์มงกุฎไทย").Id + select new + { + ProfileId = p.Id, + p.CitizenId, + p.FirstName, + p.LastName, + p.BirthDate, + p.DateAppoint, + Prefix = p.Prefix == null ? null : p.Prefix, + FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", + Position = p.Position == null ? null : p.Position, + Rank = p.PosLevel.PosLevelName, + GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), + ProfileDateAppoint = p.DateAppoint.Value, + LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? "" : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, + LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? Guid.Empty : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, + Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? null + : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, + SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : + p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault() != null ? p.ProfileSalary + .Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault().Amount : + p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, - PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? "" : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, - Gender = p.Gender == null ? null : p.Gender, - IsHigherLevel = p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? true : - IsHigherLevel(GetInsigniaById(p.ProfileInsignia - .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - .OrderByDescending(x => x.Year) - .FirstOrDefault().InsigniaId.Value).Name, - "จัตุรถาภรณ์มงกุฎไทย"), - }) - .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(); + PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? "" + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, + Gender = p.Gender == null ? null : p.Gender, + PositionLevelId = p.PosLevel == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosLevel.Id, + PositionLevelName = p.PosLevel == null ? null : p.PosLevel.PosLevelName, + PositionTypeId = p.PosType == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosType.Id, + PositionTypeName = p.PosType == null ? null : p.PosType.PosTypeName, + + + PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? 0 + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PositionSalaryAmount, + IsHigherLevel = + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null + ? true + : IsHigherLevel(GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != + GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year) + .FirstOrDefault().InsigniaId.Value).Name, + "จัตุรถาภรณ์มงกุฎไทย"), + }) + .ToList() + .Where(x => x.SalaryCondition >= 10190 && !x.IsHigherLevel) + .Select(p => new InsigniaResultSet + { + ProfileId = p.ProfileId, + CitizenId = p.CitizenId, + FirstName = p.FirstName, + LastName = p.LastName, + PosLevelName = p.PositionLevelName, + PosTypeName = p.PositionTypeName, + PositionSalary = p.PostionSalaryAmount, + BirthDate = p.BirthDate, + DateAppoint = p.DateAppoint, + 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 allProfilesByRoot - where p.PosType.PosTypeName == "ทั่วไป" - && p.PosLevel.PosLevelName == "ปฏิบัติงาน" - && p.ProfileInsignia != null - && p.ProfileInsignia.Count > 0 - && (p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && - x.InsigniaId.Value == GetInsigniaByName("จัตุรถาภรณ์ช้างเผือก").Id) - .ToList() - .Count() == 0) - //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - // .OrderByDescending(x => x.Year) - // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("จัตุรถาภรณ์ช้างเผือก").Id - select new - { - ProfileId = p.Id, - Prefix = p.Prefix == null ? null : p.Prefix, - FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", - Position = p.Position == null ? null : p.Position, - Rank = p.PosLevel.PosLevelName, - GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), - ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? "" : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? Guid.Empty : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, - Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, - SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault() != null ? - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount : - p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, + where p.PosType.PosTypeName == "ทั่วไป" + && p.PosLevel.PosLevelName == "ปฏิบัติงาน" + && p.ProfileInsignia != null + && p.ProfileInsignia.Count > 0 + && (p.ProfileInsignia.Where(x => + x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && + x.InsigniaId.Value == GetInsigniaByName("จัตุรถาภรณ์ช้างเผือก").Id) + .ToList() + .Count() == 0) + //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + // .OrderByDescending(x => x.Year) + // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("จัตุรถาภรณ์ช้างเผือก").Id + select new + { + ProfileId = p.Id, + + p.CitizenId, + p.FirstName, + p.LastName, + p.BirthDate, + p.DateAppoint, + Prefix = p.Prefix == null ? null : p.Prefix, + FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", + Position = p.Position == null ? null : p.Position, + Rank = p.PosLevel.PosLevelName, + GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), + ProfileDateAppoint = p.DateAppoint.Value, + LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? "" : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, + LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? Guid.Empty : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, + Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? null + : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, + SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : + p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault() != null ? p.ProfileSalary + .Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault().Amount : + p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, - PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? "" : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, - Gender = p.Gender == null ? null : p.Gender, - IsHigherLevel = p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? true : - IsHigherLevel(GetInsigniaById(p.ProfileInsignia - .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - .OrderByDescending(x => x.Year) - .FirstOrDefault().InsigniaId.Value).Name, - "จัตุรถาภรณ์ช้างเผือก"), - }) - .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(); + PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? "" + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, + Gender = p.Gender == null ? null : p.Gender, + PositionLevelId = p.PosLevel == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosLevel.Id, + PositionLevelName = p.PosLevel == null ? null : p.PosLevel.PosLevelName, + PositionTypeId = p.PosType == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosType.Id, + PositionTypeName = p.PosType == null ? null : p.PosType.PosTypeName, + + + PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? 0 + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PositionSalaryAmount, + IsHigherLevel = + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null + ? true + : IsHigherLevel(GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != + GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year) + .FirstOrDefault().InsigniaId.Value).Name, + "จัตุรถาภรณ์ช้างเผือก"), + }) + .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, + CitizenId = p.CitizenId, + FirstName = p.FirstName, + LastName = p.LastName, + PosLevelName = p.PositionLevelName, + PosTypeName = p.PositionTypeName, + PositionSalary = p.PostionSalaryAmount, + BirthDate = p.BirthDate, + DateAppoint = p.DateAppoint, + 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(); @@ -1309,8 +1710,9 @@ namespace BMA.EHR.Application.Repositories /// The period identifier. /// The oc identifier. /// - /// - public async Task> GetInsigniaCandidate_Type1_Level2(Guid periodId, Guid ocId) + /// + public async Task> GetInsigniaCandidate_Type1_Level2(Guid periodId, Guid ocId, + List allProfilesByRoot) { try { @@ -1322,155 +1724,252 @@ namespace BMA.EHR.Application.Repositories var CurrentRetireDate = new DateTime(period.Year, 9, 30); - var allProfilesByRoot = (await _userProfileRepository.GetOfficerProfileByRootIdAsync(ocId, AccessToken)); + // var allProfilesByRoot = + // (await _userProfileRepository.GetOfficerProfileByRootIdAsync(ocId, AccessToken)); var s1 = (from p in allProfilesByRoot - where p.PosType.PosTypeName == "ทั่วไป" - && p.PosLevel.PosLevelName == "ชำนาญงาน" - && p.ProfileInsignia != null - && p.ProfileInsignia.Count > 0 - && (p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && - x.InsigniaId.Value == GetInsigniaByName("ตริตาภรณ์มงกุฎไทย").Id) - .ToList() - .Count() == 0) - select new - { - ProfileId = p.Id, - Prefix = p.Prefix == null ? null : p.Prefix, - FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", - Position = p.Position == null ? null : p.Position, - Rank = p.PosLevel.PosLevelName, - GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), - ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? "" : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? Guid.Empty : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, - Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, - SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault() != null ? - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount : - p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, + where p.PosType.PosTypeName == "ทั่วไป" + && p.PosLevel.PosLevelName == "ชำนาญงาน" + && p.ProfileInsignia != null + && p.ProfileInsignia.Count > 0 + && (p.ProfileInsignia.Where(x => + x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && + x.InsigniaId.Value == GetInsigniaByName("ตริตาภรณ์มงกุฎไทย").Id) + .ToList() + .Count() == 0) + select new + { + ProfileId = p.Id, + p.CitizenId, + p.FirstName, + p.LastName, + p.BirthDate, + p.DateAppoint, - PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? "" : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, - Gender = p.Gender == null ? null : p.Gender, - IsHigherLevel = p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? true : - IsHigherLevel(GetInsigniaById(p.ProfileInsignia - .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - .OrderByDescending(x => x.Year) - .FirstOrDefault().InsigniaId.Value).Name, - "ตริตาภรณ์มงกุฎไทย"), + Prefix = p.Prefix == null ? null : p.Prefix, + FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", + Position = p.Position == null ? null : p.Position, + Rank = p.PosLevel.PosLevelName, + GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), + ProfileDateAppoint = p.DateAppoint.Value, + LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? "" : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, + LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? Guid.Empty : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, + Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? null + : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, + SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : + p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault() != null ? p.ProfileSalary + .Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault().Amount : + p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, - PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, - PositionType = p.PosType == null ? "" : p.PosType.PosTypeName - }) - .ToList() - .Select(p => new InsigniaResultSet - { - ProfileId = p.ProfileId, - Prefix = p.Prefix, - FullName = p.FullName, - Position = p.Position, + PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? "" + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, + Gender = p.Gender == null ? null : p.Gender, + PositionLevelId = p.PosLevel == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosLevel.Id, + PositionLevelName = p.PosLevel == null ? null : p.PosLevel.PosLevelName, + PositionTypeId = p.PosType == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosType.Id, + PositionTypeName = p.PosType == null ? null : p.PosType.PosTypeName, - 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(); + PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? 0 + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PositionSalaryAmount, + IsHigherLevel = + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null + ? true + : IsHigherLevel(GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != + GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year) + .FirstOrDefault().InsigniaId.Value).Name, + "ตริตาภรณ์มงกุฎไทย"), + + PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, + PositionType = p.PosType == null ? "" : p.PosType.PosTypeName + }) + .ToList() + .Select(p => new InsigniaResultSet + { + ProfileId = p.ProfileId, + CitizenId = p.CitizenId, + FirstName = p.FirstName, + LastName = p.LastName, + PosLevelName = p.PositionLevelName, + PosTypeName = p.PositionTypeName, + PositionSalary = p.PostionSalaryAmount, + BirthDate = p.BirthDate, + DateAppoint = p.DateAppoint, + 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 allProfilesByRoot - where p.PosType.PosTypeName == "ทั่วไป" - && p.PosLevel.PosLevelName == "ชำนาญงาน" - && p.ProfileInsignia != null - && p.ProfileInsignia.Count > 0 - && (p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && - x.InsigniaId.Value == GetInsigniaByName("ตริตาภรณ์ช้างเผือก").Id) - .ToList() - .Count() == 0) - //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - // .OrderByDescending(x => x.Year) - // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ตริตาภรณ์ช้างเผือก").Id - select new - { - ProfileId = p.Id, - Prefix = p.Prefix == null ? null : p.Prefix, - FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", - Position = p.Position == null ? null : p.Position, - Rank = p.PosLevel.PosLevelName, - GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), - ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? "" : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? Guid.Empty : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, - Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, - SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault() != null ? - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount : - p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, + where p.PosType.PosTypeName == "ทั่วไป" + && p.PosLevel.PosLevelName == "ชำนาญงาน" + && p.ProfileInsignia != null + && p.ProfileInsignia.Count > 0 + && (p.ProfileInsignia.Where(x => + x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && + x.InsigniaId.Value == GetInsigniaByName("ตริตาภรณ์ช้างเผือก").Id) + .ToList() + .Count() == 0) + //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + // .OrderByDescending(x => x.Year) + // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ตริตาภรณ์ช้างเผือก").Id + select new + { + ProfileId = p.Id, + p.CitizenId, + p.FirstName, + p.LastName, + p.BirthDate, + p.DateAppoint, - PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? "" : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, - Gender = p.Gender == null ? null : p.Gender, - IsHigherLevel = p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? true : - IsHigherLevel(GetInsigniaById(p.ProfileInsignia - .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - .OrderByDescending(x => x.Year) - .FirstOrDefault().InsigniaId.Value).Name, - "ตริตาภรณ์ช้างเผือก"), + Prefix = p.Prefix == null ? null : p.Prefix, + FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", + Position = p.Position == null ? null : p.Position, + Rank = p.PosLevel.PosLevelName, + GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), + ProfileDateAppoint = p.DateAppoint.Value, + LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? "" : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, + LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? Guid.Empty : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, + Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? null + : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, + SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : + p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault() != null ? p.ProfileSalary + .Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault().Amount : + p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, - PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, - PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "ชำนาญงาน").OrderBy(p => p.Date).FirstOrDefault() == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "ชำนาญงาน").OrderBy(p => p.Date).FirstOrDefault().Date - }) - .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()) }" - }, + PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? "" + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, + Gender = p.Gender == null ? null : p.Gender, + PositionLevelId = p.PosLevel == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosLevel.Id, + PositionLevelName = p.PosLevel == null ? null : p.PosLevel.PosLevelName, + PositionTypeId = p.PosType == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosType.Id, + PositionTypeName = p.PosType == null ? null : p.PosType.PosTypeName, - } - }) - .ToList(); + + PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? 0 + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PositionSalaryAmount, + IsHigherLevel = + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null + ? true + : IsHigherLevel(GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != + GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year) + .FirstOrDefault().InsigniaId.Value).Name, + "ตริตาภรณ์ช้างเผือก"), + + PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, + PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, + FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "ชำนาญงาน").OrderBy(p => p.Date) + .FirstOrDefault() == null ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "ชำนาญงาน").OrderBy(p => p.Date) + .FirstOrDefault().Date + }) + .ToList() + .Where(x => x.FirstPositonLevelDate < new DateTime(period.Year - 5, 5, 29)) + .Select(p => new InsigniaResultSet + { + ProfileId = p.ProfileId, + CitizenId = p.CitizenId, + FirstName = p.FirstName, + LastName = p.LastName, + PosLevelName = p.PositionLevelName, + PosTypeName = p.PositionTypeName, + PositionSalary = p.PostionSalaryAmount, + BirthDate = p.BirthDate, + DateAppoint = p.DateAppoint, + 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(); @@ -1524,8 +2023,9 @@ namespace BMA.EHR.Application.Repositories /// The period identifier. /// The oc identifier. /// - /// - public async Task> GetInsigniaCandidate_Type1_Level3(Guid periodId, Guid ocId) + /// + public async Task> GetInsigniaCandidate_Type1_Level3(Guid periodId, Guid ocId, + List allProfilesByRoot) { try { @@ -1534,162 +2034,258 @@ namespace BMA.EHR.Application.Repositories if (period == null) throw new Exception(GlobalMessages.CoinPeriodNotFound); - var allProfilesByRoot = (await _userProfileRepository.GetOfficerProfileByRootIdAsync(ocId, AccessToken)); + // var allProfilesByRoot = + // (await _userProfileRepository.GetOfficerProfileByRootIdAsync(ocId, AccessToken)); var CurrentRetireDate = new DateTime(period.Year, 9, 30); var s1 = (from p in allProfilesByRoot - where p.PosType.PosTypeName == "ทั่วไป" - && p.PosLevel.PosLevelName == "อาวุโส" - && p.ProfileInsignia != null - && p.ProfileInsignia.Count > 0 - && (p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && - x.InsigniaId.Value == GetInsigniaByName("ทวีติยาภรณ์มงกุฎไทย").Id) - .ToList() - .Count() == 0) - //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - // .OrderByDescending(x => x.Year) - // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ทวีติยาภรณ์มงกุฎไทย").Id - select new - { - ProfileId = p.Id, - Prefix = p.Prefix == null ? null : p.Prefix, - FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", - Position = p.Position == null ? null : p.Position, - Rank = p.PosLevel.PosLevelName, - GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), - ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? "" : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? Guid.Empty : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, - Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, - SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault() != null ? - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount : - p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, + where p.PosType.PosTypeName == "ทั่วไป" + && p.PosLevel.PosLevelName == "อาวุโส" + && p.ProfileInsignia != null + && p.ProfileInsignia.Count > 0 + && (p.ProfileInsignia.Where(x => + x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && + x.InsigniaId.Value == GetInsigniaByName("ทวีติยาภรณ์มงกุฎไทย").Id) + .ToList() + .Count() == 0) + //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + // .OrderByDescending(x => x.Year) + // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ทวีติยาภรณ์มงกุฎไทย").Id + select new + { + ProfileId = p.Id, + p.CitizenId, + p.FirstName, + p.LastName, + p.BirthDate, + p.DateAppoint, + Prefix = p.Prefix == null ? null : p.Prefix, + FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", + Position = p.Position == null ? null : p.Position, + Rank = p.PosLevel.PosLevelName, + GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), + ProfileDateAppoint = p.DateAppoint.Value, + LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? "" : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, + LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? Guid.Empty : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, + Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? null + : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, + SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : + p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault() != null ? p.ProfileSalary + .Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault().Amount : + p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, - PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? "" : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, - Gender = p.Gender == null ? null : p.Gender, - IsHigherLevel = p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? true : - IsHigherLevel(GetInsigniaById(p.ProfileInsignia - .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - .OrderByDescending(x => x.Year) - .FirstOrDefault().InsigniaId.Value).Name, - "ทวีติยาภรณ์มงกุฎไทย"), + PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? "" + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, + Gender = p.Gender == null ? null : p.Gender, + PositionLevelId = p.PosLevel == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosLevel.Id, + PositionLevelName = p.PosLevel == null ? null : p.PosLevel.PosLevelName, + PositionTypeId = p.PosType == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosType.Id, + PositionTypeName = p.PosType == null ? null : p.PosType.PosTypeName, - PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, - PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "อาวุโส").OrderBy(p => p.Date).FirstOrDefault() == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "อาวุโส").OrderBy(p => p.Date).FirstOrDefault().Date - }) - .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(); + PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? 0 + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PositionSalaryAmount, + IsHigherLevel = + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null + ? true + : IsHigherLevel(GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != + GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year) + .FirstOrDefault().InsigniaId.Value).Name, + "ทวีติยาภรณ์มงกุฎไทย"), + + PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, + PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, + FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "อาวุโส").OrderBy(p => p.Date) + .FirstOrDefault() == null ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "อาวุโส").OrderBy(p => p.Date) + .FirstOrDefault().Date + }) + .ToList() + .Select(p => new InsigniaResultSet + { + ProfileId = p.ProfileId, + CitizenId = p.CitizenId, + FirstName = p.FirstName, + LastName = p.LastName, + PosLevelName = p.PositionLevelName, + PosTypeName = p.PositionTypeName, + PositionSalary = p.PostionSalaryAmount, + BirthDate = p.BirthDate, + DateAppoint = p.DateAppoint, + 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 allProfilesByRoot - where p.PosType.PosTypeName == "ทั่วไป" - && p.PosLevel.PosLevelName == "อาวุโส" - && p.ProfileInsignia != null - && p.ProfileInsignia.Count > 0 - && (p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && - x.InsigniaId.Value == GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id) - .ToList() - .Count() == 0) - //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - // .OrderByDescending(x => x.Year) - // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id - select new - { - ProfileId = p.Id, - Prefix = p.Prefix == null ? null : p.Prefix, - FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", - Position = p.Position == null ? null : p.Position, - Rank = p.PosLevel.PosLevelName, - GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), - ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? "" : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? Guid.Empty : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, - Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, - SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault() != null ? - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount : - p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, + where p.PosType.PosTypeName == "ทั่วไป" + && p.PosLevel.PosLevelName == "อาวุโส" + && p.ProfileInsignia != null + && p.ProfileInsignia.Count > 0 + && (p.ProfileInsignia.Where(x => + x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && + x.InsigniaId.Value == GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id) + .ToList() + .Count() == 0) + //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + // .OrderByDescending(x => x.Year) + // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id + select new + { + ProfileId = p.Id, + p.CitizenId, + p.FirstName, + p.LastName, + p.BirthDate, + p.DateAppoint, - PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? "" : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, - Gender = p.Gender == null ? null : p.Gender, - IsHigherLevel = p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? true : - IsHigherLevel(GetInsigniaById(p.ProfileInsignia - .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - .OrderByDescending(x => x.Year) - .FirstOrDefault().InsigniaId.Value).Name, - "ทวีติยาภรณ์ช้างเผือก"), + Prefix = p.Prefix == null ? null : p.Prefix, + FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", + Position = p.Position == null ? null : p.Position, + Rank = p.PosLevel.PosLevelName, + GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), + ProfileDateAppoint = p.DateAppoint.Value, + LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? "" : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, + LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? Guid.Empty : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, + Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? null + : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, + SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : + p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault() != null ? p.ProfileSalary + .Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault().Amount : + p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, - PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, - PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "อาวุโส").OrderBy(p => p.Date).FirstOrDefault() == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "อาวุโส").OrderBy(p => p.Date).FirstOrDefault().Date - }) - .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()) }" - }, + PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? "" + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, + Gender = p.Gender == null ? null : p.Gender, + PositionLevelId = p.PosLevel == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosLevel.Id, + PositionLevelName = p.PosLevel == null ? null : p.PosLevel.PosLevelName, + PositionTypeId = p.PosType == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosType.Id, + PositionTypeName = p.PosType == null ? null : p.PosType.PosTypeName, + PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? 0 + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PositionSalaryAmount, + IsHigherLevel = + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null + ? true + : IsHigherLevel(GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != + GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year) + .FirstOrDefault().InsigniaId.Value).Name, + "ทวีติยาภรณ์ช้างเผือก"), - } - }) - .ToList(); + PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, + PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, + FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "อาวุโส").OrderBy(p => p.Date) + .FirstOrDefault() == null ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "อาวุโส").OrderBy(p => p.Date) + .FirstOrDefault().Date + }) + .ToList() + .Where(x => x.FirstPositonLevelDate < new DateTime(period.Year - 5, 5, 29)) + .Select(p => new InsigniaResultSet + { + ProfileId = p.ProfileId, + CitizenId = p.CitizenId, + FirstName = p.FirstName, + LastName = p.LastName, + PosLevelName = p.PositionLevelName, + PosTypeName = p.PositionTypeName, + PositionSalary = p.PostionSalaryAmount, + BirthDate = p.BirthDate, + DateAppoint = p.DateAppoint, + 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(); @@ -1743,8 +2339,9 @@ namespace BMA.EHR.Application.Repositories /// The period identifier. /// The oc identifier. /// - /// - public async Task> GetInsigniaCandidate_Type1_Level4(Guid periodId, Guid ocId) + /// + public async Task> GetInsigniaCandidate_Type1_Level4(Guid periodId, Guid ocId, + List allProfilesByRoot) { try { @@ -1753,246 +2350,395 @@ namespace BMA.EHR.Application.Repositories if (period == null) throw new Exception(GlobalMessages.CoinPeriodNotFound); - var allProfilesByRoot = (await _userProfileRepository.GetOfficerProfileByRootIdAsync(ocId, AccessToken)); + // var allProfilesByRoot = + // (await _userProfileRepository.GetOfficerProfileByRootIdAsync(ocId, AccessToken)); var CurrentRetireDate = new DateTime(period.Year, 9, 30); var s1 = (from p in allProfilesByRoot - where p.PosType.PosTypeName == "ทั่วไป" - && (p.PosLevel.PosLevelName == "อาวุโส" || p.PosLevel.PosLevelName == "อาวุโส (เฉพาะสายงาน)") // อาวุโส - && p.ProfileInsignia != null - && p.ProfileInsignia.Count > 0 - && (p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && - x.InsigniaId.Value == GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id) - .ToList() - .Count() == 0) - //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - // .OrderByDescending(x => x.Year) - // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id - select new - { - ProfileId = p.Id, - Prefix = p.Prefix == null ? null : p.Prefix, - FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", - Position = p.Position == null ? null : p.Position, - Rank = p.PosLevel.PosLevelName, - GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), - ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? "" : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? Guid.Empty : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, - Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, - SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault() != null ? - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount : - p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, + where p.PosType.PosTypeName == "ทั่วไป" + && (p.PosLevel.PosLevelName == "อาวุโส" || + p.PosLevel.PosLevelName == "อาวุโส (เฉพาะสายงาน)") // อาวุโส + && p.ProfileInsignia != null + && p.ProfileInsignia.Count > 0 + && (p.ProfileInsignia.Where(x => + x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && + x.InsigniaId.Value == GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id) + .ToList() + .Count() == 0) + //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + // .OrderByDescending(x => x.Year) + // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id + select new + { + ProfileId = p.Id, + p.CitizenId, + p.FirstName, + p.LastName, + p.BirthDate, + p.DateAppoint, - PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? "" : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, - Gender = p.Gender == null ? null : p.Gender, - IsHigherLevel = p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? true : - IsHigherLevel(GetInsigniaById(p.ProfileInsignia - .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - .OrderByDescending(x => x.Year) - .FirstOrDefault().InsigniaId.Value).Name, - "ทวีติยาภรณ์ช้างเผือก"), + Prefix = p.Prefix == null ? null : p.Prefix, + FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", + Position = p.Position == null ? null : p.Position, + Rank = p.PosLevel.PosLevelName, + GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), + ProfileDateAppoint = p.DateAppoint.Value, + LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? "" : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, + LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? Guid.Empty : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, + Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? null + : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, + SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : + p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault() != null ? p.ProfileSalary + .Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault().Amount : + p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, - PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, - PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "อาวุโส").OrderBy(p => p.Date).FirstOrDefault() == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "อาวุโส").OrderBy(p => p.Date).FirstOrDefault().Date - }) - .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 }" - }, + PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? "" + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, + Gender = p.Gender == null ? null : p.Gender, + PositionLevelId = p.PosLevel == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosLevel.Id, + PositionLevelName = p.PosLevel == null ? null : p.PosLevel.PosLevelName, + PositionTypeId = p.PosType == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosType.Id, + PositionTypeName = p.PosType == null ? null : p.PosType.PosTypeName, + PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? 0 + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PositionSalaryAmount, + IsHigherLevel = + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null + ? true + : IsHigherLevel(GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != + GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year) + .FirstOrDefault().InsigniaId.Value).Name, + "ทวีติยาภรณ์ช้างเผือก"), - } - }) - .ToList(); + PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, + PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, + FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "อาวุโส").OrderBy(p => p.Date) + .FirstOrDefault() == null ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "อาวุโส").OrderBy(p => p.Date) + .FirstOrDefault().Date + }) + .ToList() + .Select(p => new InsigniaResultSet + { + ProfileId = p.ProfileId, + CitizenId = p.CitizenId, + FirstName = p.FirstName, + LastName = p.LastName, + PosLevelName = p.PositionLevelName, + PosTypeName = p.PositionTypeName, + PositionSalary = p.PostionSalaryAmount, + BirthDate = p.BirthDate, + DateAppoint = p.DateAppoint, + 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 allProfilesByRoot - where p.PosType.PosTypeName == "ทั่วไป" - && (p.PosLevel.PosLevelName == "อาวุโส" || p.PosLevel.PosLevelName == "อาวุโส (เฉพาะสายงาน)") // อาวุโส - && p.ProfileInsignia != null - && p.ProfileInsignia.Count > 0 - && (p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && - x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id) - .ToList() - .Count() == 0) - //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - // .OrderByDescending(x => x.Year) - // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id - select new - { - ProfileId = p.Id, - Prefix = p.Prefix == null ? null : p.Prefix, - FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", - Position = p.Position == null ? null : p.Position, - Rank = p.PosLevel.PosLevelName, - GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), - ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? "" : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? Guid.Empty : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, - Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, - SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault() != null ? - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount : - p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, + where p.PosType.PosTypeName == "ทั่วไป" + && (p.PosLevel.PosLevelName == "อาวุโส" || + p.PosLevel.PosLevelName == "อาวุโส (เฉพาะสายงาน)") // อาวุโส + && p.ProfileInsignia != null + && p.ProfileInsignia.Count > 0 + && (p.ProfileInsignia.Where(x => + x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && + x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id) + .ToList() + .Count() == 0) + //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + // .OrderByDescending(x => x.Year) + // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id + select new + { + ProfileId = p.Id, + p.CitizenId, + p.FirstName, + p.LastName, + p.BirthDate, + p.DateAppoint, + Prefix = p.Prefix == null ? null : p.Prefix, + FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", + Position = p.Position == null ? null : p.Position, + Rank = p.PosLevel.PosLevelName, + GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), + ProfileDateAppoint = p.DateAppoint.Value, + LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? "" : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, + LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? Guid.Empty : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, + Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? null + : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, + SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : + p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault() != null ? p.ProfileSalary + .Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault().Amount : + p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, - PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? "" : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, - Gender = p.Gender == null ? null : p.Gender, - IsHigherLevel = p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? true : - IsHigherLevel(GetInsigniaById(p.ProfileInsignia - .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - .OrderByDescending(x => x.Year) - .FirstOrDefault().InsigniaId.Value).Name, - "ประถมาภรณ์มงกุฎไทย"), + PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? "" + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, + Gender = p.Gender == null ? null : p.Gender, + PositionLevelId = p.PosLevel == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosLevel.Id, + PositionLevelName = p.PosLevel == null ? null : p.PosLevel.PosLevelName, + PositionTypeId = p.PosType == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosType.Id, + PositionTypeName = p.PosType == null ? null : p.PosType.PosTypeName, + PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? 0 + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PositionSalaryAmount, + IsHigherLevel = + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null + ? true + : IsHigherLevel(GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != + GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year) + .FirstOrDefault().InsigniaId.Value).Name, + "ประถมาภรณ์มงกุฎไทย"), - PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, - PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "อาวุโส").OrderBy(p => p.Date).FirstOrDefault() == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "อาวุโส").OrderBy(p => p.Date).FirstOrDefault().Date, - FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id).OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id).OrderBy(x => x.Year).FirstOrDefault().Year - }) - .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.Value.ToThaiYear() }" - }, - - } - }) - .ToList(); + PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, + PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, + FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "อาวุโส").OrderBy(p => p.Date) + .FirstOrDefault() == null ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "อาวุโส").OrderBy(p => p.Date) + .FirstOrDefault().Date, + FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value == GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id) + .OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value == GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id) + .OrderBy(x => x.Year).FirstOrDefault().Year + }) + .ToList() + .Where(x => x.FirstRecvInsigniaYear != 0 && x.FirstRecvInsigniaYear <= period.Year - 3) + .Select(p => new InsigniaResultSet + { + ProfileId = p.ProfileId, + CitizenId = p.CitizenId, + FirstName = p.FirstName, + LastName = p.LastName, + PosLevelName = p.PositionLevelName, + PosTypeName = p.PositionTypeName, + PositionSalary = p.PostionSalaryAmount, + BirthDate = p.BirthDate, + DateAppoint = p.DateAppoint, + 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.Value.ToThaiYear()}" + }, + } + }) + .ToList(); var s3 = (from p in allProfilesByRoot - where p.PosType.PosTypeName == "ทั่วไป" - && (p.PosLevel.PosLevelName == "อาวุโส" || p.PosLevel.PosLevelName == "อาวุโส (เฉพาะสายงาน)") // อาวุโส - && p.ProfileInsignia != null - && p.ProfileInsignia.Count > 0 - && (p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && - x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id) - .ToList() - .Count() == 0) - //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - // .OrderByDescending(x => x.Year) - // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id - select new - { - ProfileId = p.Id, - Prefix = p.Prefix == null ? null : p.Prefix, - FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", - Position = p.Position == null ? null : p.Position, - Rank = p.PosLevel.PosLevelName, - GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), - ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? "" : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? Guid.Empty : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, - Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, - SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault() != null ? - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount : - p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, + where p.PosType.PosTypeName == "ทั่วไป" + && (p.PosLevel.PosLevelName == "อาวุโส" || + p.PosLevel.PosLevelName == "อาวุโส (เฉพาะสายงาน)") // อาวุโส + && p.ProfileInsignia != null + && p.ProfileInsignia.Count > 0 + && (p.ProfileInsignia.Where(x => + x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && + x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id) + .ToList() + .Count() == 0) + //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + // .OrderByDescending(x => x.Year) + // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id + select new + { + ProfileId = p.Id, + p.CitizenId, + p.FirstName, + p.LastName, + p.BirthDate, + p.DateAppoint, + Prefix = p.Prefix == null ? null : p.Prefix, + FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", + Position = p.Position == null ? null : p.Position, + Rank = p.PosLevel.PosLevelName, + GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), + ProfileDateAppoint = p.DateAppoint.Value, + LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? "" : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, + LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? Guid.Empty : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, + Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? null + : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, + SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : + p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault() != null ? p.ProfileSalary + .Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault().Amount : + p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, - PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? "" : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, - Gender = p.Gender == null ? null : p.Gender, - IsHigherLevel = p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? true : - IsHigherLevel(GetInsigniaById(p.ProfileInsignia - .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - .OrderByDescending(x => x.Year) - .FirstOrDefault().InsigniaId.Value).Name, - "ประถมาภรณ์ช้างเผือก"), - - PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, - PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "อาวุโส").OrderBy(p => p.Date).FirstOrDefault() == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "อาวุโส").OrderBy(p => p.Date).FirstOrDefault().Date, - FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id).OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id).OrderBy(x => x.Year).FirstOrDefault().Year - }) - .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.Value.ToThaiYear() }" - }, - - } - }) - .ToList(); + PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? "" + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, + Gender = p.Gender == null ? null : p.Gender, + PositionLevelId = p.PosLevel == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosLevel.Id, + PositionLevelName = p.PosLevel == null ? null : p.PosLevel.PosLevelName, + PositionTypeId = p.PosType == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosType.Id, + PositionTypeName = p.PosType == null ? null : p.PosType.PosTypeName, + PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? 0 + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PositionSalaryAmount, + IsHigherLevel = + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null + ? true + : IsHigherLevel(GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != + GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year) + .FirstOrDefault().InsigniaId.Value).Name, + "ประถมาภรณ์ช้างเผือก"), + PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, + PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, + FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "อาวุโส").OrderBy(p => p.Date) + .FirstOrDefault() == null ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "อาวุโส").OrderBy(p => p.Date) + .FirstOrDefault().Date, + FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id) + .OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id) + .OrderBy(x => x.Year).FirstOrDefault().Year + }) + .ToList() + .Where(x => x.FirstRecvInsigniaYear != 0 && x.FirstRecvInsigniaYear <= period.Year - 5) + .Select(p => new InsigniaResultSet + { + ProfileId = p.ProfileId, + CitizenId = p.CitizenId, + FirstName = p.FirstName, + LastName = p.LastName, + PosLevelName = p.PositionLevelName, + PosTypeName = p.PositionTypeName, + PositionSalary = p.PostionSalaryAmount, + BirthDate = p.BirthDate, + DateAppoint = p.DateAppoint, + 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.Value.ToThaiYear()}" + }, + } + }) + .ToList(); var result_candidate = new List(); @@ -2063,14 +2809,15 @@ namespace BMA.EHR.Application.Repositories #region " วิชาการ " - /// /// Gets the insignia candidate ประเภทวิชาการ ระดับปฏิบัติการ. /// /// The period identifier. /// The oc identifier. + /// /// - public async Task> GetInsigniaCandidate_Type2_Level5(Guid periodId, Guid ocId) + public async Task> GetInsigniaCandidate_Type2_Level5(Guid periodId, Guid ocId, + List allProfilesByRoot) { try { @@ -2079,82 +2826,133 @@ namespace BMA.EHR.Application.Repositories if (period == null) throw new Exception(GlobalMessages.CoinPeriodNotFound); - var allProfilesByRoot = (await _userProfileRepository.GetOfficerProfileByRootIdAsync(ocId, AccessToken)); + // var allProfilesByRoot = + // (await _userProfileRepository.GetOfficerProfileByRootIdAsync(ocId, AccessToken)); var CurrentRetireDate = new DateTime(period.Year, 9, 30); var s1 = (from p in allProfilesByRoot - where p.PosType.PosTypeName == "วิชาการ" - && p.ProfileInsignia.Count > 0 - && (p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && - x.InsigniaId.Value == GetInsigniaByName("ตริตาภรณ์มงกุฎไทย").Id) - .ToList() - .Count() == 0) - select new - { - ProfileId = p.Id, - Prefix = p.Prefix == null ? null : p.Prefix, - FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", - Position = p.Position == null ? null : p.Position, - Rank = p.PosLevel.PosLevelName, - GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), - ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? "" : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? Guid.Empty : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, - Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, - SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault() != null ? - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount : - p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, + where p.PosType.PosTypeName == "วิชาการ" + && p.ProfileInsignia.Count > 0 + && (p.ProfileInsignia.Where(x => + x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && + x.InsigniaId.Value == GetInsigniaByName("ตริตาภรณ์มงกุฎไทย").Id) + .ToList() + .Count() == 0) + select new + { + ProfileId = p.Id, + p.CitizenId, + p.FirstName, + p.LastName, + p.BirthDate, + p.DateAppoint, + Prefix = p.Prefix == null ? null : p.Prefix, + FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", + Position = p.Position == null ? null : p.Position, + Rank = p.PosLevel.PosLevelName, + GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), + ProfileDateAppoint = p.DateAppoint.Value, + LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? "" : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, + LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? Guid.Empty : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, + Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? null + : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, + SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : + p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault() != null ? p.ProfileSalary + .Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault().Amount : + p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, - PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? "" : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, - Gender = p.Gender == null ? null : p.Gender, - IsHigherLevel = p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? true : - IsHigherLevel(GetInsigniaById(p.ProfileInsignia - .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - .OrderByDescending(x => x.Year) - .FirstOrDefault().InsigniaId.Value).Name, - "ตริตาภรณ์มงกุฎไทย"), + PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? "" + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, + Gender = p.Gender == null ? null : p.Gender, + PositionLevelId = p.PosLevel == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosLevel.Id, + PositionLevelName = p.PosLevel == null ? null : p.PosLevel.PosLevelName, + PositionTypeId = p.PosType == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosType.Id, + PositionTypeName = p.PosType == null ? null : p.PosType.PosTypeName, + PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? 0 + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PositionSalaryAmount, + IsHigherLevel = + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null + ? true + : IsHigherLevel(GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != + GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year) + .FirstOrDefault().InsigniaId.Value).Name, + "ตริตาภรณ์มงกุฎไทย"), - PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, - PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "อาวุโส").OrderBy(p => p.Date).FirstOrDefault() == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "อาวุโส").OrderBy(p => p.Date).FirstOrDefault().Date, - FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id).OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id).OrderBy(x => x.Year).FirstOrDefault().Year - }) - .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(); + PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, + PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, + FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "อาวุโส").OrderBy(p => p.Date) + .FirstOrDefault() == null ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "อาวุโส").OrderBy(p => p.Date) + .FirstOrDefault().Date, + FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id) + .OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id) + .OrderBy(x => x.Year).FirstOrDefault().Year + }) + .ToList() + .Select(p => new InsigniaResultSet + { + ProfileId = p.ProfileId, + CitizenId = p.CitizenId, + FirstName = p.FirstName, + LastName = p.LastName, + PosLevelName = p.PositionLevelName, + PosTypeName = p.PositionTypeName, + PositionSalary = p.PostionSalaryAmount, + BirthDate = p.BirthDate, + DateAppoint = p.DateAppoint, + 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(); @@ -2191,7 +2989,8 @@ namespace BMA.EHR.Application.Repositories /// The period identifier. /// The oc identifier. /// - public async Task> GetInsigniaCandidate_Type2_Level6(Guid periodId, Guid ocId) + public async Task> GetInsigniaCandidate_Type2_Level6(Guid periodId, Guid ocId, + List allProfilesByRoot) { try { @@ -2200,248 +2999,400 @@ namespace BMA.EHR.Application.Repositories if (period == null) throw new Exception(GlobalMessages.CoinPeriodNotFound); - var allProfilesByRoot = (await _userProfileRepository.GetOfficerProfileByRootIdAsync(ocId, AccessToken)); + // var allProfilesByRoot = + // (await _userProfileRepository.GetOfficerProfileByRootIdAsync(ocId, AccessToken)); var CurrentRetireDate = new DateTime(period.Year, 9, 30); var s1 = (from p in allProfilesByRoot - where p.PosType.PosTypeName == "วิชาการ" - && (p.PosLevel.PosLevelName == "ชำนาญการ") // อาวุโส - && p.ProfileInsignia != null - && p.ProfileInsignia.Count > 0 - && (p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && - x.InsigniaId.Value == GetInsigniaByName("ตริตาภรณ์ช้างเผือก").Id) - .ToList() - .Count() == 0) - //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - // .OrderByDescending(x => x.Year) - // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ตริตาภรณ์ช้างเผือก").Id - select new - { - ProfileId = p.Id, - Prefix = p.Prefix == null ? null : p.Prefix, - FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", - Position = p.Position == null ? null : p.Position, - Rank = p.PosLevel.PosLevelName, - GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), - ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? "" : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? Guid.Empty : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, - Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, - SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault() != null ? - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount : - p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, + where p.PosType.PosTypeName == "วิชาการ" + && (p.PosLevel.PosLevelName == "ชำนาญการ") // อาวุโส + && p.ProfileInsignia != null + && p.ProfileInsignia.Count > 0 + && (p.ProfileInsignia.Where(x => + x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && + x.InsigniaId.Value == GetInsigniaByName("ตริตาภรณ์ช้างเผือก").Id) + .ToList() + .Count() == 0) + //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + // .OrderByDescending(x => x.Year) + // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ตริตาภรณ์ช้างเผือก").Id + select new + { + ProfileId = p.Id, + p.CitizenId, + p.FirstName, + p.LastName, + p.BirthDate, + p.DateAppoint, + Prefix = p.Prefix == null ? null : p.Prefix, + FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", + Position = p.Position == null ? null : p.Position, + Rank = p.PosLevel.PosLevelName, + GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), + ProfileDateAppoint = p.DateAppoint.Value, + LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? "" : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, + LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? Guid.Empty : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, + Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? null + : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, + SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : + p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault() != null ? p.ProfileSalary + .Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault().Amount : + p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, - PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? "" : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, - Gender = p.Gender == null ? null : p.Gender, - IsHigherLevel = p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? true : - IsHigherLevel(GetInsigniaById(p.ProfileInsignia - .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - .OrderByDescending(x => x.Year) - .FirstOrDefault().InsigniaId.Value).Name, - "ตริตาภรณ์ช้างเผือก"), + PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? "" + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, + Gender = p.Gender == null ? null : p.Gender,PositionLevelId = p.PosLevel == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosLevel.Id, + PositionLevelName = p.PosLevel == null ? null : p.PosLevel.PosLevelName, + PositionTypeId = p.PosType == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosType.Id, + PositionTypeName = p.PosType == null ? null : p.PosType.PosTypeName, + PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? 0 + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PositionSalaryAmount, + + IsHigherLevel = + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null + ? true + : IsHigherLevel(GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != + GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year) + .FirstOrDefault().InsigniaId.Value).Name, + "ตริตาภรณ์ช้างเผือก"), - PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, - PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "ชำนาญการ").OrderBy(p => p.Date).FirstOrDefault() == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "ชำนาญการ").OrderBy(p => p.Date).FirstOrDefault().Date, - FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id).OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id).OrderBy(x => x.Year).FirstOrDefault().Year - }) - .ToList() - .Select(p => new InsigniaResultSet + PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, + PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, + FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "ชำนาญการ").OrderBy(p => p.Date) + .FirstOrDefault() == null ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "ชำนาญการ").OrderBy(p => p.Date) + .FirstOrDefault().Date, + FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id) + .OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id) + .OrderBy(x => x.Year).FirstOrDefault().Year + }) + .ToList() + .Select(p => new InsigniaResultSet + { + ProfileId = p.ProfileId, + CitizenId = p.CitizenId, + FirstName = p.FirstName, + LastName = p.LastName, + PosLevelName = p.PositionLevelName, + PosTypeName = p.PositionTypeName, + PositionSalary = p.PostionSalaryAmount, + BirthDate = p.BirthDate, + DateAppoint = p.DateAppoint, + 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 { - 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(); + Condition = $"1.เป็นระดับชำนาญการ", + Result = $"ตำแหน่ง {p.Position} ประเภท {p.PositionType} ระดับ {p.PositionLevel}" + }, + } + }) + .ToList(); var s2 = (from p in allProfilesByRoot - where p.PosType.PosTypeName == "วิชาการ" - && (p.PosLevel.PosLevelName == "ชำนาญการ") // อาวุโส - && p.ProfileInsignia != null - && p.ProfileInsignia.Count > 0 - && (p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && - x.InsigniaId.Value == GetInsigniaByName("ทวีติยาภรณ์มงกุฎไทย").Id) - .ToList() - .Count() == 0) - //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - // .OrderByDescending(x => x.Year) - // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ทวีติยาภรณ์มงกุฎไทย").Id - select new - { - ProfileId = p.Id, - Prefix = p.Prefix == null ? null : p.Prefix, - FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", - Position = p.Position == null ? null : p.Position, - Rank = p.PosLevel.PosLevelName, - GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), - ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? "" : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? Guid.Empty : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, - Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, - SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault() != null ? - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount : - p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, + where p.PosType.PosTypeName == "วิชาการ" + && (p.PosLevel.PosLevelName == "ชำนาญการ") // อาวุโส + && p.ProfileInsignia != null + && p.ProfileInsignia.Count > 0 + && (p.ProfileInsignia.Where(x => + x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && + x.InsigniaId.Value == GetInsigniaByName("ทวีติยาภรณ์มงกุฎไทย").Id) + .ToList() + .Count() == 0) + //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + // .OrderByDescending(x => x.Year) + // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ทวีติยาภรณ์มงกุฎไทย").Id + select new + { + ProfileId = p.Id, + p.CitizenId, + p.FirstName, + p.LastName, + p.BirthDate, + p.DateAppoint, + Prefix = p.Prefix == null ? null : p.Prefix, + FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", + Position = p.Position == null ? null : p.Position, + Rank = p.PosLevel.PosLevelName, + GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), + ProfileDateAppoint = p.DateAppoint.Value, + LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? "" : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, + LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? Guid.Empty : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, + Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? null + : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, + SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : + p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault() != null ? p.ProfileSalary + .Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault().Amount : + p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, - PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? "" : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, - Gender = p.Gender == null ? null : p.Gender, - IsHigherLevel = p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? true : - IsHigherLevel(GetInsigniaById(p.ProfileInsignia - .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - .OrderByDescending(x => x.Year) - .FirstOrDefault().InsigniaId.Value).Name, - "ทวีติยาภรณ์มงกุฎไทย"), + PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? "" + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, + Gender = p.Gender == null ? null : p.Gender, + PositionLevelId = p.PosLevel == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosLevel.Id, + PositionLevelName = p.PosLevel == null ? null : p.PosLevel.PosLevelName, + PositionTypeId = p.PosType == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosType.Id, + PositionTypeName = p.PosType == null ? null : p.PosType.PosTypeName, + PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? 0 + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PositionSalaryAmount, + IsHigherLevel = + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null + ? true + : IsHigherLevel(GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != + GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year) + .FirstOrDefault().InsigniaId.Value).Name, + "ทวีติยาภรณ์มงกุฎไทย"), - PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, - PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "ชำนาญการ").OrderBy(p => p.Date).FirstOrDefault() == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "ชำนาญการ").OrderBy(p => p.Date).FirstOrDefault().Date, - FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id).OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id).OrderBy(x => x.Year).FirstOrDefault().Year - }) - .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 } บาท" - }, - - } - }) - .ToList(); + PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, + PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, + FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "ชำนาญการ").OrderBy(p => p.Date) + .FirstOrDefault() == null ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "ชำนาญการ").OrderBy(p => p.Date) + .FirstOrDefault().Date, + FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id) + .OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id) + .OrderBy(x => x.Year).FirstOrDefault().Year + }) + .ToList() + .Where(p => p.SalaryCondition >= 22140) + .Select(p => new InsigniaResultSet + { + ProfileId = p.ProfileId, + CitizenId = p.CitizenId, + FirstName = p.FirstName, + LastName = p.LastName, + PosLevelName = p.PositionLevelName, + PosTypeName = p.PositionTypeName, + PositionSalary = p.PostionSalaryAmount, + BirthDate = p.BirthDate, + DateAppoint = p.DateAppoint, + 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} บาท" + }, + } + }) + .ToList(); var s3 = (from p in allProfilesByRoot - where p.PosType.PosTypeName == "วิชาการ" - && (p.PosLevel.PosLevelName == "ชำนาญการ") // อาวุโส - && p.ProfileInsignia != null - && p.ProfileInsignia.Count > 0 - && (p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && - x.InsigniaId.Value == GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id) - .ToList() - .Count() == 0) - //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - // .OrderByDescending(x => x.Year) - // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id - select new - { - ProfileId = p.Id, - Prefix = p.Prefix == null ? null : p.Prefix, - FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", - Position = p.Position == null ? null : p.Position, - Rank = p.PosLevel.PosLevelName, - GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), - ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? "" : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? Guid.Empty : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, - Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, - SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year - 5, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault() != null ? - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year - 5, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount : - p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, + where p.PosType.PosTypeName == "วิชาการ" + && (p.PosLevel.PosLevelName == "ชำนาญการ") // อาวุโส + && p.ProfileInsignia != null + && p.ProfileInsignia.Count > 0 + && (p.ProfileInsignia.Where(x => + x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && + x.InsigniaId.Value == GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id) + .ToList() + .Count() == 0) + //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + // .OrderByDescending(x => x.Year) + // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id + select new + { + ProfileId = p.Id, + p.CitizenId, + p.FirstName, + p.LastName, + p.BirthDate, + p.DateAppoint, + Prefix = p.Prefix == null ? null : p.Prefix, + FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", + Position = p.Position == null ? null : p.Position, + Rank = p.PosLevel.PosLevelName, + GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), + ProfileDateAppoint = p.DateAppoint.Value, + LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? "" : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, + LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? Guid.Empty : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, + Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? null + : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, + SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : + p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year - 5, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault() != null ? p.ProfileSalary + .Where(x => x.Date.Value <= new DateTime(period.Year - 5, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault().Amount : + p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, - PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? "" : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, - Gender = p.Gender == null ? null : p.Gender, - IsHigherLevel = p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? true : - IsHigherLevel(GetInsigniaById(p.ProfileInsignia - .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - .OrderByDescending(x => x.Year) - .FirstOrDefault().InsigniaId.Value).Name, - "ทวีติยาภรณ์ช้างเผือก"), + PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? "" + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, + Gender = p.Gender == null ? null : p.Gender, + PositionLevelId = p.PosLevel == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosLevel.Id, + PositionLevelName = p.PosLevel == null ? null : p.PosLevel.PosLevelName, + PositionTypeId = p.PosType == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosType.Id, + PositionTypeName = p.PosType == null ? null : p.PosType.PosTypeName, + PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? 0 + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PositionSalaryAmount, + IsHigherLevel = + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null + ? true + : IsHigherLevel(GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != + GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year) + .FirstOrDefault().InsigniaId.Value).Name, + "ทวีติยาภรณ์ช้างเผือก"), - PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, - PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "ชำนาญการ").OrderBy(p => p.Date).FirstOrDefault() == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "ชำนาญการ").OrderBy(p => p.Date).FirstOrDefault().Date, - FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id).OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id).OrderBy(x => x.Year).FirstOrDefault().Year - }) - .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 } บาท" - }, - - } - }) - .ToList(); + PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, + PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, + FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "ชำนาญการ").OrderBy(p => p.Date) + .FirstOrDefault() == null ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "ชำนาญการ").OrderBy(p => p.Date) + .FirstOrDefault().Date, + FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id) + .OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id) + .OrderBy(x => x.Year).FirstOrDefault().Year + }) + .ToList() + .Where(p => p.SalaryCondition >= 22140) + .Select(p => new InsigniaResultSet + { + ProfileId = p.ProfileId, + CitizenId = p.CitizenId, + FirstName = p.FirstName, + LastName = p.LastName, + PosLevelName = p.PositionLevelName, + PosTypeName = p.PositionTypeName, + PositionSalary = p.PostionSalaryAmount, + BirthDate = p.BirthDate, + DateAppoint = p.DateAppoint, + 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} บาท" + }, + } + }) + .ToList(); var result_candidate = new List(); @@ -2515,7 +3466,8 @@ namespace BMA.EHR.Application.Repositories /// The period identifier. /// The oc identifier. /// - public async Task> GetInsigniaCandidate_Type2_Level7(Guid periodId, Guid ocId) + public async Task> GetInsigniaCandidate_Type2_Level7(Guid periodId, Guid ocId, + List allProfilesByRoot) { try { @@ -2524,175 +3476,276 @@ namespace BMA.EHR.Application.Repositories if (period == null) throw new Exception(GlobalMessages.CoinPeriodNotFound); - var allProfilesByRoot = (await _userProfileRepository.GetOfficerProfileByRootIdAsync(ocId, AccessToken)); + // var allProfilesByRoot = + // (await _userProfileRepository.GetOfficerProfileByRootIdAsync(ocId, AccessToken)); var CurrentRetireDate = new DateTime(period.Year, 9, 30); var s1 = (from p in allProfilesByRoot - where p.PosType.PosTypeName == "วิชาการ" - && (p.PosLevel.PosLevelName == "ชำนาญการพิเศษ") // อาวุโส - && p.ProfileInsignia != null - && p.ProfileInsignia.Count > 0 - && (p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && - x.InsigniaId.Value == GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id) - .ToList() - .Count() == 0) - //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - // .OrderByDescending(x => x.Year) - // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id - select new - { - ProfileId = p.Id, - Prefix = p.Prefix == null ? null : p.Prefix, - FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", - Position = p.Position == null ? null : p.Position, - Rank = p.PosLevel.PosLevelName, - GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), - ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? "" : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? Guid.Empty : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, - Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, - SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault() != null ? - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount : - p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, + where p.PosType.PosTypeName == "วิชาการ" + && (p.PosLevel.PosLevelName == "ชำนาญการพิเศษ") // อาวุโส + && p.ProfileInsignia != null + && p.ProfileInsignia.Count > 0 + && (p.ProfileInsignia.Where(x => + x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && + x.InsigniaId.Value == GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id) + .ToList() + .Count() == 0) + //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + // .OrderByDescending(x => x.Year) + // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id + select new + { + ProfileId = p.Id, + p.CitizenId, + p.FirstName, + p.LastName, + p.BirthDate, + p.DateAppoint, + Prefix = p.Prefix == null ? null : p.Prefix, + FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", + Position = p.Position == null ? null : p.Position, + Rank = p.PosLevel.PosLevelName, + GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), + ProfileDateAppoint = p.DateAppoint.Value, + LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? "" : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, + LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? Guid.Empty : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, + Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? null + : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, + SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : + p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault() != null ? p.ProfileSalary + .Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault().Amount : + p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, - PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? "" : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, - Gender = p.Gender == null ? null : p.Gender, - IsHigherLevel = p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? true : - IsHigherLevel(GetInsigniaById(p.ProfileInsignia - .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - .OrderByDescending(x => x.Year) - .FirstOrDefault().InsigniaId.Value).Name, - "ทวีติยาภรณ์ช้างเผือก"), + PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? "" + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, + Gender = p.Gender == null ? null : p.Gender, + PositionLevelId = p.PosLevel == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosLevel.Id, + PositionLevelName = p.PosLevel == null ? null : p.PosLevel.PosLevelName, + PositionTypeId = p.PosType == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosType.Id, + PositionTypeName = p.PosType == null ? null : p.PosType.PosTypeName, + PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? 0 + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PositionSalaryAmount, + IsHigherLevel = + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null + ? true + : IsHigherLevel(GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != + GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year) + .FirstOrDefault().InsigniaId.Value).Name, + "ทวีติยาภรณ์ช้างเผือก"), - PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, - PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "ชำนาญการพิเศษ").OrderBy(p => p.Date).FirstOrDefault() == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "ชำนาญการพิเศษ").OrderBy(p => p.Date).FirstOrDefault().Date, - FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id).OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id).OrderBy(x => x.Year).FirstOrDefault().Year - }) - .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(); + PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, + PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, + FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "ชำนาญการพิเศษ").OrderBy(p => p.Date) + .FirstOrDefault() == null ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "ชำนาญการพิเศษ").OrderBy(p => p.Date) + .FirstOrDefault().Date, + FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id) + .OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id) + .OrderBy(x => x.Year).FirstOrDefault().Year + }) + .ToList() + .Select(p => new InsigniaResultSet + { + ProfileId = p.ProfileId, + CitizenId = p.CitizenId, + FirstName = p.FirstName, + LastName = p.LastName, + PosLevelName = p.PositionLevelName, + PosTypeName = p.PositionTypeName, + PositionSalary = p.PostionSalaryAmount, + BirthDate = p.BirthDate, + DateAppoint = p.DateAppoint, + 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 allProfilesByRoot - where p.PosType.PosTypeName == "วิชาการ" - && (p.PosLevel.PosLevelName == "ชำนาญการพิเศษ") // อาวุโส - && p.ProfileInsignia != null - && p.ProfileInsignia.Count > 0 - && (p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && - x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id) - .ToList() - .Count() == 0) - //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - // .OrderByDescending(x => x.Year) - // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id - select new - { - ProfileId = p.Id, - Prefix = p.Prefix == null ? null : p.Prefix, - FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", - Position = p.Position == null ? null : p.Position, - Rank = p.PosLevel.PosLevelName, - GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), - ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? "" : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? Guid.Empty : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, - Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, - SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault() != null ? - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount : - p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, + where p.PosType.PosTypeName == "วิชาการ" + && (p.PosLevel.PosLevelName == "ชำนาญการพิเศษ") // อาวุโส + && p.ProfileInsignia != null + && p.ProfileInsignia.Count > 0 + && (p.ProfileInsignia.Where(x => + x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && + x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id) + .ToList() + .Count() == 0) + //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + // .OrderByDescending(x => x.Year) + // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id + select new + { + ProfileId = p.Id, + p.CitizenId, + p.FirstName, + p.LastName, + p.BirthDate, + p.DateAppoint, + Prefix = p.Prefix == null ? null : p.Prefix, + FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", + Position = p.Position == null ? null : p.Position, + Rank = p.PosLevel.PosLevelName, + GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), + ProfileDateAppoint = p.DateAppoint.Value, + LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? "" : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, + LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? Guid.Empty : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, + Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? null + : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, + SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : + p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault() != null ? p.ProfileSalary + .Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault().Amount : + p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, - PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? "" : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, - Gender = p.Gender == null ? null : p.Gender, - IsHigherLevel = p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? true : - IsHigherLevel(GetInsigniaById(p.ProfileInsignia - .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - .OrderByDescending(x => x.Year) - .FirstOrDefault().InsigniaId.Value).Name, - "ประถมาภรณ์มงกุฎไทย"), - - PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, - PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "ชำนาญการพิเศษ").OrderBy(p => p.Date).FirstOrDefault() == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "ชำนาญการพิเศษ").OrderBy(p => p.Date).FirstOrDefault().Date, - FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id).OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id).OrderBy(x => x.Year).FirstOrDefault().Year - }) - .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 } บาท" - }, - new MatchingCondition - { - Condition = $"2.ได้ ท.ช. มาแล้วไม่น้อยกว่า 5 ปี บริบูรณ์ (ได้ ท.ช. วันที่ { (new DateTime(period.Year-5, 7, 28)).ToThaiFullDate3() } หรือก่อนหน้านั้น)", - Result = $"ได้รับ ท.ช. ในปี { p.FirstRecvInsigniaYear.Value.ToThaiYear() }" - }, - - } - }) - .ToList(); + PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? "" + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, + Gender = p.Gender == null ? null : p.Gender, + PositionLevelId = p.PosLevel == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosLevel.Id, + PositionLevelName = p.PosLevel == null ? null : p.PosLevel.PosLevelName, + PositionTypeId = p.PosType == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosType.Id, + PositionTypeName = p.PosType == null ? null : p.PosType.PosTypeName, + PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? 0 + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PositionSalaryAmount, + IsHigherLevel = + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null + ? true + : IsHigherLevel(GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != + GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year) + .FirstOrDefault().InsigniaId.Value).Name, + "ประถมาภรณ์มงกุฎไทย"), + PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, + PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, + FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "ชำนาญการพิเศษ").OrderBy(p => p.Date) + .FirstOrDefault() == null ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "ชำนาญการพิเศษ").OrderBy(p => p.Date) + .FirstOrDefault().Date, + FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value == GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id) + .OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value == GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id) + .OrderBy(x => x.Year).FirstOrDefault().Year + }) + .ToList() + .Where(p => p.SalaryCondition >= 58390) + .Where(p => p.FirstRecvInsigniaYear != 0 && p.FirstRecvInsigniaYear <= period.Year - 5) + .Select(p => new InsigniaResultSet + { + ProfileId = p.ProfileId, + CitizenId = p.CitizenId, + FirstName = p.FirstName, + LastName = p.LastName, + PosLevelName = p.PositionLevelName, + PosTypeName = p.PositionTypeName, + PositionSalary = p.PostionSalaryAmount, + BirthDate = p.BirthDate, + DateAppoint = p.DateAppoint, + 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} บาท" + }, + new MatchingCondition + { + Condition = + $"2.ได้ ท.ช. มาแล้วไม่น้อยกว่า 5 ปี บริบูรณ์ (ได้ ท.ช. วันที่ {(new DateTime(period.Year - 5, 7, 28)).ToThaiFullDate3()} หรือก่อนหน้านั้น)", + Result = $"ได้รับ ท.ช. ในปี {p.FirstRecvInsigniaYear.Value.ToThaiYear()}" + }, + } + }) + .ToList(); var result_candidate = new List(); @@ -2747,7 +3800,8 @@ namespace BMA.EHR.Application.Repositories /// The period identifier. /// The oc identifier. /// - public async Task> GetInsigniaCandidate_Type2_Level8(Guid periodId, Guid ocId) + public async Task> GetInsigniaCandidate_Type2_Level8(Guid periodId, Guid ocId, + List allProfilesByRoot) { try { @@ -2756,251 +3810,399 @@ namespace BMA.EHR.Application.Repositories if (period == null) throw new Exception(GlobalMessages.CoinPeriodNotFound); - var allProfilesByRoot = (await _userProfileRepository.GetOfficerProfileByRootIdAsync(ocId, AccessToken)); + // var allProfilesByRoot = + // (await _userProfileRepository.GetOfficerProfileByRootIdAsync(ocId, AccessToken)); var CurrentRetireDate = new DateTime(period.Year, 9, 30); var s1 = (from p in allProfilesByRoot - where p.PosType.PosTypeName == "วิชาการ" - && (p.PosLevel.PosLevelName == "เชี่ยวชาญ") // อาวุโส - && p.ProfileInsignia != null - && p.ProfileInsignia.Count > 0 - && (p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && - x.InsigniaId.Value == GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id) - .ToList() - .Count() == 0) - //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - // .OrderByDescending(x => x.Year) - // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id - select new - { - ProfileId = p.Id, - Prefix = p.Prefix == null ? null : p.Prefix, - FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", - Position = p.Position == null ? null : p.Position, - Rank = p.PosLevel.PosLevelName, - GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), - ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? "" : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? Guid.Empty : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, - Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, - SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault() != null ? - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount : - p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, + where p.PosType.PosTypeName == "วิชาการ" + && (p.PosLevel.PosLevelName == "เชี่ยวชาญ") // อาวุโส + && p.ProfileInsignia != null + && p.ProfileInsignia.Count > 0 + && (p.ProfileInsignia.Where(x => + x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && + x.InsigniaId.Value == GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id) + .ToList() + .Count() == 0) + //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + // .OrderByDescending(x => x.Year) + // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id + select new + { + ProfileId = p.Id, + p.CitizenId, + p.FirstName, + p.LastName, + p.BirthDate, + p.DateAppoint, + Prefix = p.Prefix == null ? null : p.Prefix, + FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", + Position = p.Position == null ? null : p.Position, + Rank = p.PosLevel.PosLevelName, + GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), + ProfileDateAppoint = p.DateAppoint.Value, + LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? "" : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, + LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? Guid.Empty : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, + Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? null + : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, + SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : + p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault() != null ? p.ProfileSalary + .Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault().Amount : + p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, - PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? "" : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, - Gender = p.Gender == null ? null : p.Gender, - IsHigherLevel = p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? true : - IsHigherLevel(GetInsigniaById(p.ProfileInsignia - .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - .OrderByDescending(x => x.Year) - .FirstOrDefault().InsigniaId.Value).Name, - "ทวีติยาภรณ์ช้างเผือก"), + PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? "" + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, + Gender = p.Gender == null ? null : p.Gender, + PositionLevelId = p.PosLevel == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosLevel.Id, + PositionLevelName = p.PosLevel == null ? null : p.PosLevel.PosLevelName, + PositionTypeId = p.PosType == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosType.Id, + PositionTypeName = p.PosType == null ? null : p.PosType.PosTypeName, + PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? 0 + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PositionSalaryAmount, + IsHigherLevel = + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null + ? true + : IsHigherLevel(GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != + GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year) + .FirstOrDefault().InsigniaId.Value).Name, + "ทวีติยาภรณ์ช้างเผือก"), - PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, - PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "เชี่ยวชาญ").OrderBy(p => p.Date).FirstOrDefault() == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "เชี่ยวชาญ").OrderBy(p => p.Date).FirstOrDefault().Date, - FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id).OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id).OrderBy(x => x.Year).FirstOrDefault().Year - }) - .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(); + PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, + PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, + FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "เชี่ยวชาญ").OrderBy(p => p.Date) + .FirstOrDefault() == null ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "เชี่ยวชาญ").OrderBy(p => p.Date) + .FirstOrDefault().Date, + FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value == GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id) + .OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value == GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id) + .OrderBy(x => x.Year).FirstOrDefault().Year + }) + .ToList() + .Select(p => new InsigniaResultSet + { + ProfileId = p.ProfileId, + CitizenId = p.CitizenId, + FirstName = p.FirstName, + LastName = p.LastName, + PosLevelName = p.PositionLevelName, + PosTypeName = p.PositionTypeName, + PositionSalary = p.PostionSalaryAmount, + BirthDate = p.BirthDate, + DateAppoint = p.DateAppoint, + 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 allProfilesByRoot - where p.PosType.PosTypeName == "วิชาการ" - && (p.PosLevel.PosLevelName == "เชี่ยวชาญ") // อาวุโส - && p.ProfileInsignia != null - && p.ProfileInsignia.Count > 0 - && (p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && - x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id) - .ToList() - .Count() == 0) - //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - // .OrderByDescending(x => x.Year) - // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id - select new - { - ProfileId = p.Id, - Prefix = p.Prefix == null ? null : p.Prefix, - FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", - Position = p.Position == null ? null : p.Position, - Rank = p.PosLevel.PosLevelName, - GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), - ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? "" : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? Guid.Empty : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, - Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, - SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault() != null ? - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount : - p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, + where p.PosType.PosTypeName == "วิชาการ" + && (p.PosLevel.PosLevelName == "เชี่ยวชาญ") // อาวุโส + && p.ProfileInsignia != null + && p.ProfileInsignia.Count > 0 + && (p.ProfileInsignia.Where(x => + x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && + x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id) + .ToList() + .Count() == 0) + //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + // .OrderByDescending(x => x.Year) + // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id + select new + { + ProfileId = p.Id, + p.CitizenId, + p.FirstName, + p.LastName, + p.BirthDate, + p.DateAppoint, + Prefix = p.Prefix == null ? null : p.Prefix, + FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", + Position = p.Position == null ? null : p.Position, + Rank = p.PosLevel.PosLevelName, + GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), + ProfileDateAppoint = p.DateAppoint.Value, + LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? "" : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, + LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? Guid.Empty : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, + Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? null + : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, + SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : + p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault() != null ? p.ProfileSalary + .Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault().Amount : + p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, - PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? "" : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, - Gender = p.Gender == null ? null : p.Gender, - IsHigherLevel = p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? true : - IsHigherLevel(GetInsigniaById(p.ProfileInsignia - .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - .OrderByDescending(x => x.Year) - .FirstOrDefault().InsigniaId.Value).Name, - "ประถมาภรณ์มงกุฎไทย"), + PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? "" + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, + Gender = p.Gender == null ? null : p.Gender, + PositionLevelId = p.PosLevel == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosLevel.Id, + PositionLevelName = p.PosLevel == null ? null : p.PosLevel.PosLevelName, + PositionTypeId = p.PosType == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosType.Id, + PositionTypeName = p.PosType == null ? null : p.PosType.PosTypeName, + PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? 0 + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PositionSalaryAmount, + IsHigherLevel = + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null + ? true + : IsHigherLevel(GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != + GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year) + .FirstOrDefault().InsigniaId.Value).Name, + "ประถมาภรณ์มงกุฎไทย"), - PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, - PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "เชี่ยวชาญ").OrderBy(p => p.Date).FirstOrDefault() == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "เชี่ยวชาญ").OrderBy(p => p.Date).FirstOrDefault().Date, - FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id).OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id).OrderBy(x => x.Year).FirstOrDefault().Year - }) - .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.Value.ToThaiYear() }" - }, - - } - }) - .ToList(); + PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, + PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, + FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "เชี่ยวชาญ").OrderBy(p => p.Date) + .FirstOrDefault() == null ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "เชี่ยวชาญ").OrderBy(p => p.Date) + .FirstOrDefault().Date, + FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value == GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id) + .OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value == GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id) + .OrderBy(x => x.Year).FirstOrDefault().Year + }) + .ToList() + .Where(p => p.FirstRecvInsigniaYear != 0 && p.FirstRecvInsigniaYear <= period.Year - 3) + .Select(p => new InsigniaResultSet + { + ProfileId = p.ProfileId, + CitizenId = p.CitizenId, + FirstName = p.FirstName, + LastName = p.LastName, + PosLevelName = p.PositionLevelName, + PosTypeName = p.PositionTypeName, + PositionSalary = p.PostionSalaryAmount, + BirthDate = p.BirthDate, + DateAppoint = p.DateAppoint, + 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.Value.ToThaiYear()}" + }, + } + }) + .ToList(); var s3 = (from p in allProfilesByRoot - where p.PosType.PosTypeName == "วิชาการ" - && (p.PosLevel.PosLevelName == "เชี่ยวชาญ") // อาวุโส - && p.ProfileInsignia != null - && p.ProfileInsignia.Count > 0 - && (p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && - x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id) - .ToList() - .Count() == 0) - //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - // .OrderByDescending(x => x.Year) - // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id - select new - { - ProfileId = p.Id, - Prefix = p.Prefix == null ? null : p.Prefix, - FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", - Position = p.Position == null ? null : p.Position, - Rank = p.PosLevel.PosLevelName, - GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), - ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? "" : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? Guid.Empty : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, - Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, - SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault() != null ? - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount : - p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, + where p.PosType.PosTypeName == "วิชาการ" + && (p.PosLevel.PosLevelName == "เชี่ยวชาญ") // อาวุโส + && p.ProfileInsignia != null + && p.ProfileInsignia.Count > 0 + && (p.ProfileInsignia.Where(x => + x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && + x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id) + .ToList() + .Count() == 0) + //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + // .OrderByDescending(x => x.Year) + // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id + select new + { + ProfileId = p.Id, + p.CitizenId, + p.FirstName, + p.LastName, + p.BirthDate, + p.DateAppoint, + Prefix = p.Prefix == null ? null : p.Prefix, + FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", + Position = p.Position == null ? null : p.Position, + Rank = p.PosLevel.PosLevelName, + GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), + ProfileDateAppoint = p.DateAppoint.Value, + LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? "" : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, + LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? Guid.Empty : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, + Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? null + : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, + SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : + p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault() != null ? p.ProfileSalary + .Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault().Amount : + p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, - PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? "" : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, - Gender = p.Gender == null ? null : p.Gender, - IsHigherLevel = p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? true : - IsHigherLevel(GetInsigniaById(p.ProfileInsignia - .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - .OrderByDescending(x => x.Year) - .FirstOrDefault().InsigniaId.Value).Name, - "ประถมาภรณ์ช้างเผือก"), + PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? "" + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, + Gender = p.Gender == null ? null : p.Gender, + PositionLevelId = p.PosLevel == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosLevel.Id, + PositionLevelName = p.PosLevel == null ? null : p.PosLevel.PosLevelName, + PositionTypeId = p.PosType == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosType.Id, + PositionTypeName = p.PosType == null ? null : p.PosType.PosTypeName, + PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? 0 + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PositionSalaryAmount, + IsHigherLevel = + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null + ? true + : IsHigherLevel(GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != + GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year) + .FirstOrDefault().InsigniaId.Value).Name, + "ประถมาภรณ์ช้างเผือก"), - PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, - PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "เชี่ยวชาญ").OrderBy(p => p.Date).FirstOrDefault() == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "เชี่ยวชาญ").OrderBy(p => p.Date).FirstOrDefault().Date, - FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id).OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id).OrderBy(x => x.Year).FirstOrDefault().Year - }) - .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.Value.ToThaiYear() }" - }, - - } - }) - .ToList(); + PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, + PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, + FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "เชี่ยวชาญ").OrderBy(p => p.Date) + .FirstOrDefault() == null ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "เชี่ยวชาญ").OrderBy(p => p.Date) + .FirstOrDefault().Date, + FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id) + .OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id) + .OrderBy(x => x.Year).FirstOrDefault().Year + }) + .ToList() + .Where(p => p.FirstRecvInsigniaYear != 0 && p.FirstRecvInsigniaYear <= period.Year - 5) + .Select(p => new InsigniaResultSet + { + ProfileId = p.ProfileId, + CitizenId = p.CitizenId, + FirstName = p.FirstName, + LastName = p.LastName, + PosLevelName = p.PositionLevelName, + PosTypeName = p.PositionTypeName, + PositionSalary = p.PostionSalaryAmount, + BirthDate = p.BirthDate, + DateAppoint = p.DateAppoint, + 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.Value.ToThaiYear()}" + }, + } + }) + .ToList(); var result_candidate = new List(); @@ -3073,7 +4275,8 @@ namespace BMA.EHR.Application.Repositories /// The period identifier. /// The oc identifier. /// - public async Task> GetInsigniaCandidate_Type2_Level9_1(Guid periodId, Guid ocId) + public async Task> GetInsigniaCandidate_Type2_Level9_1(Guid periodId, Guid ocId, + List allProfilesByRoot) { try { @@ -3082,271 +4285,423 @@ namespace BMA.EHR.Application.Repositories if (period == null) throw new Exception(GlobalMessages.CoinPeriodNotFound); - var allProfilesByRoot = (await _userProfileRepository.GetOfficerProfileByRootIdAsync(ocId, AccessToken)); + // var allProfilesByRoot = + // (await _userProfileRepository.GetOfficerProfileByRootIdAsync(ocId, AccessToken)); var CurrentRetireDate = new DateTime(period.Year, 9, 30); var s1 = (from p in allProfilesByRoot - where p.PosType.PosTypeName == "วิชาการ" - && (p.PosLevel.PosLevelName == "ทรงคุณวุฒิ") // อาวุโส - && p.ProfileInsignia != null - && p.ProfileInsignia.Count > 0 - && (p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && - x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id) - .ToList() - .Count() == 0) - //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - // .OrderByDescending(x => x.Year) - // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id - select new - { - ProfileId = p.Id, - Prefix = p.Prefix == null ? null : p.Prefix, - FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", - Position = p.Position == null ? null : p.Position, - Rank = p.PosLevel.PosLevelName, - GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), - ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? "" : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? Guid.Empty : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, - Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, - SalaryPosition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().PositionSalaryAmount, - SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault() != null ? - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount : - p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, + where p.PosType.PosTypeName == "วิชาการ" + && (p.PosLevel.PosLevelName == "ทรงคุณวุฒิ") // อาวุโส + && p.ProfileInsignia != null + && p.ProfileInsignia.Count > 0 + && (p.ProfileInsignia.Where(x => + x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && + x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id) + .ToList() + .Count() == 0) + //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + // .OrderByDescending(x => x.Year) + // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id + select new + { + ProfileId = p.Id, + p.CitizenId, + p.FirstName, + p.LastName, + p.BirthDate, + p.DateAppoint, + Prefix = p.Prefix == null ? null : p.Prefix, + FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", + Position = p.Position == null ? null : p.Position, + Rank = p.PosLevel.PosLevelName, + GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), + ProfileDateAppoint = p.DateAppoint.Value, + LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? "" : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, + LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? Guid.Empty : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, + Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? null + : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, + SalaryPosition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? null + : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().PositionSalaryAmount, + SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : + p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault() != null ? p.ProfileSalary + .Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault().Amount : + p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, - PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? "" : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, - Gender = p.Gender == null ? null : p.Gender, - IsHigherLevel = p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? true : - IsHigherLevel(GetInsigniaById(p.ProfileInsignia - .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - .OrderByDescending(x => x.Year) - .FirstOrDefault().InsigniaId.Value).Name, - "ประถมาภรณ์ช้างเผือก"), + PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? "" + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, + Gender = p.Gender == null ? null : p.Gender, + PositionLevelId = p.PosLevel == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosLevel.Id, + PositionLevelName = p.PosLevel == null ? null : p.PosLevel.PosLevelName, + PositionTypeId = p.PosType == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosType.Id, + PositionTypeName = p.PosType == null ? null : p.PosType.PosTypeName, + PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? 0 + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PositionSalaryAmount, + IsHigherLevel = + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null + ? true + : IsHigherLevel(GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != + GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year) + .FirstOrDefault().InsigniaId.Value).Name, + "ประถมาภรณ์ช้างเผือก"), - PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, - PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "ทรงคุณวุฒิ").OrderBy(p => p.Date).FirstOrDefault() == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "ทรงคุณวุฒิ").OrderBy(p => p.Date).FirstOrDefault().Date, - FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id).OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id).OrderBy(x => x.Year).FirstOrDefault().Year - }) - .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.Value.ToThaiYear() }" - }, - new MatchingCondition - { - Condition = $"ได้รับเงินประจำตำแหน่ง 13,000 บาท", - Result = $"ได้รับเงินประจำตำแหน่ง { p.SalaryPosition } บาท" - } - } - }) - .ToList(); + PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, + PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, + FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "ทรงคุณวุฒิ").OrderBy(p => p.Date) + .FirstOrDefault() == null ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "ทรงคุณวุฒิ").OrderBy(p => p.Date) + .FirstOrDefault().Date, + FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id) + .OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id) + .OrderBy(x => x.Year).FirstOrDefault().Year + }) + .ToList() + .Where(x => x.FirstRecvInsigniaYear != 0 && x.FirstRecvInsigniaYear <= period.Year - 3) + .Where(x => x.SalaryPosition == 13000) + .Select(p => new InsigniaResultSet + { + ProfileId = p.ProfileId, + CitizenId = p.CitizenId, + FirstName = p.FirstName, + LastName = p.LastName, + PosLevelName = p.PositionLevelName, + PosTypeName = p.PositionTypeName, + PositionSalary = p.PostionSalaryAmount, + BirthDate = p.BirthDate, + DateAppoint = p.DateAppoint, + 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.Value.ToThaiYear()}" + }, + new MatchingCondition + { + Condition = $"ได้รับเงินประจำตำแหน่ง 13,000 บาท", + Result = $"ได้รับเงินประจำตำแหน่ง {p.SalaryPosition} บาท" + } + } + }) + .ToList(); var s2 = (from p in allProfilesByRoot - where p.PosType.PosTypeName == "วิชาการ" - && (p.PosLevel.PosLevelName == "ทรงคุณวุฒิ") // อาวุโส - && p.ProfileInsignia != null - && p.ProfileInsignia.Count > 0 - && (p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && - x.InsigniaId.Value == GetInsigniaByName("มหาวชิรมงกุฎ").Id) - .ToList() - .Count() == 0) - //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - // .OrderByDescending(x => x.Year) - // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("มหาวชิรมงกุฎ").Id - select new - { - ProfileId = p.Id, - Prefix = p.Prefix == null ? null : p.Prefix, - FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", - Position = p.Position == null ? null : p.Position, - Rank = p.PosLevel.PosLevelName, - GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), - ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? "" : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? Guid.Empty : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, - Salary = p.ProfileSalary == null ? null : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, - SalaryPosition = p.ProfileSalary == null ? null : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().PositionSalaryAmount, - SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault() != null ? - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount : - p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, + where p.PosType.PosTypeName == "วิชาการ" + && (p.PosLevel.PosLevelName == "ทรงคุณวุฒิ") // อาวุโส + && p.ProfileInsignia != null + && p.ProfileInsignia.Count > 0 + && (p.ProfileInsignia.Where(x => + x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && + x.InsigniaId.Value == GetInsigniaByName("มหาวชิรมงกุฎ").Id) + .ToList() + .Count() == 0) + //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + // .OrderByDescending(x => x.Year) + // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("มหาวชิรมงกุฎ").Id + select new + { + ProfileId = p.Id, + p.CitizenId, + p.FirstName, + p.LastName, + p.BirthDate, + p.DateAppoint, + Prefix = p.Prefix == null ? null : p.Prefix, + FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", + Position = p.Position == null ? null : p.Position, + Rank = p.PosLevel.PosLevelName, + GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), + ProfileDateAppoint = p.DateAppoint.Value, + LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? "" : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, + LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? Guid.Empty : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, + Salary = p.ProfileSalary == null + ? null + : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, + SalaryPosition = p.ProfileSalary == null + ? null + : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().PositionSalaryAmount, + SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : + p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault() != null ? p.ProfileSalary + .Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault().Amount : + p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, - PosNo = p.PosNo == null ? "" : p.PosNo, - Gender = p.Gender == null ? null : p.Gender, - IsHigherLevel = p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? true : - IsHigherLevel(GetInsigniaById(p.ProfileInsignia - .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - .OrderByDescending(x => x.Year) - .FirstOrDefault().InsigniaId.Value).Name, - "มหาวชิรมงกุฎ"), + PosNo = p.PosNo == null ? "" : p.PosNo, + Gender = p.Gender == null ? null : p.Gender, + PositionLevelId = p.PosLevel == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosLevel.Id, + PositionLevelName = p.PosLevel == null ? null : p.PosLevel.PosLevelName, + PositionTypeId = p.PosType == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosType.Id, + PositionTypeName = p.PosType == null ? null : p.PosType.PosTypeName, + PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? 0 + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PositionSalaryAmount, + IsHigherLevel = + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null + ? true + : IsHigherLevel(GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != + GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year) + .FirstOrDefault().InsigniaId.Value).Name, + "มหาวชิรมงกุฎ"), - PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, - PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "ทรงคุณวุฒิ").OrderBy(p => p.Date).FirstOrDefault() == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "ทรงคุณวุฒิ").OrderBy(p => p.Date).FirstOrDefault().Date, - FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id).OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id).OrderBy(x => x.Year).FirstOrDefault().Year - }) - .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.Value.ToThaiYear() }" - }, - new MatchingCondition - { - Condition = $"ได้รับเงินประจำตำแหน่ง 13,000 บาท", - Result = $"ได้รับเงินประจำตำแหน่ง { p.SalaryPosition } บาท" - } - - } - }) - .ToList(); + PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, + PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, + FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "ทรงคุณวุฒิ").OrderBy(p => p.Date) + .FirstOrDefault() == null ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "ทรงคุณวุฒิ").OrderBy(p => p.Date) + .FirstOrDefault().Date, + FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id) + .OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id) + .OrderBy(x => x.Year).FirstOrDefault().Year + }) + .ToList() + .Where(p => p.FirstRecvInsigniaYear != 0 && p.FirstRecvInsigniaYear <= period.Year - 3) + .Where(p => p.SalaryPosition == 13000) + .Select(p => new InsigniaResultSet + { + ProfileId = p.ProfileId, + CitizenId = p.CitizenId, + FirstName = p.FirstName, + LastName = p.LastName, + PosLevelName = p.PositionLevelName, + PosTypeName = p.PositionTypeName, + PositionSalary = p.PostionSalaryAmount, + BirthDate = p.BirthDate, + DateAppoint = p.DateAppoint, + 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.Value.ToThaiYear()}" + }, + new MatchingCondition + { + Condition = $"ได้รับเงินประจำตำแหน่ง 13,000 บาท", + Result = $"ได้รับเงินประจำตำแหน่ง {p.SalaryPosition} บาท" + } + } + }) + .ToList(); var s3 = (from p in allProfilesByRoot - where p.PosType.PosTypeName == "วิชาการ" - && (p.PosLevel.PosLevelName == "ทรงคุณวุฒิ") // อาวุโส - && p.ProfileInsignia != null - && p.ProfileInsignia.Count > 0 - && (p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && - x.InsigniaId.Value == GetInsigniaByName("มหาปรมาภรณ์ช้างเผือก").Id) - .ToList() - .Count() == 0) - //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - // .OrderByDescending(x => x.Year) - // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("มหาปรมาภรณ์ช้างเผือก").Id - select new - { - ProfileId = p.Id, - Prefix = p.Prefix == null ? null : p.Prefix, - FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", - Position = p.Position == null ? null : p.Position, - Rank = p.PosLevel.PosLevelName, - GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), - ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? "" : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? Guid.Empty : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, - Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, - SalaryPosition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().PositionSalaryAmount, - SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault() != null ? - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount : - p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, + where p.PosType.PosTypeName == "วิชาการ" + && (p.PosLevel.PosLevelName == "ทรงคุณวุฒิ") // อาวุโส + && p.ProfileInsignia != null + && p.ProfileInsignia.Count > 0 + && (p.ProfileInsignia.Where(x => + x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && + x.InsigniaId.Value == GetInsigniaByName("มหาปรมาภรณ์ช้างเผือก").Id) + .ToList() + .Count() == 0) + //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + // .OrderByDescending(x => x.Year) + // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("มหาปรมาภรณ์ช้างเผือก").Id + select new + { + ProfileId = p.Id, + p.CitizenId, + p.FirstName, + p.LastName, + p.BirthDate, + p.DateAppoint, + Prefix = p.Prefix == null ? null : p.Prefix, + FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", + Position = p.Position == null ? null : p.Position, + Rank = p.PosLevel.PosLevelName, + GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), + ProfileDateAppoint = p.DateAppoint.Value, + LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? "" : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, + LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? Guid.Empty : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, + Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? null + : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, + SalaryPosition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? null + : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().PositionSalaryAmount, + SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : + p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault() != null ? p.ProfileSalary + .Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault().Amount : + p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, - PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? "" : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, - Gender = p.Gender == null ? null : p.Gender, - IsHigherLevel = p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? true : - IsHigherLevel(GetInsigniaById(p.ProfileInsignia - .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - .OrderByDescending(x => x.Year) - .FirstOrDefault().InsigniaId.Value).Name, - "มหาปรมาภรณ์ช้างเผือก"), + PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? "" + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, + Gender = p.Gender == null ? null : p.Gender, + PositionLevelId = p.PosLevel == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosLevel.Id, + PositionLevelName = p.PosLevel == null ? null : p.PosLevel.PosLevelName, + PositionTypeId = p.PosType == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosType.Id, + PositionTypeName = p.PosType == null ? null : p.PosType.PosTypeName, + PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? 0 + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PositionSalaryAmount, + IsHigherLevel = + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null + ? true + : IsHigherLevel(GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != + GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year) + .FirstOrDefault().InsigniaId.Value).Name, + "มหาปรมาภรณ์ช้างเผือก"), - PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, - PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "ทรงคุณวุฒิ").OrderBy(p => p.Date).FirstOrDefault() == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "ทรงคุณวุฒิ").OrderBy(p => p.Date).FirstOrDefault().Date, - FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("มหาวชิรมงกุฎ").Id).OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("มหาวชิรมงกุฎ").Id).OrderBy(x => x.Year).FirstOrDefault().Year - }) - .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.Value.ToThaiYear() }" - }, - new MatchingCondition - { - Condition = $"ได้รับเงินประจำตำแหน่ง 13,000 บาท", - Result = $"ได้รับเงินประจำตำแหน่ง { p.SalaryPosition } บาท" - } - - } - }) - .ToList(); + PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, + PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, + FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "ทรงคุณวุฒิ").OrderBy(p => p.Date) + .FirstOrDefault() == null ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "ทรงคุณวุฒิ").OrderBy(p => p.Date) + .FirstOrDefault().Date, + FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : + p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("มหาวชิรมงกุฎ").Id) + .OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : + p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("มหาวชิรมงกุฎ").Id) + .OrderBy(x => x.Year).FirstOrDefault().Year + }) + .ToList() + .Where(p => p.FirstRecvInsigniaYear != 0 && p.FirstRecvInsigniaYear <= period.Year - 5) + .Where(p => p.SalaryPosition == 13000) + .Select(p => new InsigniaResultSet + { + ProfileId = p.ProfileId, + CitizenId = p.CitizenId, + FirstName = p.FirstName, + LastName = p.LastName, + PosLevelName = p.PositionLevelName, + PosTypeName = p.PositionTypeName, + PositionSalary = p.PostionSalaryAmount, + BirthDate = p.BirthDate, + DateAppoint = p.DateAppoint, + 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.Value.ToThaiYear()}" + }, + new MatchingCondition + { + Condition = $"ได้รับเงินประจำตำแหน่ง 13,000 บาท", + Result = $"ได้รับเงินประจำตำแหน่ง {p.SalaryPosition} บาท" + } + } + }) + .ToList(); var result_candidate = new List(); @@ -3418,7 +4773,8 @@ namespace BMA.EHR.Application.Repositories /// The period identifier. /// The oc identifier. /// - public async Task> GetInsigniaCandidate_Type2_Level9_2(Guid periodId, Guid ocId) + public async Task> GetInsigniaCandidate_Type2_Level9_2(Guid periodId, Guid ocId, + List allProfilesByRoot) { try { @@ -3427,268 +4783,425 @@ namespace BMA.EHR.Application.Repositories if (period == null) throw new Exception(GlobalMessages.CoinPeriodNotFound); - var allProfilesByRoot = (await _userProfileRepository.GetOfficerProfileByRootIdAsync(ocId, AccessToken)); + // var allProfilesByRoot = + // (await _userProfileRepository.GetOfficerProfileByRootIdAsync(ocId, AccessToken)); var CurrentRetireDate = new DateTime(period.Year, 9, 30); var s1 = (from p in allProfilesByRoot - where p.PosType.PosTypeName == "วิชาการ" - && (p.PosLevel.PosLevelName == "ทรงคุณวุฒิ") // อาวุโส - && p.ProfileInsignia != null - && p.ProfileInsignia.Count > 0 - && (p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && - x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id) - .ToList() - .Count() == 0) - //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - // .OrderByDescending(x => x.Year) - // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id - select new - { - ProfileId = p.Id, - Prefix = p.Prefix == null ? null : p.Prefix, - FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", - Position = p.Position == null ? null : p.Position, - Rank = p.PosLevel.PosLevelName, - GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), - ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? "" : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? Guid.Empty : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, - Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, - SalaryPosition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().PositionSalaryAmount, - SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault() != null ? - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount : - p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, + where p.PosType.PosTypeName == "วิชาการ" + && (p.PosLevel.PosLevelName == "ทรงคุณวุฒิ") // อาวุโส + && p.ProfileInsignia != null + && p.ProfileInsignia.Count > 0 + && (p.ProfileInsignia.Where(x => + x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && + x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id) + .ToList() + .Count() == 0) + //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + // .OrderByDescending(x => x.Year) + // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id + select new + { + ProfileId = p.Id, + p.CitizenId, + p.FirstName, + p.LastName, + p.BirthDate, + p.DateAppoint, + Prefix = p.Prefix == null ? null : p.Prefix, + FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", + Position = p.Position == null ? null : p.Position, + Rank = p.PosLevel.PosLevelName, + GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), + ProfileDateAppoint = p.DateAppoint.Value, + LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? "" : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, + LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? Guid.Empty : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, + Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? null + : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, + SalaryPosition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? null + : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().PositionSalaryAmount, + SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : + p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault() != null ? p.ProfileSalary + .Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault().Amount : + p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, - PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? "" : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, - Gender = p.Gender == null ? null : p.Gender, - IsHigherLevel = p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? true : - IsHigherLevel(GetInsigniaById(p.ProfileInsignia - .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - .OrderByDescending(x => x.Year) - .FirstOrDefault().InsigniaId.Value).Name, - "ประถมาภรณ์ช้างเผือก"), + PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? "" + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, + Gender = p.Gender == null ? null : p.Gender, + PositionLevelId = p.PosLevel == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosLevel.Id, + PositionLevelName = p.PosLevel == null ? null : p.PosLevel.PosLevelName, + PositionTypeId = p.PosType == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosType.Id, + PositionTypeName = p.PosType == null ? null : p.PosType.PosTypeName, + PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? 0 + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PositionSalaryAmount, + IsHigherLevel = + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null + ? true + : IsHigherLevel(GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != + GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year) + .FirstOrDefault().InsigniaId.Value).Name, + "ประถมาภรณ์ช้างเผือก"), - PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, - PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "ทรงคุณวุฒิ").OrderBy(p => p.Date).FirstOrDefault() == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "ทรงคุณวุฒิ").OrderBy(p => p.Date).FirstOrDefault().Date, - FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id).OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id).OrderBy(x => x.Year).FirstOrDefault().Year - }) - .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.Value.ToThaiYear() }" - }, - new MatchingCondition - { - Condition = $"ได้รับเงินประจำตำแหน่ง 15,600 บาท", - Result = $"ได้รับเงินประจำตำแหน่ง { p.SalaryPosition } บาท" - } - } - }) - .ToList(); + PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, + PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, + FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "ทรงคุณวุฒิ").OrderBy(p => p.Date) + .FirstOrDefault() == null ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "ทรงคุณวุฒิ").OrderBy(p => p.Date) + .FirstOrDefault().Date, + FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id) + .OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id) + .OrderBy(x => x.Year).FirstOrDefault().Year + }) + .ToList() + .Where(x => x.FirstRecvInsigniaYear != 0 && x.FirstRecvInsigniaYear <= period.Year - 3) + .Where(x => x.SalaryPosition == 15600) + .Select(p => new InsigniaResultSet + { + ProfileId = p.ProfileId, + CitizenId = p.CitizenId, + FirstName = p.FirstName, + LastName = p.LastName, + PosLevelName = p.PositionLevelName, + PosTypeName = p.PositionTypeName, + PositionSalary = p.PostionSalaryAmount, + BirthDate = p.BirthDate, + DateAppoint = p.DateAppoint, + 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.Value.ToThaiYear()}" + }, + new MatchingCondition + { + Condition = $"ได้รับเงินประจำตำแหน่ง 15,600 บาท", + Result = $"ได้รับเงินประจำตำแหน่ง {p.SalaryPosition} บาท" + } + } + }) + .ToList(); var s2 = (from p in allProfilesByRoot - where p.PosType.PosTypeName == "วิชาการ" - && (p.PosLevel.PosLevelName == "ทรงคุณวุฒิ") // อาวุโส - && p.ProfileInsignia != null - && p.ProfileInsignia.Count > 0 - && (p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && - x.InsigniaId.Value == GetInsigniaByName("มหาวชิรมงกุฎ").Id) - .ToList() - .Count() == 0) - //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - // .OrderByDescending(x => x.Year) - // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("มหาวชิรมงกุฎ").Id - select new - { - ProfileId = p.Id, - Prefix = p.Prefix == null ? null : p.Prefix, - FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", - Position = p.Position == null ? null : p.Position, - Rank = p.PosLevel.PosLevelName, - GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), - ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? "" : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? Guid.Empty : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, - Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, - SalaryPosition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().PositionSalaryAmount, - SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault() != null ? - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount : - p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, + where p.PosType.PosTypeName == "วิชาการ" + && (p.PosLevel.PosLevelName == "ทรงคุณวุฒิ") // อาวุโส + && p.ProfileInsignia != null + && p.ProfileInsignia.Count > 0 + && (p.ProfileInsignia.Where(x => + x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && + x.InsigniaId.Value == GetInsigniaByName("มหาวชิรมงกุฎ").Id) + .ToList() + .Count() == 0) + //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + // .OrderByDescending(x => x.Year) + // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("มหาวชิรมงกุฎ").Id + select new + { + ProfileId = p.Id, + p.CitizenId, + p.FirstName, + p.LastName, + p.BirthDate, + p.DateAppoint, + Prefix = p.Prefix == null ? null : p.Prefix, + FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", + Position = p.Position == null ? null : p.Position, + Rank = p.PosLevel.PosLevelName, + GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), + ProfileDateAppoint = p.DateAppoint.Value, + LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? "" : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, + LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? Guid.Empty : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, + Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? null + : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, + SalaryPosition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? null + : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().PositionSalaryAmount, + SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : + p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault() != null ? p.ProfileSalary + .Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault().Amount : + p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, - PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? "" : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, - Gender = p.Gender == null ? null : p.Gender, - IsHigherLevel = p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? true : - IsHigherLevel(GetInsigniaById(p.ProfileInsignia - .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - .OrderByDescending(x => x.Year) - .FirstOrDefault().InsigniaId.Value).Name, - "มหาวชิรมงกุฎ"), + PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? "" + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, + Gender = p.Gender == null ? null : p.Gender, + PositionLevelId = p.PosLevel == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosLevel.Id, + PositionLevelName = p.PosLevel == null ? null : p.PosLevel.PosLevelName, + PositionTypeId = p.PosType == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosType.Id, + PositionTypeName = p.PosType == null ? null : p.PosType.PosTypeName, + PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? 0 + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PositionSalaryAmount, + IsHigherLevel = + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null + ? true + : IsHigherLevel(GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != + GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year) + .FirstOrDefault().InsigniaId.Value).Name, + "มหาวชิรมงกุฎ"), - PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, - PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "อาวุโส").OrderBy(p => p.Date).FirstOrDefault() == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "อาวุโส").OrderBy(p => p.Date).FirstOrDefault().Date, - FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id).OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id).OrderBy(x => x.Year).FirstOrDefault().Year - }) - .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.Value.ToThaiYear() }" - }, - new MatchingCondition - { - Condition = $"ได้รับเงินประจำตำแหน่ง 15,600 บาท", - Result = $"ได้รับเงินประจำตำแหน่ง { p.SalaryPosition } บาท" - } - } - }) - .ToList(); + PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, + PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, + FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "อาวุโส").OrderBy(p => p.Date) + .FirstOrDefault() == null ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "อาวุโส").OrderBy(p => p.Date) + .FirstOrDefault().Date, + FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id) + .OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id) + .OrderBy(x => x.Year).FirstOrDefault().Year + }) + .ToList() + .Where(p => p.FirstRecvInsigniaYear != 0 && p.FirstRecvInsigniaYear <= period.Year - 3) + .Where(p => p.SalaryPosition == 15600) + .Select(p => new InsigniaResultSet + { + ProfileId = p.ProfileId, + CitizenId = p.CitizenId, + FirstName = p.FirstName, + LastName = p.LastName, + PosLevelName = p.PositionLevelName, + PosTypeName = p.PositionTypeName, + PositionSalary = p.PostionSalaryAmount, + BirthDate = p.BirthDate, + DateAppoint = p.DateAppoint, + 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.Value.ToThaiYear()}" + }, + new MatchingCondition + { + Condition = $"ได้รับเงินประจำตำแหน่ง 15,600 บาท", + Result = $"ได้รับเงินประจำตำแหน่ง {p.SalaryPosition} บาท" + } + } + }) + .ToList(); var s3 = (from p in allProfilesByRoot - where p.PosType.PosTypeName == "วิชาการ" - && (p.PosLevel.PosLevelName == "ทรงคุณวุฒิ") // อาวุโส - && p.ProfileInsignia != null - && p.ProfileInsignia.Count > 0 - && (p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && - x.InsigniaId.Value == GetInsigniaByName("มหาปรมาภรณ์ช้างเผือก").Id) - .ToList() - .Count() == 0) - //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - // .OrderByDescending(x => x.Year) - // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("มหาปรมาภรณ์ช้างเผือก").Id - select new - { - ProfileId = p.Id, - Prefix = p.Prefix == null ? null : p.Prefix, - FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", - Position = p.Position == null ? null : p.Position, - Rank = p.PosLevel.PosLevelName, - GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), - ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? "" : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? Guid.Empty : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, - Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, - SalaryPosition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().PositionSalaryAmount, - SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault() != null ? - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount : - p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, + where p.PosType.PosTypeName == "วิชาการ" + && (p.PosLevel.PosLevelName == "ทรงคุณวุฒิ") // อาวุโส + && p.ProfileInsignia != null + && p.ProfileInsignia.Count > 0 + && (p.ProfileInsignia.Where(x => + x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && + x.InsigniaId.Value == GetInsigniaByName("มหาปรมาภรณ์ช้างเผือก").Id) + .ToList() + .Count() == 0) + //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + // .OrderByDescending(x => x.Year) + // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("มหาปรมาภรณ์ช้างเผือก").Id + select new + { + ProfileId = p.Id, + p.CitizenId, + p.FirstName, + p.LastName, + p.BirthDate, + p.DateAppoint, + Prefix = p.Prefix == null ? null : p.Prefix, + FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", + Position = p.Position == null ? null : p.Position, + Rank = p.PosLevel.PosLevelName, + GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), + ProfileDateAppoint = p.DateAppoint.Value, + LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? "" : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, + LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? Guid.Empty : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, + Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? null + : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, + SalaryPosition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? null + : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().PositionSalaryAmount, + SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : + p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault() != null ? p.ProfileSalary + .Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault().Amount : + p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, - PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? "" : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, - Gender = p.Gender == null ? null : p.Gender, - IsHigherLevel = p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? true : - IsHigherLevel(GetInsigniaById(p.ProfileInsignia - .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - .OrderByDescending(x => x.Year) - .FirstOrDefault().InsigniaId.Value).Name, - "มหาปรมาภรณ์ช้างเผือก"), + PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? "" + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, + Gender = p.Gender == null ? null : p.Gender, + PositionLevelId = p.PosLevel == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosLevel.Id, + PositionLevelName = p.PosLevel == null ? null : p.PosLevel.PosLevelName, + PositionTypeId = p.PosType == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosType.Id, + PositionTypeName = p.PosType == null ? null : p.PosType.PosTypeName, + PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? 0 + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PositionSalaryAmount, + IsHigherLevel = + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null + ? true + : IsHigherLevel(GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != + GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year) + .FirstOrDefault().InsigniaId.Value).Name, + "มหาปรมาภรณ์ช้างเผือก"), - PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, - PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "ทรงคุณวุฒิ").OrderBy(p => p.Date).FirstOrDefault() == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "ทรงคุณวุฒิ").OrderBy(p => p.Date).FirstOrDefault().Date, - FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("มหาวชิรมงกุฎ").Id).OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("มหาวชิรมงกุฎ").Id).OrderBy(x => x.Year).FirstOrDefault().Year - }) - .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.Value.ToThaiYear() }" - }, - new MatchingCondition - { - Condition = $"ได้รับเงินประจำตำแหน่ง 15,600 บาท", - Result = $"ได้รับเงินประจำตำแหน่ง { p.SalaryPosition } บาท" - } - } - }) - .ToList(); + PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, + PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, + FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "ทรงคุณวุฒิ").OrderBy(p => p.Date) + .FirstOrDefault() == null ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "ทรงคุณวุฒิ").OrderBy(p => p.Date) + .FirstOrDefault().Date, + FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : + p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("มหาวชิรมงกุฎ").Id) + .OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : + p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("มหาวชิรมงกุฎ").Id) + .OrderBy(x => x.Year).FirstOrDefault().Year + }) + .ToList() + .Where(p => p.FirstRecvInsigniaYear != 0 && p.FirstRecvInsigniaYear <= period.Year - 3) + .Where(p => p.SalaryPosition == 15600) + .Select(p => new InsigniaResultSet + { + ProfileId = p.ProfileId, + CitizenId = p.CitizenId, + FirstName = p.FirstName, + LastName = p.LastName, + PosLevelName = p.PositionLevelName, + PosTypeName = p.PositionTypeName, + PositionSalary = p.PostionSalaryAmount, + BirthDate = p.BirthDate, + DateAppoint = p.DateAppoint, + 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.Value.ToThaiYear()}" + }, + new MatchingCondition + { + Condition = $"ได้รับเงินประจำตำแหน่ง 15,600 บาท", + Result = $"ได้รับเงินประจำตำแหน่ง {p.SalaryPosition} บาท" + } + } + }) + .ToList(); var result_candidate = new List(); @@ -3759,7 +5272,8 @@ namespace BMA.EHR.Application.Repositories #region " อำนวยการ " - public async Task> GetInsigniaCandidate_Type3_Level10(Guid periodId, Guid ocId) + public async Task> GetInsigniaCandidate_Type3_Level10(Guid periodId, Guid ocId, + List allProfilesByRoot) { try { @@ -3768,177 +5282,278 @@ namespace BMA.EHR.Application.Repositories if (period == null) throw new Exception(GlobalMessages.CoinPeriodNotFound); - var allProfilesByRoot = (await _userProfileRepository.GetOfficerProfileByRootIdAsync(ocId, AccessToken)); + // var allProfilesByRoot = + // (await _userProfileRepository.GetOfficerProfileByRootIdAsync(ocId, AccessToken)); var CurrentRetireDate = new DateTime(period.Year, 9, 30); var s1 = (from p in allProfilesByRoot - where p.PosType.PosTypeName == "อำนวยการ" - && (p.PosLevel.PosLevelName == "ต้น") // อาวุโส - && p.ProfileInsignia != null - && p.ProfileInsignia.Count > 0 - && (p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && - x.InsigniaId.Value == GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id) - .ToList() - .Count() == 0) - //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - // .OrderByDescending(x => x.Year) - // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id - select new - { - ProfileId = p.Id, - Prefix = p.Prefix == null ? null : p.Prefix, - FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", - Position = p.Position == null ? null : p.Position, - Rank = p.PosLevel.PosLevelName, - GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), - ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? "" : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? Guid.Empty : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, - Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, - SalaryPosition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().PositionSalaryAmount, - SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault() != null ? - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount : - p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, + where p.PosType.PosTypeName == "อำนวยการ" + && (p.PosLevel.PosLevelName == "ต้น") // อาวุโส + && p.ProfileInsignia != null + && p.ProfileInsignia.Count > 0 + && (p.ProfileInsignia.Where(x => + x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && + x.InsigniaId.Value == GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id) + .ToList() + .Count() == 0) + //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + // .OrderByDescending(x => x.Year) + // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id + select new + { + ProfileId = p.Id, + p.CitizenId, + p.FirstName, + p.LastName, + p.BirthDate, + p.DateAppoint, + Prefix = p.Prefix == null ? null : p.Prefix, + FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", + Position = p.Position == null ? null : p.Position, + Rank = p.PosLevel.PosLevelName, + GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), + ProfileDateAppoint = p.DateAppoint.Value, + LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? "" : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, + LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? Guid.Empty : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, + Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? null + : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, + SalaryPosition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? null + : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().PositionSalaryAmount, + SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : + p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault() != null ? p.ProfileSalary + .Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault().Amount : + p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, - PosNo = p.PosNo == null ? "" : p.PosNo, - Gender = p.Gender == null ? null : p.Gender, - IsHigherLevel = p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? true : - IsHigherLevel(GetInsigniaById(p.ProfileInsignia - .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - .OrderByDescending(x => x.Year) - .FirstOrDefault().InsigniaId.Value).Name, - "ทวีติยาภรณ์ช้างเผือก"), + PosNo = p.PosNo == null ? "" : p.PosNo, + Gender = p.Gender == null ? null : p.Gender, + PositionLevelId = p.PosLevel == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosLevel.Id, + PositionLevelName = p.PosLevel == null ? null : p.PosLevel.PosLevelName, + PositionTypeId = p.PosType == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosType.Id, + PositionTypeName = p.PosType == null ? null : p.PosType.PosTypeName, + PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? 0 + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PositionSalaryAmount, + IsHigherLevel = + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null + ? true + : IsHigherLevel(GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != + GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year) + .FirstOrDefault().InsigniaId.Value).Name, + "ทวีติยาภรณ์ช้างเผือก"), - PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, - PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "ต้น" && x.PositionType == "อำนวยการ").OrderBy(p => p.Date).FirstOrDefault() == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "ต้น" && x.PositionType == "อำนวยการ").OrderBy(p => p.Date).FirstOrDefault().Date, - FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("มหาวชิรมงกุฎ").Id).OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("มหาวชิรมงกุฎ").Id).OrderBy(x => x.Year).FirstOrDefault().Year - }) - .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(); + PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, + PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, + FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "ต้น" && x.PositionType == "อำนวยการ") + .OrderBy(p => p.Date).FirstOrDefault() == null ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "ต้น" && x.PositionType == "อำนวยการ") + .OrderBy(p => p.Date).FirstOrDefault().Date, + FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : + p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("มหาวชิรมงกุฎ").Id) + .OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : + p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("มหาวชิรมงกุฎ").Id) + .OrderBy(x => x.Year).FirstOrDefault().Year + }) + .ToList() + .Select(p => new InsigniaResultSet + { + ProfileId = p.ProfileId, + CitizenId = p.CitizenId, + FirstName = p.FirstName, + LastName = p.LastName, + PosLevelName = p.PositionLevelName, + PosTypeName = p.PositionTypeName, + PositionSalary = p.PostionSalaryAmount, + BirthDate = p.BirthDate, + DateAppoint = p.DateAppoint, + 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 allProfilesByRoot - where p.PosType.PosTypeName == "อำนวยการ" - && (p.PosLevel.PosLevelName == "ต้น") // อาวุโส - && p.ProfileInsignia != null - && p.ProfileInsignia.Count > 0 - && (p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && - x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id) - .ToList() - .Count() == 0) - //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - // .OrderByDescending(x => x.Year) - // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id - select new - { - ProfileId = p.Id, - Prefix = p.Prefix == null ? null : p.Prefix, - FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", - Position = p.Position == null ? null : p.Position, - Rank = p.PosLevel.PosLevelName, - GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), - ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? "" : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? Guid.Empty : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, - Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, - SalaryPosition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().PositionSalaryAmount, - SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault() != null ? - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount : - p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, + where p.PosType.PosTypeName == "อำนวยการ" + && (p.PosLevel.PosLevelName == "ต้น") // อาวุโส + && p.ProfileInsignia != null + && p.ProfileInsignia.Count > 0 + && (p.ProfileInsignia.Where(x => + x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && + x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id) + .ToList() + .Count() == 0) + //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + // .OrderByDescending(x => x.Year) + // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id + select new + { + ProfileId = p.Id, + p.CitizenId, + p.FirstName, + p.LastName, + p.BirthDate, + p.DateAppoint, + Prefix = p.Prefix == null ? null : p.Prefix, + FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", + Position = p.Position == null ? null : p.Position, + Rank = p.PosLevel.PosLevelName, + GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), + ProfileDateAppoint = p.DateAppoint.Value, + LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? "" : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, + LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? Guid.Empty : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, + Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? null + : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, + SalaryPosition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? null + : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().PositionSalaryAmount, + SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : + p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault() != null ? p.ProfileSalary + .Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault().Amount : + p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, - PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? "" : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, - Gender = p.Gender == null ? null : p.Gender, - IsHigherLevel = p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? true : - IsHigherLevel(GetInsigniaById(p.ProfileInsignia - .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - .OrderByDescending(x => x.Year) - .FirstOrDefault().InsigniaId.Value).Name, - "ประถมาภรณ์มงกุฎไทย"), - - PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, - PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "ต้น" && x.PositionType == "อำนวยการ").OrderBy(p => p.Date).FirstOrDefault() == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "ต้น" && x.PositionType == "อำนวยการ").OrderBy(p => p.Date).FirstOrDefault().Date, - FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id).OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id).OrderBy(x => x.Year).FirstOrDefault().Year - }) - .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 } บาท" - }, - new MatchingCondition - { - Condition = $"2.ได้ ท.ช. มาแล้วไม่น้อยกว่า 5 ปี บริบูรณ์ (ได้ ท.ช. วันที่ { (new DateTime(period.Year-5, 7, 28)).ToThaiFullDate3() } หรือก่อนหน้านั้น)", - Result = $"ได้รับ ท.ช. ในปี { p.FirstRecvInsigniaYear.Value.ToThaiYear() }" - }, - - } - }) - .ToList(); + PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? "" + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, + Gender = p.Gender == null ? null : p.Gender, + PositionLevelId = p.PosLevel == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosLevel.Id, + PositionLevelName = p.PosLevel == null ? null : p.PosLevel.PosLevelName, + PositionTypeId = p.PosType == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosType.Id, + PositionTypeName = p.PosType == null ? null : p.PosType.PosTypeName, + PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? 0 + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PositionSalaryAmount, + IsHigherLevel = + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null + ? true + : IsHigherLevel(GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != + GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year) + .FirstOrDefault().InsigniaId.Value).Name, + "ประถมาภรณ์มงกุฎไทย"), + PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, + PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, + FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "ต้น" && x.PositionType == "อำนวยการ") + .OrderBy(p => p.Date).FirstOrDefault() == null ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "ต้น" && x.PositionType == "อำนวยการ") + .OrderBy(p => p.Date).FirstOrDefault().Date, + FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value == GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id) + .OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value == GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id) + .OrderBy(x => x.Year).FirstOrDefault().Year + }) + .ToList() + .Where(p => p.SalaryCondition >= 58390) + .Where(p => p.FirstRecvInsigniaYear != 0 && p.FirstRecvInsigniaYear <= period.Year - 5) + .Select(p => new InsigniaResultSet + { + ProfileId = p.ProfileId, + CitizenId = p.CitizenId, + FirstName = p.FirstName, + LastName = p.LastName, + PosLevelName = p.PositionLevelName, + PosTypeName = p.PositionTypeName, + PositionSalary = p.PostionSalaryAmount, + BirthDate = p.BirthDate, + DateAppoint = p.DateAppoint, + 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} บาท" + }, + new MatchingCondition + { + Condition = + $"2.ได้ ท.ช. มาแล้วไม่น้อยกว่า 5 ปี บริบูรณ์ (ได้ ท.ช. วันที่ {(new DateTime(period.Year - 5, 7, 28)).ToThaiFullDate3()} หรือก่อนหน้านั้น)", + Result = $"ได้รับ ท.ช. ในปี {p.FirstRecvInsigniaYear.Value.ToThaiYear()}" + }, + } + }) + .ToList(); var result_candidate = new List(); @@ -3988,7 +5603,8 @@ namespace BMA.EHR.Application.Repositories } } - public async Task> GetInsigniaCandidate_Type3_Level11(Guid periodId, Guid ocId) + public async Task> GetInsigniaCandidate_Type3_Level11(Guid periodId, Guid ocId, + List allProfilesByRoot) { try { @@ -3997,255 +5613,410 @@ namespace BMA.EHR.Application.Repositories if (period == null) throw new Exception(GlobalMessages.CoinPeriodNotFound); - var allProfilesByRoot = (await _userProfileRepository.GetOfficerProfileByRootIdAsync(ocId, AccessToken)); + // var allProfilesByRoot = + // (await _userProfileRepository.GetOfficerProfileByRootIdAsync(ocId, AccessToken)); var CurrentRetireDate = new DateTime(period.Year, 9, 30); var s1 = (from p in allProfilesByRoot - where p.PosType.PosTypeName == "อำนวยการ" - && (p.PosLevel.PosLevelName == "สูง") // อาวุโส - && p.ProfileInsignia != null - && p.ProfileInsignia.Count > 0 - && (p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && - x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id) - .ToList() - .Count() == 0) - //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - // .OrderByDescending(x => x.Year) - // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id - select new - { - ProfileId = p.Id, - Prefix = p.Prefix == null ? null : p.Prefix, - FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", - Position = p.Position == null ? null : p.Position, - Rank = p.PosLevel.PosLevelName, - GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), - ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? "" : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? Guid.Empty : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, - Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, - SalaryPosition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().PositionSalaryAmount, - SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault() != null ? - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount : - p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, + where p.PosType.PosTypeName == "อำนวยการ" + && (p.PosLevel.PosLevelName == "สูง") // อาวุโส + && p.ProfileInsignia != null + && p.ProfileInsignia.Count > 0 + && (p.ProfileInsignia.Where(x => + x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && + x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id) + .ToList() + .Count() == 0) + //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + // .OrderByDescending(x => x.Year) + // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id + select new + { + ProfileId = p.Id, + p.CitizenId, + p.FirstName, + p.LastName, + p.BirthDate, + p.DateAppoint, + Prefix = p.Prefix == null ? null : p.Prefix, + FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", + Position = p.Position == null ? null : p.Position, + Rank = p.PosLevel.PosLevelName, + GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), + ProfileDateAppoint = p.DateAppoint.Value, + LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? "" : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, + LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? Guid.Empty : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, + Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? null + : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, + SalaryPosition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? null + : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().PositionSalaryAmount, + SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : + p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault() != null ? p.ProfileSalary + .Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault().Amount : + p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, - PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? "" : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, - Gender = p.Gender == null ? null : p.Gender, - IsHigherLevel = p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? true : - IsHigherLevel(GetInsigniaById(p.ProfileInsignia - .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - .OrderByDescending(x => x.Year) - .FirstOrDefault().InsigniaId.Value).Name, - "ประถมาภรณ์มงกุฎไทย"), + PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? "" + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, + Gender = p.Gender == null ? null : p.Gender, + PositionLevelId = p.PosLevel == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosLevel.Id, + PositionLevelName = p.PosLevel == null ? null : p.PosLevel.PosLevelName, + PositionTypeId = p.PosType == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosType.Id, + PositionTypeName = p.PosType == null ? null : p.PosType.PosTypeName, + PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? 0 + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PositionSalaryAmount, + IsHigherLevel = + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null + ? true + : IsHigherLevel(GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != + GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year) + .FirstOrDefault().InsigniaId.Value).Name, + "ประถมาภรณ์มงกุฎไทย"), - PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, - PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "สูง" && x.PositionType == "อำนวยการ").OrderBy(p => p.Date).FirstOrDefault() == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "สูง" && x.PositionType == "อำนวยการ").OrderBy(p => p.Date).FirstOrDefault().Date, - FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id).OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id).OrderBy(x => x.Year).FirstOrDefault().Year - }) - .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.Value.ToThaiYear() }" - }, - - } - }) - .ToList(); + PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, + PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, + FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "สูง" && x.PositionType == "อำนวยการ") + .OrderBy(p => p.Date).FirstOrDefault() == null ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "สูง" && x.PositionType == "อำนวยการ") + .OrderBy(p => p.Date).FirstOrDefault().Date, + FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value == GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id) + .OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value == GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id) + .OrderBy(x => x.Year).FirstOrDefault().Year + }) + .ToList() + .Where(p => p.FirstRecvInsigniaYear != 0 && p.FirstRecvInsigniaYear <= period.Year - 3) + .Select(p => new InsigniaResultSet + { + ProfileId = p.ProfileId, + CitizenId = p.CitizenId, + FirstName = p.FirstName, + LastName = p.LastName, + PosLevelName = p.PositionLevelName, + PosTypeName = p.PositionTypeName, + PositionSalary = p.PostionSalaryAmount, + BirthDate = p.BirthDate, + DateAppoint = p.DateAppoint, + 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.Value.ToThaiYear()}" + }, + } + }) + .ToList(); var s2 = (from p in allProfilesByRoot - where p.PosType.PosTypeName == "อำนวยการ" - && (p.PosLevel.PosLevelName == "สูง") // อาวุโส - && p.ProfileInsignia != null - && p.ProfileInsignia.Count > 0 - && (p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && - x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id) - .ToList() - .Count() == 0) - //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - // .OrderByDescending(x => x.Year) - // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id - select new - { - ProfileId = p.Id, - Prefix = p.Prefix == null ? null : p.Prefix, - FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", - Position = p.Position == null ? null : p.Position, - Rank = p.PosLevel.PosLevelName, - GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), - ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? "" : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? Guid.Empty : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, - Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, - SalaryPosition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().PositionSalaryAmount, - SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault() != null ? - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount : - p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, + where p.PosType.PosTypeName == "อำนวยการ" + && (p.PosLevel.PosLevelName == "สูง") // อาวุโส + && p.ProfileInsignia != null + && p.ProfileInsignia.Count > 0 + && (p.ProfileInsignia.Where(x => + x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && + x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id) + .ToList() + .Count() == 0) + //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + // .OrderByDescending(x => x.Year) + // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id + select new + { + ProfileId = p.Id, + p.CitizenId, + p.FirstName, + p.LastName, + p.BirthDate, + p.DateAppoint, + Prefix = p.Prefix == null ? null : p.Prefix, + FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", + Position = p.Position == null ? null : p.Position, + Rank = p.PosLevel.PosLevelName, + GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), + ProfileDateAppoint = p.DateAppoint.Value, + LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? "" : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, + LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? Guid.Empty : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, + Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? null + : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, + SalaryPosition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? null + : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().PositionSalaryAmount, + SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : + p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault() != null ? p.ProfileSalary + .Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault().Amount : + p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, - PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? "" : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, - Gender = p.Gender == null ? null : p.Gender, - IsHigherLevel = p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? true : - IsHigherLevel(GetInsigniaById(p.ProfileInsignia - .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - .OrderByDescending(x => x.Year) - .FirstOrDefault().InsigniaId.Value).Name, - "ประถมาภรณ์ช้างเผือก"), + PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? "" + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, + Gender = p.Gender == null ? null : p.Gender, + PositionLevelId = p.PosLevel == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosLevel.Id, + PositionLevelName = p.PosLevel == null ? null : p.PosLevel.PosLevelName, + PositionTypeId = p.PosType == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosType.Id, + PositionTypeName = p.PosType == null ? null : p.PosType.PosTypeName, + PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? 0 + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PositionSalaryAmount, + IsHigherLevel = + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null + ? true + : IsHigherLevel(GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != + GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year) + .FirstOrDefault().InsigniaId.Value).Name, + "ประถมาภรณ์ช้างเผือก"), - PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, - PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "สูง" && x.PositionType == "อำนวยการ").OrderBy(p => p.Date).FirstOrDefault() == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "สูง" && x.PositionType == "อำนวยการ").OrderBy(p => p.Date).FirstOrDefault().Date, - FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id).OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id).OrderBy(x => x.Year).FirstOrDefault().Year - }) - .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.Value.ToThaiYear() }" - }, - - } - }) - .ToList(); + PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, + PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, + FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "สูง" && x.PositionType == "อำนวยการ") + .OrderBy(p => p.Date).FirstOrDefault() == null ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "สูง" && x.PositionType == "อำนวยการ") + .OrderBy(p => p.Date).FirstOrDefault().Date, + FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id) + .OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id) + .OrderBy(x => x.Year).FirstOrDefault().Year + }) + .ToList() + .Where(p => p.FirstRecvInsigniaYear != 0 && p.FirstRecvInsigniaYear <= period.Year - 3) + .Select(p => new InsigniaResultSet + { + ProfileId = p.ProfileId, + CitizenId = p.CitizenId, + FirstName = p.FirstName, + LastName = p.LastName, + PosLevelName = p.PositionLevelName, + PosTypeName = p.PositionTypeName, + PositionSalary = p.PostionSalaryAmount, + BirthDate = p.BirthDate, + DateAppoint = p.DateAppoint, + 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.Value.ToThaiYear()}" + }, + } + }) + .ToList(); var s3 = (from p in allProfilesByRoot - where p.PosType.PosTypeName == "อำนวยการ" - && (p.PosLevel.PosLevelName == "สูง") // อาวุโส - && p.ProfileInsignia != null - && p.ProfileInsignia.Count > 0 - && (p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && - x.InsigniaId.Value == GetInsigniaByName("มหาวชิรมงกุฎ").Id) - .ToList() - .Count() == 0) - //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - // .OrderByDescending(x => x.Year) - // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("มหาวชิรมงกุฎ").Id - select new - { - ProfileId = p.Id, - Prefix = p.Prefix == null ? null : p.Prefix, - FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", - Position = p.Position == null ? null : p.Position, - Rank = p.PosLevel.PosLevelName, - GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), - ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? "" : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? Guid.Empty : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, - Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, - SalaryPosition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().PositionSalaryAmount, - SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault() != null ? - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount : - p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, - - PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? "" : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, - Gender = p.Gender == null ? null : p.Gender, - IsHigherLevel = p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? true : - IsHigherLevel(GetInsigniaById(p.ProfileInsignia - .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - .OrderByDescending(x => x.Year) - .FirstOrDefault().InsigniaId.Value).Name, - "มหาวชิรมงกุฎ"), - - PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, - PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "สูง" && x.PositionType == "อำนวยการ").OrderBy(p => p.Date).FirstOrDefault() == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "สูง" && x.PositionType == "อำนวยการ").OrderBy(p => p.Date).FirstOrDefault().Date, - FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id).OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id).OrderBy(x => x.Year).FirstOrDefault().Year - }) - .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.Value.ToThaiYear() }" - }, - - } - }) - .ToList(); + where p.PosType.PosTypeName == "อำนวยการ" + && (p.PosLevel.PosLevelName == "สูง") // อาวุโส + && p.ProfileInsignia != null + && p.ProfileInsignia.Count > 0 + && (p.ProfileInsignia.Where(x => + x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && + x.InsigniaId.Value == GetInsigniaByName("มหาวชิรมงกุฎ").Id) + .ToList() + .Count() == 0) + //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + // .OrderByDescending(x => x.Year) + // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("มหาวชิรมงกุฎ").Id + select new + { + ProfileId = p.Id, + p.CitizenId, + p.FirstName, + p.LastName, + p.BirthDate, + p.DateAppoint, + Prefix = p.Prefix == null ? null : p.Prefix, + FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", + Position = p.Position == null ? null : p.Position, + Rank = p.PosLevel.PosLevelName, + GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), + ProfileDateAppoint = p.DateAppoint.Value, + LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? "" : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, + LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? Guid.Empty : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, + Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? null + : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, + SalaryPosition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? null + : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().PositionSalaryAmount, + SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : + p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault() != null ? p.ProfileSalary + .Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault().Amount : + p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, + PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? "" + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, + Gender = p.Gender == null ? null : p.Gender, + PositionLevelId = p.PosLevel == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosLevel.Id, + PositionLevelName = p.PosLevel == null ? null : p.PosLevel.PosLevelName, + PositionTypeId = p.PosType == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosType.Id, + PositionTypeName = p.PosType == null ? null : p.PosType.PosTypeName, + PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? 0 + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PositionSalaryAmount, + IsHigherLevel = + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null + ? true + : IsHigherLevel(GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != + GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year) + .FirstOrDefault().InsigniaId.Value).Name, + "มหาวชิรมงกุฎ"), + PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, + PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, + FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "สูง" && x.PositionType == "อำนวยการ") + .OrderBy(p => p.Date).FirstOrDefault() == null ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "สูง" && x.PositionType == "อำนวยการ") + .OrderBy(p => p.Date).FirstOrDefault().Date, + FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id) + .OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id) + .OrderBy(x => x.Year).FirstOrDefault().Year + }) + .ToList() + .Where(p => p.FirstRecvInsigniaYear != 0 && p.FirstRecvInsigniaYear <= period.Year - 5) + .Select(p => new InsigniaResultSet + { + ProfileId = p.ProfileId, + CitizenId = p.CitizenId, + FirstName = p.FirstName, + LastName = p.LastName, + PosLevelName = p.PositionLevelName, + PosTypeName = p.PositionTypeName, + PositionSalary = p.PostionSalaryAmount, + BirthDate = p.BirthDate, + DateAppoint = p.DateAppoint, + 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.Value.ToThaiYear()}" + }, + } + }) + .ToList(); var result_candidate = new List(); @@ -4316,7 +6087,8 @@ namespace BMA.EHR.Application.Repositories #region " บริหาร " - public async Task> GetInsigniaCandidate_Type4_Level10(Guid periodId, Guid ocId) + public async Task> GetInsigniaCandidate_Type4_Level10(Guid periodId, Guid ocId, + List allProfilesByRoot) { try { @@ -4325,252 +6097,409 @@ namespace BMA.EHR.Application.Repositories if (period == null) throw new Exception(GlobalMessages.CoinPeriodNotFound); - var allProfilesByRoot = (await _userProfileRepository.GetOfficerProfileByRootIdAsync(ocId, AccessToken)); + // var allProfilesByRoot = + // (await _userProfileRepository.GetOfficerProfileByRootIdAsync(ocId, AccessToken)); var CurrentRetireDate = new DateTime(period.Year, 9, 30); var s1 = (from p in allProfilesByRoot - where p.PosType.PosTypeName == "บริหาร" - && (p.PosLevel.PosLevelName == "ต้น") // อาวุโส - && p.ProfileInsignia != null - && p.ProfileInsignia.Count > 0 - && (p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && - x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id) - .ToList() - .Count() == 0) - //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - // .OrderByDescending(x => x.Year) - // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id - select new - { - ProfileId = p.Id, - Prefix = p.Prefix == null ? null : p.Prefix, - FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", - Position = p.Position == null ? null : p.Position, - Rank = p.PosLevel.PosLevelName, - GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), - ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? "" : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? Guid.Empty : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, - Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, - SalaryPosition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().PositionSalaryAmount, - SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault() != null ? - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount : - p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, + where p.PosType.PosTypeName == "บริหาร" + && (p.PosLevel.PosLevelName == "ต้น") // อาวุโส + && p.ProfileInsignia != null + && p.ProfileInsignia.Count > 0 + && (p.ProfileInsignia.Where(x => + x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && + x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id) + .ToList() + .Count() == 0) + //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + // .OrderByDescending(x => x.Year) + // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id + select new + { + ProfileId = p.Id, + p.CitizenId, + p.FirstName, + p.LastName, + p.BirthDate, + p.DateAppoint, + Prefix = p.Prefix == null ? null : p.Prefix, + FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", + Position = p.Position == null ? null : p.Position, + Rank = p.PosLevel.PosLevelName, + GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), + ProfileDateAppoint = p.DateAppoint.Value, + LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? "" : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, + LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? Guid.Empty : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, + Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? null + : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, + SalaryPosition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? null + : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().PositionSalaryAmount, + SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : + p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault() != null ? p.ProfileSalary + .Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault().Amount : + p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, - PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? "" : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, - Gender = p.Gender == null ? null : p.Gender, - IsHigherLevel = p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? true : - IsHigherLevel(GetInsigniaById(p.ProfileInsignia - .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - .OrderByDescending(x => x.Year) - .FirstOrDefault().InsigniaId.Value).Name, - "ประถมาภรณ์มงกุฎไทย"), + PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? "" + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, + Gender = p.Gender == null ? null : p.Gender, + PositionLevelId = p.PosLevel == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosLevel.Id, + PositionLevelName = p.PosLevel == null ? null : p.PosLevel.PosLevelName, + PositionTypeId = p.PosType == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosType.Id, + PositionTypeName = p.PosType == null ? null : p.PosType.PosTypeName, + PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? 0 + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PositionSalaryAmount, + IsHigherLevel = + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null + ? true + : IsHigherLevel(GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != + GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year) + .FirstOrDefault().InsigniaId.Value).Name, + "ประถมาภรณ์มงกุฎไทย"), - PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, - PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "ต้น" && x.PositionType == "บริหาร").OrderBy(p => p.Date).FirstOrDefault() == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "ต้น" && x.PositionType == "บริหาร").OrderBy(p => p.Date).FirstOrDefault().Date, - FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id).OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id).OrderBy(x => x.Year).FirstOrDefault().Year - }) - .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.Value.ToThaiYear() }" - }, - - } - }) - .ToList(); + PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, + PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, + FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "ต้น" && x.PositionType == "บริหาร") + .OrderBy(p => p.Date).FirstOrDefault() == null ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "ต้น" && x.PositionType == "บริหาร") + .OrderBy(p => p.Date).FirstOrDefault().Date, + FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value == GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id) + .OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value == GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id) + .OrderBy(x => x.Year).FirstOrDefault().Year + }) + .ToList() + .Where(p => p.FirstRecvInsigniaYear != 0 && p.FirstRecvInsigniaYear <= period.Year - 3) + .Select(p => new InsigniaResultSet + { + ProfileId = p.ProfileId, + CitizenId = p.CitizenId, + FirstName = p.FirstName, + LastName = p.LastName, + PosLevelName = p.PositionLevelName, + PosTypeName = p.PositionTypeName, + PositionSalary = p.PostionSalaryAmount, + BirthDate = p.BirthDate, + DateAppoint = p.DateAppoint, + 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.Value.ToThaiYear()}" + }, + } + }) + .ToList(); var s2 = (from p in allProfilesByRoot - where p.PosType.PosTypeName == "บริหาร" - && (p.PosLevel.PosLevelName == "ต้น") // อาวุโส - && p.ProfileInsignia != null - && p.ProfileInsignia.Count > 0 - && (p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && - x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id) - .ToList() - .Count() == 0) - //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - // .OrderByDescending(x => x.Year) - // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id - select new - { - ProfileId = p.Id, - Prefix = p.Prefix == null ? null : p.Prefix, - FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", - Position = p.Position == null ? null : p.Position, - Rank = p.PosLevel.PosLevelName, - GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), - ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? "" : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? Guid.Empty : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, - Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, - SalaryPosition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().PositionSalaryAmount, - SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault() != null ? - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount : - p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, + where p.PosType.PosTypeName == "บริหาร" + && (p.PosLevel.PosLevelName == "ต้น") // อาวุโส + && p.ProfileInsignia != null + && p.ProfileInsignia.Count > 0 + && (p.ProfileInsignia.Where(x => + x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && + x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id) + .ToList() + .Count() == 0) + //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + // .OrderByDescending(x => x.Year) + // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id + select new + { + ProfileId = p.Id, + p.CitizenId, + p.FirstName, + p.LastName, + p.BirthDate, + p.DateAppoint, + Prefix = p.Prefix == null ? null : p.Prefix, + FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", + Position = p.Position == null ? null : p.Position, + Rank = p.PosLevel.PosLevelName, + GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), + ProfileDateAppoint = p.DateAppoint.Value, + LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? "" : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, + LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? Guid.Empty : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, + Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? null + : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, + SalaryPosition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? null + : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().PositionSalaryAmount, + SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : + p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault() != null ? p.ProfileSalary + .Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault().Amount : + p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, - PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? "" : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, - Gender = p.Gender == null ? null : p.Gender, - IsHigherLevel = p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? true : - IsHigherLevel(GetInsigniaById(p.ProfileInsignia - .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - .OrderByDescending(x => x.Year) - .FirstOrDefault().InsigniaId.Value).Name, - "ประถมาภรณ์ช้างเผือก"), + PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? "" + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, + Gender = p.Gender == null ? null : p.Gender, + PositionLevelId = p.PosLevel == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosLevel.Id, + PositionLevelName = p.PosLevel == null ? null : p.PosLevel.PosLevelName, + PositionTypeId = p.PosType == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosType.Id, + PositionTypeName = p.PosType == null ? null : p.PosType.PosTypeName, + PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? 0 + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PositionSalaryAmount, + IsHigherLevel = + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null + ? true + : IsHigherLevel(GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != + GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year) + .FirstOrDefault().InsigniaId.Value).Name, + "ประถมาภรณ์ช้างเผือก"), - PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, - PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "ต้น" && x.PositionType == "บริหาร").OrderBy(p => p.Date).FirstOrDefault() == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "ต้น" && x.PositionType == "บริหาร").OrderBy(p => p.Date).FirstOrDefault().Date, - FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id).OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id).OrderBy(x => x.Year).FirstOrDefault().Year - }) - .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.Value.ToThaiYear() }" - }, - - } - }) - .ToList(); + PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, + PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, + FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "ต้น" && x.PositionType == "บริหาร") + .OrderBy(p => p.Date).FirstOrDefault() == null ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "ต้น" && x.PositionType == "บริหาร") + .OrderBy(p => p.Date).FirstOrDefault().Date, + FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id) + .OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id) + .OrderBy(x => x.Year).FirstOrDefault().Year + }) + .ToList() + .Where(p => p.FirstRecvInsigniaYear != 0 && p.FirstRecvInsigniaYear <= period.Year - 3) + .Select(p => new InsigniaResultSet + { + ProfileId = p.ProfileId, + CitizenId = p.CitizenId, + FirstName = p.FirstName, + LastName = p.LastName, + PosLevelName = p.PositionLevelName, + PosTypeName = p.PositionTypeName, + PositionSalary = p.PostionSalaryAmount, + BirthDate = p.BirthDate, + DateAppoint = p.DateAppoint, + 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.Value.ToThaiYear()}" + }, + } + }) + .ToList(); var s3 = (from p in allProfilesByRoot - where p.PosType.PosTypeName == "บริหาร" - && (p.PosLevel.PosLevelName == "ต้น") // อาวุโส - && p.ProfileInsignia != null - && p.ProfileInsignia.Count > 0 - && (p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && - x.InsigniaId.Value == GetInsigniaByName("มหาวชิรมงกุฎ").Id) - .ToList() - .Count() == 0) - //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - // .OrderByDescending(x => x.Year) - // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("มหาวชิรมงกุฎ").Id - select new - { - ProfileId = p.Id, - Prefix = p.Prefix == null ? null : p.Prefix, - FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", - Position = p.Position == null ? null : p.Position, - Rank = p.PosLevel.PosLevelName, - GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), - ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? "" : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? Guid.Empty : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, - Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, - SalaryPosition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().PositionSalaryAmount, - SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault() != null ? - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount : - p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, + where p.PosType.PosTypeName == "บริหาร" + && (p.PosLevel.PosLevelName == "ต้น") // อาวุโส + && p.ProfileInsignia != null + && p.ProfileInsignia.Count > 0 + && (p.ProfileInsignia.Where(x => + x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && + x.InsigniaId.Value == GetInsigniaByName("มหาวชิรมงกุฎ").Id) + .ToList() + .Count() == 0) + //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + // .OrderByDescending(x => x.Year) + // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("มหาวชิรมงกุฎ").Id + select new + { + ProfileId = p.Id, + p.CitizenId, + p.FirstName, + p.LastName, + p.BirthDate, + p.DateAppoint, + Prefix = p.Prefix == null ? null : p.Prefix, + FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", + Position = p.Position == null ? null : p.Position, + Rank = p.PosLevel.PosLevelName, + GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), + ProfileDateAppoint = p.DateAppoint.Value, + LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? "" : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, + LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? Guid.Empty : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, + Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? null + : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, + SalaryPosition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? null + : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().PositionSalaryAmount, + SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : + p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault() != null ? p.ProfileSalary + .Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault().Amount : + p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, - PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? "" : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, - Gender = p.Gender == null ? null : p.Gender, - IsHigherLevel = p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? true : - IsHigherLevel(GetInsigniaById(p.ProfileInsignia - .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - .OrderByDescending(x => x.Year) - .FirstOrDefault().InsigniaId.Value).Name, - "มหาวชิรมงกุฎ"), + PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? "" + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, + Gender = p.Gender == null ? null : p.Gender, + PositionLevelId = p.PosLevel == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosLevel.Id, + PositionLevelName = p.PosLevel == null ? null : p.PosLevel.PosLevelName, + PositionTypeId = p.PosType == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosType.Id, + PositionTypeName = p.PosType == null ? null : p.PosType.PosTypeName, + PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? 0 + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PositionSalaryAmount, + IsHigherLevel = + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null + ? true + : IsHigherLevel(GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != + GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year) + .FirstOrDefault().InsigniaId.Value).Name, + "มหาวชิรมงกุฎ"), - PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, - PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "ต้น" && x.PositionType == "บริหาร").OrderBy(p => p.Date).FirstOrDefault() == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "ต้น" && x.PositionType == "บริหาร").OrderBy(p => p.Date).FirstOrDefault().Date, - FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id).OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id).OrderBy(x => x.Year).FirstOrDefault().Year - }) - .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.Value.ToThaiYear() }" - }, - - } - }) - .ToList(); + PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, + PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, + FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "ต้น" && x.PositionType == "บริหาร") + .OrderBy(p => p.Date).FirstOrDefault() == null ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "ต้น" && x.PositionType == "บริหาร") + .OrderBy(p => p.Date).FirstOrDefault().Date, + FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id) + .OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id) + .OrderBy(x => x.Year).FirstOrDefault().Year + }) + .ToList() + .Where(p => p.FirstRecvInsigniaYear != 0 && p.FirstRecvInsigniaYear <= period.Year - 5) + .Select(p => new InsigniaResultSet + { + ProfileId = p.ProfileId, + CitizenId = p.CitizenId, + FirstName = p.FirstName, + LastName = p.LastName, + PosLevelName = p.PositionLevelName, + PosTypeName = p.PositionTypeName, + PositionSalary = p.PostionSalaryAmount, + BirthDate = p.BirthDate, + DateAppoint = p.DateAppoint, + 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.Value.ToThaiYear()}" + }, + } + }) + .ToList(); var result_candidate = new List(); @@ -4612,7 +6541,8 @@ namespace BMA.EHR.Application.Repositories } } - public async Task> GetInsigniaCandidate_Type4_Level11(Guid periodId, Guid ocId) + public async Task> GetInsigniaCandidate_Type4_Level11(Guid periodId, Guid ocId, + List allProfilesByRoot) { try { @@ -4621,269 +6551,425 @@ namespace BMA.EHR.Application.Repositories if (period == null) throw new Exception(GlobalMessages.CoinPeriodNotFound); - var allProfilesByRoot = (await _userProfileRepository.GetOfficerProfileByRootIdAsync(ocId, AccessToken)); + // var allProfilesByRoot = + // (await _userProfileRepository.GetOfficerProfileByRootIdAsync(ocId, AccessToken)); var CurrentRetireDate = new DateTime(period.Year, 9, 30); var s1 = (from p in allProfilesByRoot - where p.PosType.PosTypeName == "บริหาร" - && (p.PosLevel.PosLevelName == "สูง") // อาวุโส - && p.ProfileInsignia != null - && p.ProfileInsignia.Count > 0 - && (p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && - x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id) - .ToList() - .Count() == 0) - //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - // .OrderByDescending(x => x.Year) - // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id - select new - { - ProfileId = p.Id, - Prefix = p.Prefix == null ? null : p.Prefix, - FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", - Position = p.Position == null ? null : p.Position, - Rank = p.PosLevel.PosLevelName, - GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), - ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? "" : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? Guid.Empty : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, - Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, - SalaryPosition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().PositionSalaryAmount, - SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault() != null ? - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount : - p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, + where p.PosType.PosTypeName == "บริหาร" + && (p.PosLevel.PosLevelName == "สูง") // อาวุโส + && p.ProfileInsignia != null + && p.ProfileInsignia.Count > 0 + && (p.ProfileInsignia.Where(x => + x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && + x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id) + .ToList() + .Count() == 0) + //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + // .OrderByDescending(x => x.Year) + // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id + select new + { + ProfileId = p.Id, + p.CitizenId, + p.FirstName, + p.LastName, + p.BirthDate, + p.DateAppoint, + Prefix = p.Prefix == null ? null : p.Prefix, + FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", + Position = p.Position == null ? null : p.Position, + Rank = p.PosLevel.PosLevelName, + GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), + ProfileDateAppoint = p.DateAppoint.Value, + LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? "" : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, + LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? Guid.Empty : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, + Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? null + : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, + SalaryPosition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? null + : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().PositionSalaryAmount, + SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : + p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault() != null ? p.ProfileSalary + .Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault().Amount : + p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, - PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? "" : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, - Gender = p.Gender == null ? null : p.Gender, - IsHigherLevel = p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? true : - IsHigherLevel(GetInsigniaById(p.ProfileInsignia - .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - .OrderByDescending(x => x.Year) - .FirstOrDefault().InsigniaId.Value).Name, - "ประถมาภรณ์ช้างเผือก"), + PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? "" + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, + Gender = p.Gender == null ? null : p.Gender, + PositionLevelId = p.PosLevel == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosLevel.Id, + PositionLevelName = p.PosLevel == null ? null : p.PosLevel.PosLevelName, + PositionTypeId = p.PosType == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosType.Id, + PositionTypeName = p.PosType == null ? null : p.PosType.PosTypeName, + PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? 0 + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PositionSalaryAmount, + IsHigherLevel = + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null + ? true + : IsHigherLevel(GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != + GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year) + .FirstOrDefault().InsigniaId.Value).Name, + "ประถมาภรณ์ช้างเผือก"), - PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, - PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "สูง" && x.PositionType == "บริหาร").OrderBy(p => p.Date).FirstOrDefault() == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "สูง" && x.PositionType == "บริหาร").OrderBy(p => p.Date).FirstOrDefault().Date, - FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id).OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id).OrderBy(x => x.Year).FirstOrDefault().Year - }) - .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.Value.ToThaiYear() }" - }, - new MatchingCondition - { - Condition = $"ได้รับเงินประจำตำแหน่ง 14,500 บาท", - Result = $"ได้รับเงินประจำตำแหน่ง { p.SalaryPosition } บาท" - } - } - }) - .ToList(); + PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, + PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, + FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "สูง" && x.PositionType == "บริหาร") + .OrderBy(p => p.Date).FirstOrDefault() == null ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "สูง" && x.PositionType == "บริหาร") + .OrderBy(p => p.Date).FirstOrDefault().Date, + FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id) + .OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id) + .OrderBy(x => x.Year).FirstOrDefault().Year + }) + .ToList() + .Where(p => p.FirstRecvInsigniaYear != 0 && p.FirstRecvInsigniaYear <= period.Year - 3) + .Where(x => x.SalaryPosition == 14500) + .Select(p => new InsigniaResultSet + { + ProfileId = p.ProfileId, + CitizenId = p.CitizenId, + FirstName = p.FirstName, + LastName = p.LastName, + PosLevelName = p.PositionLevelName, + PosTypeName = p.PositionTypeName, + PositionSalary = p.PostionSalaryAmount, + BirthDate = p.BirthDate, + DateAppoint = p.DateAppoint, + 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.Value.ToThaiYear()}" + }, + new MatchingCondition + { + Condition = $"ได้รับเงินประจำตำแหน่ง 14,500 บาท", + Result = $"ได้รับเงินประจำตำแหน่ง {p.SalaryPosition} บาท" + } + } + }) + .ToList(); var s2 = (from p in allProfilesByRoot - where p.PosType.PosTypeName == "บริหาร" - && (p.PosLevel.PosLevelName == "สูง") // อาวุโส - && p.ProfileInsignia != null - && p.ProfileInsignia.Count > 0 - && (p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && - x.InsigniaId.Value == GetInsigniaByName("มหาวชิรมงกุฎ").Id) - .ToList() - .Count() == 0) - //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - // .OrderByDescending(x => x.Year) - // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("มหาวชิรมงกุฎ").Id - select new - { - ProfileId = p.Id, - Prefix = p.Prefix == null ? null : p.Prefix, - FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", - Position = p.Position == null ? null : p.Position, - Rank = p.PosLevel.PosLevelName, - GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), - ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? "" : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? Guid.Empty : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, - Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, - SalaryPosition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().PositionSalaryAmount, - SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault() != null ? - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount : - p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, + where p.PosType.PosTypeName == "บริหาร" + && (p.PosLevel.PosLevelName == "สูง") // อาวุโส + && p.ProfileInsignia != null + && p.ProfileInsignia.Count > 0 + && (p.ProfileInsignia.Where(x => + x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && + x.InsigniaId.Value == GetInsigniaByName("มหาวชิรมงกุฎ").Id) + .ToList() + .Count() == 0) + //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + // .OrderByDescending(x => x.Year) + // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("มหาวชิรมงกุฎ").Id + select new + { + ProfileId = p.Id, + p.CitizenId, + p.FirstName, + p.LastName, + p.BirthDate, + p.DateAppoint, + Prefix = p.Prefix == null ? null : p.Prefix, + FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", + Position = p.Position == null ? null : p.Position, + Rank = p.PosLevel.PosLevelName, + GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), + ProfileDateAppoint = p.DateAppoint.Value, + LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? "" : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, + LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? Guid.Empty : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, + Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? null + : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, + SalaryPosition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? null + : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().PositionSalaryAmount, + SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : + p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault() != null ? p.ProfileSalary + .Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault().Amount : + p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, - PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? "" : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, - Gender = p.Gender == null ? null : p.Gender, - IsHigherLevel = p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? true : - IsHigherLevel(GetInsigniaById(p.ProfileInsignia - .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - .OrderByDescending(x => x.Year) - .FirstOrDefault().InsigniaId.Value).Name, - "มหาวชิรมงกุฎ"), + PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? "" + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, + Gender = p.Gender == null ? null : p.Gender, + PositionLevelId = p.PosLevel == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosLevel.Id, + PositionLevelName = p.PosLevel == null ? null : p.PosLevel.PosLevelName, + PositionTypeId = p.PosType == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosType.Id, + PositionTypeName = p.PosType == null ? null : p.PosType.PosTypeName, + PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? 0 + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PositionSalaryAmount, + IsHigherLevel = + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null + ? true + : IsHigherLevel(GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != + GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year) + .FirstOrDefault().InsigniaId.Value).Name, + "มหาวชิรมงกุฎ"), - PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, - PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "สูง" && x.PositionType == "บริหาร").OrderBy(p => p.Date).FirstOrDefault() == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "สูง" && x.PositionType == "บริหาร").OrderBy(p => p.Date).FirstOrDefault().Date, - FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id).OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id).OrderBy(x => x.Year).FirstOrDefault().Year - }) - .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.Value.ToThaiYear() }" - }, - new MatchingCondition - { - Condition = $"ได้รับเงินประจำตำแหน่ง 14,500 บาท", - Result = $"ได้รับเงินประจำตำแหน่ง { p.SalaryPosition } บาท" - } - } - }) - .ToList(); + PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, + PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, + FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "สูง" && x.PositionType == "บริหาร") + .OrderBy(p => p.Date).FirstOrDefault() == null ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "สูง" && x.PositionType == "บริหาร") + .OrderBy(p => p.Date).FirstOrDefault().Date, + FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id) + .OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value == GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id) + .OrderBy(x => x.Year).FirstOrDefault().Year + }) + .ToList() + .Where(p => p.FirstRecvInsigniaYear != 0 && p.FirstRecvInsigniaYear <= period.Year - 3) + .Where(x => x.SalaryPosition == 14500) + .Select(p => new InsigniaResultSet + { + ProfileId = p.ProfileId, + CitizenId = p.CitizenId, + FirstName = p.FirstName, + LastName = p.LastName, + PosLevelName = p.PositionLevelName, + PosTypeName = p.PositionTypeName, + PositionSalary = p.PostionSalaryAmount, + BirthDate = p.BirthDate, + DateAppoint = p.DateAppoint, + 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.Value.ToThaiYear()}" + }, + new MatchingCondition + { + Condition = $"ได้รับเงินประจำตำแหน่ง 14,500 บาท", + Result = $"ได้รับเงินประจำตำแหน่ง {p.SalaryPosition} บาท" + } + } + }) + .ToList(); var s3 = (from p in allProfilesByRoot - where p.PosType.PosTypeName == "บริหาร" - && (p.PosLevel.PosLevelName == "สูง") // อาวุโส - && p.ProfileInsignia != null - && p.ProfileInsignia.Count > 0 - && (p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && - x.InsigniaId.Value == GetInsigniaByName("มหาปรมาภรณ์ช้างเผือก").Id) - .ToList() - .Count() == 0) - //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - // .OrderByDescending(x => x.Year) - // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("มหาปรมาภรณ์ช้างเผือก").Id - select new - { - ProfileId = p.Id, - Prefix = p.Prefix == null ? null : p.Prefix, - FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", - Position = p.Position == null ? null : p.Position, - Rank = p.PosLevel.PosLevelName, - GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), - ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? "" : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? Guid.Empty : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, - Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, - SalaryPosition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().PositionSalaryAmount, - SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault() != null ? - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount : - p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, - - PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? "" : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, - Gender = p.Gender == null ? null : p.Gender, - IsHigherLevel = p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? true : - IsHigherLevel(GetInsigniaById(p.ProfileInsignia - .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) - .OrderByDescending(x => x.Year) - .FirstOrDefault().InsigniaId.Value).Name, - "มหาปรมาภรณ์ช้างเผือก"), - - PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, - PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "สูง" && x.PositionType == "บริหาร").OrderBy(p => p.Date).FirstOrDefault() == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "สูง" && x.PositionType == "บริหาร").OrderBy(p => p.Date).FirstOrDefault().Date, - FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("มหาวชิรมงกุฎ").Id).OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : - p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("มหาวชิรมงกุฎ").Id).OrderBy(x => x.Year).FirstOrDefault().Year - }) - .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.Value.ToThaiYear() }" - }, - new MatchingCondition - { - Condition = $"ได้รับเงินประจำตำแหน่ง 14,500 บาท", - Result = $"ได้รับเงินประจำตำแหน่ง { p.SalaryPosition } บาท" - } - } - }) - .ToList(); + where p.PosType.PosTypeName == "บริหาร" + && (p.PosLevel.PosLevelName == "สูง") // อาวุโส + && p.ProfileInsignia != null + && p.ProfileInsignia.Count > 0 + && (p.ProfileInsignia.Where(x => + x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id && + x.InsigniaId.Value == GetInsigniaByName("มหาปรมาภรณ์ช้างเผือก").Id) + .ToList() + .Count() == 0) + //&& p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + // .OrderByDescending(x => x.Year) + // .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("มหาปรมาภรณ์ช้างเผือก").Id + select new + { + ProfileId = p.Id, + p.CitizenId, + p.FirstName, + p.LastName, + p.BirthDate, + p.DateAppoint, + Prefix = p.Prefix == null ? null : p.Prefix, + FullName = $"{(p.Prefix == null ? null : p.Prefix)}{p.FirstName} {p.LastName}", + Position = p.Position == null ? null : p.Position, + Rank = p.PosLevel.PosLevelName, + GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), + ProfileDateAppoint = p.DateAppoint.Value, + LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? "" : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, + LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? Guid.Empty : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, + Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? null + : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, + SalaryPosition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? null + : p.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().PositionSalaryAmount, + SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : + p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault() != null ? p.ProfileSalary + .Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault().Amount : + p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, + PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? "" + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, + Gender = p.Gender == null ? null : p.Gender, + PositionLevelId = p.PosLevel == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosLevel.Id, + PositionLevelName = p.PosLevel == null ? null : p.PosLevel.PosLevelName, + PositionTypeId = p.PosType == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosType.Id, + PositionTypeName = p.PosType == null ? null : p.PosType.PosTypeName, + PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? 0 + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PositionSalaryAmount, + IsHigherLevel = + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null + ? true + : IsHigherLevel(GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != + GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year) + .FirstOrDefault().InsigniaId.Value).Name, + "มหาปรมาภรณ์ช้างเผือก"), + PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, + PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, + FirstPositonLevelDate = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "สูง" && x.PositionType == "บริหาร") + .OrderBy(p => p.Date).FirstOrDefault() == null ? null : + p.ProfileSalary.Where(x => x.PositionLevel == "สูง" && x.PositionType == "บริหาร") + .OrderBy(p => p.Date).FirstOrDefault().Date, + FirstRecvInsigniaYear = p.ProfileInsignia.Count == 0 ? 0 : + p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("มหาวชิรมงกุฎ").Id) + .OrderBy(x => x.Year).FirstOrDefault() == null ? 0 : + p.ProfileInsignia.Where(x => x.InsigniaId.Value == GetInsigniaByName("มหาวชิรมงกุฎ").Id) + .OrderBy(x => x.Year).FirstOrDefault().Year + }) + .ToList() + .Where(p => p.FirstRecvInsigniaYear != 0 && p.FirstRecvInsigniaYear <= period.Year - 5) + .Where(x => x.SalaryPosition == 14500) + .Select(p => new InsigniaResultSet + { + ProfileId = p.ProfileId, + CitizenId = p.CitizenId, + FirstName = p.FirstName, + LastName = p.LastName, + PosLevelName = p.PositionLevelName, + PosTypeName = p.PositionTypeName, + PositionSalary = p.PostionSalaryAmount, + BirthDate = p.BirthDate, + DateAppoint = p.DateAppoint, + 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.Value.ToThaiYear()}" + }, + new MatchingCondition + { + Condition = $"ได้รับเงินประจำตำแหน่ง 14,500 บาท", + Result = $"ได้รับเงินประจำตำแหน่ง {p.SalaryPosition} บาท" + } + } + }) + .ToList(); var result_candidate = new List(); @@ -4928,557 +7014,48 @@ namespace BMA.EHR.Application.Repositories #endregion - #endregion #region " Public " /// - /// กรองรายชื่อผู้มิสิทธิ์ยื่นขอเครื่องราช + /// ประมวลผลรายชื่อผู้ได้รับเครื่องราชย์ของแต่ละหน่วยงาน /// - /// รหัสของรอบการขอ - /// รหัสโรงเรียน + /// + /// /// - //public async Task> GetInsigniaCandidate(Guid periodId, Guid ocId) - //{ - // try - // { - // var allOc = GetAllIdByRoot(ocId); - - // var period = await _dbContext.Set().FirstOrDefaultAsync(p => p.Id == periodId); - - // if (period == null) - // throw new Exception(GlobalMessages.CoinPeriodNotFound); - - // var oc = await _dbContext.Set().FirstOrDefaultAsync(x => x.Id == ocId); - - // if (oc == null) - // throw new Exception(GlobalMessages.OCNotFound); - - // var CurrentRetireDate = new DateTime(period.Year, 9, 30); - - // var inst_profile = _dbContext.Set() - // .Include(p => p.Prefix) - // .Include(p => p.Position) - // .Include(p => p.PosNo) - // .Include(p => p.Insignias) - // .ThenInclude(i => i.Insignia) - // .Include(p => p.Salaries) - // .Include(p => p.PositionLevel) - // .Where(p => - // allOc.Contains(p.OcId == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.OcId.Value) && - // p.IsActive == true && - // p.IsLeave == false && - // p.ProfileType == "officer" && - // p.DateAppoint != null - // ) - // .Select(p => new - // { - // ProfileId = p.Id, - // Prefix = p.Prefix == null ? null : p.Prefix.Name, - // FullName = $"{(p.Prefix == null ? null : p.Prefix.Name)}{p.FirstName} {p.LastName}", - // Position = p.Position == null ? null : p.Position.Name, - // Rank = p.PositionLevel.Name, - // ProfileDateAppoint = p.DateAppoint.Value, - // GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), - // PosNo = p.PosNo == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.PosNo.Id, - // Gender = p.Gender == null ? null : p.Gender.Name, - // 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 ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Id, - // Salary = p.Salaries.Count() == 0 ? null : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, - // }); - - // // check วันที่บรรจะต้องน้อยกว่า 29/5/ปี-5 - // var s1 = ((from p in inst_profile - // where p.ProfileDateAppoint <= new DateTime(period.Year - 5, 5, 29) - // && p.LastInsigniaId == Guid.Parse("00000000-0000-0000-0000-000000000000") - // 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 - // })).ToList(); - - // var s2 = (from p in _dbContext.Set() - // .Include(p => p.Prefix) - // .Include(p => p.Position) - // .Include(p => p.PosNo) - // .Include(p => p.Insignias) - // .ThenInclude(i => i.Insignia) - // .Include(p => p.Salaries) - // .Include(p => p.PositionLevel) - // where allOc.Contains(p.OcId == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.OcId.Value) - // && p.IsActive == true - // && p.IsLeave == false - // && p.DateAppoint != null - // && p.PositionLevel.Name == "ชำนาญการ" - // && p.ProfileType == "officer" - // && !p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name.Contains("ตริตาภรณ์ช้างเผือก") - // select new - // { - // ProfileId = p.Id, - // Prefix = p.Prefix == null ? null : p.Prefix.Name, - // FullName = $"{(p.Prefix == null ? null : p.Prefix.Name)}{p.FirstName} {p.LastName}", - // Position = p.Position == null ? null : p.Position.Name, - // Rank = p.PositionLevel.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 ? null : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, - // SalaryCondition = p.Salaries.Count() == 0 ? null : p.Salaries.Where(x => x.Date <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount, - // PosNo = p.PosNo == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.PosNo.Id, - // Gender = p.Gender == null ? null : p.Gender.Name, - // IsHigherLevel = 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.Prefix) - // .Include(p => p.Position) - // .Include(p => p.PosNo) - // .Include(p => p.Insignias) - // .ThenInclude(i => i.Insignia) - // .Include(p => p.Salaries) - // .Include(p => p.PositionLevel) - // where p.IsActive == true - // && allOc.Contains(p.OcId == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.OcId.Value) - // && p.IsLeave == false - // && p.DateAppoint != null - // && p.PositionLevel.Name == "ชำนาญการ" - // && p.ProfileType == "officer" - // && !p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name.Contains("ทวีติยาภรณ์มงกุฎไทย") - // select new - // { - // ProfileId = p.Id, - // Prefix = p.Prefix == null ? null : p.Prefix.Name, - // FullName = $"{(p.Prefix == null ? null : p.Prefix.Name)}{p.FirstName} {p.LastName}", - // Position = p.Position == null ? null : p.Position.Name, - // Rank = p.PositionLevel.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 ? null : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, - // SalaryCondition = p.Salaries.Count() == 0 ? null : p.Salaries.Where(x => x.Date <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount, - // PosNo = p.PosNo == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.PosNo.Id, - // Gender = p.Gender == null ? null : p.Gender.Name, - // }) - // .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.Prefix) - // .Include(p => p.Position) - // .Include(p => p.PosNo) - // .Include(p => p.Insignias) - // .ThenInclude(i => i.Insignia) - // .Include(p => p.Salaries) - // .Include(p => p.PositionLevel) - // where p.IsActive == true - // && allOc.Contains(p.OcId == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.OcId.Value) - // && p.IsLeave == false - // && p.DateAppoint != null - // && p.PositionLevel.Name == "ชำนาญการ" - // && p.ProfileType == "officer" - // && !p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name.Contains("ทวีติยาภรณ์ช้างเผือก") - // select new - // { - // ProfileId = p.Id, - // Prefix = p.Prefix == null ? null : p.Prefix.Name, - // FullName = $"{(p.Prefix == null ? null : p.Prefix.Name)}{p.FirstName} {p.LastName}", - // Position = p.Position == null ? null : p.Position.Name, - // Rank = p.PositionLevel.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 ? null : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, - // SalaryCondition = p.Salaries.Count() == 0 ? null : p.Salaries.Where(x => x.Date < new DateTime(period.Year - 5, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount, - // PosNo = p.PosNo == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.PosNo.Id, - // Gender = p.Gender == null ? null : p.Gender.Name, - // SalaryCondition2 = p.Salaries.Count() == 0 ? null : p.Salaries.Where(x => x.Date < new DateTime(period.Year - 5, 4, 29)).Select(x => new { order = x.Order, AsId = x.PositionLevel.Id, AsName = x.PositionLevel.Name, salary = x.Amount }) - // }) - // .ToList() - // .Where(x => x.SalaryCondition2 != null && (x.SalaryCondition2.Where(x => x.AsName == "ชำนาญการ").Count() > 0 && x.SalaryCondition2.Where(x => x.AsName == "ชำนาญการ").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.Prefix) - // .Include(p => p.Position) - // .Include(p => p.PosNo) - // .Include(p => p.Insignias) - // .ThenInclude(i => i.Insignia) - // .Include(p => p.Salaries) - // .Include(p => p.PositionLevel) - // where p.IsActive == true - // && allOc.Contains(p.OcId == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.OcId.Value) - // && p.IsLeave == false - // && p.DateAppoint != null - // && p.ProfileType == "officer" - // && !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 == null ? null : p.Prefix.Name, - // FullName = $"{(p.Prefix == null ? null : p.Prefix.Name)}{p.FirstName} {p.LastName}", - // Position = p.Position == null ? null : p.Position.Name, - // PosNo = p.PosNo == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.PosNo.Id, - // Rank = p.PositionLevel == null ? null : p.PositionLevel.Name, - // GovAge = p.PositionLevel == null ? null : 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("เหรียญจักรพรรดิมาลา")).FirstOrDefault() == null ? null : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Id, - // Salary = p.Salaries.Count() == 0 ? null : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, - // RequestInsignia = GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก"), - // Seq = 4, - // Gender = p.Gender == null ? null : p.Gender.Name, - // })) - // .ToList(); - - // // คศ3 ขอ ปม - // var s6 = (from p in _dbContext.Set() - // .Include(p => p.Prefix) - // .Include(p => p.Position) - // .Include(p => p.PosNo) - // .Include(p => p.Insignias) - // .ThenInclude(i => i.Insignia) - // .Include(p => p.Salaries) - // .Include(p => p.PositionLevel) - // where p.IsActive == true - // && allOc.Contains(p.OcId == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.OcId.Value) - // && p.IsLeave == false - // && p.DateAppoint != null - // && p.PositionLevel.Name == "ชำนาญการพิเศษ" - // && p.ProfileType == "officer" - // && !p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name.Contains("ประถมาภรณ์มงกุฎไทย") - // select new - // { - // ProfileId = p.Id, - // Prefix = p.Prefix == null ? null : p.Prefix.Name, - // FullName = $"{(p.Prefix == null ? null : p.Prefix.Name)}{p.FirstName} {p.LastName}", - // Position = p.Position == null ? null : p.Position.Name, - // Rank = p.PositionLevel.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 ? null : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, - // SalaryCondition = p.Salaries.Count() == 0 ? null : p.Salaries.Where(x => x.Date <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount, - // PosNo = p.PosNo == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.PosNo.Id, - // Gender = p.Gender == null ? null : p.Gender.Name, - // 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.Prefix) - // .Include(p => p.Position) - // .Include(p => p.PosNo) - // .Include(p => p.Insignias) - // .ThenInclude(i => i.Insignia) - // .Include(p => p.Salaries) - // .Include(p => p.PositionLevel) - // where p.IsActive == true - // && allOc.Contains(p.OcId == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.OcId.Value) - // && p.IsLeave == false - // && p.DateAppoint != null - // && p.PositionLevel.Name == "เชี่ยวชาญ" - // && p.ProfileType == "officer" - // && !p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name.Contains("ประถมาภรณ์มงกุฎไทย") - // select new - // { - // ProfileId = p.Id, - // Prefix = p.Prefix == null ? null : p.Prefix.Name, - // FullName = $"{(p.Prefix == null ? null : p.Prefix.Name)}{p.FirstName} {p.LastName}", - // Position = p.Position == null ? null : p.Position.Name, - // Rank = p.PositionLevel.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 ? null : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, - // SalaryCondition = p.Salaries.Count() == 0 ? null : p.Salaries.Where(x => x.Date <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount, - // PosNo = p.PosNo == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.PosNo.Id, - // Gender = p.Gender == null ? null : p.Gender.Name, - // 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.Prefix) - // .Include(p => p.Position) - // .Include(p => p.PosNo) - // .Include(p => p.Insignias) - // .ThenInclude(i => i.Insignia) - // .Include(p => p.Salaries) - // .Include(p => p.PositionLevel) - // where p.IsActive == true - // && allOc.Contains(p.OcId == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.OcId.Value) - // && p.IsLeave == false - // && p.DateAppoint != null - // && p.PositionLevel.Name == "เชี่ยวชาญ" - // && p.ProfileType == "officer" - // && !p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name.Contains("ประถมาภรณ์ช้างเผือก") - // select new - // { - // ProfileId = p.Id, - // Prefix = p.Prefix == null ? null : p.Prefix.Name, - // FullName = $"{(p.Prefix == null ? null : p.Prefix.Name)}{p.FirstName} {p.LastName}", - // Position = p.Position == null ? null : p.Position.Name, - // Rank = p.PositionLevel.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 ? null : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, - // SalaryCondition = p.Salaries.Count() == 0 ? null : p.Salaries.Where(x => x.Date <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount, - // PosNo = p.PosNo == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.PosNo.Id, - // Gender = p.Gender == null ? null : p.Gender.Name, - // 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.Prefix) - // .Include(p => p.Position) - // .Include(p => p.PosNo) - // .Include(p => p.Insignias) - // .ThenInclude(i => i.Insignia) - // .Include(p => p.Salaries) - // .Include(p => p.PositionLevel) - // where p.IsActive == true - // && allOc.Contains(p.OcId == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.OcId.Value) - // && p.IsLeave == false - // && p.DateAppoint != null - // && p.PositionLevel.Name == "เชี่ยวชาญ" - // && p.ProfileType == "officer" - // && !p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name.Contains("มหาวชิรมงกุฎ") - // select new - // { - // ProfileId = p.Id, - // Prefix = p.Prefix == null ? null : p.Prefix.Name, - // FullName = $"{(p.Prefix == null ? null : p.Prefix.Name)}{p.FirstName} {p.LastName}", - // Position = p.Position == null ? null : p.Position.Name, - // Rank = p.PositionLevel.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 ? null : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, - // SalaryCondition = p.Salaries.Count() == 0 ? null : p.Salaries.Where(x => x.Date <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount, - // PosNo = p.PosNo == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.PosNo.Id, - // Gender = p.Gender == null ? null : p.Gender.Name, - // 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(); - if (ocId != Guid.Parse("e8493cd1-d371-402e-add6-566e68d5d1b3")) return result_candidate; + //if (ocId != Guid.Parse("e8493cd1-d371-402e-add6-566e68d5d1b3")) return result_candidate; - var type_coin = await GetCoinCandidate(periodId, ocId); - var employee_type1 = await GetEmployeeInsignia_Type1(periodId, ocId); - var employee_type2 = await GetEmployeeInsignia_Type2(periodId, ocId); - var type1_level1 = await GetInsigniaCandidate_Type1_Level1(periodId, ocId); - var type1_level2 = await GetInsigniaCandidate_Type1_Level2(periodId, ocId); - var type1_level3 = await GetInsigniaCandidate_Type1_Level3(periodId, ocId); - var type1_level4 = await GetInsigniaCandidate_Type1_Level4(periodId, ocId); - var type2_level5 = await GetInsigniaCandidate_Type2_Level5(periodId, ocId); - var type2_level6 = await GetInsigniaCandidate_Type2_Level6(periodId, ocId); - var type2_level7 = await GetInsigniaCandidate_Type2_Level7(periodId, ocId); - var type2_level8 = await GetInsigniaCandidate_Type2_Level8(periodId, ocId); - var type2_level9_1 = await GetInsigniaCandidate_Type2_Level9_1(periodId, ocId); - var type2_level9_2 = await GetInsigniaCandidate_Type2_Level9_2(periodId, ocId); - var type3_level10 = await GetInsigniaCandidate_Type3_Level10(periodId, ocId); - var type3_level11 = await GetInsigniaCandidate_Type3_Level11(periodId, ocId); - var type4_level10 = await GetInsigniaCandidate_Type4_Level10(periodId, ocId); - var type4_level11 = await GetInsigniaCandidate_Type4_Level11(periodId, ocId); + var allOfficerProfilesByRoot = + (await _userProfileRepository.GetOfficerProfileByRootIdAsync(ocId, AccessToken)); + var allEmployeeProfileByRoot = + (await _userProfileRepository.GetEmployeeProfileByRootIdAsync(ocId, AccessToken)); + + var type_coin = await GetCoinCandidate(periodId, ocId, allOfficerProfilesByRoot); + var employee_type1 = await GetEmployeeInsignia_Type1(periodId, ocId, allEmployeeProfileByRoot); + var employee_type2 = await GetEmployeeInsignia_Type2(periodId, ocId, allEmployeeProfileByRoot); + var type1_level1 = await GetInsigniaCandidate_Type1_Level1(periodId, ocId, allOfficerProfilesByRoot); + var type1_level2 = await GetInsigniaCandidate_Type1_Level2(periodId, ocId, allOfficerProfilesByRoot); + var type1_level3 = await GetInsigniaCandidate_Type1_Level3(periodId, ocId, allOfficerProfilesByRoot); + var type1_level4 = await GetInsigniaCandidate_Type1_Level4(periodId, ocId, allOfficerProfilesByRoot); + var type2_level5 = await GetInsigniaCandidate_Type2_Level5(periodId, ocId, allOfficerProfilesByRoot); + var type2_level6 = await GetInsigniaCandidate_Type2_Level6(periodId, ocId, allOfficerProfilesByRoot); + var type2_level7 = await GetInsigniaCandidate_Type2_Level7(periodId, ocId, allOfficerProfilesByRoot); + var type2_level8 = await GetInsigniaCandidate_Type2_Level8(periodId, ocId, allOfficerProfilesByRoot); + var type2_level9_1 = + await GetInsigniaCandidate_Type2_Level9_1(periodId, ocId, allOfficerProfilesByRoot); + var type2_level9_2 = + await GetInsigniaCandidate_Type2_Level9_2(periodId, ocId, allOfficerProfilesByRoot); + var type3_level10 = await GetInsigniaCandidate_Type3_Level10(periodId, ocId, allOfficerProfilesByRoot); + var type3_level11 = await GetInsigniaCandidate_Type3_Level11(periodId, ocId, allOfficerProfilesByRoot); + var type4_level10 = await GetInsigniaCandidate_Type4_Level10(periodId, ocId, allOfficerProfilesByRoot); + var type4_level11 = await GetInsigniaCandidate_Type4_Level11(periodId, ocId, allOfficerProfilesByRoot); //var type = await GetInsigniaCandidate(periodId, ocId); // union result @@ -5488,96 +7065,112 @@ namespace BMA.EHR.Application.Repositories if (old == null) result_candidate.Add(r); } + foreach (var r in type4_level11) { var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); if (old == null) result_candidate.Add(r); } + foreach (var r in type4_level10) { var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); if (old == null) result_candidate.Add(r); } + foreach (var r in type3_level11) { var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); if (old == null) result_candidate.Add(r); } + foreach (var r in type3_level10) { var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); if (old == null) result_candidate.Add(r); } + foreach (var r in type2_level9_2) { var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); if (old == null) result_candidate.Add(r); } + foreach (var r in type2_level9_1) { var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); if (old == null) result_candidate.Add(r); } + foreach (var r in type2_level8) { var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); if (old == null) result_candidate.Add(r); } + foreach (var r in type2_level7) { var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); if (old == null) result_candidate.Add(r); } + foreach (var r in type2_level6) { var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); if (old == null) result_candidate.Add(r); } + foreach (var r in type2_level5) { var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); if (old == null) result_candidate.Add(r); } + foreach (var r in type1_level4) { var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); if (old == null) result_candidate.Add(r); } + foreach (var r in type1_level3) { var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); if (old == null) result_candidate.Add(r); } + foreach (var r in type1_level2) { var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); if (old == null) result_candidate.Add(r); } + foreach (var r in type1_level1) { var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); if (old == null) result_candidate.Add(r); } + foreach (var r in employee_type2) { var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); if (old == null) result_candidate.Add(r); } + foreach (var r in employee_type1) { var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); @@ -5599,39 +7192,41 @@ namespace BMA.EHR.Application.Repositories } } - public async Task> GetEmployeeInsigniaCandidateBKK(Guid periodId, Guid ocId) - { - try - { - var result_candidate = new List(); - - var type1 = await GetEmployeeInsignia_Type1(periodId, ocId); - var type2 = await GetEmployeeInsignia_Type2(periodId, ocId); - - // union result - foreach (var r in type2) - { - var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); - if (old == null) - result_candidate.Add(r); - } - foreach (var r in type1) - { - var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); - if (old == null) - result_candidate.Add(r); - } - - return result_candidate.OrderBy(x => x.Seq).ThenBy(x => x.Gender).ThenBy(x => x.ProfileId).ToList(); - } - catch - { - throw; - } - } + // public async Task> GetEmployeeInsigniaCandidateBKK(Guid periodId, Guid ocId) + // { + // try + // { + // var result_candidate = new List(); + // + // var type1 = await GetEmployeeInsignia_Type1(periodId, ocId); + // var type2 = await GetEmployeeInsignia_Type2(periodId, ocId); + // + // // union result + // foreach (var r in type2) + // { + // var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); + // if (old == null) + // result_candidate.Add(r); + // } + // + // foreach (var r in type1) + // { + // var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId); + // if (old == null) + // result_candidate.Add(r); + // } + // + // return result_candidate.OrderBy(x => x.Seq).ThenBy(x => x.Gender).ThenBy(x => x.ProfileId).ToList(); + // } + // catch + // { + // throw; + // } + // } //กรองรายชื่อผู้มิสิทธิ์ยื่นขอเหรียญจักรพรรดิมาลา - public async Task> GetCoinCandidate(Guid periodId, Guid ocId) + public async Task> GetCoinCandidate(Guid periodId, Guid ocId, + List allProfilesByRoot) { try { @@ -5642,7 +7237,7 @@ namespace BMA.EHR.Application.Repositories if (period == null) throw new Exception(GlobalMessages.CoinPeriodNotFound); - var allProfilesByRoot = (await _userProfileRepository.GetOfficerProfileByRootIdAsync(ocId, AccessToken)); + //var allProfilesByRoot = (await _userProfileRepository.GetOfficerProfileByRootIdAsync(ocId, AccessToken)); //var inst_profile = _dbContext.Set() @@ -5677,59 +7272,92 @@ namespace BMA.EHR.Application.Repositories // }); var inst_profile = allProfilesByRoot.Where(x => x.DateAppoint != null) - .Select(p => new - { - ProfileId = p.Id, - Prefix = p.Prefix ?? "", - FullName = $"{(p.Prefix ?? "")}{p.FirstName} {p.LastName}", - Position = p.Position ?? "", - Rank = p.PosLevel == null ? null : p.PosLevel.PosLevelName, - ProfileDateAppoint = p.DateAppoint.Value, - GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), - PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? "" : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, - PositionLevelId = p.PosLevel == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.PosLevel.Id, - PositionLevelName = p.PosLevel == null ? null : p.PosLevel.PosLevelName, - PositionTypeId = p.PosType == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.PosType.Id, - PositionTypeName = p.PosType == null ? null : p.PosType.PosTypeName, - Gender = p.Gender ?? "", - LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? "" : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : - p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).FirstOrDefault() == null ? Guid.Empty : - GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, - Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.Amount, - //SalaryCondition = p.ProfileSalary == null ? 0 : p.ProfileSalary.Amount, - SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault() != null ? - p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount : - p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, - PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : - p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PositionSalaryAmount, - }); + .Select(p => new + { + ProfileId = p.Id, + p.CitizenId, + p.FirstName, + p.LastName, + p.BirthDate, + p.DateAppoint, + + Prefix = p.Prefix ?? "", + FullName = $"{(p.Prefix ?? "")}{p.FirstName} {p.LastName}", + Position = p.Position ?? "", + Rank = p.PosLevel == null ? null : p.PosLevel.PosLevelName, + ProfileDateAppoint = p.DateAppoint.Value, + GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), + PosNo = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? "" + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, + PositionLevelId = p.PosLevel == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosLevel.Id, + PositionLevelName = p.PosLevel == null ? null : p.PosLevel.PosLevelName, + PositionTypeId = p.PosType == null + ? Guid.Parse("00000000-0000-0000-0000-000000000000") + : p.PosType.Id, + PositionTypeName = p.PosType == null ? null : p.PosType.PosTypeName, + Gender = p.Gender ?? "", + LastInsignia = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? "" : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? "" : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, + LastInsigniaId = p.ProfileInsignia == null || p.ProfileInsignia.Count == 0 ? Guid.Empty : + p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .FirstOrDefault() == null ? Guid.Empty : + GetInsigniaById(p.ProfileInsignia + .Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id) + .OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, + Salary = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? 0 + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.Amount, + //SalaryCondition = p.ProfileSalary == null ? 0 : p.ProfileSalary.Amount, + SalaryCondition = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : + p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault() != null ? p.ProfileSalary + .Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)) + .OrderByDescending(x => x.Order).FirstOrDefault().Amount : + p.ProfileSalary.OrderBy(x => x.Order).FirstOrDefault().Amount, + PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 + ? 0 + : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PositionSalaryAmount, + }); // check วันที่บรรจะต้องมากกว่า 25 ปี var result = ((from p in inst_profile - where p.ProfileDateAppoint <= new DateTime(period.Year - 25, 5, 29) - 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(), - })).ToList(); + where p.ProfileDateAppoint <= new DateTime(period.Year - 25, 5, 29) + select p) + .ToList() + .Select(p => new InsigniaResultSet + { + ProfileId = p.ProfileId, + CitizenId = p.CitizenId, + Prefix = p.Prefix, + FirstName = p.FirstName, + LastName = p.LastName, + PosLevelName = p.PositionLevelName, + PosTypeName = p.PositionTypeName, + PositionSalary = p.PostionSalaryAmount, + BirthDate = p.BirthDate, + DateAppoint = p.DateAppoint, + 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(), + })).ToList(); var result_candidate = new List(); @@ -5780,8 +7408,8 @@ namespace BMA.EHR.Application.Repositories try { var req = await _dbContext.Set() - .Where(x => x.OrganizationId != null) - .FirstOrDefaultAsync(x => x.Period.Id == period && x.OrganizationId == ocId); + .Where(x => x.OrganizationId != null) + .FirstOrDefaultAsync(x => x.Period.Id == period && x.OrganizationId == ocId); if (req == null) return null; return req.Id; @@ -5802,8 +7430,8 @@ namespace BMA.EHR.Application.Repositories if (req != null) { var insigniaRequestProfiles = await _dbContext.Set() - .Where(x => x.Request.Id == req) - .ToListAsync(); + .Where(x => x.Request.Id == req) + .ToListAsync(); foreach (var insigniaRequestProfile in insigniaRequestProfiles) { insigniaRequestProfile.IsApprove = true; @@ -5824,25 +7452,25 @@ namespace BMA.EHR.Application.Repositories try { var period = await _dbContext.Set() - .Select(p => new - { - Id = p.Id, - Name = p.Name, - Round = p.Round, - Year = p.Year, - IsLock = p.IsLock, - }) - .FirstOrDefaultAsync(x => x.Id == id); + .Select(p => new + { + Id = p.Id, + Name = p.Name, + Round = p.Round, + Year = p.Year, + IsLock = p.IsLock, + }) + .FirstOrDefaultAsync(x => x.Id == id); if (period == null) return null; else { var request = await _dbContext.Set() - .Include(x => x.Document) - //.Include(x => x.Organization) - //.ThenInclude(x => x.OrganizationOrganization) - .FirstOrDefaultAsync(x => x.Period.Id == period.Id && x.OrganizationId == ocId); + .Include(x => x.Document) + //.Include(x => x.Organization) + //.ThenInclude(x => x.OrganizationOrganization) + .FirstOrDefaultAsync(x => x.Period.Id == period.Id && x.OrganizationId == ocId); var oc = _userProfileRepository.GetOc(ocId, 0, AccessToken); @@ -5857,9 +7485,12 @@ namespace BMA.EHR.Application.Repositories RequestNote = request == null ? "" : request.RequestNote, RequestStatus = request == null ? null : request.RequestStatus, OrganizationName = request == null ? "" : oc.Root, - Document = request == null ? null : (request.Document == null ? null : await _documentService.ImagesPath(request.Document.Id)), + Document = request == null + ? null + : (request.Document == null + ? null + : await _documentService.ImagesPath(request.Document.Id)), }; - } } catch @@ -5941,67 +7572,82 @@ namespace BMA.EHR.Application.Repositories if (id != null) { var raw_result = _dbContext.Set() - .Include(x => x.Request) - .Include(x => x.RequestInsignia) - .ThenInclude(x => x.InsigniaType) + .Include(x => x.Request) + .Include(x => x.RequestInsignia) + .ThenInclude(x => x.InsigniaType) + .Where(h => status.Trim().ToUpper() == "ALL" + ? h.Status != null + : h.Status == status.Trim().ToUpper()) + .Where(h => h.Request.Id == id) + .ToList(); - .Where(h => status.Trim().ToUpper() == "ALL" ? h.Status != null : h.Status == status.Trim().ToUpper()) - .Where(h => h.Request.Id == id) - .ToList(); + var result = raw_result + .Select(h => new InsigniaRequestItem + { + Id = h.Id, + CitizenId = h.CitizenId, + ProfileId = h.ProfileId, + ProfileType = h.ProfileType, + FullName = $"{h.Prefix}{h.FirstName} {h.LastName}", + Position = h.Position, + PosNo = h.PosNo, + Rank = $"{h.PosTypeName}/{h.PosLevelName}", + Salary = h.Salary.ToString(), + LastInsignia = h.LastInsigniaName, + //Profile = _userProfileRepository.GetOfficerProfileById(h.ProfileId, AccessToken), + RequestInsignia = h.RequestInsignia.Name, + RequestInsigniaShortName = h.RequestInsignia.ShortName, + Level = h.RequestInsignia.InsigniaType.Name, + IsApprove = h.IsApprove, + RequestDate = h.RequestDate, + Status = h.Status, + RequestNote = h.ReasonReject, + Reason = h.Reason, + MarkDiscipline = h.MarkDiscipline, + MarkLeave = h.MarkLeave, + MarkRate = h.MarkRate, + //Salary = h.Salary == null ? 0 : h.Salary.Value, + // Docs = GetDocFile(h.Profile.Id), + MatchingConditions = h.MatchingConditions == null || h.MatchingConditions == "" + ? null + : JsonConvert.DeserializeObject>(h.MatchingConditions) + }) + .ToList(); - var pre_result = raw_result - .Select(h => new - { - Id = h.Id, - Profile = _userProfileRepository.GetOfficerProfileById(h.ProfileId, AccessToken), - RequestInsignia = h.RequestInsignia.Name, - RequestInsigniaShortName = h.RequestInsignia.ShortName, - Level = h.RequestInsignia.InsigniaType.Name, - IsApprove = h.IsApprove, - RequestDate = h.RequestDate, - Status = h.Status, - RequestNote = h.ReasonReject, - Reason = h.Reason, - MarkDiscipline = h.MarkDiscipline, - MarkLeave = h.MarkLeave, - MarkRate = h.MarkRate, - Salary = h.Salary == null ? 0 : h.Salary.Value, - // Docs = GetDocFile(h.Profile.Id), - MatchingConditions = h.MatchingConditions == null || h.MatchingConditions == "" ? null : JsonConvert.DeserializeObject>(h.MatchingConditions) - }) - .ToList(); - - var result = (pre_result - .Select(h => new InsigniaRequestItem - { - Id = h.Id, - CitizenId = h.Profile.CitizenId, - ProfileId = h.Profile.Id, - ProfileType = "officer", - //ProfileType = h.Profile.ProfileType, - FullName = $"{h.Profile.Prefix}{h.Profile.FirstName} {h.Profile.LastName}", - Position = h.Profile.Position, - PosNo = h.Profile.ProfileSalary == null || h.Profile.ProfileSalary.Count == 0 ? "" : - h.Profile.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().PosNo, - Rank = h.Profile.PosLevel.PosLevelName, - - Salary = h.Salary.ToString(), - LastInsignia = h.Profile.ProfileInsignia == null || h.Profile.ProfileInsignia.Count == 0 ? "" : - GetInsigniaById(h.Profile.ProfileInsignia.OrderByDescending(x => x.Year).FirstOrDefault().Id.Value).Name, - RequestInsignia = h.RequestInsignia, - RequestInsigniaShortName = h.RequestInsigniaShortName, - Level = h.Level, - IsApprove = h.IsApprove, - RequestDate = h.RequestDate, - Status = h.Status, - RequestNote = h.RequestNote, - Reason = h.Reason, - MarkDiscipline = h.MarkDiscipline, - MarkLeave = h.MarkLeave, - MarkRate = h.MarkRate, - // Docs = GetDocFile(h.Profile.Id), - MatchingConditions = h.MatchingConditions - })).ToList(); + // var result = (pre_result + // .Select(h => new InsigniaRequestItem + // { + // Id = h.Id, + // CitizenId = h.Profile.CitizenId, + // ProfileId = h.Profile.Id, + // ProfileType = "officer", + // //ProfileType = h.Profile.ProfileType, + // FullName = $"{h.Profile.Prefix}{h.Profile.FirstName} {h.Profile.LastName}", + // Position = h.Profile.Position, + // PosNo = h.Profile.ProfileSalary == null || h.Profile.ProfileSalary.Count == 0 + // ? "" + // : h.Profile.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().PosNo, + // Rank = h.Profile.PosLevel.PosLevelName, + // + // Salary = h.Salary.ToString(), + // LastInsignia = h.Profile.ProfileInsignia == null || h.Profile.ProfileInsignia.Count == 0 + // ? "" + // : GetInsigniaById(h.Profile.ProfileInsignia.OrderByDescending(x => x.Year) + // .FirstOrDefault().Id.Value).Name, + // RequestInsignia = h.RequestInsignia, + // RequestInsigniaShortName = h.RequestInsigniaShortName, + // Level = h.Level, + // IsApprove = h.IsApprove, + // RequestDate = h.RequestDate, + // Status = h.Status, + // RequestNote = h.RequestNote, + // Reason = h.Reason, + // MarkDiscipline = h.MarkDiscipline, + // MarkLeave = h.MarkLeave, + // MarkRate = h.MarkRate, + // // Docs = GetDocFile(h.Profile.Id), + // MatchingConditions = h.MatchingConditions + // })).ToList(); return result; } @@ -6009,7 +7655,6 @@ namespace BMA.EHR.Application.Repositories { return null; } - } catch { @@ -6122,10 +7767,12 @@ namespace BMA.EHR.Application.Repositories var periodOlds = await _dbContext.Set().Where(p => p.Year == period.Year).ToListAsync(); foreach (var periodOld in periodOlds) { - var requestOlds = await _dbContext.Set().Where(p => p.Period == periodOld).ToListAsync(); + var requestOlds = await _dbContext.Set().Where(p => p.Period == periodOld) + .ToListAsync(); foreach (var requestOld in requestOlds) { - var profileOlds = await _dbContext.Set().Where(p => p.Request == requestOld).Select(x => x.ProfileId).ToListAsync(); + var profileOlds = await _dbContext.Set() + .Where(p => p.Request == requestOld).Select(x => x.ProfileId).ToListAsync(); items = items.Where(x => !profileOlds.Contains(x.ProfileId)).ToList(); } } @@ -6152,28 +7799,51 @@ namespace BMA.EHR.Application.Repositories foreach (var item in items) { - //var pf = await _dbContext.Set().FirstOrDefaultAsync(p => p.Id == item.ProfileId); - var pf = _userProfileRepository.GetOfficerProfileById(item.ProfileId, AccessToken); - var req_insignia = await _dbContext.Set().FirstOrDefaultAsync(i => i.Id == item.RequestInsignia.Id); + //var pf = _userProfileRepository.GetOfficerProfileById(item.ProfileId, AccessToken); - if (pf != null) + //if (pf == null) throw new Exception(GlobalMessages.InsigniaRequestProfileNotFound); + + // var lastProfileSalary = pf.ProfileSalary == null || pf.ProfileSalary.Count == 0 + // ? null + // : pf.ProfileSalary.MaxBy(x => x.Order); + + var reqInsignia = await _dbContext.Set() + .FirstOrDefaultAsync(i => i.Id == item.RequestInsignia.Id); + + if (reqInsignia == null) throw new Exception(GlobalMessages.InsigniaNotFound); + + req.RequestProfiles.Add(new InsigniaRequestProfile { - req.RequestProfiles.Add(new InsigniaRequestProfile - { - Status = "PENDING", - ProfileId = pf.Id, - RequestInsignia = req_insignia, - Salary = item.Salary == null ? null : item.Salary, - RequestDate = DateTime.Now, - MatchingConditions = System.Text.Json.JsonSerializer.Serialize(item.MatchingConditions), // serialize to string - CreatedFullName = FullName ?? "System Administrator", - CreatedUserId = UserId ?? "", - CreatedAt = DateTime.Now, - LastUpdateFullName = FullName ?? "System Administrator", - LastUpdateUserId = UserId ?? "", - LastUpdatedAt = DateTime.Now, - }); - } + Status = "PENDING", + ProfileId = item.ProfileId, + RequestInsignia = reqInsignia, + Salary = item.Salary, + RequestDate = DateTime.Now, + MatchingConditions = + System.Text.Json.JsonSerializer.Serialize(item.MatchingConditions), + CreatedFullName = FullName ?? "System Administrator", + CreatedUserId = UserId ?? "", + CreatedAt = DateTime.Now, + LastUpdateFullName = FullName ?? "System Administrator", + LastUpdateUserId = UserId ?? "", + LastUpdatedAt = DateTime.Now, + + // Add Information for reused in API Call + ProfileType = item.ProfileType ?? "officer", + Prefix = item.Prefix, + FirstName = item.FirstName, + LastName = item.LastName, + CitizenId = item.CitizenId, + BirthDate = item.BirthDate, + DateAppoint = item.DateAppoint, + Position = item.Position, + Gender = item.Gender, + PosTypeName = item.PosTypeName, + PosLevelName = item.PosTypeName, + PosNo = item.PosNo, + Amount = item.Salary, + PositionSalaryAmount = item.PositionSalary + }); } await _dbContext.Set().AddAsync(req); @@ -6185,74 +7855,6 @@ namespace BMA.EHR.Application.Repositories } } - // เช็คข้อมูลใน 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 } -} +} \ No newline at end of file diff --git a/BMA.EHR.Application/Requests/InsigniaResultSet.cs b/BMA.EHR.Application/Requests/InsigniaResultSet.cs index e83319ca..33b683e3 100644 --- a/BMA.EHR.Application/Requests/InsigniaResultSet.cs +++ b/BMA.EHR.Application/Requests/InsigniaResultSet.cs @@ -6,28 +6,46 @@ namespace BMA.EHR.Application.Requests { public Guid ProfileId { get; set; } - public string Prefix { get; set; } + public string CitizenId { get; set; } = String.Empty; - public string FullName { get; set; } + public string Prefix { get; set; } = String.Empty; + + public string FirstName { get; set; } = String.Empty; + + public string LastName { get; set; } = String.Empty; + + public DateTime? BirthDate { get; set; } + + public DateTime? DateAppoint { get; set; } + + public string? ProfileType { get; set; } + + public string? PosTypeName { get; set; } + + public string? PosLevelName { get; set; } - public string Position { get; set; } + public string FullName { get; set; } = String.Empty; - public string Rank { get; set; } + public string Position { get; set; } = String.Empty; - public string GovAge { get; set; } + public string Rank { get; set; } = String.Empty; + + public string GovAge { get; set; } = String.Empty; public double? Salary { get; set; } + + public double? PositionSalary { get; set; } - public string LastInsignia { get; set; } + public string LastInsignia { get; set; } = String.Empty; public Guid? LastInsigniaId { get; set; } //public Guid PosNo { get; set; } - public string PosNo { get; set; } + public string PosNo { get; set; } = String.Empty; - public InsigniaItem RequestInsignia { get; set; } + public InsigniaItem RequestInsignia { get; set; } = new(); - public string Gender { get; set; } + public string Gender { get; set; } = String.Empty; public int Seq { get; set; } @@ -40,4 +58,4 @@ namespace BMA.EHR.Application.Requests public string Result { get; set; } = ""; } -} +} \ No newline at end of file diff --git a/BMA.EHR.Domain/Models/Insignias/InsigniaRequestProfile.cs b/BMA.EHR.Domain/Models/Insignias/InsigniaRequestProfile.cs index dc32c98a..7953c16b 100644 --- a/BMA.EHR.Domain/Models/Insignias/InsigniaRequestProfile.cs +++ b/BMA.EHR.Domain/Models/Insignias/InsigniaRequestProfile.cs @@ -71,5 +71,7 @@ namespace BMA.EHR.Domain.Models.Insignias public string? PosNo { get; set; } public double? Amount { get; set; } public double? PositionSalaryAmount { get; set; } + + public string? LastInsigniaName { get; set; } } } diff --git a/BMA.EHR.Insignia.Service/BMA.EHR.Insignia.Service.csproj b/BMA.EHR.Insignia.Service/BMA.EHR.Insignia.Service.csproj index 738fb6d2..993e7548 100644 --- a/BMA.EHR.Insignia.Service/BMA.EHR.Insignia.Service.csproj +++ b/BMA.EHR.Insignia.Service/BMA.EHR.Insignia.Service.csproj @@ -1,49 +1,50 @@ - - net7.0 - enable - enable - 93677512-b64b-4a19-9e7d-dd283c7ec901 - Linux - True - . - BMA.EHR.Insignia.Service - + + net7.0 + enable + enable + 93677512-b64b-4a19-9e7d-dd283c7ec901 + Linux + True + . + BMA.EHR.Insignia.Service + BMA.EHR.Insignia + - - - - - - - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - - - - - - - - - - + + + + + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + + + + + + - - - - - - PreserveNewest - - + + + + + + PreserveNewest + + diff --git a/BMA.EHR.Insignia.Service/Controllers/InsigniaRequestController.cs b/BMA.EHR.Insignia.Service/Controllers/InsigniaRequestController.cs index 91357142..417443b9 100644 --- a/BMA.EHR.Insignia.Service/Controllers/InsigniaRequestController.cs +++ b/BMA.EHR.Insignia.Service/Controllers/InsigniaRequestController.cs @@ -220,7 +220,19 @@ namespace BMA.EHR.Insignia.Service.Controllers isApprove = irp.IsApprove, statusInstitute = irp.IsApprove.ToString(), request_date = irp.RequestDate, - profile = _userProfileRepository.GetOfficerProfileById(irp.ProfileId, AccessToken), + + profileId = irp.ProfileId, + citizenId = irp.CitizenId, + prefix = irp.Prefix, + firstname = irp.FirstName, + lastname = irp.LastName, + type = irp.ProfileType, + position = irp.Position, + posno = irp.PosNo, + rank = $"{irp.PosTypeName}/{irp.PosLevelName}", + lastInsigniaName = irp.LastInsigniaName, + + //profile = _userProfileRepository.GetOfficerProfileById(irp.ProfileId, AccessToken), instituteName = "", instituteId = -1, requestInsigniaLevel = irp.RequestInsignia.InsigniaType.Name, @@ -231,44 +243,45 @@ namespace BMA.EHR.Insignia.Service.Controllers requestSalary = irp.Salary, matchingConditions = JsonConvert.DeserializeObject>(irp.MatchingConditions) }) + .OrderBy(x => x.citizenId) .ToList(); - var dataResult = rawData - .Select(irp => new - { - irp.request_id, - irp.isApprove, - irp.statusInstitute, - irp.request_date, - profileId = irp.profile == null ? Guid.Empty : irp.profile.Id, - citizenId = irp.profile == null ? "" : irp.profile.CitizenId, - prefix = irp.profile == null ? "" : irp.profile.Prefix, - firstname = irp.profile == null ? "" : irp.profile.FirstName, - lastname = irp.profile == null ? "" : irp.profile.LastName, - type = irp.profile == null ? "" : irp.profile.ProfileType, - position = irp.profile == null ? "" : irp.profile.Position, - posno = irp.profile == null ? "" : - irp.profile.ProfileSalary == null || irp.profile.ProfileSalary.Count == 0 ? "" : - irp.profile.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().PosNo, - rank = irp.profile == null ? "" : $"{irp.profile.PosType.PosTypeName}/{irp.profile.PosLevel.PosLevelName}", - irp.instituteName, - irp.instituteId, - lastInsigniaName = irp.profile == null ? "" : - irp.profile.ProfileInsignia == null || irp.profile.ProfileInsignia.Count == 0 ? "" : - _insigniaPeriodRepository.GetInsigniaById(irp.profile.ProfileInsignia.OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value) == null ? "" : - _insigniaPeriodRepository.GetInsigniaById(irp.profile.ProfileInsignia.OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - irp.requestInsigniaLevel, - irp.requestInsigniaName, - irp.requestQua, - irp.requestDoc, - irp.requestNote, - irp.requestSalary, - irp.matchingConditions - }) - .OrderBy(y => y.citizenId) - .ToList(); + // var dataResult = rawData + // .Select(irp => new + // { + // irp.request_id, + // irp.isApprove, + // irp.statusInstitute, + // irp.request_date, + // profileId = irp.profile == null ? Guid.Empty : irp.profile.Id, + // citizenId = irp.profile == null ? "" : irp.profile.CitizenId, + // prefix = irp.profile == null ? "" : irp.profile.Prefix, + // firstname = irp.profile == null ? "" : irp.profile.FirstName, + // lastname = irp.profile == null ? "" : irp.profile.LastName, + // type = irp.profile == null ? "" : irp.profile.ProfileType, + // position = irp.profile == null ? "" : irp.profile.Position, + // posno = irp.profile == null ? "" : + // irp.profile.ProfileSalary == null || irp.profile.ProfileSalary.Count == 0 ? "" : + // irp.profile.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().PosNo, + // rank = irp.profile == null ? "" : $"{irp.profile.PosType.PosTypeName}/{irp.profile.PosLevel.PosLevelName}", + // irp.instituteName, + // irp.instituteId, + // lastInsigniaName = irp.profile == null ? "" : + // irp.profile.ProfileInsignia == null || irp.profile.ProfileInsignia.Count == 0 ? "" : + // _insigniaPeriodRepository.GetInsigniaById(irp.profile.ProfileInsignia.OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value) == null ? "" : + // _insigniaPeriodRepository.GetInsigniaById(irp.profile.ProfileInsignia.OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, + // irp.requestInsigniaLevel, + // irp.requestInsigniaName, + // irp.requestQua, + // irp.requestDoc, + // irp.requestNote, + // irp.requestSalary, + // irp.matchingConditions + // }) + // .OrderBy(y => y.citizenId) + // .ToList(); - return dataResult; + return rawData; } #endregion @@ -291,169 +304,7 @@ namespace BMA.EHR.Insignia.Service.Controllers #endregion #region " จัดทำรายชื่อครูที่มีสิทธิในการยืนขอเครื่องราชฯ " - - // [HttpGet("old/{role}/{ocId:length(36)}")] - // public async Task> GetInsignaiRequest(Guid id, Guid ocId, string role) - // { - // var result = await _repository.GetInsigniaRequest(id, ocId); - // if (result != null) - // { - // Guid period = result.PeriodId; - // string periodName = result.Name; - // string requestStatus = result.RequestStatus; - // var resend = new InsigniaResults - // { - // PeriodId = period, - // Year = result.Year, - // Name = periodName, - // RequestStatus = requestStatus, - // OrganizationName = result.OrganizationName, - // Items = new List() - // }; - // var candidate = await _repository.GetInsigniaCandidate(period, ocId); - - // // ตรวจสอบว่ารายการอยู่ใน table insignia_request_new - // if (requestStatus == null) - // { - // // บันทึกรายชื่อ - // _repository.InsertCandidate(period, ocId, candidate); - // } - // if (role == "officer") - // { - // resend.Items = await _repository.InsigniaHasProfile(period, ocId); - // return Success(resend); - // } - // else - // { - // var passData = _context.InsigniaRequests.AsQueryable() - // .Include(x => x.Organization) - // .Include(x => x.RequestProfiles) - // .Where(x => x.Organization.Id == ocId) - // .Where(x => x.Period.Id == period) - // .Select(ir => new - // { - // requstID = ir.Id, - // requstStatus = ir.RequestStatus, - // requstStatusName = GetRequestlStatusText(ir.RequestStatus), - // fkInstituteId = -1, - // // fkDivisionId = ir.Organization.Id, - // // fkDivision = ir.Organization.Name, - // fkInstitute = "", - // fkPeriodId = ir.Period.Id, - // insigniaRequestHasProfile = ir.RequestProfiles.AsQueryable() - // .Include(x => x.Profile) - // .ThenInclude(x => x.Position) - // .Include(x => x.Profile) - // // .ThenInclude(x => x.PositionNumber) - // .Include(x => x.Profile) - // // .ThenInclude(x => x.AcademicStanding) - // .Include(x => x.RequestInsignia) - // .ThenInclude(x => x.InsigniaType) - // .Select(irp => new - // { - // request_id = irp.Request.Id, - // isApprove = irp.IsApprove, - // statusInstitute = irp.IsApprove.ToString(), - // request_date = irp.RequestDate, - // profileId = irp.Profile.Id, - // // prefix = irp.Profile.Prefix, - // firstname = irp.Profile.FirstName, - // lastname = irp.Profile.LastName, - // // posno = irp.Profile.PositionNumber.Id, - // type = irp.Profile.ProfileType, - // // position = irp.Profile.Position.Name, - // // rank = irp.Profile.AcademicStanding.Name, - // instituteName = "", - // instituteId = -1, - // // divisionName = irp.Profile.OrganizationOrganization.Name, - // // divisionId = irp.Profile.OrganizationOrganization.Id, - // lastInsigniaName = "", - // requestInsigniaLevel = irp.RequestInsignia.InsigniaType == null ? null : irp.RequestInsignia.InsigniaType.Name, - // requestInsigniaName = irp.RequestInsignia.Name, - // requestQua = irp.QualificationStatus, - // requestDoc = irp.DocumentStatus, - // requestNote = irp.Note, - // requestSalary = irp.Salary, - // }) - // .Where(x => x.isApprove) - // .OrderBy(y => y.profileId) - // .ToList() - // }) - // .ToList() - // .FirstOrDefault(); - - // var failData = _context.InsigniaRequests.AsQueryable() - // .Include(x => x.Organization) - // .Include(x => x.RequestProfiles) - // .Where(x => x.Organization.Id == ocId) - // .Where(x => x.Period.Id == period) - // .Select(ir => new - // { - // requstID = ir.Id, - // requstStatus = ir.RequestStatus, - // requstStatusName = GetRequestlStatusText(ir.RequestStatus), - // fkInstituteId = -1, - // // fkDivisionId = ir.Organization.Id, - // // fkDivision = ir.Organization.Name, - // fkInstitute = "", - // fkPeriodId = ir.Period.Id, - // insigniaRequestHasProfile = ir.RequestProfiles.AsQueryable() - // .Include(x => x.Profile) - // .ThenInclude(x => x.Position) - // .Include(x => x.Profile) - // // .ThenInclude(x => x.PositionNumber) - // .Include(x => x.Profile) - // // .ThenInclude(x => x.AcademicStanding) - // .Include(x => x.RequestInsignia) - // .ThenInclude(x => x.InsigniaType) - // .Select(irp => new - // { - // request_id = irp.Request.Id, - // isApprove = irp.IsApprove, - // statusInstitute = irp.IsApprove.ToString(), - // request_date = irp.RequestDate, - // profileId = irp.Profile.Id, - // // prefix = irp.Profile.Prefix, - // firstname = irp.Profile.FirstName, - // lastname = irp.Profile.LastName, - // // posno = irp.Profile.PositionNumber.Id, - // type = irp.Profile.ProfileType, - // // position = irp.Profile.Position.Name, - // // rank = irp.Profile.AcademicStanding.Name, - // instituteName = "", - // instituteId = -1, - // // divisionName = irp.Profile.OrganizationOrganization.Name, - // // divisionId = irp.Profile.OrganizationOrganization.Id, - // lastInsigniaName = "", - // requestInsigniaLevel = irp.RequestInsignia.InsigniaType == null ? null : irp.RequestInsignia.InsigniaType.Name, - // requestInsigniaName = irp.RequestInsignia.Name, - // requestQua = irp.QualificationStatus, - // requestDoc = irp.DocumentStatus, - // requestNote = irp.Note, - // requestSalary = irp.Salary, - // }) - // .Where(x => !x.isApprove) - // .OrderBy(y => y.profileId) - // .ToList() - // }) - // .ToList() - // .FirstOrDefault(); - - // var period_data = (from p in _context.InsigniaPeriods.AsQueryable() - // where p.Id == period - // select new - // { - // periodName = p.Name, - // periodYear = p.Year, - // }).FirstOrDefault(); - - // return Success(new { passData = passData, failData = failData, period = period_data }); - // } - // // select data to display - // } - // return Success(); - // } - + /// /// list รายการคำขอเครื่องราช ผู้ได้รับ,คนไม่ยื่น,คนที่ถูกลบ /// @@ -666,49 +517,48 @@ namespace BMA.EHR.Insignia.Service.Controllers [HttpGet("{insigniaPeriodId:length(36)}")] public async Task> UpdateInsigniaRequestBkk(Guid insigniaPeriodId) { - // jack add เพื่อให้ทำการรันแค่เขตพระนคร - // TODO : ต้องมาเอาบรรทัดนี้ออกในภายหลัง - var ocId = Guid.Parse("e8493cd1-d371-402e-add6-566e68d5d1b3"); - var result = await _repository.GetInsigniaRequest(insigniaPeriodId, ocId); - if (result != null) - { - Guid period = result.PeriodId; - string requestStatus = result.RequestStatus; - var candidate = await _repository.GetInsigniaCandidateBKK(insigniaPeriodId, ocId); - // ตรวจสอบว่ารายการอยู่ใน table insignia_request_new - if (requestStatus == null) - { - // บันทึกรายชื่อ - await _repository.InsertCandidate(period, ocId, candidate); - } - } + // // jack add เพื่อให้ทำการรันแค่เขตพระนคร + // // TODO : ต้องมาเอาบรรทัดนี้ออกในภายหลัง + // var ocId = Guid.Parse("e8493cd1-d371-402e-add6-566e68d5d1b3"); + // var result = await _repository.GetInsigniaRequest(insigniaPeriodId, ocId); + // if (result != null) + // { + // Guid period = result.PeriodId; + // string requestStatus = result.RequestStatus; + // var candidate = await _repository.GetInsigniaCandidateBKK(insigniaPeriodId, ocId); + // // ตรวจสอบว่ารายการอยู่ใน table insignia_request_new + // if (requestStatus == null) + // { + // // บันทึกรายชื่อ + // await _repository.InsertCandidate(period, ocId, candidate); + // } + // } // TODO: original code use this in production - //var organizations = await _userProfileRepository.GetActiveRootAsync(AccessToken); + var organizations = await _userProfileRepository.GetActiveRootAsync(AccessToken); - //foreach (var organization in organizations) - //{ - // if (organization == null) - // continue; + foreach (var organization in organizations) + { + if (organization == null) + continue; + + //if(organization.Id != Guid.Parse("e8493cd1-d371-402e-add6-566e68d5d1b3")) continue; - - // if(organization.Id != Guid.Parse("e8493cd1-d371-402e-add6-566e68d5d1b3")) continue; - - // var result = await _repository.GetInsigniaRequest(insigniaPeriodId, organization.Id); - // if (result != null) - // { - // Guid period = result.PeriodId; - // string requestStatus = result.RequestStatus; - // var candidate = await _repository.GetInsigniaCandidateBKK(insigniaPeriodId, organization.Id); - // // ตรวจสอบว่ารายการอยู่ใน table insignia_request_new - // if (requestStatus == null) - // { - // // บันทึกรายชื่อ - // await _repository.InsertCandidate(period, organization.Id, candidate); - // } - // } - //} + var result = await _repository.GetInsigniaRequest(insigniaPeriodId, organization.Id); + if (result != null) + { + Guid period = result.PeriodId; + string requestStatus = result.RequestStatus; + var candidate = await _repository.GetInsigniaCandidateBKK(insigniaPeriodId, organization.Id); + // ตรวจสอบว่ารายการอยู่ใน table insignia_request_new + if (requestStatus == null) + { + // บันทึกรายชื่อ + await _repository.InsertCandidate(period, organization.Id, candidate); + } + } + } return Success(); } @@ -732,6 +582,13 @@ namespace BMA.EHR.Insignia.Service.Controllers #region " บันทึกรายชื่อครูในการขอยื่นเครื่องราชฯ เเต่ยังไม่ส่งไปยัง ผอ.โรงเรียน " + /// + /// + /// + /// + /// + /// + /// [HttpPut("approve/{ocId:length(36)}")] public async Task> SaveRequestList(Guid id, Guid ocId, InsigniaApproveRequest items) {