คำนวณเครื่องราช ลูกจ้าง ** ยังไม่ได้ทดสอบ **
This commit is contained in:
parent
cf8f487d79
commit
5c047bb2f3
1 changed files with 684 additions and 0 deletions
|
|
@ -10,6 +10,7 @@ using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using BMA.EHR.Domain.Models.Organizations;
|
using BMA.EHR.Domain.Models.Organizations;
|
||||||
|
using Amazon.S3.Model.Internal.MarshallTransformations;
|
||||||
|
|
||||||
namespace BMA.EHR.Application.Repositories
|
namespace BMA.EHR.Application.Repositories
|
||||||
{
|
{
|
||||||
|
|
@ -197,6 +198,659 @@ namespace BMA.EHR.Application.Repositories
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#region " Employee "
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// กลุ่ม ลจ ที่ค่าจ้าง >= 8340 และ < 15050
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="periodId"></param>
|
||||||
|
/// <param name="ocId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<List<InsigniaResultSet>> GetEmployeeInsignia_Type1(Guid periodId, Guid ocId)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var allOc = GetAllIdByRoot(ocId);
|
||||||
|
|
||||||
|
var period = await _dbContext.Set<InsigniaPeriod>().FirstOrDefaultAsync(p => p.Id == periodId);
|
||||||
|
|
||||||
|
if (period == null)
|
||||||
|
throw new Exception(GlobalMessages.CoinPeriodNotFound);
|
||||||
|
|
||||||
|
var oc = await _dbContext.Set<OrganizationEntity>().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<Profile>()
|
||||||
|
.Include(p => p.Position)
|
||||||
|
.Include(p => p.PosNo)
|
||||||
|
.Include(p => p.PositionType)
|
||||||
|
.Include(p => p.PositionLevel)
|
||||||
|
.Include(p => p.Insignias)
|
||||||
|
.ThenInclude(i => i.Insignia)
|
||||||
|
.Include(p => p.Salaries)
|
||||||
|
.Where(p =>
|
||||||
|
allOc.Contains(p.OcId == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.OcId.Value) &&
|
||||||
|
p.IsActive == true &&
|
||||||
|
p.IsLeave == false &&
|
||||||
|
p.DateAppoint != null &&
|
||||||
|
|
||||||
|
p.ProfileType == "employee" &&
|
||||||
|
p.EmployeeClass == "perm"
|
||||||
|
)
|
||||||
|
.Select(p => new
|
||||||
|
{
|
||||||
|
ProfileId = p.Id,
|
||||||
|
Prefix = p.Prefix == null ? null : p.Prefix.Name,
|
||||||
|
FullName = $"{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,
|
||||||
|
PositionLevelId = p.PositionLevel == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.PositionLevel.Id,
|
||||||
|
PositionLevelName = p.PositionLevel == null ? null : p.PositionLevel.Name,
|
||||||
|
PositionTypeId = p.PositionType == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.PositionType.Id,
|
||||||
|
PositionTypeName = p.PositionType == null ? null : p.PositionType.Name,
|
||||||
|
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,
|
||||||
|
SalaryCondition = p.Salaries.Count() == 0 ? null : p.Salaries.Where(x => x.Date <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount,
|
||||||
|
PostionSalaryAmount = p.Salaries.Count() == 0 ? null : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().PositionSalaryAmount,
|
||||||
|
//FirstRecvInsigniaYear1 = p.Insignias.Count == 0 ? 0 :
|
||||||
|
// p.Insignias.Where(x => x.Insignia.Name == "เบญจมาภรณ์มงกุฎไทย").OrderBy(x => x.Year).FirstOrDefault() == null ? 0 :
|
||||||
|
// p.Insignias.Where(x => x.Insignia.Name == "เบญจมาภรณ์มงกุฎไทย").OrderBy(x => x.Year).FirstOrDefault().Year,
|
||||||
|
//FirstRecvInsigniaYear2 = p.Insignias.Count == 0 ? 0 :
|
||||||
|
// p.Insignias.Where(x => x.Insignia.Name == "เบญจมาภรณ์ช้างเผือก").OrderBy(x => x.Year).FirstOrDefault() == null ? 0 :
|
||||||
|
// p.Insignias.Where(x => x.Insignia.Name == "เบญจมาภรณ์ช้างเผือก").OrderBy(x => x.Year).FirstOrDefault().Year,
|
||||||
|
});
|
||||||
|
|
||||||
|
// check วันที่บรรจะต้องน้อยกว่า 29/5/ปี-8 ขอ บม.
|
||||||
|
var s1 = ((from p in inst_profile
|
||||||
|
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<MatchingCondition>
|
||||||
|
{
|
||||||
|
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 s2 = (from p in _dbContext.Set<Profile>()
|
||||||
|
.Include(p => p.Position)
|
||||||
|
.Include(p => p.PosNo)
|
||||||
|
.Include(p => p.PositionType)
|
||||||
|
.Include(p => p.PositionLevel)
|
||||||
|
.Include(p => p.Insignias)
|
||||||
|
.ThenInclude(i => i.Insignia)
|
||||||
|
.Include(p => p.Salaries)
|
||||||
|
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.PositionType != null
|
||||||
|
&& p.PositionLevel != null
|
||||||
|
&& p.ProfileType == "employee"
|
||||||
|
&& p.EmployeeClass == "perm"
|
||||||
|
&& !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.FirstName} {p.LastName}",
|
||||||
|
Position = p.Position == null ? null : p.Position.Name,
|
||||||
|
Rank = p.PositionLevel.Name,
|
||||||
|
GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0),
|
||||||
|
ProfileDateAppoint = p.DateAppoint.Value,
|
||||||
|
LastInsignia = p.Insignias.Count == 0 ? "" : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name,
|
||||||
|
LastInsigniaId = p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Id,
|
||||||
|
Salary = p.Salaries.Count() == 0 ? 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,
|
||||||
|
"เบญจมาภรณ์ช้างเผือก"),
|
||||||
|
FirstRecvInsigniaYear = p.Insignias.Count == 0 ? 0 :
|
||||||
|
p.Insignias.Where(x => x.Insignia.Name == "เบญจมาภรณ์มงกุฎไทย").OrderBy(x => x.Year).FirstOrDefault() == null ? 0 :
|
||||||
|
p.Insignias.Where(x => x.Insignia.Name == "เบญจมาภรณ์มงกุฎไทย").OrderBy(x => x.Year).FirstOrDefault().Year,
|
||||||
|
})
|
||||||
|
.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<MatchingCondition>
|
||||||
|
{
|
||||||
|
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 _dbContext.Set<Profile>()
|
||||||
|
.Include(p => p.Position)
|
||||||
|
.Include(p => p.PosNo)
|
||||||
|
.Include(p => p.PositionType)
|
||||||
|
.Include(p => p.PositionLevel)
|
||||||
|
.Include(p => p.Insignias)
|
||||||
|
.ThenInclude(i => i.Insignia)
|
||||||
|
.Include(p => p.Salaries)
|
||||||
|
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.PositionType != null
|
||||||
|
&& p.PositionLevel != null
|
||||||
|
&& p.ProfileType == "employee"
|
||||||
|
&& p.EmployeeClass == "perm"
|
||||||
|
&& !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.FirstName} {p.LastName}",
|
||||||
|
Position = p.Position == null ? null : p.Position.Name,
|
||||||
|
Rank = p.PositionLevel.Name,
|
||||||
|
GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0),
|
||||||
|
ProfileDateAppoint = p.DateAppoint.Value,
|
||||||
|
LastInsignia = p.Insignias.Count == 0 ? "" : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name,
|
||||||
|
LastInsigniaId = p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Id,
|
||||||
|
Salary = p.Salaries.Count() == 0 ? 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,
|
||||||
|
"จัตุรถาภรณ์มงกุฎไทย"),
|
||||||
|
FirstRecvInsigniaYear = p.Insignias.Count == 0 ? 0 :
|
||||||
|
p.Insignias.Where(x => x.Insignia.Name == "เบญจมาภรณ์ช้างเผือก").OrderBy(x => x.Year).FirstOrDefault() == null ? 0 :
|
||||||
|
p.Insignias.Where(x => x.Insignia.Name == "เบญจมาภรณ์ช้างเผือก").OrderBy(x => x.Year).FirstOrDefault().Year,
|
||||||
|
})
|
||||||
|
.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<MatchingCondition>
|
||||||
|
{
|
||||||
|
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<InsigniaResultSet>();
|
||||||
|
|
||||||
|
foreach (var r in s3)
|
||||||
|
{
|
||||||
|
var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId);
|
||||||
|
|
||||||
|
// Check ได้รับหรือเคยยื่นขอไปในปีที่แล้วหรือไม่?
|
||||||
|
if (!CanRequestInsignia(r.ProfileId, period.Year))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
// Check ว่าชั้นที่ขอสูงกว่าชั้นที่เคยได้รับแล้วหรือไม่?
|
||||||
|
if (!IsHigherLevel2(r.LastInsignia, r.RequestInsignia.Name))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (old == null)
|
||||||
|
{
|
||||||
|
result_candidate.Add(r);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var r in s2)
|
||||||
|
{
|
||||||
|
var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId);
|
||||||
|
|
||||||
|
// Check ได้รับหรือเคยยื่นขอไปในปีที่แล้วหรือไม่?
|
||||||
|
if (!CanRequestInsignia(r.ProfileId, period.Year))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
// Check ว่าชั้นที่ขอสูงกว่าชั้นที่เคยได้รับแล้วหรือไม่?
|
||||||
|
if (!IsHigherLevel2(r.LastInsignia, r.RequestInsignia.Name))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (old == null)
|
||||||
|
{
|
||||||
|
result_candidate.Add(r);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var r in s1)
|
||||||
|
{
|
||||||
|
var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId);
|
||||||
|
|
||||||
|
// Check ได้รับหรือเคยยื่นขอไปในปีที่แล้วหรือไม่?
|
||||||
|
if (!CanRequestInsignia(r.ProfileId, period.Year))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
// Check ว่าชั้นที่ขอสูงกว่าชั้นที่เคยได้รับแล้วหรือไม่?
|
||||||
|
if (!IsHigherLevel2(r.LastInsignia, r.RequestInsignia.Name))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (old == null)
|
||||||
|
{
|
||||||
|
result_candidate.Add(r);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result_candidate;
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// กลุ่ม ลจ ที่ค่าจ้าง >= 15050
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="periodId"></param>
|
||||||
|
/// <param name="ocId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<List<InsigniaResultSet>> GetEmployeeInsignia_Type2(Guid periodId, Guid ocId)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var allOc = GetAllIdByRoot(ocId);
|
||||||
|
|
||||||
|
var period = await _dbContext.Set<InsigniaPeriod>().FirstOrDefaultAsync(p => p.Id == periodId);
|
||||||
|
|
||||||
|
if (period == null)
|
||||||
|
throw new Exception(GlobalMessages.CoinPeriodNotFound);
|
||||||
|
|
||||||
|
var oc = await _dbContext.Set<OrganizationEntity>().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<Profile>()
|
||||||
|
.Include(p => p.Position)
|
||||||
|
.Include(p => p.PosNo)
|
||||||
|
.Include(p => p.PositionType)
|
||||||
|
.Include(p => p.PositionLevel)
|
||||||
|
.Include(p => p.Insignias)
|
||||||
|
.ThenInclude(i => i.Insignia)
|
||||||
|
.Include(p => p.Salaries)
|
||||||
|
.Where(p =>
|
||||||
|
allOc.Contains(p.OcId == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.OcId.Value) &&
|
||||||
|
p.IsActive == true &&
|
||||||
|
p.IsLeave == false &&
|
||||||
|
p.DateAppoint != null &&
|
||||||
|
|
||||||
|
p.ProfileType == "employee" &&
|
||||||
|
p.EmployeeClass == "perm"
|
||||||
|
)
|
||||||
|
.Select(p => new
|
||||||
|
{
|
||||||
|
ProfileId = p.Id,
|
||||||
|
Prefix = p.Prefix == null ? null : p.Prefix.Name,
|
||||||
|
FullName = $"{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,
|
||||||
|
PositionLevelId = p.PositionLevel == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.PositionLevel.Id,
|
||||||
|
PositionLevelName = p.PositionLevel == null ? null : p.PositionLevel.Name,
|
||||||
|
PositionTypeId = p.PositionType == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.PositionType.Id,
|
||||||
|
PositionTypeName = p.PositionType == null ? null : p.PositionType.Name,
|
||||||
|
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,
|
||||||
|
SalaryCondition = p.Salaries.Count() == 0 ? null : p.Salaries.Where(x => x.Date <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount,
|
||||||
|
PostionSalaryAmount = p.Salaries.Count() == 0 ? null : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().PositionSalaryAmount,
|
||||||
|
//FirstRecvInsigniaYear1 = p.Insignias.Count == 0 ? 0 :
|
||||||
|
// p.Insignias.Where(x => x.Insignia.Name == "เบญจมาภรณ์มงกุฎไทย").OrderBy(x => x.Year).FirstOrDefault() == null ? 0 :
|
||||||
|
// p.Insignias.Where(x => x.Insignia.Name == "เบญจมาภรณ์มงกุฎไทย").OrderBy(x => x.Year).FirstOrDefault().Year,
|
||||||
|
//FirstRecvInsigniaYear2 = p.Insignias.Count == 0 ? 0 :
|
||||||
|
// p.Insignias.Where(x => x.Insignia.Name == "เบญจมาภรณ์ช้างเผือก").OrderBy(x => x.Year).FirstOrDefault() == null ? 0 :
|
||||||
|
// p.Insignias.Where(x => x.Insignia.Name == "เบญจมาภรณ์ช้างเผือก").OrderBy(x => x.Year).FirstOrDefault().Year,
|
||||||
|
});
|
||||||
|
|
||||||
|
var s1 = ((from p in inst_profile
|
||||||
|
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<MatchingCondition>
|
||||||
|
{
|
||||||
|
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 s2 = (from p in _dbContext.Set<Profile>()
|
||||||
|
.Include(p => p.Position)
|
||||||
|
.Include(p => p.PosNo)
|
||||||
|
.Include(p => p.PositionType)
|
||||||
|
.Include(p => p.PositionLevel)
|
||||||
|
.Include(p => p.Insignias)
|
||||||
|
.ThenInclude(i => i.Insignia)
|
||||||
|
.Include(p => p.Salaries)
|
||||||
|
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.PositionType != null
|
||||||
|
&& p.PositionLevel != null
|
||||||
|
&& p.ProfileType == "employee"
|
||||||
|
&& p.EmployeeClass == "perm"
|
||||||
|
&& !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.FirstName} {p.LastName}",
|
||||||
|
Position = p.Position == null ? null : p.Position.Name,
|
||||||
|
Rank = p.PositionLevel.Name,
|
||||||
|
GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0),
|
||||||
|
ProfileDateAppoint = p.DateAppoint.Value,
|
||||||
|
LastInsignia = p.Insignias.Count == 0 ? "" : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name,
|
||||||
|
LastInsigniaId = p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Id,
|
||||||
|
Salary = p.Salaries.Count() == 0 ? 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,
|
||||||
|
"จัตุรถาภรณ์มงกุฎไทย"),
|
||||||
|
FirstRecvInsigniaYear = p.Insignias.Count == 0 ? 0 :
|
||||||
|
p.Insignias.Where(x => x.Insignia.Name == "เบญจมาภรณ์ช้างเผือก").OrderBy(x => x.Year).FirstOrDefault() == null ? 0 :
|
||||||
|
p.Insignias.Where(x => x.Insignia.Name == "เบญจมาภรณ์ช้างเผือก").OrderBy(x => x.Year).FirstOrDefault().Year,
|
||||||
|
})
|
||||||
|
.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<MatchingCondition>
|
||||||
|
{
|
||||||
|
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 _dbContext.Set<Profile>()
|
||||||
|
.Include(p => p.Position)
|
||||||
|
.Include(p => p.PosNo)
|
||||||
|
.Include(p => p.PositionType)
|
||||||
|
.Include(p => p.PositionLevel)
|
||||||
|
.Include(p => p.Insignias)
|
||||||
|
.ThenInclude(i => i.Insignia)
|
||||||
|
.Include(p => p.Salaries)
|
||||||
|
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.PositionType != null
|
||||||
|
&& p.PositionLevel != null
|
||||||
|
&& p.ProfileType == "employee"
|
||||||
|
&& p.EmployeeClass == "perm"
|
||||||
|
&& !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.FirstName} {p.LastName}",
|
||||||
|
Position = p.Position == null ? null : p.Position.Name,
|
||||||
|
Rank = p.PositionLevel.Name,
|
||||||
|
GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0),
|
||||||
|
ProfileDateAppoint = p.DateAppoint.Value,
|
||||||
|
LastInsignia = p.Insignias.Count == 0 ? "" : p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name,
|
||||||
|
LastInsigniaId = p.Insignias.Where(x => !x.Insignia.Name.Contains("เหรียญจักรพรรดิมาลา")).OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Id,
|
||||||
|
Salary = p.Salaries.Count() == 0 ? 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,
|
||||||
|
"จัตุรถาภรณ์ช้างเผือก"),
|
||||||
|
FirstRecvInsigniaYear = p.Insignias.Count == 0 ? 0 :
|
||||||
|
p.Insignias.Where(x => x.Insignia.Name == "จัตุรถาภรณ์มงกุฎไทย").OrderBy(x => x.Year).FirstOrDefault() == null ? 0 :
|
||||||
|
p.Insignias.Where(x => x.Insignia.Name == "จัตุรถาภรณ์มงกุฎไทย").OrderBy(x => x.Year).FirstOrDefault().Year,
|
||||||
|
})
|
||||||
|
.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<MatchingCondition>
|
||||||
|
{
|
||||||
|
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<InsigniaResultSet>();
|
||||||
|
|
||||||
|
foreach (var r in s3)
|
||||||
|
{
|
||||||
|
var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId);
|
||||||
|
|
||||||
|
// Check ได้รับหรือเคยยื่นขอไปในปีที่แล้วหรือไม่?
|
||||||
|
if (!CanRequestInsignia(r.ProfileId, period.Year))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
// Check ว่าชั้นที่ขอสูงกว่าชั้นที่เคยได้รับแล้วหรือไม่?
|
||||||
|
if (!IsHigherLevel2(r.LastInsignia, r.RequestInsignia.Name))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (old == null)
|
||||||
|
{
|
||||||
|
result_candidate.Add(r);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var r in s2)
|
||||||
|
{
|
||||||
|
var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId);
|
||||||
|
|
||||||
|
// Check ได้รับหรือเคยยื่นขอไปในปีที่แล้วหรือไม่?
|
||||||
|
if (!CanRequestInsignia(r.ProfileId, period.Year))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
// Check ว่าชั้นที่ขอสูงกว่าชั้นที่เคยได้รับแล้วหรือไม่?
|
||||||
|
if (!IsHigherLevel2(r.LastInsignia, r.RequestInsignia.Name))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (old == null)
|
||||||
|
{
|
||||||
|
result_candidate.Add(r);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var r in s1)
|
||||||
|
{
|
||||||
|
var old = result_candidate.FirstOrDefault(x => x.ProfileId == r.ProfileId);
|
||||||
|
|
||||||
|
// Check ได้รับหรือเคยยื่นขอไปในปีที่แล้วหรือไม่?
|
||||||
|
if (!CanRequestInsignia(r.ProfileId, period.Year))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
// Check ว่าชั้นที่ขอสูงกว่าชั้นที่เคยได้รับแล้วหรือไม่?
|
||||||
|
if (!IsHigherLevel2(r.LastInsignia, r.RequestInsignia.Name))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (old == null)
|
||||||
|
{
|
||||||
|
result_candidate.Add(r);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result_candidate;
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
#region " ทั่วไป "
|
#region " ทั่วไป "
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -4721,6 +5375,36 @@ namespace BMA.EHR.Application.Repositories
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<List<InsigniaResultSet>> GetEmployeeInsigniaCandidateBKK(Guid periodId, Guid ocId)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var result_candidate = new List<InsigniaResultSet>();
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// <summary>
|
// <summary>
|
||||||
/// กรองรายชื่อผู้มิสิทธิ์ยื่นขอเหรียญจักรพรรดิมาลา
|
/// กรองรายชื่อผู้มิสิทธิ์ยื่นขอเหรียญจักรพรรดิมาลา
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue