460 lines
30 KiB
C#
460 lines
30 KiB
C#
using BMA.EHR.Application.Common.Interfaces;
|
|
using BMA.EHR.Application.Responses;
|
|
using BMA.EHR.Domain.Extensions;
|
|
using BMA.EHR.Domain.Models.HR;
|
|
using BMA.EHR.Domain.Models.Insignias;
|
|
using BMA.EHR.Domain.Models.Organizations;
|
|
using BMA.EHR.Domain.Models.Retirement;
|
|
using BMA.EHR.Domain.Shared;
|
|
using Microsoft.AspNetCore.Hosting;
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
namespace BMA.EHR.Application.Repositories.Reports
|
|
{
|
|
public class InsigniaReportRepository
|
|
{
|
|
#region " Fields "
|
|
|
|
private readonly IApplicationDBContext _dbContext;
|
|
private readonly IWebHostEnvironment _hostingEnvironment;
|
|
private readonly OrganizationCommonRepository _organizationCommonRepository;
|
|
private readonly string CRLF = "\r\n";
|
|
|
|
#endregion
|
|
|
|
#region " Constructor and Destructor "
|
|
|
|
public InsigniaReportRepository(IApplicationDBContext dbContext,
|
|
OrganizationCommonRepository organizationCommonRepository,
|
|
IWebHostEnvironment hostEnvironment)
|
|
{
|
|
_dbContext = dbContext;
|
|
_hostingEnvironment = hostEnvironment;
|
|
_organizationCommonRepository = organizationCommonRepository;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region " Methods "
|
|
public async Task<dynamic> GetYearInsigniaPeriod(Guid id)
|
|
{
|
|
var period = await _dbContext.Set<InsigniaPeriod>()
|
|
.FirstOrDefaultAsync(x => x.Id == id);
|
|
if (period == null)
|
|
throw new Exception(GlobalMessages.InsigniaPeriodNotFound);
|
|
string thaiYear = period.Year.ToThaiYear().ToString().ToThaiNumber();
|
|
return thaiYear;
|
|
}
|
|
|
|
public async Task<dynamic> Get2YearInsigniaPeriod(Guid id)
|
|
{
|
|
var period = await _dbContext.Set<InsigniaPeriod>()
|
|
.FirstOrDefaultAsync(x => x.Id == id);
|
|
if (period == null)
|
|
throw new Exception(GlobalMessages.InsigniaPeriodNotFound);
|
|
string thaiYear = period.Year.ToThaiYear().ToString().ToThaiNumber();
|
|
return thaiYear.Substring(2);
|
|
}
|
|
|
|
public async Task<dynamic> GetInsigniaPeriod(Guid id)
|
|
{
|
|
var period = await _dbContext.Set<InsigniaPeriod>()
|
|
.FirstOrDefaultAsync(x => x.Id == id);
|
|
if (period == null)
|
|
throw new Exception(GlobalMessages.InsigniaPeriodNotFound);
|
|
return period;
|
|
}
|
|
|
|
public async Task<dynamic> GetDateInsigniaPeriod(Guid id)
|
|
{
|
|
var period = await _dbContext.Set<InsigniaPeriod>()
|
|
.FirstOrDefaultAsync(x => x.Id == id);
|
|
if (period == null)
|
|
throw new Exception(GlobalMessages.InsigniaPeriodNotFound);
|
|
return new
|
|
{
|
|
StartDater = period.StartDate.ToThaiFullDate().ToString().ToThaiNumber(),
|
|
EndDate = period.EndDate.ToThaiFullDate().ToString().ToThaiNumber(),
|
|
};
|
|
}
|
|
|
|
public async Task<dynamic> GetKhr1Report(Guid id)
|
|
{
|
|
var period = await _dbContext.Set<InsigniaPeriod>()
|
|
.FirstOrDefaultAsync(x => x.Id == id);
|
|
if (period == null)
|
|
throw new Exception(GlobalMessages.InsigniaPeriodNotFound);
|
|
|
|
var data_insignia = await _dbContext.Set<InsigniaRequestProfile>()
|
|
.Include(x => x.Profile)
|
|
.Where(x => x.Request.Period == period)
|
|
.Where(x => x.IsApprove == true)
|
|
.Where(x => x.RequestInsignia.InsigniaType != null)
|
|
.Where(x => x.RequestInsignia.InsigniaType.Name == "ชั้นสายสะพาย")
|
|
.Select(x => new
|
|
{
|
|
Gendor = x.Profile.Gender == null ? null : x.Profile.Gender.Name,
|
|
RequestInsigniaName = x.RequestInsignia.Name,
|
|
OcId = x.Request.Organization.Id
|
|
})
|
|
.ToListAsync();
|
|
|
|
var insignia = (from r in data_insignia
|
|
group r by new { OcId = r.OcId } into g
|
|
select new
|
|
{
|
|
RowNo = 1,
|
|
DepartmentName = _organizationCommonRepository.GetOrganizationNameFullPath(g.Key.OcId, false, false),
|
|
G1Male = g.Sum(x => x.Gendor == "ชาย" && x.RequestInsigniaName == "มหาปรมาภรณ์ช้างเผือก" ? 1 : 0),
|
|
G1Female = g.Sum(x => x.Gendor == "หญิง" && x.RequestInsigniaName == "มหาปรมาภรณ์ช้างเผือก" ? 1 : 0),
|
|
G2Male = g.Sum(x => x.Gendor == "ชาย" && x.RequestInsigniaName == "มหาวชิรมงกุฎ" ? 1 : 0),
|
|
G2Female = g.Sum(x => x.Gendor == "หญิง" && x.RequestInsigniaName == "มหาวชิรมงกุฎ" ? 1 : 0),
|
|
G3Male = g.Sum(x => x.Gendor == "ชาย" && x.RequestInsigniaName == "ประถมาภรณ์ช้างเผือก" ? 1 : 0),
|
|
G3Female = g.Sum(x => x.Gendor == "หญิง" && x.RequestInsigniaName == "ประถมาภรณ์ช้างเผือก" ? 1 : 0),
|
|
G4Male = g.Sum(x => x.Gendor == "ชาย" && x.RequestInsigniaName == "ประถมาภรณ์มงกุฎไทย" ? 1 : 0),
|
|
G4Female = g.Sum(x => x.Gendor == "หญิง" && x.RequestInsigniaName == "ประถมาภรณ์มงกุฎไทย" ? 1 : 0),
|
|
G5Male = g.Sum(x => x.Gendor == "ชาย" ? 1 : 0),
|
|
G5Female = g.Sum(x => x.Gendor == "หญิง" ? 1 : 0),
|
|
}).ToList();
|
|
|
|
return insignia;
|
|
}
|
|
|
|
public async Task<dynamic> GetKhr1TotalReport(Guid id)
|
|
{
|
|
var period = await _dbContext.Set<InsigniaPeriod>()
|
|
.FirstOrDefaultAsync(x => x.Id == id);
|
|
if (period == null)
|
|
throw new Exception(GlobalMessages.InsigniaPeriodNotFound);
|
|
|
|
var data_insignia = await _dbContext.Set<InsigniaRequestProfile>()
|
|
.Include(x => x.Profile)
|
|
.Where(x => x.Request.Period == period)
|
|
.Where(x => x.IsApprove == true)
|
|
.Where(x => x.RequestInsignia.InsigniaType != null)
|
|
.Where(x => x.RequestInsignia.InsigniaType.Name == "ชั้นสายสะพาย")
|
|
.Select(x => new
|
|
{
|
|
Gendor = x.Profile.Gender == null ? null : x.Profile.Gender.Name,
|
|
RequestInsigniaName = x.RequestInsignia.Name,
|
|
OcId = x.Request.Organization.Id
|
|
})
|
|
.ToListAsync();
|
|
|
|
var insignia = (from r in data_insignia
|
|
group r by new { OcId = r.OcId } into g
|
|
select new
|
|
{
|
|
RowNo = 1,
|
|
DepartmentName = _organizationCommonRepository.GetOrganizationNameFullPath(g.Key.OcId, false, false),
|
|
G1Male = g.Sum(x => x.Gendor == "ชาย" && x.RequestInsigniaName == "มหาปรมาภรณ์ช้างเผือก" ? 1 : 0),
|
|
G1Female = g.Sum(x => x.Gendor == "หญิง" && x.RequestInsigniaName == "มหาปรมาภรณ์ช้างเผือก" ? 1 : 0),
|
|
G2Male = g.Sum(x => x.Gendor == "ชาย" && x.RequestInsigniaName == "มหาวชิรมงกุฎ" ? 1 : 0),
|
|
G2Female = g.Sum(x => x.Gendor == "หญิง" && x.RequestInsigniaName == "มหาวชิรมงกุฎ" ? 1 : 0),
|
|
G3Male = g.Sum(x => x.Gendor == "ชาย" && x.RequestInsigniaName == "ประถมาภรณ์ช้างเผือก" ? 1 : 0),
|
|
G3Female = g.Sum(x => x.Gendor == "หญิง" && x.RequestInsigniaName == "ประถมาภรณ์ช้างเผือก" ? 1 : 0),
|
|
G4Male = g.Sum(x => x.Gendor == "ชาย" && x.RequestInsigniaName == "ประถมาภรณ์มงกุฎไทย" ? 1 : 0),
|
|
G4Female = g.Sum(x => x.Gendor == "หญิง" && x.RequestInsigniaName == "ประถมาภรณ์มงกุฎไทย" ? 1 : 0),
|
|
G5Male = g.Sum(x => x.Gendor == "ชาย" ? 1 : 0),
|
|
G5Female = g.Sum(x => x.Gendor == "หญิง" ? 1 : 0),
|
|
}).ToList();
|
|
return new
|
|
{
|
|
G1Male = insignia.Sum(x => x.G1Male),
|
|
G1Female = insignia.Sum(x => x.G1Female),
|
|
G2Male = insignia.Sum(x => x.G2Male),
|
|
G2Female = insignia.Sum(x => x.G2Female),
|
|
G3Male = insignia.Sum(x => x.G3Male),
|
|
G3Female = insignia.Sum(x => x.G3Female),
|
|
G4Male = insignia.Sum(x => x.G4Male),
|
|
G4Female = insignia.Sum(x => x.G4Female),
|
|
G5Male = insignia.Sum(x => x.G5Male),
|
|
G5Female = insignia.Sum(x => x.G5Female),
|
|
};
|
|
}
|
|
|
|
public async Task<dynamic> GetKhr2Report(Guid id)
|
|
{
|
|
var period = await _dbContext.Set<InsigniaPeriod>()
|
|
.FirstOrDefaultAsync(x => x.Id == id);
|
|
if (period == null)
|
|
throw new Exception(GlobalMessages.InsigniaPeriodNotFound);
|
|
|
|
var data_insignia = await _dbContext.Set<InsigniaRequestProfile>()
|
|
.Include(x => x.Profile)
|
|
.Where(x => x.Request.Period == period)
|
|
.Where(x => x.IsApprove == true)
|
|
.Where(x => x.RequestInsignia.InsigniaType != null)
|
|
.Where(x => x.RequestInsignia.InsigniaType.Name == "ชั้นต่ำกว่าสายสะพาย")
|
|
.Select(x => new
|
|
{
|
|
Gendor = x.Profile.Gender == null ? null : x.Profile.Gender.Name,
|
|
RequestInsigniaName = x.RequestInsignia.Name,
|
|
OcId = x.Request.Organization.Id
|
|
})
|
|
.ToListAsync();
|
|
|
|
var insignia = (from r in data_insignia
|
|
group r by new { OcId = r.OcId } into g
|
|
select new
|
|
{
|
|
RowNo = 1,
|
|
DepartmentName = _organizationCommonRepository.GetOrganizationNameFullPath(g.Key.OcId, false, false),
|
|
G1Male = g.Sum(x => x.Gendor == "ชาย" && x.RequestInsigniaName == "ทวีติยาภรณ์ช้างเผือก" ? 1 : 0),
|
|
G1Female = g.Sum(x => x.Gendor == "หญิง" && x.RequestInsigniaName == "ทวีติยาภรณ์ช้างเผือก" ? 1 : 0),
|
|
G2Male = g.Sum(x => x.Gendor == "ชาย" && x.RequestInsigniaName == "ทวีติยาภรณ์มงกุฎไทย" ? 1 : 0),
|
|
G2Female = g.Sum(x => x.Gendor == "หญิง" && x.RequestInsigniaName == "ทวีติยาภรณ์มงกุฎไทย" ? 1 : 0),
|
|
G3Male = g.Sum(x => x.Gendor == "ชาย" && x.RequestInsigniaName == "ตริตาภรณ์ช้างเผือก" ? 1 : 0),
|
|
G3Female = g.Sum(x => x.Gendor == "หญิง" && x.RequestInsigniaName == "ตริตาภรณ์ช้างเผือก" ? 1 : 0),
|
|
G4Male = g.Sum(x => x.Gendor == "ชาย" && x.RequestInsigniaName == "ตริตาภรณ์มงกุฎไทย" ? 1 : 0),
|
|
G4Female = g.Sum(x => x.Gendor == "หญิง" && x.RequestInsigniaName == "ตริตาภรณ์มงกุฎไทย" ? 1 : 0),
|
|
G5Male = g.Sum(x => x.Gendor == "ชาย" && x.RequestInsigniaName == "จัตุรถาภรณ์ช้างเผือก" ? 1 : 0),
|
|
G5Female = g.Sum(x => x.Gendor == "หญิง" && x.RequestInsigniaName == "จัตุรถาภรณ์ช้างเผือก" ? 1 : 0),
|
|
G6Male = g.Sum(x => x.Gendor == "ชาย" && x.RequestInsigniaName == "จัตุรถาภรณ์มงกุฎไทย" ? 1 : 0),
|
|
G6Female = g.Sum(x => x.Gendor == "หญิง" && x.RequestInsigniaName == "จัตุรถาภรณ์มงกุฎไทย" ? 1 : 0),
|
|
G7Male = g.Sum(x => x.Gendor == "ชาย" && x.RequestInsigniaName == "เบญจมาภรณ์ช้างเผือก" ? 1 : 0),
|
|
G7Female = g.Sum(x => x.Gendor == "หญิง" && x.RequestInsigniaName == "เบญจมาภรณ์ช้างเผือก" ? 1 : 0),
|
|
G8Male = g.Sum(x => x.Gendor == "ชาย" && x.RequestInsigniaName == "เบญจมาภรณ์มงกุฎไทย" ? 1 : 0),
|
|
G8Female = g.Sum(x => x.Gendor == "หญิง" && x.RequestInsigniaName == "เบญจมาภรณ์มงกุฎไทย" ? 1 : 0),
|
|
G9Male = g.Sum(x => x.Gendor == "ชาย" ? 1 : 0),
|
|
G9Female = g.Sum(x => x.Gendor == "หญิง" ? 1 : 0),
|
|
}).ToList();
|
|
|
|
return insignia;
|
|
}
|
|
|
|
public async Task<dynamic> GetKhr2TotalReport(Guid id)
|
|
{
|
|
var period = await _dbContext.Set<InsigniaPeriod>()
|
|
.FirstOrDefaultAsync(x => x.Id == id);
|
|
if (period == null)
|
|
throw new Exception(GlobalMessages.InsigniaPeriodNotFound);
|
|
|
|
var data_insignia = await _dbContext.Set<InsigniaRequestProfile>()
|
|
.Include(x => x.Profile)
|
|
.Where(x => x.Request.Period == period)
|
|
.Where(x => x.IsApprove == true)
|
|
.Where(x => x.RequestInsignia.InsigniaType != null)
|
|
.Where(x => x.RequestInsignia.InsigniaType.Name == "ชั้นต่ำกว่าสายสะพาย")
|
|
.Select(x => new
|
|
{
|
|
Gendor = x.Profile.Gender == null ? null : x.Profile.Gender.Name,
|
|
RequestInsigniaName = x.RequestInsignia.Name,
|
|
OcId = x.Request.Organization.Id
|
|
})
|
|
.ToListAsync();
|
|
|
|
var insignia = (from r in data_insignia
|
|
group r by new { OcId = r.OcId } into g
|
|
select new
|
|
{
|
|
RowNo = 1,
|
|
DepartmentName = _organizationCommonRepository.GetOrganizationNameFullPath(g.Key.OcId, false, false),
|
|
G1Male = g.Sum(x => x.Gendor == "ชาย" && x.RequestInsigniaName == "ทวีติยาภรณ์ช้างเผือก" ? 1 : 0),
|
|
G1Female = g.Sum(x => x.Gendor == "หญิง" && x.RequestInsigniaName == "ทวีติยาภรณ์ช้างเผือก" ? 1 : 0),
|
|
G2Male = g.Sum(x => x.Gendor == "ชาย" && x.RequestInsigniaName == "ทวีติยาภรณ์มงกุฎไทย" ? 1 : 0),
|
|
G2Female = g.Sum(x => x.Gendor == "หญิง" && x.RequestInsigniaName == "ทวีติยาภรณ์มงกุฎไทย" ? 1 : 0),
|
|
G3Male = g.Sum(x => x.Gendor == "ชาย" && x.RequestInsigniaName == "ตริตาภรณ์ช้างเผือก" ? 1 : 0),
|
|
G3Female = g.Sum(x => x.Gendor == "หญิง" && x.RequestInsigniaName == "ตริตาภรณ์ช้างเผือก" ? 1 : 0),
|
|
G4Male = g.Sum(x => x.Gendor == "ชาย" && x.RequestInsigniaName == "ตริตาภรณ์มงกุฎไทย" ? 1 : 0),
|
|
G4Female = g.Sum(x => x.Gendor == "หญิง" && x.RequestInsigniaName == "ตริตาภรณ์มงกุฎไทย" ? 1 : 0),
|
|
G5Male = g.Sum(x => x.Gendor == "ชาย" && x.RequestInsigniaName == "จัตุรถาภรณ์ช้างเผือก" ? 1 : 0),
|
|
G5Female = g.Sum(x => x.Gendor == "หญิง" && x.RequestInsigniaName == "จัตุรถาภรณ์ช้างเผือก" ? 1 : 0),
|
|
G6Male = g.Sum(x => x.Gendor == "ชาย" && x.RequestInsigniaName == "จัตุรถาภรณ์มงกุฎไทย" ? 1 : 0),
|
|
G6Female = g.Sum(x => x.Gendor == "หญิง" && x.RequestInsigniaName == "จัตุรถาภรณ์มงกุฎไทย" ? 1 : 0),
|
|
G7Male = g.Sum(x => x.Gendor == "ชาย" && x.RequestInsigniaName == "เบญจมาภรณ์ช้างเผือก" ? 1 : 0),
|
|
G7Female = g.Sum(x => x.Gendor == "หญิง" && x.RequestInsigniaName == "เบญจมาภรณ์ช้างเผือก" ? 1 : 0),
|
|
G8Male = g.Sum(x => x.Gendor == "ชาย" && x.RequestInsigniaName == "เบญจมาภรณ์มงกุฎไทย" ? 1 : 0),
|
|
G8Female = g.Sum(x => x.Gendor == "หญิง" && x.RequestInsigniaName == "เบญจมาภรณ์มงกุฎไทย" ? 1 : 0),
|
|
G9Male = g.Sum(x => x.Gendor == "ชาย" ? 1 : 0),
|
|
G9Female = g.Sum(x => x.Gendor == "หญิง" ? 1 : 0),
|
|
}).ToList();
|
|
|
|
return new
|
|
{
|
|
G1Male = insignia.Sum(x => x.G1Male),
|
|
G1Female = insignia.Sum(x => x.G1Female),
|
|
G2Male = insignia.Sum(x => x.G2Male),
|
|
G2Female = insignia.Sum(x => x.G2Female),
|
|
G3Male = insignia.Sum(x => x.G3Male),
|
|
G3Female = insignia.Sum(x => x.G3Female),
|
|
G4Male = insignia.Sum(x => x.G4Male),
|
|
G4Female = insignia.Sum(x => x.G4Female),
|
|
G5Male = insignia.Sum(x => x.G5Male),
|
|
G5Female = insignia.Sum(x => x.G5Female),
|
|
G6Male = insignia.Sum(x => x.G6Male),
|
|
G6Female = insignia.Sum(x => x.G6Female),
|
|
G7Male = insignia.Sum(x => x.G7Male),
|
|
G7Female = insignia.Sum(x => x.G7Female),
|
|
G8Male = insignia.Sum(x => x.G8Male),
|
|
G8Female = insignia.Sum(x => x.G8Female),
|
|
G9Male = insignia.Sum(x => x.G9Male),
|
|
G9Female = insignia.Sum(x => x.G9Female),
|
|
};
|
|
}
|
|
|
|
public async Task<dynamic> GetKhr3Report(Guid id)
|
|
{
|
|
var period = await _dbContext.Set<InsigniaPeriod>()
|
|
.FirstOrDefaultAsync(x => x.Id == id);
|
|
if (period == null)
|
|
throw new Exception(GlobalMessages.InsigniaPeriodNotFound);
|
|
|
|
var data = (from r in await _dbContext.Set<InsigniaRequestProfile>()
|
|
.Include(x => x.Profile)
|
|
.ThenInclude(x => x.Gender)
|
|
.Include(x => x.Profile)
|
|
.ThenInclude(x => x.Prefix)
|
|
.Include(x => x.Request)
|
|
.ThenInclude(x => x.Period)
|
|
.Include(x => x.Request)
|
|
.ThenInclude(x => x.Organization)
|
|
.Include(x => x.RequestInsignia)
|
|
.ThenInclude(x => x.InsigniaType)
|
|
.ToListAsync()
|
|
where r.Request.Period == period
|
|
&& r.IsApprove == true
|
|
&& r.RequestInsignia.InsigniaType != null
|
|
&& r.RequestInsignia.InsigniaType.Name != "เหรียญบำเหน็จในราชการ"
|
|
select new
|
|
{
|
|
InsigniaInitial = r.RequestInsignia.ShortName,
|
|
InsigniaName = r.RequestInsignia.Name,
|
|
ProfileId = r.Profile.Id,
|
|
FullName = $"{r.Profile.Prefix?.Name}{r.Profile.FirstName} {r.Profile.LastName}",
|
|
Gender = r.Profile.Gender == null ? null : r.Profile.Gender.Name,
|
|
InsigniaId = r.RequestInsignia.Id,
|
|
OCName = _organizationCommonRepository.GetOrganizationNameFullPath(r.Request.Organization.Id, false, false)
|
|
})
|
|
.Distinct()
|
|
.ToList();
|
|
|
|
// loop to add temp row with 50 rows per page
|
|
var insigniaList = data.Select(x => new { InsigniaId = x.InsigniaId, InsigniaInitial = x.InsigniaInitial, InsigniaName = x.InsigniaName })
|
|
.Distinct().ToList();
|
|
|
|
foreach (var ins in insigniaList)
|
|
{
|
|
var count = data.Where(x => x.InsigniaId == ins.InsigniaId).Count();
|
|
var mod_val = count <= 50 ? 50 - count : count % 50.0;
|
|
for (int i = 0; i < mod_val; i++)
|
|
{
|
|
var p = new
|
|
{
|
|
InsigniaInitial = ins.InsigniaInitial,
|
|
InsigniaName = ins.InsigniaName,
|
|
ProfileId = Guid.Parse("00000000-0000-0000-0000-000000000000"),
|
|
FullName = "",
|
|
Gender = "",
|
|
InsigniaId = ins.InsigniaId,
|
|
OCName = ""
|
|
};
|
|
data.Add(p);
|
|
}
|
|
}
|
|
return data;
|
|
}
|
|
|
|
public async Task<dynamic> GetKhr4Report(Guid id)
|
|
{
|
|
var period = await _dbContext.Set<InsigniaPeriod>()
|
|
.FirstOrDefaultAsync(x => x.Id == id);
|
|
if (period == null)
|
|
throw new Exception(GlobalMessages.InsigniaPeriodNotFound);
|
|
|
|
var teacher_data = (from r in await _dbContext.Set<InsigniaRequestProfile>()
|
|
.Include(x => x.Profile)
|
|
.ThenInclude(x => x.Salaries)
|
|
.Include(x => x.Profile)
|
|
.ThenInclude(x => x.Gender)
|
|
.Include(x => x.Profile)
|
|
.ThenInclude(x => x.Prefix)
|
|
.Include(x => x.Profile)
|
|
.ThenInclude(x => x.PositionType)
|
|
.Include(x => x.Profile)
|
|
.ThenInclude(x => x.PositionLevel)
|
|
.Include(x => x.Request)
|
|
.ThenInclude(x => x.Period)
|
|
.Include(x => x.RequestInsignia)
|
|
.ThenInclude(x => x.InsigniaType)
|
|
.Include(x => x.Request)
|
|
.ThenInclude(x => x.Organization)
|
|
.ToListAsync()
|
|
where r.Request.Period == period
|
|
&& r.IsApprove == true
|
|
&& r.RequestInsignia.InsigniaType != null
|
|
&& r.RequestInsignia.InsigniaType.Name != "เหรียญบำเหน็จในราชการ"
|
|
select new
|
|
{
|
|
InsigniaInitial = r.RequestInsignia.ShortName,
|
|
InsigniaName = r.RequestInsignia.Name,
|
|
ProfileId = r.Profile.Id,
|
|
FullName = $"{r.Profile.Prefix?.Name}{r.Profile.FirstName} {r.Profile.LastName}",
|
|
ShowProfileId = r.Profile.Id,
|
|
Type = r.Profile.PositionType?.Name,
|
|
AcademicStanding = "",
|
|
Level = r.Profile.PositionLevel?.Name,
|
|
DateStart = r.Profile.DateStart == null ? null : r.Profile.DateStart.Value.ToThaiShortDate(),
|
|
SalaryAmount = r.Profile.Salaries.Count() == 0 ? 0 :
|
|
r.Profile.Salaries.OrderByDescending(x => x.Order).FirstOrDefault().Amount,
|
|
InsigniaRecv = "",
|
|
InsigniaRecvDate = "",
|
|
InsigniaRequest = r.RequestInsignia.ShortName,
|
|
Remark = "",
|
|
Position = r.Profile.Position?.Name +
|
|
(r.Profile.PositionType == null ? null : " ประเภท" + r.Profile.PositionType?.Name) +
|
|
(r.Profile.PositionLevel == null ? null : " ระดับ" + r.Profile.PositionLevel?.Name) +
|
|
CRLF,
|
|
OCName = _organizationCommonRepository.GetOrganizationNameFullPath(r.Request.Organization.Id, false, false)
|
|
})
|
|
.Distinct()
|
|
.ToList();
|
|
|
|
var insignia_data = (from r in await _dbContext.Set<InsigniaRequestProfile>()
|
|
.Include(x => x.Profile)
|
|
.ThenInclude(x => x.Gender)
|
|
.Include(x => x.Profile)
|
|
.ThenInclude(x => x.Insignias)
|
|
.ThenInclude(x => x.Insignia)
|
|
.Include(x => x.Request)
|
|
.ThenInclude(x => x.Period)
|
|
.Include(x => x.Request)
|
|
.ThenInclude(x => x.Organization)
|
|
.Include(x => x.RequestInsignia)
|
|
.ThenInclude(x => x.InsigniaType)
|
|
.ToListAsync()
|
|
where r.Request.Period == period
|
|
&& r.IsApprove == true
|
|
&& r.RequestInsignia.InsigniaType != null
|
|
&& r.RequestInsignia.InsigniaType.Name != "เหรียญบำเหน็จในราชการ"
|
|
select new
|
|
{
|
|
InsigniaInitial = r.RequestInsignia.ShortName,
|
|
InsigniaName = r.RequestInsignia.Name,
|
|
ProfileId = r.Profile.Id,
|
|
FullName = $"",
|
|
ShowProfileId = Guid.Parse("00000000-0000-0000-0000-000000000000"),
|
|
Type = "",
|
|
AcademicStanding = "",
|
|
Level = "",
|
|
DateStart = "",
|
|
SalaryAmount = new double?(0),
|
|
InsigniaRecv = r.Profile.Insignias.Count() == 0 ? null :
|
|
(r.Profile.Insignias.OrderByDescending(x => x.Year).FirstOrDefault().Insignia == null ? null : r.Profile.Insignias.OrderByDescending(x => x.Year).FirstOrDefault().Insignia.ShortName),
|
|
InsigniaRecvDate = r.Profile.Insignias.Count() == 0 ? null :
|
|
(r.Profile.Insignias.OrderByDescending(x => x.Year).FirstOrDefault().DateAnnounce == null ? null : r.Profile.Insignias.OrderByDescending(x => x.Year).FirstOrDefault().DateAnnounce.Value.ToThaiShortDate()),
|
|
InsigniaRequest = "",
|
|
Remark = "",
|
|
Position = "",
|
|
OCName = _organizationCommonRepository.GetOrganizationNameFullPath(r.Request.Organization.Id, false, false)
|
|
})
|
|
.Distinct()
|
|
.ToList();
|
|
|
|
var data2 = teacher_data.Union(insignia_data).ToList();
|
|
return data2;
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
}
|