diff --git a/BMA.EHR.Application/Repositories/InsigniaPeriodsRepository.cs b/BMA.EHR.Application/Repositories/InsigniaPeriodsRepository.cs index 8891e777..857885fe 100644 --- a/BMA.EHR.Application/Repositories/InsigniaPeriodsRepository.cs +++ b/BMA.EHR.Application/Repositories/InsigniaPeriodsRepository.cs @@ -20,7 +20,7 @@ namespace BMA.EHR.Application.Repositories private readonly IHttpContextAccessor _httpContextAccessor; private readonly MinIOService _documentService; private readonly UserProfileRepository _userProfileRepository; - + private List _insigniaLists = new(); public InsigniaPeriodsRepository(IApplicationDBContext dbContext, @@ -32,6 +32,8 @@ namespace BMA.EHR.Application.Repositories _httpContextAccessor = httpContextAccessor; _documentService = documentService; _userProfileRepository = userProfileRepository; + + _insigniaLists = _dbContext.Set().Include(x => x.InsigniaType).ToList(); } public async Task> FindByNameAsync(string name) @@ -76,8 +78,7 @@ namespace BMA.EHR.Application.Repositories { try { - var insignia = _dbContext.Set() - .Include(x => x.InsigniaType) + var insignia = _insigniaLists .Where(x => x.Name == name) .Select(i => new InsigniaItem { @@ -89,6 +90,19 @@ namespace BMA.EHR.Application.Repositories }) .FirstOrDefault(); + //var insignia = _dbContext.Set() + // .Include(x => x.InsigniaType) + // .Where(x => x.Name == name) + // .Select(i => new InsigniaItem + // { + // Id = i.Id, + // Name = i.Name, + // ShortName = i.ShortName, + // Level = i.InsigniaType.Name, + // LevelId = i.InsigniaType.Id + // }) + // .FirstOrDefault(); + return insignia; } catch @@ -101,8 +115,7 @@ namespace BMA.EHR.Application.Repositories { try { - var insignia = _dbContext.Set() - .Include(x => x.InsigniaType) + var insignia = _insigniaLists .Where(x => x.Id == id) .Select(i => new InsigniaItem { @@ -114,6 +127,19 @@ namespace BMA.EHR.Application.Repositories }) .FirstOrDefault(); + //var insignia = _dbContext.Set() + // .Include(x => x.InsigniaType) + // .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(); + return insignia; } catch @@ -273,18 +299,21 @@ namespace BMA.EHR.Application.Repositories 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!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, + 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 ? null : GetInsigniaById(p.ProfileInsignia!.OrderByDescending(x => x.Year).FirstOrDefault()!.InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.ProfileInsignia!.OrderByDescending(x => x.Year).FirstOrDefault()!.InsigniaId.Value, - Salary = p.ProfileSalary == null ? 0 : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.Amount, + 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 ? null : p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount, - PostionSalaryAmount = p.ProfileSalary == null ? 0 : 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, + PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PositionSalaryAmount, }); @@ -342,18 +371,21 @@ namespace BMA.EHR.Application.Repositories 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!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, + 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 ? null : GetInsigniaById(p.ProfileInsignia!.OrderByDescending(x => x.Year).FirstOrDefault()!.InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.ProfileInsignia!.OrderByDescending(x => x.Year).FirstOrDefault()!.InsigniaId.Value, - Salary = p.ProfileSalary == null ? 0 : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.Amount, + 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 ? null : p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount, - PostionSalaryAmount = p.ProfileSalary == null ? 0 : 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, + 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) @@ -411,18 +443,22 @@ namespace BMA.EHR.Application.Repositories 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!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, + 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 ? null : GetInsigniaById(p.ProfileInsignia!.OrderByDescending(x => x.Year).FirstOrDefault()!.InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.ProfileInsignia!.OrderByDescending(x => x.Year).FirstOrDefault()!.InsigniaId.Value, - Salary = p.ProfileSalary == null ? 0 : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.Amount, + 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 ? null : p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount, - PostionSalaryAmount = p.ProfileSalary == null ? 0 : 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, + + 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) @@ -570,18 +606,21 @@ namespace BMA.EHR.Application.Repositories 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!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, + 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 ? null : GetInsigniaById(p.ProfileInsignia!.OrderByDescending(x => x.Year).FirstOrDefault()!.InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.ProfileInsignia!.OrderByDescending(x => x.Year).FirstOrDefault()!.InsigniaId.Value, - Salary = p.ProfileSalary == null ? 0 : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.Amount, + 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 ? null : p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount, - PostionSalaryAmount = p.ProfileSalary == null ? 0 : 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, + PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PositionSalaryAmount, }); var s1 = ((from p in inst_profile @@ -637,18 +676,22 @@ namespace BMA.EHR.Application.Repositories 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!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, + 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 ? null : GetInsigniaById(p.ProfileInsignia!.OrderByDescending(x => x.Year).FirstOrDefault()!.InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.ProfileInsignia!.OrderByDescending(x => x.Year).FirstOrDefault()!.InsigniaId.Value, - Salary = p.ProfileSalary == null ? 0 : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.Amount, + 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 ? null : p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount, - PostionSalaryAmount = p.ProfileSalary == null ? 0 : 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, + + 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) @@ -705,18 +748,22 @@ namespace BMA.EHR.Application.Repositories 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!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, + 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 ? null : GetInsigniaById(p.ProfileInsignia!.OrderByDescending(x => x.Year).FirstOrDefault()!.InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.ProfileInsignia!.OrderByDescending(x => x.Year).FirstOrDefault()!.InsigniaId.Value, - Salary = p.ProfileSalary == null ? 0 : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.Amount, + 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 ? null : p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount, - PostionSalaryAmount = p.ProfileSalary == null ? 0 : 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, + + 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) @@ -867,18 +914,26 @@ namespace BMA.EHR.Application.Repositories 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!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, + 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 ? null : GetInsigniaById(p.ProfileInsignia!.OrderByDescending(x => x.Year).FirstOrDefault()!.InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.ProfileInsignia!.OrderByDescending(x => x.Year).FirstOrDefault()!.InsigniaId.Value, - Salary = p.ProfileSalary == null ? 0 : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.Amount, + 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 ? null : p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount, - PostionSalaryAmount = p.ProfileSalary == null ? 0 : 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, + + PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PositionSalaryAmount, }); // check วันที่บรรจะต้องน้อยกว่า 29/5/ปี-5 @@ -916,6 +971,8 @@ namespace BMA.EHR.Application.Repositories 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) .OrderByDescending(x => x.Year) .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("เบญจมาภรณ์ช้างเผือก").Id @@ -928,11 +985,19 @@ namespace BMA.EHR.Application.Repositories Rank = p.PosLevel.PosLevelName, GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null ? "" : GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == 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, - SalaryCondition = p.ProfileSalary == null ? null : p.ProfileSalary.Where(x => x.Date <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount, - PosNo = p.PosNo == null ? "" : p.PosNo, + 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) @@ -977,6 +1042,8 @@ namespace BMA.EHR.Application.Repositories 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) .OrderByDescending(x => x.Year) .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("จัตุรถาภรณ์มงกุฎไทย").Id @@ -989,13 +1056,22 @@ namespace BMA.EHR.Application.Repositories Rank = p.PosLevel.PosLevelName, GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null ? "" : GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == 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, - SalaryCondition = p.ProfileSalary == null ? null : p.ProfileSalary.Where(x => x.Date <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount, - PosNo = p.PosNo == null ? "" : p.PosNo, + 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 + 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, @@ -1032,6 +1108,8 @@ namespace BMA.EHR.Application.Repositories 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) .OrderByDescending(x => x.Year) .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("จัตุรถาภรณ์ช้างเผือก").Id @@ -1044,13 +1122,22 @@ namespace BMA.EHR.Application.Repositories Rank = p.PosLevel.PosLevelName, GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null ? "" : GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == 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, - SalaryCondition = p.ProfileSalary == null ? null : p.ProfileSalary.Where(x => x.Date <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount, - PosNo = p.PosNo == null ? "" : p.PosNo, + 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 + 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, @@ -1197,6 +1284,8 @@ namespace BMA.EHR.Application.Repositories 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) .OrderByDescending(x => x.Year) .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ตริตาภรณ์มงกุฎไทย").Id @@ -1209,13 +1298,22 @@ namespace BMA.EHR.Application.Repositories Rank = p.PosLevel.PosLevelName, GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null ? "" : GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == 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, - SalaryCondition = p.ProfileSalary == null ? null : p.ProfileSalary.Where(x => x.Date <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount, - PosNo = p.PosNo == null ? "" : p.PosNo, + 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 + 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, @@ -1256,6 +1354,8 @@ namespace BMA.EHR.Application.Repositories 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) .OrderByDescending(x => x.Year) .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ตริตาภรณ์ช้างเผือก").Id @@ -1268,13 +1368,22 @@ namespace BMA.EHR.Application.Repositories Rank = p.PosLevel.PosLevelName, GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null ? "" : GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == 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, - SalaryCondition = p.ProfileSalary == null ? null : p.ProfileSalary.Where(x => x.Date <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount, - PosNo = p.PosNo == null ? "" : p.PosNo, + 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 + 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, @@ -1282,8 +1391,9 @@ namespace BMA.EHR.Application.Repositories PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "ชำนาญงาน").OrderBy(p => p.Date).FirstOrDefault().Date + 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)) @@ -1382,7 +1492,9 @@ namespace BMA.EHR.Application.Repositories 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) .OrderByDescending(x => x.Year) .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ทวีติยาภรณ์มงกุฎไทย").Id @@ -1395,13 +1507,22 @@ namespace BMA.EHR.Application.Repositories Rank = p.PosLevel.PosLevelName, GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null ? "" : GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == 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, - SalaryCondition = p.ProfileSalary == null ? null : p.ProfileSalary.Where(x => x.Date <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount, - PosNo = p.PosNo == null ? "" : p.PosNo, + 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 + 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, @@ -1409,8 +1530,9 @@ namespace BMA.EHR.Application.Repositories PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "อาวุโส").OrderBy(p => p.Date).FirstOrDefault().Date + 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 @@ -1442,7 +1564,9 @@ namespace BMA.EHR.Application.Repositories 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) .OrderByDescending(x => x.Year) .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id @@ -1455,13 +1579,22 @@ namespace BMA.EHR.Application.Repositories Rank = p.PosLevel.PosLevelName, GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null ? "" : GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == 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, - SalaryCondition = p.ProfileSalary == null ? null : p.ProfileSalary.Where(x => x.Date <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount, - PosNo = p.PosNo == null ? "" : p.PosNo, + 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 + 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, @@ -1469,7 +1602,8 @@ namespace BMA.EHR.Application.Repositories PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null ? null : + 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() @@ -1570,6 +1704,8 @@ namespace BMA.EHR.Application.Repositories 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) .OrderByDescending(x => x.Year) .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id @@ -1582,13 +1718,22 @@ namespace BMA.EHR.Application.Repositories Rank = p.PosLevel.PosLevelName, GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null ? "" : GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == 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, - SalaryCondition = p.ProfileSalary == null ? null : p.ProfileSalary.Where(x => x.Date <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount, - PosNo = p.PosNo == null ? "" : p.PosNo, + 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 + 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, @@ -1596,7 +1741,8 @@ namespace BMA.EHR.Application.Repositories PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null ? null : + 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() @@ -1630,6 +1776,8 @@ namespace BMA.EHR.Application.Repositories 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) .OrderByDescending(x => x.Year) .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id @@ -1642,13 +1790,22 @@ namespace BMA.EHR.Application.Repositories Rank = p.PosLevel.PosLevelName, GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null ? "" : GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == 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, - SalaryCondition = p.ProfileSalary == null ? null : p.ProfileSalary.Where(x => x.Date <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount, - PosNo = p.PosNo == null ? "" : p.PosNo, + 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 + 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, @@ -1656,7 +1813,8 @@ namespace BMA.EHR.Application.Repositories PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null ? null : + 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 : @@ -1694,6 +1852,8 @@ namespace BMA.EHR.Application.Repositories 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) .OrderByDescending(x => x.Year) .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id @@ -1706,13 +1866,22 @@ namespace BMA.EHR.Application.Repositories Rank = p.PosLevel.PosLevelName, GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null ? "" : GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == 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, - SalaryCondition = p.ProfileSalary == null ? null : p.ProfileSalary.Where(x => x.Date <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount, - PosNo = p.PosNo == null ? "" : p.PosNo, + 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 + 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, @@ -1720,7 +1889,8 @@ namespace BMA.EHR.Application.Repositories PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null ? null : + 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 : @@ -1857,13 +2027,22 @@ namespace BMA.EHR.Application.Repositories Rank = p.PosLevel.PosLevelName, GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null ? "" : GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == 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, - SalaryCondition = p.ProfileSalary == null ? null : p.ProfileSalary.Where(x => x.Date <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount, - PosNo = p.PosNo == null ? "" : p.PosNo, + 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 + 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, @@ -1871,7 +2050,8 @@ namespace BMA.EHR.Application.Repositories PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null ? null : + 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 : @@ -1955,6 +2135,8 @@ namespace BMA.EHR.Application.Repositories 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) .OrderByDescending(x => x.Year) .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ตริตาภรณ์ช้างเผือก").Id @@ -1967,13 +2149,22 @@ namespace BMA.EHR.Application.Repositories Rank = p.PosLevel.PosLevelName, GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null ? "" : GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == 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, - SalaryCondition = p.ProfileSalary == null ? null : p.ProfileSalary.Where(x => x.Date <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount, - PosNo = p.PosNo == null ? "" : p.PosNo, + 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 + 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, @@ -1981,8 +2172,9 @@ namespace BMA.EHR.Application.Repositories PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "อาวุโส").OrderBy(p => p.Date).FirstOrDefault().Date, + 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 @@ -2018,6 +2210,8 @@ namespace BMA.EHR.Application.Repositories 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) .OrderByDescending(x => x.Year) .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ทวีติยาภรณ์มงกุฎไทย").Id @@ -2030,13 +2224,22 @@ namespace BMA.EHR.Application.Repositories Rank = p.PosLevel.PosLevelName, GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null ? "" : GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == 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, - SalaryCondition = p.ProfileSalary == null ? null : p.ProfileSalary.Where(x => x.Date <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount, - PosNo = p.PosNo == null ? "" : p.PosNo, + 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 + 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, @@ -2044,8 +2247,9 @@ namespace BMA.EHR.Application.Repositories PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "อาวุโส").OrderBy(p => p.Date).FirstOrDefault().Date, + 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 @@ -2082,6 +2286,8 @@ namespace BMA.EHR.Application.Repositories 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) .OrderByDescending(x => x.Year) .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id @@ -2094,13 +2300,22 @@ namespace BMA.EHR.Application.Repositories Rank = p.PosLevel.PosLevelName, GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null ? "" : GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == 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, - SalaryCondition = p.ProfileSalary == null ? null : p.ProfileSalary.Where(x => x.Date <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount, - PosNo = p.PosNo == null ? "" : p.PosNo, + 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 + 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, @@ -2108,8 +2323,9 @@ namespace BMA.EHR.Application.Repositories PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "อาวุโส").OrderBy(p => p.Date).FirstOrDefault().Date, + 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 @@ -2231,6 +2447,8 @@ namespace BMA.EHR.Application.Repositories 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) .OrderByDescending(x => x.Year) .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id @@ -2243,13 +2461,22 @@ namespace BMA.EHR.Application.Repositories Rank = p.PosLevel.PosLevelName, GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null ? "" : GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == 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, - SalaryCondition = p.ProfileSalary == null ? null : p.ProfileSalary.Where(x => x.Date <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount, - PosNo = p.PosNo == null ? "" : p.PosNo, + 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 + 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, @@ -2257,8 +2484,9 @@ namespace BMA.EHR.Application.Repositories PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "อาวุโส").OrderBy(p => p.Date).FirstOrDefault().Date, + 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 @@ -2294,6 +2522,8 @@ namespace BMA.EHR.Application.Repositories 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) .OrderByDescending(x => x.Year) .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id @@ -2306,13 +2536,22 @@ namespace BMA.EHR.Application.Repositories Rank = p.PosLevel.PosLevelName, GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null ? "" : GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == 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, - SalaryCondition = p.ProfileSalary == null ? null : p.ProfileSalary.Where(x => x.Date <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount, - PosNo = p.PosNo == null ? "" : p.PosNo, + 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 + 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, @@ -2320,8 +2559,9 @@ namespace BMA.EHR.Application.Repositories PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "อาวุโส").OrderBy(p => p.Date).FirstOrDefault().Date, + 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 @@ -2431,6 +2671,8 @@ namespace BMA.EHR.Application.Repositories 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) .OrderByDescending(x => x.Year) .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id @@ -2443,13 +2685,22 @@ namespace BMA.EHR.Application.Repositories Rank = p.PosLevel.PosLevelName, GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null ? "" : GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == 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, - SalaryCondition = p.ProfileSalary == null ? null : p.ProfileSalary.Where(x => x.Date <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount, - PosNo = p.PosNo == null ? "" : p.PosNo, + 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 + 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, @@ -2457,8 +2708,9 @@ namespace BMA.EHR.Application.Repositories PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "อาวุโส").OrderBy(p => p.Date).FirstOrDefault().Date, + 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 @@ -2495,6 +2747,8 @@ namespace BMA.EHR.Application.Repositories 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) .OrderByDescending(x => x.Year) .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id @@ -2507,13 +2761,22 @@ namespace BMA.EHR.Application.Repositories Rank = p.PosLevel.PosLevelName, GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null ? "" : GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == 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, - SalaryCondition = p.ProfileSalary == null ? null : p.ProfileSalary.Where(x => x.Date <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount, - PosNo = p.PosNo == null ? "" : p.PosNo, + 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 + 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, @@ -2521,8 +2784,9 @@ namespace BMA.EHR.Application.Repositories PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "อาวุโส").OrderBy(p => p.Date).FirstOrDefault().Date, + 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 @@ -2560,6 +2824,8 @@ namespace BMA.EHR.Application.Repositories 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) .OrderByDescending(x => x.Year) .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id @@ -2572,13 +2838,22 @@ namespace BMA.EHR.Application.Repositories Rank = p.PosLevel.PosLevelName, GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null ? "" : GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == 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, - SalaryCondition = p.ProfileSalary == null ? null : p.ProfileSalary.Where(x => x.Date <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount, - PosNo = p.PosNo == null ? "" : p.PosNo, + 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 + 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, @@ -2586,8 +2861,9 @@ namespace BMA.EHR.Application.Repositories PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "อาวุโส").OrderBy(p => p.Date).FirstOrDefault().Date, + 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 @@ -2709,6 +2985,8 @@ namespace BMA.EHR.Application.Repositories 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) .OrderByDescending(x => x.Year) .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id @@ -2721,14 +2999,23 @@ namespace BMA.EHR.Application.Repositories Rank = p.PosLevel.PosLevelName, GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null ? "" : GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == 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 ? null : p.ProfileSalary.Where(x => x.Date <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount, - PosNo = p.PosNo == null ? "" : p.PosNo, + 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 = IsHigherLevel(GetInsigniaById(p.ProfileInsignia + 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, @@ -2736,8 +3023,9 @@ namespace BMA.EHR.Application.Repositories PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "อาวุโส").OrderBy(p => p.Date).FirstOrDefault().Date, + 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 @@ -2779,6 +3067,8 @@ namespace BMA.EHR.Application.Repositories 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) .OrderByDescending(x => x.Year) .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("มหาวชิรมงกุฎ").Id @@ -2791,14 +3081,23 @@ namespace BMA.EHR.Application.Repositories Rank = p.PosLevel.PosLevelName, GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null ? "" : GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == null ? Guid.Empty : GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Id, + 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 ? null : p.ProfileSalary.Where(x => x.Date <= new DateTime(period.Year, 4, 29)).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.PosNo == null ? "" : p.PosNo, Gender = p.Gender == null ? null : p.Gender, - IsHigherLevel = IsHigherLevel(GetInsigniaById(p.ProfileInsignia + 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, @@ -2806,8 +3105,9 @@ namespace BMA.EHR.Application.Repositories PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "อาวุโส").OrderBy(p => p.Date).FirstOrDefault().Date, + 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 @@ -2851,6 +3151,8 @@ namespace BMA.EHR.Application.Repositories 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) .OrderByDescending(x => x.Year) .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("มหาปรมาภรณ์ช้างเผือก").Id @@ -2863,14 +3165,23 @@ namespace BMA.EHR.Application.Repositories Rank = p.PosLevel.PosLevelName, GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null ? "" : GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == 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 ? null : p.ProfileSalary.Where(x => x.Date <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount, - PosNo = p.PosNo == null ? "" : p.PosNo, + 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 = IsHigherLevel(GetInsigniaById(p.ProfileInsignia + 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, @@ -2878,8 +3189,9 @@ namespace BMA.EHR.Application.Repositories PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "อาวุโส").OrderBy(p => p.Date).FirstOrDefault().Date, + 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 @@ -3006,6 +3318,8 @@ namespace BMA.EHR.Application.Repositories 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) .OrderByDescending(x => x.Year) .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id @@ -3018,14 +3332,23 @@ namespace BMA.EHR.Application.Repositories Rank = p.PosLevel.PosLevelName, GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null ? "" : GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == 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 ? null : p.ProfileSalary.Where(x => x.Date <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount, - PosNo = p.PosNo == null ? "" : p.PosNo, + 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 = IsHigherLevel(GetInsigniaById(p.ProfileInsignia + 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, @@ -3033,8 +3356,9 @@ namespace BMA.EHR.Application.Repositories PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "อาวุโส").OrderBy(p => p.Date).FirstOrDefault().Date, + 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 @@ -3076,6 +3400,8 @@ namespace BMA.EHR.Application.Repositories 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) .OrderByDescending(x => x.Year) .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("มหาวชิรมงกุฎ").Id @@ -3088,14 +3414,23 @@ namespace BMA.EHR.Application.Repositories Rank = p.PosLevel.PosLevelName, GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null ? "" : GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == 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 ? null : p.ProfileSalary.Where(x => x.Date <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount, - PosNo = p.PosNo == null ? "" : p.PosNo, + 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 = IsHigherLevel(GetInsigniaById(p.ProfileInsignia + 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, @@ -3103,7 +3438,8 @@ namespace BMA.EHR.Application.Repositories PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null ? null : + 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 : @@ -3147,6 +3483,8 @@ namespace BMA.EHR.Application.Repositories 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) .OrderByDescending(x => x.Year) .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("มหาปรมาภรณ์ช้างเผือก").Id @@ -3159,14 +3497,23 @@ namespace BMA.EHR.Application.Repositories Rank = p.PosLevel.PosLevelName, GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null ? "" : GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == 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 ? null : p.ProfileSalary.Where(x => x.Date <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount, - PosNo = p.PosNo == null ? "" : p.PosNo, + 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 = IsHigherLevel(GetInsigniaById(p.ProfileInsignia + 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, @@ -3174,8 +3521,9 @@ namespace BMA.EHR.Application.Repositories PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "อาวุโส").OrderBy(p => p.Date).FirstOrDefault().Date, + 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 @@ -3299,6 +3647,8 @@ namespace BMA.EHR.Application.Repositories 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) .OrderByDescending(x => x.Year) .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ทวีติยาภรณ์ช้างเผือก").Id @@ -3311,14 +3661,23 @@ namespace BMA.EHR.Application.Repositories Rank = p.PosLevel.PosLevelName, GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null ? "" : GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == 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 ? null : p.ProfileSalary.Where(x => x.Date <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount, + 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 = IsHigherLevel(GetInsigniaById(p.ProfileInsignia + 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, @@ -3326,8 +3685,9 @@ namespace BMA.EHR.Application.Repositories PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "อาวุโส").OrderBy(p => p.Date).FirstOrDefault().Date, + 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 @@ -3363,6 +3723,8 @@ namespace BMA.EHR.Application.Repositories 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) .OrderByDescending(x => x.Year) .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id @@ -3375,14 +3737,23 @@ namespace BMA.EHR.Application.Repositories Rank = p.PosLevel.PosLevelName, GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null ? "" : GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == 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 ? null : p.ProfileSalary.Where(x => x.Date <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount, - PosNo = p.PosNo == null ? "" : p.PosNo, + 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 = IsHigherLevel(GetInsigniaById(p.ProfileInsignia + 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, @@ -3390,8 +3761,9 @@ namespace BMA.EHR.Application.Repositories PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "อาวุโส").OrderBy(p => p.Date).FirstOrDefault().Date, + 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 @@ -3496,6 +3868,8 @@ namespace BMA.EHR.Application.Repositories 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) .OrderByDescending(x => x.Year) .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id @@ -3508,14 +3882,23 @@ namespace BMA.EHR.Application.Repositories Rank = p.PosLevel.PosLevelName, GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null ? "" : GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == 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 ? null : p.ProfileSalary.Where(x => x.Date <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount, - PosNo = p.PosNo == null ? "" : p.PosNo, + 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 = IsHigherLevel(GetInsigniaById(p.ProfileInsignia + 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, @@ -3523,8 +3906,9 @@ namespace BMA.EHR.Application.Repositories PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "อาวุโส").OrderBy(p => p.Date).FirstOrDefault().Date, + 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 @@ -3561,6 +3945,8 @@ namespace BMA.EHR.Application.Repositories 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) .OrderByDescending(x => x.Year) .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id @@ -3573,14 +3959,23 @@ namespace BMA.EHR.Application.Repositories Rank = p.PosLevel.PosLevelName, GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null ? "" : GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == 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 ? null : p.ProfileSalary.Where(x => x.Date <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount, - PosNo = p.PosNo == null ? "" : p.PosNo, + 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 = IsHigherLevel(GetInsigniaById(p.ProfileInsignia + 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, @@ -3588,8 +3983,9 @@ namespace BMA.EHR.Application.Repositories PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "อาวุโส").OrderBy(p => p.Date).FirstOrDefault().Date, + 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 @@ -3627,6 +4023,8 @@ namespace BMA.EHR.Application.Repositories 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) .OrderByDescending(x => x.Year) .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("มหาวชิรมงกุฎ").Id @@ -3639,14 +4037,23 @@ namespace BMA.EHR.Application.Repositories Rank = p.PosLevel.PosLevelName, GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null ? "" : GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == 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 ? null : p.ProfileSalary.Where(x => x.Date <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount, - PosNo = p.PosNo == null ? "" : p.PosNo, + 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 = IsHigherLevel(GetInsigniaById(p.ProfileInsignia + 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, @@ -3654,8 +4061,9 @@ namespace BMA.EHR.Application.Repositories PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "อาวุโส").OrderBy(p => p.Date).FirstOrDefault().Date, + 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 @@ -3776,6 +4184,8 @@ namespace BMA.EHR.Application.Repositories 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) .OrderByDescending(x => x.Year) .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ประถมาภรณ์มงกุฎไทย").Id @@ -3788,14 +4198,23 @@ namespace BMA.EHR.Application.Repositories Rank = p.PosLevel.PosLevelName, GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null ? "" : GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == 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 ? null : p.ProfileSalary.Where(x => x.Date <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount, - PosNo = p.PosNo == null ? "" : p.PosNo, + 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 = IsHigherLevel(GetInsigniaById(p.ProfileInsignia + 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, @@ -3803,8 +4222,9 @@ namespace BMA.EHR.Application.Repositories PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "อาวุโส").OrderBy(p => p.Date).FirstOrDefault().Date, + 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 @@ -3841,6 +4261,8 @@ namespace BMA.EHR.Application.Repositories 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) .OrderByDescending(x => x.Year) .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id @@ -3853,14 +4275,23 @@ namespace BMA.EHR.Application.Repositories Rank = p.PosLevel.PosLevelName, GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null ? "" : GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == 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 ? null : p.ProfileSalary.Where(x => x.Date <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount, - PosNo = p.PosNo == null ? "" : p.PosNo, + 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 = IsHigherLevel(GetInsigniaById(p.ProfileInsignia + 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, @@ -3868,8 +4299,9 @@ namespace BMA.EHR.Application.Repositories PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "อาวุโส").OrderBy(p => p.Date).FirstOrDefault().Date, + 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 @@ -3906,6 +4338,8 @@ namespace BMA.EHR.Application.Repositories 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) .OrderByDescending(x => x.Year) .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("มหาวชิรมงกุฎ").Id @@ -3918,14 +4352,23 @@ namespace BMA.EHR.Application.Repositories Rank = p.PosLevel.PosLevelName, GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null ? "" : GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == 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 ? null : p.ProfileSalary.Where(x => x.Date <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount, - PosNo = p.PosNo == null ? "" : p.PosNo, + 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 = IsHigherLevel(GetInsigniaById(p.ProfileInsignia + 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, @@ -3933,8 +4376,9 @@ namespace BMA.EHR.Application.Repositories PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "อาวุโส").OrderBy(p => p.Date).FirstOrDefault().Date, + 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 @@ -4024,6 +4468,8 @@ namespace BMA.EHR.Application.Repositories 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) .OrderByDescending(x => x.Year) .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("ประถมาภรณ์ช้างเผือก").Id @@ -4036,14 +4482,23 @@ namespace BMA.EHR.Application.Repositories Rank = p.PosLevel.PosLevelName, GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null ? "" : GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == 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 ? null : p.ProfileSalary.Where(x => x.Date <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount, - PosNo = p.PosNo == null ? "" : p.PosNo, + 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 = IsHigherLevel(GetInsigniaById(p.ProfileInsignia + 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, @@ -4051,8 +4506,9 @@ namespace BMA.EHR.Application.Repositories PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "อาวุโส").OrderBy(p => p.Date).FirstOrDefault().Date, + 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 @@ -4094,6 +4550,8 @@ namespace BMA.EHR.Application.Repositories 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) .OrderByDescending(x => x.Year) .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("มหาวชิรมงกุฎ").Id @@ -4106,14 +4564,23 @@ namespace BMA.EHR.Application.Repositories Rank = p.PosLevel.PosLevelName, GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null ? "" : GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == 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 ? null : p.ProfileSalary.Where(x => x.Date <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount, - PosNo = p.PosNo == null ? "" : p.PosNo, + 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 = IsHigherLevel(GetInsigniaById(p.ProfileInsignia + 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, @@ -4121,8 +4588,9 @@ namespace BMA.EHR.Application.Repositories PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "อาวุโส").OrderBy(p => p.Date).FirstOrDefault().Date, + 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 @@ -4164,6 +4632,8 @@ namespace BMA.EHR.Application.Repositories 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) .OrderByDescending(x => x.Year) .FirstOrDefault().InsigniaId.Value != GetInsigniaByName("มหาปรมาภรณ์ช้างเผือก").Id @@ -4176,14 +4646,23 @@ namespace BMA.EHR.Application.Repositories Rank = p.PosLevel.PosLevelName, GovAge = p.DateAppoint.Value.CalculateGovAgeStr(0, 0), ProfileDateAppoint = p.DateAppoint.Value, - LastInsignia = p.ProfileInsignia == null ? "" : GetInsigniaById(p.ProfileInsignia.Where(x => x.InsigniaId.Value != GetInsigniaByName("เหรียญจักรพรรดิมาลา").Id).OrderByDescending(x => x.Year).FirstOrDefault().InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == 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 ? null : p.ProfileSalary.Where(x => x.Date <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount, - PosNo = p.PosNo == null ? "" : p.PosNo, + 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 = IsHigherLevel(GetInsigniaById(p.ProfileInsignia + 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, @@ -4191,8 +4670,9 @@ namespace BMA.EHR.Application.Repositories PositionLevel = p.PosLevel == null ? "" : p.PosLevel.PosLevelName, PositionType = p.PosType == null ? "" : p.PosType.PosTypeName, - FirstPositonLevelDate = p.ProfileSalary == null ? null : - p.ProfileSalary.Where(x => x.PositionLevel == "อาวุโส").OrderBy(p => p.Date).FirstOrDefault().Date, + 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 @@ -4805,8 +5285,11 @@ namespace BMA.EHR.Application.Repositories { try { + var result_candidate = new List(); + //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); @@ -5021,7 +5504,7 @@ namespace BMA.EHR.Application.Repositories // Salary = p.Salaries.Count() == 0 ? null : p.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, // }); - var inst_profile = allProfilesByRoot + var inst_profile = allProfilesByRoot.Where(x => x.DateAppoint != null) .Select(p => new { ProfileId = p.Id, @@ -5031,18 +5514,26 @@ namespace BMA.EHR.Application.Repositories 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!.OrderByDescending(x => x.Order).FirstOrDefault()!.PosNo, + 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 ? null : GetInsigniaById(p.ProfileInsignia!.OrderByDescending(x => x.Year).FirstOrDefault()!.InsigniaId.Value).Name, - LastInsigniaId = p.ProfileInsignia == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.ProfileInsignia!.OrderByDescending(x => x.Year).FirstOrDefault()!.InsigniaId.Value, - Salary = p.ProfileSalary == null ? 0 : p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.Amount, + 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 ? null : p.ProfileSalary.Where(x => x.Date.Value <= new DateTime(period.Year, 4, 29)).OrderByDescending(x => x.Order).FirstOrDefault().Amount, - PostionSalaryAmount = p.ProfileSalary == null ? 0 : 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, + PostionSalaryAmount = p.ProfileSalary == null || p.ProfileSalary.Count == 0 ? 0 : + p.ProfileSalary!.OrderByDescending(x => x.Order).FirstOrDefault()!.PositionSalaryAmount, }); // check วันที่บรรจะต้องมากกว่า 25 ปี @@ -5179,10 +5670,9 @@ namespace BMA.EHR.Application.Repositories .Include(x => x.Document) //.Include(x => x.Organization) //.ThenInclude(x => x.OrganizationOrganization) - .Where(x => x.OrganizationId != null) .FirstOrDefaultAsync(x => x.Period.Id == period.Id && x.OrganizationId == ocId); - var oc = _userProfileRepository.GetOc(request.OrganizationId, 0, AccessToken); + var oc = _userProfileRepository.GetOc(ocId, 0, AccessToken); return new InsigniaResults { @@ -5278,46 +5768,20 @@ namespace BMA.EHR.Application.Repositories var id = await GetRequestId(period, ocId); if (id != null) { - var result = (_dbContext.Set() - .Include(x => x.Request) - .Include(x => x.RequestInsignia) - .ThenInclude(x => x.InsigniaType) - //.Include(x => x.Profile) - //.ThenInclude(x => x.Salaries) - //.Include(x => x.Profile) - //.ThenInclude(x => x.Position) - //.Include(x => x.Profile) - //.ThenInclude(x => x.PositionEmployeePosition) - //.Include(x => x.Profile) - //.ThenInclude(x => x.PosNo) - //.Include(x => x.Profile) - //.ThenInclude(x => x.PositionLevel) - //.Include(x => x.Profile) - //.ThenInclude(x => x.PositionType) - //.Include(x => x.Profile) - //.ThenInclude(x => x.Prefix) - ////.Include(x => x.Profile) - ////.ThenInclude(x => x.OrganizationOrganization) - //.Include(x => x.Profile) - //.ThenInclude(x => x.PositionLevel) - //.Include(x => x.Profile) - //.ThenInclude(x => x.Insignias) - //.ThenInclude(x => x.Insignia) - .Where(h => status.Trim().ToUpper() == "ALL" ? h.Status != null : h.Status == status.Trim().ToUpper()) - .Where(h => h.Request.Id == id) - .ToList() - .Select(h => new InsigniaRequestItem + var raw_result = _dbContext.Set() + .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(); + + var pre_result = raw_result + .Select(h => new { Id = h.Id, - CitizenId = _userProfileRepository.GetOfficerProfileById(h.ProfileId, AccessToken).CitizenId, - ProfileId = _userProfileRepository.GetOfficerProfileById(h.ProfileId, AccessToken).Id, - ProfileType = _userProfileRepository.GetOfficerProfileById(h.ProfileId, AccessToken).ProfileType, - FullName = $"{_userProfileRepository.GetOfficerProfileById(h.ProfileId, AccessToken).Prefix}{_userProfileRepository.GetOfficerProfileById(h.ProfileId, AccessToken).FirstName} {_userProfileRepository.GetOfficerProfileById(h.ProfileId, AccessToken).LastName}", - Position = _userProfileRepository.GetOfficerProfileById(h.ProfileId, AccessToken).Position, - PosNo = _userProfileRepository.GetOfficerProfileById(h.ProfileId, AccessToken).ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().PosNo, - Rank = _userProfileRepository.GetOfficerProfileById(h.ProfileId, AccessToken).ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().PositionLevel, - Salary = _userProfileRepository.GetOfficerProfileById(h.ProfileId, AccessToken).ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount.ToString(), - LastInsignia = GetInsigniaById(_userProfileRepository.GetOfficerProfileById(h.ProfileId, AccessToken).ProfileInsignia.OrderByDescending(x => x.Year).FirstOrDefault().Id.Value).Name, + Profile = _userProfileRepository.GetOfficerProfileById(h.ProfileId, AccessToken), RequestInsignia = h.RequestInsignia.Name, RequestInsigniaShortName = h.RequestInsignia.ShortName, Level = h.RequestInsignia.InsigniaType.Name, @@ -5330,7 +5794,40 @@ namespace BMA.EHR.Application.Repositories MarkLeave = h.MarkLeave, MarkRate = h.MarkRate, // Docs = GetDocFile(h.Profile.Id), - MatchingConditions = h.MatchingConditions == null ? null : JsonConvert.DeserializeObject>(h.MatchingConditions) + 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 = 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.Profile.ProfileSalary == null || h.Profile.ProfileSalary.Count == 0 ? "0" : + h.Profile.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount.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; diff --git a/BMA.EHR.Application/Repositories/UserProfileRepository.cs b/BMA.EHR.Application/Repositories/UserProfileRepository.cs index e4a73fb9..ea8bae3a 100644 --- a/BMA.EHR.Application/Repositories/UserProfileRepository.cs +++ b/BMA.EHR.Application/Repositories/UserProfileRepository.cs @@ -1,4 +1,5 @@ using BMA.EHR.Application.Common.Interfaces; +using BMA.EHR.Application.Responses.Insignias; using BMA.EHR.Application.Responses.Organizations; using BMA.EHR.Application.Responses.Profiles; using BMA.EHR.Domain.Models.HR; @@ -533,6 +534,25 @@ namespace BMA.EHR.Application.Repositories } } + + public async Task PostProfileInsigniaAsync(PostProfileInsigniaDto body, string? accessToken) + { + try + { + var apiPath = $"{_configuration["API"]}/org/profile/insignia"; + + var profiles = new List(); + + var apiResult = await PostExternalAPIBooleanAsync(apiPath, accessToken ?? "", body); + + } + catch + { + throw; + } + + } + #endregion } } diff --git a/BMA.EHR.Application/Requests/SaveToProfileRequest.cs b/BMA.EHR.Application/Requests/SaveToProfileRequest.cs index 98438ca0..8343bc1c 100644 --- a/BMA.EHR.Application/Requests/SaveToProfileRequest.cs +++ b/BMA.EHR.Application/Requests/SaveToProfileRequest.cs @@ -22,7 +22,7 @@ namespace BMA.EHR.Application.Requests public string InsigniaName { get; set; } public string InsigniaPage { get; set; } public string InsigniaNo { get; set; } - public int? Kp7InsigniaId { get; set; } + public Guid Kp7InsigniaId { get; set; } } public class DocReceive { diff --git a/BMA.EHR.Application/Responses/Insignias/PostProfileInsigniaDto.cs b/BMA.EHR.Application/Responses/Insignias/PostProfileInsigniaDto.cs new file mode 100644 index 00000000..903976f7 --- /dev/null +++ b/BMA.EHR.Application/Responses/Insignias/PostProfileInsigniaDto.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace BMA.EHR.Application.Responses.Insignias +{ + public class PostProfileInsigniaDto + { + public Guid ProfileId { get; set; } + + public int Year { get; set; } = 0; + + public string No { get; set; } = string.Empty; + + public string Volume { get; set; } = string.Empty; + + public string Section { get; set; } = string.Empty; + + public string Page { get; set; } = string.Empty; + + public DateTime ReceiveDate { get; set; } = DateTime.MinValue; + + public Guid InsigniaId { get; set; } + + public DateTime DateAnnounce { get; set; } = DateTime.MinValue; + + public string Issue { get; set; } = string.Empty; + + public string VolumeNo { get; set; } = string.Empty; + + public DateTime? RefCommandDate { get; set; } + + public string RefCommandNo { get; set; } = string.Empty; + + public string Note { get; set; } = string.Empty; + } +} diff --git a/BMA.EHR.Insignia.Service/Controllers/InsigniaReceiveController.cs b/BMA.EHR.Insignia.Service/Controllers/InsigniaReceiveController.cs index dbe8338b..f9993b3d 100644 --- a/BMA.EHR.Insignia.Service/Controllers/InsigniaReceiveController.cs +++ b/BMA.EHR.Insignia.Service/Controllers/InsigniaReceiveController.cs @@ -2,6 +2,7 @@ using BMA.EHR.Application.Repositories; using BMA.EHR.Application.Repositories.MessageQueue; using BMA.EHR.Application.Requests; +using BMA.EHR.Application.Responses.Insignias; using BMA.EHR.Domain.Common; using BMA.EHR.Domain.Models.Insignias; using BMA.EHR.Domain.Shared; @@ -26,19 +27,25 @@ namespace BMA.EHR.Insignia.Service.Controllers private readonly InsigniaPeriodsRepository _repository; private readonly NotificationRepository _repositoryNoti; + private readonly UserProfileRepository _userProfileRepository; + public InsigniaReceiveController(ApplicationDBContext context, MinIOService documentService, InsigniaPeriodsRepository repository, NotificationRepository repositoryNoti, - IHttpContextAccessor httpContextAccessor) + IHttpContextAccessor httpContextAccessor, + UserProfileRepository userProfileRepository) { _context = context; _documentService = documentService; _repository = repository; _repositoryNoti = repositoryNoti; _httpContextAccessor = httpContextAccessor; + _userProfileRepository = userProfileRepository; } + private string? AccessToken => _httpContextAccessor?.HttpContext?.Request.Headers["Authorization"]; + [HttpGet("{type}/{ocId:length(36)}")] public async Task> GetInsigniaList(string type, Guid id, Guid ocId) { @@ -151,6 +158,28 @@ namespace BMA.EHR.Insignia.Service.Controllers if (items.Profile.Count() != 0) { + foreach(var p in items.Profile) + { + await _userProfileRepository.PostProfileInsigniaAsync(new PostProfileInsigniaDto + { + ProfileId = Guid.Parse(p.FkProfileId), + Year = item.InsigniaDateannounce.Value.Year, + No = p.InsigniaNo, + Volume = item.InsigniaVolume, + Section = item.InsigniaSection, + Page = p.InsigniaPage, + ReceiveDate = item.InsigniaDatereceive.Value, + InsigniaId = p.Kp7InsigniaId, + DateAnnounce = item.InsigniaDateannounce.Value, + Issue = item.InsigniaIssue, + VolumeNo = item.InsigniaVolumeno.Value.ToString(), + + + }, AccessToken); + } + + + // foreach (var i in items.Profile) // { // var profile = _context.Profiles.AsQueryable() @@ -208,7 +237,7 @@ namespace BMA.EHR.Insignia.Service.Controllers // return NotFound("Profile not found!!!"); // } } - _context.SaveChanges(); + //_context.SaveChanges(); return Success(); } diff --git a/BMA.EHR.Insignia.Service/Controllers/InsigniaRequestController.cs b/BMA.EHR.Insignia.Service/Controllers/InsigniaRequestController.cs index b4dad631..a4b632d2 100644 --- a/BMA.EHR.Insignia.Service/Controllers/InsigniaRequestController.cs +++ b/BMA.EHR.Insignia.Service/Controllers/InsigniaRequestController.cs @@ -422,10 +422,12 @@ namespace BMA.EHR.Insignia.Service.Controllers var result = await _repository.GetInsigniaRequest(insigniaPeriodId, ocId); if (result != null) { - // Guid period = result.PeriodId; - // var periodName = result.Name; - // string requestStatus = result.RequestStatus; - // string requestNote = result.RequestNote; + Guid period = result.PeriodId; + var periodName = result.Name; + string requestStatus = result.RequestStatus; + string requestNote = result.RequestNote; + + var resend = new InsigniaResults { PeriodId = result.PeriodId, @@ -444,14 +446,16 @@ namespace BMA.EHR.Insignia.Service.Controllers return Success(resend); if (RoleInsignia2 == true && (result.RequestStatus == "st1" || result.RequestStatus == "st2")) return Success(resend); - // var candidate = await _repository.GetInsigniaCandidateBKK(period, ocId); - // // ตรวจสอบว่ารายการอยู่ใน table insignia_request_new - // if (requestStatus == null) - // { - // // บันทึกรายชื่อ - // await _repository.InsertCandidate(period, ocId, candidate); - // } + // Jack Remark Remove เพื่อให้เรียกขข้อมูลออกมาเร็สวขึ้น + //var candidate = await _repository.GetInsigniaCandidateBKK(period, ocId); + + //// ตรวจสอบว่ารายการอยู่ใน table insignia_request_new + //if (requestStatus == null) + //{ + // // บันทึกรายชื่อ + // await _repository.InsertCandidate(period, ocId, candidate); + //} if (role.Trim().ToUpper() == "OFFICER") { resend.Items = await _repository.InsigniaHasProfile(result.PeriodId, ocId, status); @@ -459,132 +463,136 @@ namespace BMA.EHR.Insignia.Service.Controllers } 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.PositionType.Name}/{irp.Profile.PositionLevel.Name}", - // instituteName = "", - // instituteId = -1, - // // divisionName = irp.Profile.OrganizationOrganization.Name, - // // divisionId = irp.Profile.OrganizationOrganization.Id, - // lastInsigniaName = "", - // requestInsigniaLevel = irp.RequestInsignia.InsigniaType.Name, - // requestInsigniaName = irp.RequestInsignia.Name, - // requestQua = irp.QualificationStatus, - // requestDoc = irp.DocumentStatus, - // requestNote = irp.Note, - // requestSalary = irp.Salary, - // matchingConditions = JsonConvert.DeserializeObject>(irp.MatchingConditions) - // }) - // .Where(x => x.isApprove) - // .OrderBy(y => y.profileId) - // .ToList() - // }) - // .ToList() - // .FirstOrDefault(); + var passData = _context.InsigniaRequests.AsQueryable() + //.Include(x => x.Organization) + .Include(x => x.RequestProfiles) + .Where(x => x.OrganizationId == 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.ProfileId, + prefix = _userProfileRepository.GetOfficerProfileById(irp.ProfileId, AccessToken).Prefix, //irp.Profile.Prefix, + firstname = _userProfileRepository.GetOfficerProfileById(irp.ProfileId, AccessToken).FirstName, //irp.Profile.FirstName, + lastname = _userProfileRepository.GetOfficerProfileById(irp.ProfileId, AccessToken).LastName, //irp.Profile.LastName, + posno = _userProfileRepository.GetOfficerProfileById(irp.ProfileId, AccessToken).ProfileSalary.Count == 0 || + _userProfileRepository.GetOfficerProfileById(irp.ProfileId, AccessToken).ProfileSalary == null ? "" : + _userProfileRepository.GetOfficerProfileById(irp.ProfileId, AccessToken).ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().PosNo,// irp.Profile.PositionNumber.Id, + type = _userProfileRepository.GetOfficerProfileById(irp.ProfileId, AccessToken).ProfileType, //irp.Profile.ProfileType, + position = _userProfileRepository.GetOfficerProfileById(irp.ProfileId, AccessToken).Position, // irp.Profile.Position.Name, + rank = $"{_userProfileRepository.GetOfficerProfileById(irp.ProfileId, AccessToken).PosType.PosTypeName}/{_userProfileRepository.GetOfficerProfileById(irp.ProfileId, AccessToken).PosLevel.PosLevelName}", // $"{irp.Profile.PositionType.Name}/{irp.Profile.PositionLevel.Name}", + instituteName = "", + instituteId = -1, + // divisionName = irp.Profile.OrganizationOrganization.Name, + // divisionId = irp.Profile.OrganizationOrganization.Id, + lastInsigniaName = "", + requestInsigniaLevel = irp.RequestInsignia.InsigniaType.Name, + requestInsigniaName = irp.RequestInsignia.Name, + requestQua = "",// irp.QualificationStatus, + requestDoc = "", //irp.DocumentStatus, + requestNote = "", // irp.Note, + requestSalary = irp.Salary, + matchingConditions = JsonConvert.DeserializeObject>(irp.MatchingConditions) + }) + .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.Name, - // requestInsigniaName = irp.RequestInsignia.Name, - // requestQua = irp.QualificationStatus, - // requestDoc = irp.DocumentStatus, - // requestNote = irp.Note, - // requestSalary = irp.Salary, - // matchingConditions = JsonConvert.DeserializeObject>(irp.MatchingConditions) - // }) - // .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.OrganizationId == 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.ProfileId, + prefix = _userProfileRepository.GetOfficerProfileById(irp.ProfileId, AccessToken).Prefix, //irp.Profile.Prefix, + firstname = _userProfileRepository.GetOfficerProfileById(irp.ProfileId, AccessToken).FirstName, //irp.Profile.FirstName, + lastname = _userProfileRepository.GetOfficerProfileById(irp.ProfileId, AccessToken).LastName, //irp.Profile.LastName, + posno = _userProfileRepository.GetOfficerProfileById(irp.ProfileId, AccessToken).ProfileSalary.Count == 0 || + _userProfileRepository.GetOfficerProfileById(irp.ProfileId, AccessToken).ProfileSalary == null ? "" : + _userProfileRepository.GetOfficerProfileById(irp.ProfileId, AccessToken).ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().PosNo,// irp.Profile.PositionNumber.Id, + type = _userProfileRepository.GetOfficerProfileById(irp.ProfileId, AccessToken).ProfileType, //irp.Profile.ProfileType, + position = _userProfileRepository.GetOfficerProfileById(irp.ProfileId, AccessToken).Position, // irp.Profile.Position.Name, + rank = $"{_userProfileRepository.GetOfficerProfileById(irp.ProfileId, AccessToken).PosType.PosTypeName}/{_userProfileRepository.GetOfficerProfileById(irp.ProfileId, AccessToken).PosLevel.PosLevelName}", // $"{irp.Profile.PositionType.Name}/{irp.Profile.PositionLevel.Name}", + instituteName = "", + instituteId = -1, + // divisionName = irp.Profile.OrganizationOrganization.Name, + // divisionId = irp.Profile.OrganizationOrganization.Id, + lastInsigniaName = "", + requestInsigniaLevel = irp.RequestInsignia.InsigniaType.Name, + requestInsigniaName = irp.RequestInsignia.Name, + requestQua = "", //irp.QualificationStatus, + requestDoc = "", //irp.DocumentStatus, + requestNote = "", //irp.Note, + requestSalary = irp.Salary, + matchingConditions = JsonConvert.DeserializeObject>(irp.MatchingConditions) + }) + .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(); + 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 }); - return Success(); + return Success(new { passData = passData, failData = failData, period = period_data }); + //return Success(); } // select data to display } @@ -602,67 +610,84 @@ namespace BMA.EHR.Insignia.Service.Controllers /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpGet("{insigniaPeriodId:length(36)}")] - public async Task> UpdateInsignaiRequestBkk(Guid insigniaPeriodId) + public async Task> UpdateInsigniaRequestBkk(Guid insigniaPeriodId) { - //var organizationType = await _context.OrganizationTypes.Where(x => x.Name == "หน่วยงาน").FirstOrDefaultAsync(); - //if (organizationType == null) - // return Error(GlobalMessages.OrganizationNotFound); - //var organizations = await _context.Organizations.Where(x => x.OrganizationType == organizationType).ToListAsync(); - - var organizations = await _userProfileRepository.GetActiveRootAsync(AccessToken); - - foreach (var organization in organizations) + // jack add เพื่อให้ทำการรันแค่เขตพระนคร + // TODO : ต้องมาเอาบรรทัดนี้ออกในภายหลัง + var ocId = Guid.Parse("e8493cd1-d371-402e-add6-566e68d5d1b3"); + var result = await _repository.GetInsigniaRequest(insigniaPeriodId, ocId); + if (result != null) { - if (organization == null) - 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, ocId); + // ตรวจสอบว่ารายการอยู่ใน table insignia_request_new + if (requestStatus == 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); - } + // บันทึกรายชื่อ + await _repository.InsertCandidate(period, ocId, candidate); } } + + // TODO: original code use this in production + + //var organizations = await _userProfileRepository.GetActiveRootAsync(AccessToken); + + //foreach (var organization in organizations) + //{ + // if (organization == null) + // 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); + // } + // } + //} return Success(); } #endregion - // #region " บันทึกหมายเหตุ " + #region " บันทึกหมายเหตุ " - // [HttpPut("note/{profileId}")] - // public async Task> SaveNote(Guid profileId, SaveRequsetNote items) - // { - // var id = await _repository.GetRequestId(items.PeriodId, items.OcId); - // var note = _context.InsigniaRequestProfiles.AsQueryable() - // .Where(d => d.Profile.Id == profileId && d.Request.Id == id).FirstOrDefault(); - // if (note != null) - // note.Note = items.Note; - // _context.SaveChanges(); - // return Success(); - // } + [HttpPut("note/{profileId}")] + public async Task> SaveNote(Guid profileId, SaveRequsetNote items) + { + var id = await _repository.GetRequestId(items.PeriodId, items.OcId); + var note = _context.InsigniaRequestProfiles.AsQueryable() + .Where(d => d.ProfileId == profileId && d.Request.Id == id).FirstOrDefault(); + //if (note != null) + // note.Note = items.Note; + _context.SaveChanges(); + return Success(); + } - // #endregion + #endregion - // #region " บันทึกรายชื่อครูในการขอยื่นเครื่องราชฯ เเต่ยังไม่ส่งไปยัง ผอ.โรงเรียน " + #region " บันทึกรายชื่อครูในการขอยื่นเครื่องราชฯ เเต่ยังไม่ส่งไปยัง ผอ.โรงเรียน " - // [HttpPut("approve/{ocId:length(36)}")] - // public async Task> SaveRequestList(Guid id, Guid ocId, InsigniaApproveRequest items) - // { - // var result = await _repository.GetInsigniaRequest(id, ocId); - // if (result != null) - // await _repository.SaveAprove(result.PeriodId, ocId, items); - // return Success(); - // } + [HttpPut("approve/{ocId:length(36)}")] + public async Task> SaveRequestList(Guid id, Guid ocId, InsigniaApproveRequest items) + { + var result = await _repository.GetInsigniaRequest(id, ocId); + if (result != null) + await _repository.SaveAprove(result.PeriodId, ocId); + return Success(); + } - // #endregion + #endregion /// /// เปลี่ยน status เป็น st3 การเจ้าหน้าที่อนุมัติ " @@ -845,48 +870,49 @@ namespace BMA.EHR.Insignia.Service.Controllers // #endregion - // #region " เปลี่ยน status สำหรับ ผอ.สำนัก " + #region " เปลี่ยน status สำหรับ ผอ.สำนัก " - // [HttpPost("status/director/approve/{ocId:length(36)}")] - // public async Task> ChangeStatusToSt5p(Guid id, Guid ocId) - // { - // var result = await _repository.GetInsigniaRequest(id, ocId); - // if (result == null) - // return Error(GlobalMessages.InsigniaRequestNotFound); - // var requestId = await _repository.GetRequestId(result.PeriodId, ocId); - // if (requestId == null) - // return Error(GlobalMessages.InsigniaRequestNotFound); - // var requestNew = await _context.InsigniaRequests.FirstOrDefaultAsync(i => i.Id == requestId); - // if (requestNew != null) - // { - // requestNew.RequestStatus = "st5p"; - // _context.SaveChanges(); - // return Success(); - // } - // else - // return Error(GlobalMessages.InsigniaRequestNotFound); - // } + [HttpPost("status/director/approve/{ocId:length(36)}")] + public async Task> ChangeStatusToSt5p(Guid id, Guid ocId) + { + var result = await _repository.GetInsigniaRequest(id, ocId); + if (result == null) + return Error(GlobalMessages.InsigniaRequestNotFound); + var requestId = await _repository.GetRequestId(result.PeriodId, ocId); + if (requestId == null) + return Error(GlobalMessages.InsigniaRequestNotFound); + var requestNew = await _context.InsigniaRequests.FirstOrDefaultAsync(i => i.Id == requestId); + if (requestNew != null) + { + requestNew.RequestStatus = "st5p"; + _context.SaveChanges(); + return Success(); + } + else + return Error(GlobalMessages.InsigniaRequestNotFound); + } - // [HttpPost("status/director/reject/{ocId:length(36)}")] - // public async Task> ChangeStatusToSt1(Guid id, Guid ocId) - // { - // var result = await _repository.GetInsigniaRequest(id, ocId); - // if (result == null) - // return Error(GlobalMessages.InsigniaRequestNotFound); - // var requestId = await _repository.GetRequestId(result.PeriodId, ocId); - // if (requestId == null) - // return Error(GlobalMessages.InsigniaRequestNotFound); - // var requestNew = await _context.InsigniaRequests.FirstOrDefaultAsync(i => i.Id == requestId); - // if (requestNew != null) - // { - // requestNew.RequestStatus = "st1"; - // _context.SaveChanges(); - // return Success(); - // } - // else - // return Error(GlobalMessages.InsigniaRequestNotFound); - // } - // #endregion + [HttpPost("status/director/reject/{ocId:length(36)}")] + public async Task> ChangeStatusToSt1(Guid id, Guid ocId) + { + var result = await _repository.GetInsigniaRequest(id, ocId); + if (result == null) + return Error(GlobalMessages.InsigniaRequestNotFound); + var requestId = await _repository.GetRequestId(result.PeriodId, ocId); + if (requestId == null) + return Error(GlobalMessages.InsigniaRequestNotFound); + var requestNew = await _context.InsigniaRequests.FirstOrDefaultAsync(i => i.Id == requestId); + if (requestNew != null) + { + requestNew.RequestStatus = "st1"; + _context.SaveChanges(); + return Success(); + } + else + return Error(GlobalMessages.InsigniaRequestNotFound); + } + + #endregion /// /// ย้ายขอมูลไปเป็น คนที่ไม่ยื่นขอ @@ -1056,12 +1082,19 @@ namespace BMA.EHR.Insignia.Service.Controllers if (profile == null) return Error(GlobalMessages.DataNotFound); var insignia = await _context.Insignias.FirstOrDefaultAsync(x => x.Id == req.insigniaId); + if (insignia == null) return Error(GlobalMessages.InsigniaNotFound); - var insigniaRequestProfile = await _context.InsigniaRequestProfiles.FirstOrDefaultAsync(x => x.ProfileId == profile.Id && x.Request.Period == insigniaPeriod); + + var insigniaRequestProfile = await _context.InsigniaRequestProfiles + .Include(x => x.Request) + .ThenInclude(x => x.Period) + .FirstOrDefaultAsync(x => x.ProfileId == profile.Id && x.Request.Period.Id == insigniaPeriod.Id); if (insigniaRequestProfile != null) return Error(GlobalMessages.InsigniaRequestProfileDupicate); - // var insigniaRequest = await _context.InsigniaRequests.FirstOrDefaultAsync(x => x.Period == insigniaPeriod); + + //var insigniaRequest = await _context.InsigniaRequests.FirstOrDefaultAsync(x => x.Period == insigniaPeriod); + //var _orgProfile = await _context.ProfilePositions // .Where(x => x.ProfileId == profile.Id) // .Where(x => x.OrganizationPosition != null) @@ -1071,7 +1104,7 @@ namespace BMA.EHR.Insignia.Service.Controllers // .FirstOrDefaultAsync(); //var _org = await _context.Organizations // .FirstOrDefaultAsync(x => x.Id == _orgProfile); - var insigniaRequest = await _context.InsigniaRequests.FirstOrDefaultAsync(x => x.Period == insigniaPeriod); // && x.OrganizationId == _org); + var insigniaRequest = await _context.InsigniaRequests.Include(x => x.Period).FirstOrDefaultAsync(x => x.Period.Id == insigniaPeriod.Id && x.OrganizationId == req.OcId); if (insigniaRequest == null) { //var orgProfile = await _context.ProfilePositions @@ -1086,43 +1119,46 @@ namespace BMA.EHR.Insignia.Service.Controllers //var org = await _context.Organizations // .FirstOrDefaultAsync(x => x.Id == orgProfile); - // var org = _userProfileRepository.GetOc(orgProfile.Value, 0, AccessToken); + //var org = _userProfileRepository.GetOc(insigniaRequestProfile!.Request.OrganizationId, 0, AccessToken); - // if (org == null) - // return Error(GlobalMessages.OrganizationNotFound); - // insigniaRequest = new InsigniaRequest - // { - // Period = insigniaPeriod, - // OrganizationId = org.RootId.Value, - // RequestStatus = "st1", - // RequestNote = "", - // CreatedFullName = FullName ?? "System Administrator", - // CreatedUserId = UserId ?? "", - // CreatedAt = DateTime.Now, - // LastUpdateFullName = FullName ?? "System Administrator", - // LastUpdateUserId = UserId ?? "", - // LastUpdatedAt = DateTime.Now, - // }; + //if (org == null) + // return Error(GlobalMessages.OrganizationNotFound); + insigniaRequest = new InsigniaRequest + { + Period = insigniaPeriod, + OrganizationId = req.OcId, + RequestStatus = "st1", + RequestNote = "", + CreatedFullName = FullName ?? "System Administrator", + CreatedUserId = UserId ?? "", + CreatedAt = DateTime.Now, + LastUpdateFullName = FullName ?? "System Administrator", + LastUpdateUserId = UserId ?? "", + LastUpdatedAt = DateTime.Now, + }; } - //await _context.AddAsync(new InsigniaRequestProfile - //{ - // Status = "PENDING", - // Profile = profile, - // RequestInsignia = insignia, - // Request = insigniaRequest, - // Reason = req.Reason, - // RequestDate = DateTime.Now, - // MatchingConditions = System.Text.Json.JsonSerializer.Serialize(new List()), // serialize to string - // Salary = profile.Salaries.Count() == 0 ? null : profile.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, - // CreatedFullName = FullName ?? "System Administrator", - // CreatedUserId = UserId ?? "", - // CreatedAt = DateTime.Now, - // LastUpdateFullName = FullName ?? "System Administrator", - // LastUpdateUserId = UserId ?? "", - // LastUpdatedAt = DateTime.Now, - //}); - //await _context.SaveChangesAsync(); + + await _context.AddAsync(new InsigniaRequestProfile + { + Status = "PENDING", + ProfileId = profile.Id, + RequestInsignia = insignia, + Request = insigniaRequest, + Reason = req.Reason, + RequestDate = DateTime.Now, + MatchingConditions = System.Text.Json.JsonSerializer.Serialize(new List()), // serialize to string + Salary = profile.ProfileSalary == null || profile.ProfileSalary.Count == 0 ? 0 : + profile.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, //profile.Salaries.Count() == 0 ? null : profile.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, + CreatedFullName = FullName ?? "System Administrator", + CreatedUserId = UserId ?? "", + CreatedAt = DateTime.Now, + LastUpdateFullName = FullName ?? "System Administrator", + LastUpdateUserId = UserId ?? "", + LastUpdatedAt = DateTime.Now, + }); + + await _context.SaveChangesAsync(); return Success(); } @@ -1265,26 +1301,26 @@ namespace BMA.EHR.Insignia.Service.Controllers return Success(); } - // /// - // /// รายชื่อผู้ได้รับเครื่องราชส่งข้อมูลไปบันทึกผลได้รับเครื่องราช(อัพเดทstatus) - // /// - // /// Id รอบการยื่นขอ - // /// - // /// - // /// ค่าตัวแปรที่ส่งมาไม่ถูกต้อง - // /// ไม่ได้ Login เข้าระบบ - // /// เมื่อเกิดข้อผิดพลาดในการทำงาน - // [HttpGet("send/note/{insigniaPeriodId:length(36)}")] - // public async Task> SendPeriodToNoteUpdateStatus(Guid insigniaPeriodId) - // { - // var insigniaPeriod = await _context.InsigniaPeriods - // .FirstOrDefaultAsync(x => x.Id == insigniaPeriodId); - // if (insigniaPeriod == null) - // return Error(GlobalMessages.InsigniaRequestNotFound); - // insigniaPeriod.IsLock = true; - // await _context.SaveChangesAsync(); - // return Success(); - // } + /// + /// รายชื่อผู้ได้รับเครื่องราชส่งข้อมูลไปบันทึกผลได้รับเครื่องราช(อัพเดทstatus) + /// + /// Id รอบการยื่นขอ + /// + /// + /// ค่าตัวแปรที่ส่งมาไม่ถูกต้อง + /// ไม่ได้ Login เข้าระบบ + /// เมื่อเกิดข้อผิดพลาดในการทำงาน + [HttpGet("send/note/{insigniaPeriodId:length(36)}")] + public async Task> SendPeriodToNoteUpdateStatus(Guid insigniaPeriodId) + { + var insigniaPeriod = await _context.InsigniaPeriods + .FirstOrDefaultAsync(x => x.Id == insigniaPeriodId); + if (insigniaPeriod == null) + return Error(GlobalMessages.InsigniaRequestNotFound); + insigniaPeriod.IsLock = true; + await _context.SaveChangesAsync(); + return Success(); + } /// /// list รอบบันทึกผลการได้รับพระราชทานเครื่องราชอิสริยสภรณ์/การจ่ายใบกำกับ @@ -1517,16 +1553,18 @@ namespace BMA.EHR.Insignia.Service.Controllers [HttpPut("note/{insigniaNoteId:length(36)}")] public async Task> AddNoteProfile([FromBody] InsigniaNoteRequest req, Guid insigniaNoteId) { - var profile = await _context.Profiles - .Include(x => x.Salaries) - .FirstOrDefaultAsync(x => x.CitizenId == req.CitizanId); + var profile = _userProfileRepository.GetOfficerProfileByCitizenId(req.CitizanId, AccessToken); + + if (profile == null) return Error(GlobalMessages.DataNotFound); + var insignia = await _context.Insignias .Include(x => x.InsigniaType) .FirstOrDefaultAsync(x => x.Id == req.InsigniaId); if (insignia == null) return Error(GlobalMessages.InsigniaNotFound); + var insigniaNote = await _context.InsigniaNotes .Include(x => x.InsigniaNoteProfiles) //.ThenInclude(x => x.Profile) @@ -1534,118 +1572,120 @@ namespace BMA.EHR.Insignia.Service.Controllers if (insigniaNote == null) return Error(GlobalMessages.InsigniaRequestNotFound); - //var profileInsignia = insigniaNote.InsigniaNoteProfiles.FirstOrDefault(x => x.Profile.CitizenId == req.CitizanId); - //if (profileInsignia == null) - //{ - // var insigniaNoteProfile = new InsigniaNoteProfile - // { - // Salary = profile.Salaries.Count() == 0 ? null : profile.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount, - // IsApprove = true, - // Status = "PENDING", - // Profile = profile, - // Issue = req.Issue, - // Number = req.Number, - // DateReceive = req.DateReceive, - // Date = req.Date, - // VolumeNo = req.VolumeNo, - // Section = req.Section, - // Page = req.Page, - // No = req.No, - // DatePayment = req.DatePayment, - // TypePayment = req.TypePayment, - // Address = req.Address, - // RequestInsignia = insignia, - // OrganizationOrganizationReceive = req.OrganizationOrganizationReceive, - // OrganizationOrganizationSend = req.OrganizationOrganizationSend, - // InsigniaNote = insigniaNote, - // CreatedFullName = FullName ?? "System Administrator", - // CreatedUserId = UserId ?? "", - // CreatedAt = DateTime.Now, - // LastUpdateFullName = FullName ?? "System Administrator", - // LastUpdateUserId = UserId ?? "", - // LastUpdatedAt = DateTime.Now, - // }; - // if (req.DateReceive != null && req.Date != null) - // { - // insigniaNoteProfile.Status = "DONE"; - // await _context.ProfileInsignias.AddAsync(new ProfileInsignia - // { - // Year = insigniaNote.Year, - // No = req.No, - // Issue = req.VolumeNo, - // VolumeNo = req.VolumeNo, - // // Volume = req.Volume, - // Section = req.Section, - // Page = req.Page, - // DateAnnounce = req.Date, - // ReceiveDate = req.DateReceive, - // InsigniaType = insignia.InsigniaType == null ? null : insignia.InsigniaType.Name, - // Insignia = insignia, - // // RefCommandNo = req.RefCommandNo, - // // RefCommandDate = req.RefCommandDate, - // Profile = profile, - // CreatedFullName = FullName ?? "System Administrator", - // CreatedUserId = UserId ?? "", - // CreatedAt = DateTime.Now, - // LastUpdateFullName = FullName ?? "System Administrator", - // LastUpdateUserId = UserId ?? "", - // LastUpdatedAt = DateTime.Now, - // }); - // } - // await _context.InsigniaNoteProfiles.AddAsync(insigniaNoteProfile); - //} - //else - //{ - // profileInsignia.DatePayment = req.DatePayment; - // profileInsignia.TypePayment = req.TypePayment; - // profileInsignia.Address = req.Address; - // if (profileInsignia.Status != "DONE") - // { - // profileInsignia.Issue = req.Issue; - // profileInsignia.Number = req.Number; - // profileInsignia.DateReceive = req.DateReceive; - // profileInsignia.Date = req.Date; - // profileInsignia.VolumeNo = req.VolumeNo; - // profileInsignia.Section = req.Section; - // profileInsignia.Page = req.Page; - // profileInsignia.No = req.No; - // // profileInsignia.DatePayment = req.DatePayment; - // // profileInsignia.TypePayment = req.TypePayment; - // // profileInsignia.Address = req.Address; - // profileInsignia.RequestInsignia = insignia; - // profileInsignia.LastUpdateFullName = FullName ?? "System Administrator"; - // profileInsignia.LastUpdateUserId = UserId ?? ""; - // profileInsignia.LastUpdatedAt = DateTime.Now; - // if (req.DateReceive != null && req.Date != null) - // { - // profileInsignia.Status = "DONE"; - // await _context.ProfileInsignias.AddAsync(new ProfileInsignia - // { - // Year = insigniaNote.Year, - // No = req.No, - // Issue = req.VolumeNo, - // VolumeNo = req.VolumeNo, - // // Volume = req.Volume, - // Section = req.Section, - // Page = req.Page, - // DateAnnounce = req.Date, - // ReceiveDate = req.DateReceive, - // InsigniaType = insignia.InsigniaType == null ? null : insignia.InsigniaType.Name, - // Insignia = insignia, - // // RefCommandNo = req.RefCommandNo, - // // RefCommandDate = req.RefCommandDate, - // ProfileId = profile.Id, - // CreatedFullName = FullName ?? "System Administrator", - // CreatedUserId = UserId ?? "", - // CreatedAt = DateTime.Now, - // LastUpdateFullName = FullName ?? "System Administrator", - // LastUpdateUserId = UserId ?? "", - // LastUpdatedAt = DateTime.Now, - // }); - // } - // } - //} - //await _context.SaveChangesAsync(); + var profileInsignia = insigniaNote.InsigniaNoteProfiles.FirstOrDefault(x => x.ProfileId == profile.Id); + + if (profileInsignia == null) + { + var insigniaNoteProfile = new InsigniaNoteProfile + { + Salary = profile.ProfileSalary == null || profile.ProfileSalary.Count() == 0 ? null : profile.ProfileSalary.OrderByDescending(x => x.Order).FirstOrDefault().Amount, + IsApprove = true, + Status = "PENDING", + ProfileId = profile.Id, + Issue = req.Issue, + Number = req.Number, + DateReceive = req.DateReceive, + Date = req.Date, + VolumeNo = req.VolumeNo, + Section = req.Section, + Page = req.Page, + No = req.No, + DatePayment = req.DatePayment, + TypePayment = req.TypePayment, + Address = req.Address, + RequestInsignia = insignia, + OrganizationOrganizationReceive = req.OrganizationOrganizationReceive, + OrganizationOrganizationSend = req.OrganizationOrganizationSend, + InsigniaNote = insigniaNote, + CreatedFullName = FullName ?? "System Administrator", + CreatedUserId = UserId ?? "", + CreatedAt = DateTime.Now, + LastUpdateFullName = FullName ?? "System Administrator", + LastUpdateUserId = UserId ?? "", + LastUpdatedAt = DateTime.Now, + }; + if (req.DateReceive != null && req.Date != null) + { + insigniaNoteProfile.Status = "DONE"; + await _context.ProfileInsignias.AddAsync(new ProfileInsignia + { + Year = insigniaNote.Year, + No = req.No, + Issue = req.VolumeNo, + VolumeNo = req.VolumeNo, + // Volume = req.Volume, + Section = req.Section, + Page = req.Page, + DateAnnounce = req.Date, + ReceiveDate = req.DateReceive, + InsigniaType = insignia.InsigniaType == null ? null : insignia.InsigniaType.Name, + Insignia = insignia, + // RefCommandNo = req.RefCommandNo, + // RefCommandDate = req.RefCommandDate, + ProfileId = profile.Id, + CreatedFullName = FullName ?? "System Administrator", + CreatedUserId = UserId ?? "", + CreatedAt = DateTime.Now, + LastUpdateFullName = FullName ?? "System Administrator", + LastUpdateUserId = UserId ?? "", + LastUpdatedAt = DateTime.Now, + }); + } + await _context.InsigniaNoteProfiles.AddAsync(insigniaNoteProfile); + } + else + { + profileInsignia.DatePayment = req.DatePayment; + profileInsignia.TypePayment = req.TypePayment; + profileInsignia.Address = req.Address; + if (profileInsignia.Status != "DONE") + { + profileInsignia.Issue = req.Issue; + profileInsignia.Number = req.Number; + profileInsignia.DateReceive = req.DateReceive; + profileInsignia.Date = req.Date; + profileInsignia.VolumeNo = req.VolumeNo; + profileInsignia.Section = req.Section; + profileInsignia.Page = req.Page; + profileInsignia.No = req.No; + // profileInsignia.DatePayment = req.DatePayment; + // profileInsignia.TypePayment = req.TypePayment; + // profileInsignia.Address = req.Address; + profileInsignia.RequestInsignia = insignia; + profileInsignia.LastUpdateFullName = FullName ?? "System Administrator"; + profileInsignia.LastUpdateUserId = UserId ?? ""; + profileInsignia.LastUpdatedAt = DateTime.Now; + if (req.DateReceive != null && req.Date != null) + { + profileInsignia.Status = "DONE"; + await _context.ProfileInsignias.AddAsync(new ProfileInsignia + { + Year = insigniaNote.Year, + No = req.No, + Issue = req.VolumeNo, + VolumeNo = req.VolumeNo, + //Volume = req.Volume, + Section = req.Section, + Page = req.Page, + DateAnnounce = req.Date, + ReceiveDate = req.DateReceive, + InsigniaType = insignia.InsigniaType == null ? null : insignia.InsigniaType.Name, + Insignia = insignia, + // RefCommandNo = req.RefCommandNo, + // RefCommandDate = req.RefCommandDate, + ProfileId = profile.Id, + CreatedFullName = FullName ?? "System Administrator", + CreatedUserId = UserId ?? "", + CreatedAt = DateTime.Now, + LastUpdateFullName = FullName ?? "System Administrator", + LastUpdateUserId = UserId ?? "", + LastUpdatedAt = DateTime.Now, + }); + } + } + } + + await _context.SaveChangesAsync(); return Success(); } diff --git a/BMA.EHR.Insignia.Service/Requests/AddUserRequestInsigniaRequest.cs b/BMA.EHR.Insignia.Service/Requests/AddUserRequestInsigniaRequest.cs index 3de8842c..b973fbb4 100644 --- a/BMA.EHR.Insignia.Service/Requests/AddUserRequestInsigniaRequest.cs +++ b/BMA.EHR.Insignia.Service/Requests/AddUserRequestInsigniaRequest.cs @@ -9,5 +9,7 @@ namespace BMA.EHR.Insignia.Service.Requests public Guid insigniaId { get; set; } public Guid insigniaPeriodId { get; set; } public string? Reason { get; set; } + + public Guid OcId { get; set; } } } \ No newline at end of file