All checks were successful
Build & Deploy Insignia Service / build (push) Successful in 2m13s
1887 lines
101 KiB
C#
1887 lines
101 KiB
C#
using Amazon.S3.Model.Internal.MarshallTransformations;
|
|
using BMA.EHR.Application.Common.Interfaces;
|
|
using BMA.EHR.Application.Repositories.MessageQueue;
|
|
using BMA.EHR.Application.Responses;
|
|
using BMA.EHR.Domain.Extensions;
|
|
using BMA.EHR.Domain.Models.Commands.Core;
|
|
using BMA.EHR.Domain.Models.HR;
|
|
using BMA.EHR.Domain.Models.Insignias;
|
|
using BMA.EHR.Domain.Models.MetaData;
|
|
using BMA.EHR.Domain.Models.Organizations;
|
|
using BMA.EHR.Domain.Models.Retirement;
|
|
using BMA.EHR.Domain.Shared;
|
|
using Microsoft.AspNetCore.Hosting;
|
|
using Microsoft.AspNetCore.Http;
|
|
using Microsoft.AspNetCore.Http.Metadata;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Microsoft.Extensions.Configuration;
|
|
using Newtonsoft.Json;
|
|
using Newtonsoft.Json.Linq;
|
|
using System.Globalization;
|
|
using System.Net;
|
|
using System.Net.Http.Headers;
|
|
|
|
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 NotificationRepository _repositoryNoti;
|
|
private readonly InsigniaPeriodsRepository _repositoryInsignia;
|
|
private readonly IConfiguration _configuration;
|
|
private readonly string CRLF = "\r\n";
|
|
|
|
private readonly UserProfileRepository _userProfileRepository;
|
|
private readonly IHttpContextAccessor _httpContextAccessor;
|
|
|
|
#endregion
|
|
|
|
#region " Constructor and Destructor "
|
|
|
|
public InsigniaReportRepository(IApplicationDBContext dbContext,
|
|
OrganizationCommonRepository organizationCommonRepository,
|
|
InsigniaPeriodsRepository repositoryInsignia,
|
|
NotificationRepository repositoryNoti,
|
|
IWebHostEnvironment hostEnvironment,
|
|
IConfiguration configuration,
|
|
UserProfileRepository userProfileRepository,
|
|
IHttpContextAccessor httpContextAccessor)
|
|
{
|
|
_dbContext = dbContext;
|
|
_hostingEnvironment = hostEnvironment;
|
|
_repositoryNoti = repositoryNoti;
|
|
_organizationCommonRepository = organizationCommonRepository;
|
|
_repositoryInsignia = repositoryInsignia;
|
|
_userProfileRepository = userProfileRepository;
|
|
_httpContextAccessor = httpContextAccessor;
|
|
_configuration = configuration;
|
|
}
|
|
|
|
#endregion
|
|
|
|
private string? AccessToken => _httpContextAccessor?.HttpContext?.Request.Headers["Authorization"];
|
|
|
|
#region " Methods "
|
|
|
|
// private string GetPositionByYear(string profileID, int year)
|
|
// {
|
|
// using (var ctx = new ApplicationDbContext())
|
|
// {
|
|
// var ret = (from x in ctx.ProfileSalaryPositions.AsQueryable()
|
|
// where x.IdNavigation.ProfileId == profileID &&
|
|
// x.IdNavigation.SalaryDateAnnounce.Value.Year == year
|
|
// orderby x.IdNavigation.Order descending
|
|
// select x)
|
|
// .Include(x => x.Position)
|
|
// .FirstOrDefault();
|
|
|
|
// if (ret != null)
|
|
// return ret.Position.Name;
|
|
// else
|
|
// return "ไม่ระบุ";
|
|
// }
|
|
// }
|
|
|
|
// private string GetPositionLevelByYear(string profileID, int year)
|
|
// {
|
|
// using (var ctx = new ApplicationDbContext())
|
|
// {
|
|
// var ret = (from x in ctx.ProfileSalaryPositionLevels.AsQueryable()
|
|
// where x.IdNavigation.ProfileId == profileID &&
|
|
// x.IdNavigation.SalaryDateAnnounce.Value.Year == year
|
|
// orderby x.IdNavigation.Order descending
|
|
// select x)
|
|
// .Include(x => x.PositionLevel)
|
|
// .FirstOrDefault();
|
|
|
|
// if (ret != null)
|
|
// return ret.PositionLevel.Name;
|
|
// else
|
|
// return "ไม่ระบุ";
|
|
// }
|
|
// }
|
|
|
|
// private string GetPositionTypeByYear(string profileID, int year)
|
|
// {
|
|
// using (var ctx = new ApplicationDbContext())
|
|
// {
|
|
// var ret = (from x in ctx.ProfileSalaryPositionTypes.AsQueryable()
|
|
// where x.IdNavigation.ProfileId == profileID &&
|
|
// x.IdNavigation.SalaryDateAnnounce.Value.Year == year
|
|
// orderby x.IdNavigation.Order descending
|
|
// select x)
|
|
// .Include(x => x.PositionType)
|
|
// .FirstOrDefault();
|
|
|
|
// if (ret != null)
|
|
// return ret.PositionType.Name;
|
|
// else
|
|
// return "ไม่ระบุ";
|
|
// }
|
|
// }
|
|
|
|
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> GetNameInsigniaNote(Guid id)
|
|
{
|
|
var note = await _dbContext.Set<InsigniaNote>()
|
|
.FirstOrDefaultAsync(x => x.Id == id);
|
|
if (note == null)
|
|
throw new Exception(GlobalMessages.InsigniaPeriodNotFound);
|
|
string name = note.Name.ToString().ToThaiNumber();
|
|
return name;
|
|
}
|
|
|
|
public async Task<dynamic> GetYearInsigniaNote(Guid id)
|
|
{
|
|
var note = await _dbContext.Set<InsigniaNote>()
|
|
.FirstOrDefaultAsync(x => x.Id == id);
|
|
if (note == null)
|
|
throw new Exception(GlobalMessages.InsigniaPeriodNotFound);
|
|
string thaiYear = note.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> GetProfileInsignia(Guid id)
|
|
{
|
|
|
|
|
|
var profile = (from r in await _dbContext.Set<Profile>()
|
|
.Include(x => x.Prefix)
|
|
.Include(x => x.Position)
|
|
.ToListAsync()
|
|
where r.Id == id
|
|
select new
|
|
{
|
|
FullName = $"{r.Prefix?.Name}{r.FirstName} {r.LastName}",
|
|
Position = r.Position == null ? "-" : r.Position.Name,
|
|
OCName = r.OcId == null ? "-" : _organizationCommonRepository.GetOrganizationNameFullPath(r.OcId.Value, false, false),
|
|
BirthDate = r.BirthDate.ToThaiFullDate().ToString().ToThaiNumber(),
|
|
DateAppoint = !string.IsNullOrEmpty(r.DateAppoint.ToString()) ? DateTime.Parse((r.DateAppoint.Value.AddYears(25).AddDays(-1)).ToString()).ToThaiFullDate().ToString().ToThaiNumber() : string.Empty,
|
|
})
|
|
.FirstOrDefault();
|
|
if (profile == null)
|
|
throw new Exception(GlobalMessages.DataNotFound);
|
|
|
|
return profile;
|
|
}
|
|
|
|
//39-แบบ ขร1 บัญชีแสดงจำนวนชั้นตราเครื่องราชฯ ข้าราชการ ชั้นสายสะพาย
|
|
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.Id == period.Id)
|
|
.Where(x => x.IsApprove == true)
|
|
.Where(x => x.Status == "PENDING")
|
|
.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,
|
|
Gendor = x.Gender ?? "",// _userProfileRepository.GetOfficerProfileById(x.ProfileId, AccessToken).Gender ?? "",
|
|
RequestInsigniaName = x.RequestInsignia.Name,
|
|
OcId = x.Request.OrganizationId
|
|
})
|
|
.ToListAsync();
|
|
|
|
var insignia = (from r in data_insignia
|
|
group r by new { OcId = r.OcId } into g
|
|
select new
|
|
{
|
|
RowNo = 1,
|
|
DepartmentName = _userProfileRepository.GetOc(g.Key.OcId, 0, AccessToken).Root,// _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),
|
|
Remark = "",
|
|
}).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.Id == period.Id)
|
|
.Where(x => x.IsApprove == true)
|
|
.Where(x => x.Status == "PENDING")
|
|
.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,
|
|
Gendor = x.Gender ?? "", //_userProfileRepository.GetOfficerProfileById(x.ProfileId, AccessToken).Gender ?? "",
|
|
RequestInsigniaName = x.RequestInsignia.Name,
|
|
OcId = x.Request.OrganizationId
|
|
})
|
|
.ToListAsync();
|
|
|
|
var insignia = (from r in data_insignia
|
|
group r by new { OcId = r.OcId } into g
|
|
select new
|
|
{
|
|
RowNo = 1,
|
|
DepartmentName = _userProfileRepository.GetOc(g.Key.OcId, 0, AccessToken).Root,// _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),
|
|
Remark = "",
|
|
}).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),
|
|
Remark = "",
|
|
};
|
|
}
|
|
|
|
//40-แบบ ขร2 บัญชีแสดงจำนวนชั้นตราเครื่องราชฯ ข้าราชการ ชั้นต่ำกว่าสายสะพาย
|
|
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.Id == period.Id)
|
|
.Where(x => x.IsApprove == true)
|
|
.Where(x => x.Status == "PENDING")
|
|
.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,
|
|
Gendor = x.Gender ?? "", //_userProfileRepository.GetOfficerProfileById(x.ProfileId, AccessToken).Gender ?? "",
|
|
RequestInsigniaName = x.RequestInsignia.Name,
|
|
OcId = x.Request.OrganizationId
|
|
})
|
|
.ToListAsync();
|
|
|
|
var insignia = (from r in data_insignia
|
|
group r by new { OcId = r.OcId } into g
|
|
select new
|
|
{
|
|
RowNo = 1,
|
|
DepartmentName = _userProfileRepository.GetOc(g.Key.OcId, 0, AccessToken).Root,// _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),
|
|
Remark = "",
|
|
}).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.Id == period.Id)
|
|
.Where(x => x.IsApprove == true)
|
|
.Where(x => x.Status == "PENDING")
|
|
.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,
|
|
Gendor = x.Gender ?? "", //_userProfileRepository.GetOfficerProfileById(x.ProfileId, AccessToken).Gender ?? "",
|
|
RequestInsigniaName = x.RequestInsignia.Name,
|
|
OcId = x.Request.OrganizationId
|
|
})
|
|
.ToListAsync();
|
|
|
|
var insignia = (from r in data_insignia
|
|
group r by new { OcId = r.OcId } into g
|
|
select new
|
|
{
|
|
RowNo = 1,
|
|
DepartmentName = _userProfileRepository.GetOc(g.Key.OcId, 0, AccessToken).Root,// _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),
|
|
Remark = "",
|
|
}).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),
|
|
Remark = "",
|
|
};
|
|
}
|
|
|
|
//41-แบบ ขร3 บัญชีรายชื่อข้าราชการผู้ขอพระราชทานเครื่องราชฯ
|
|
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.Status == "PENDING"
|
|
&& r.RequestInsignia.InsigniaType != null
|
|
&& r.RequestInsignia.InsigniaType.Name != "เหรียญบำเหน็จในราชการ"
|
|
select new
|
|
{
|
|
InsigniaInitial = r.RequestInsignia.ShortName,
|
|
InsigniaName = r.RequestInsignia.Name,
|
|
ProfileId = r.ProfileId,
|
|
FullName = $"{r.Prefix}{r.FirstName} {r.LastName}",
|
|
Gender = r.Gender ?? "",
|
|
Male = r.Gender == null ? 0 : (r.Gender == "ชาย" ? 1 : 0),
|
|
Female = r.Gender == null ? 0 : (r.Gender == "หญิง" ? 1 : 0),
|
|
InsigniaId = r.RequestInsignia.Id,
|
|
OCName = _userProfileRepository.GetOc(r.Request.OrganizationId, 0, AccessToken).Root,
|
|
// _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();
|
|
|
|
var tmpOC = data.First().OCName;
|
|
|
|
var sumData = (from x in data
|
|
group x by x.InsigniaName into grp
|
|
select new
|
|
{
|
|
InsigniaName = grp.Key,
|
|
SumMale = grp.Sum(x => x.Male),
|
|
SumFemale = grp.Sum(x => x.Female)
|
|
}).ToList();
|
|
|
|
var ret = new List<dynamic>();
|
|
|
|
foreach (var item in data)
|
|
{
|
|
var p = new
|
|
{
|
|
InsigniaInitial = item.InsigniaInitial,
|
|
InsigniaName = item.InsigniaName,
|
|
ProfileId = item.ProfileId,
|
|
FullName = item.FullName,
|
|
Gender = item.Gender,
|
|
Male = item.Male,
|
|
Female = item.Female,
|
|
InsigniaId = item.InsigniaId,
|
|
OCName = item.OCName,
|
|
SumMale = sumData.FirstOrDefault(x => x.InsigniaName == item.InsigniaName) == null ? 0 : sumData.FirstOrDefault(x => x.InsigniaName == item.InsigniaName)!.SumMale,
|
|
SumFemale = sumData.FirstOrDefault(x => x.InsigniaName == item.InsigniaName) == null ? 0 : sumData.FirstOrDefault(x => x.InsigniaName == item.InsigniaName)!.SumFemale,
|
|
};
|
|
ret.Add(p);
|
|
}
|
|
|
|
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 = "",
|
|
Male = 0,
|
|
Female = 0,
|
|
InsigniaId = ins.InsigniaId,
|
|
// OCName = ""
|
|
OCName = tmpOC,
|
|
SumMale = sumData.FirstOrDefault(x => x.InsigniaName == ins.InsigniaName) == null ? 0 : sumData.FirstOrDefault(x => x.InsigniaName == ins.InsigniaName)!.SumMale,
|
|
SumFemale = sumData.FirstOrDefault(x => x.InsigniaName == ins.InsigniaName) == null ? 0 : sumData.FirstOrDefault(x => x.InsigniaName == ins.InsigniaName)!.SumFemale,
|
|
};
|
|
ret.Add(p);
|
|
}
|
|
}
|
|
|
|
return ret;
|
|
|
|
}
|
|
public async Task<dynamic> GetKhr3ReportV2(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.Status == "PENDING"
|
|
// && 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,
|
|
// Male = r.Profile.Gender == null ? 0 : (r.Profile.Gender.Name == "ชาย" ? 1 : 0),
|
|
// Female = r.Profile.Gender == null ? 0 : (r.Profile.Gender.Name == "หญิง" ? 1 : 0),
|
|
// 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();
|
|
|
|
//// var tmpOC = data.First().OCName;
|
|
|
|
//// var sumData = (from x in data
|
|
//// group x by x.InsigniaName into grp
|
|
//// select new
|
|
//// {
|
|
//// InsigniaName = grp.Key,
|
|
//// SumMale = grp.Sum(x => x.Male),
|
|
//// SumFemale = grp.Sum(x => x.Female)
|
|
//// }).ToList();
|
|
|
|
//// var ret = new List<dynamic>();
|
|
|
|
//// foreach (var item in data)
|
|
//// {
|
|
//// var p = new
|
|
//// {
|
|
//// InsigniaInitial = item.InsigniaInitial,
|
|
//// InsigniaName = item.InsigniaName,
|
|
//// ProfileId = item.ProfileId,
|
|
//// FullName = item.FullName,
|
|
//// Gender = item.Gender,
|
|
//// Male = item.Male,
|
|
//// Female = item.Female,
|
|
//// InsigniaId = item.InsigniaId,
|
|
//// OCName = item.OCName,
|
|
//// SumMale = sumData.FirstOrDefault(x => x.InsigniaName == item.InsigniaName) == null ? 0 : sumData.FirstOrDefault(x => x.InsigniaName == item.InsigniaName)!.SumMale,
|
|
//// SumFemale = sumData.FirstOrDefault(x => x.InsigniaName == item.InsigniaName) == null ? 0 : sumData.FirstOrDefault(x => x.InsigniaName == item.InsigniaName)!.SumFemale,
|
|
//// };
|
|
//// ret.Add(p);
|
|
//// }
|
|
|
|
//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 = "",
|
|
// Male = 0,
|
|
// Female = 0,
|
|
// InsigniaId = ins.InsigniaId,
|
|
// OCName = ""
|
|
// // OCName = tmpOC,
|
|
// // SumMale = sumData.FirstOrDefault(x => x.InsigniaName == ins.InsigniaName) == null ? 0 : sumData.FirstOrDefault(x => x.InsigniaName == ins.InsigniaName)!.SumMale,
|
|
// // SumFemale = sumData.FirstOrDefault(x => x.InsigniaName == ins.InsigniaName) == null ? 0 : sumData.FirstOrDefault(x => x.InsigniaName == ins.InsigniaName)!.SumFemale,
|
|
// };
|
|
// data.Add(p);
|
|
// }
|
|
//}
|
|
|
|
//var sumData = (from x in data
|
|
// group x by x.InsigniaName into grp
|
|
// select new
|
|
// {
|
|
// InsigniaName = grp.Key,
|
|
// SumMale = grp.Sum(x => x.Male),
|
|
// SumFemale = grp.Sum(x => x.Female),
|
|
// Data = grp.ToList(),
|
|
// }).ToList();
|
|
|
|
//return sumData;
|
|
|
|
return new { };
|
|
}
|
|
|
|
//42-แบบ ขร4 บัญชีแสดงคุณสมบัติของข้าราชการซึ่งเสนอขอเครื่องราชฯ
|
|
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.Status == "PENDING"
|
|
&& r.RequestInsignia.InsigniaType != null
|
|
&& r.RequestInsignia.InsigniaType.Name != "เหรียญบำเหน็จในราชการ"
|
|
select new
|
|
{
|
|
InsigniaInitial = r.RequestInsignia.ShortName,
|
|
InsigniaName = r.RequestInsignia.Name,
|
|
ProfileId = r.ProfileId,
|
|
CitizenId = r.CitizenId.ToThaiNumber(), // r.Profile.CitizenId == null ? null : r.Profile.CitizenId.ToThaiNumber(),
|
|
FullName = $"{r.Prefix}{r.FirstName} {r.LastName}",
|
|
// $"{r.Profile.Prefix?.Name}{r.Profile.FirstName} {r.Profile.LastName}",
|
|
ShowProfileId = r.ProfileId,
|
|
Type = r.PosTypeName,
|
|
AcademicStanding = "",
|
|
Level = r.PosLevelName,
|
|
DateStart = r.DateAppoint.Value.ToThaiShortDate().ToThaiNumber(),
|
|
SalaryAmount = r.Amount.Value.ToNumericText().ToThaiNumber(),
|
|
InsigniaRecv = "",
|
|
InsigniaRecvDate = "",
|
|
InsigniaRequest = r.RequestInsignia.ShortName,
|
|
Remark = "",
|
|
Position = (r.Position ?? "") +
|
|
(" ประเภท" + r.PosTypeName) +
|
|
(" ระดับ" + r.PosLevelName) +
|
|
(" สังกัด" + CRLF + _userProfileRepository.GetOc(r.Request.OrganizationId, 0, AccessToken).Root)
|
|
,
|
|
OCName = _userProfileRepository.GetOc(r.Request.OrganizationId, 0, AccessToken).Root,
|
|
})
|
|
.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.Status == "PENDING"
|
|
// && r.RequestInsignia.InsigniaType != null
|
|
// && r.RequestInsignia.InsigniaType.Name != "เหรียญบำเหน็จในราชการ"
|
|
// select new
|
|
// {
|
|
// InsigniaInitial = r.RequestInsignia.ShortName,
|
|
// InsigniaName = r.RequestInsignia.Name,
|
|
// ProfileId = r.Profile.Id,
|
|
// CitizenId = r.Profile.CitizenId,
|
|
// 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 = "",
|
|
// // Position = GetPositionByYear(r.Profile.Id, r.Request.Period.Year) + " ประเภท" +
|
|
// // GetPositionTypeByYear(r.Profile.Id, r.Request.Period.Year) + " ระดับ" +
|
|
// // GetPositionLevelByYear(r.Profile.Id, r.Request.Period.Year),
|
|
// OCName = _organizationCommonRepository.GetOrganizationNameFullPath(r.Request.Organization.Id, false, false)
|
|
// })
|
|
// .Distinct()
|
|
// .ToList();
|
|
|
|
// var data2 = teacher_data.Union(insignia_data).ToList();
|
|
return teacher_data;
|
|
}
|
|
|
|
//44-บัญชีแสดงจำนวนชั้นตราเครื่องราชฯ
|
|
public async Task<dynamic> GetSummaryCoinReport(Guid id, string type = null, int node = -1, Guid nodeId = default)
|
|
{
|
|
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.Id == period.Id)
|
|
.Where(x => x.IsApprove == true)
|
|
.Where(x => x.Status == "PENDING")
|
|
.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,
|
|
Gendor = x.Gender, //_userProfileRepository.GetOfficerProfileById(x.ProfileId, AccessToken).Gender ?? "",
|
|
RequestInsigniaName = x.RequestInsignia.Name,
|
|
InsigniaInitial = $"{x.RequestInsignia.Name}({x.RequestInsignia.ShortName})",
|
|
OcId = x.Request.OrganizationId
|
|
})
|
|
.ToListAsync();*/
|
|
var data_insigniaQuery = _dbContext.Set<InsigniaRequestProfile>()
|
|
.Where(x => x.Request.Period.Id == period.Id)
|
|
.Where(x => x.IsApprove == true)
|
|
.Where(x => x.Status == "PENDING")
|
|
.Where(x => x.RequestInsignia.InsigniaType != null)
|
|
.Where(x => x.RequestInsignia.InsigniaType.Name == "เหรียญบำเหน็จในราชการ");
|
|
|
|
if (type == "officer")
|
|
{
|
|
data_insigniaQuery = data_insigniaQuery.Where(r => r.ProfileType == "officer");
|
|
}
|
|
else if (type == "employee")
|
|
{
|
|
data_insigniaQuery = data_insigniaQuery.Where(r => r.ProfileType == "employee");
|
|
}
|
|
|
|
switch (node)
|
|
{
|
|
case 0:
|
|
data_insigniaQuery = data_insigniaQuery.Where(r => r.RootDnaId == nodeId);
|
|
break;
|
|
|
|
case 1:
|
|
data_insigniaQuery = data_insigniaQuery.Where(r => r.Child1DnaId == nodeId);
|
|
break;
|
|
|
|
case 2:
|
|
data_insigniaQuery = data_insigniaQuery.Where(r => r.Child2DnaId == nodeId);
|
|
break;
|
|
|
|
case 3:
|
|
data_insigniaQuery = data_insigniaQuery.Where(r => r.Child3DnaId == nodeId);
|
|
break;
|
|
|
|
case 4:
|
|
data_insigniaQuery = data_insigniaQuery.Where(r => r.Child4DnaId == nodeId);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
var data = await data_insigniaQuery
|
|
.Select(x => new
|
|
{
|
|
Gendor = x.Gender, // Gender as is, directly from x.Gender
|
|
RequestInsigniaName = x.RequestInsignia.Name, // Name of the Insignia
|
|
InsigniaInitial = $"{x.RequestInsignia.Name}({x.RequestInsignia.ShortName})", // Insignia's full name and short name
|
|
OcId = x.Request.OrganizationId // Organization ID
|
|
})
|
|
.ToListAsync();
|
|
var org = _userProfileRepository.GetOc(nodeId, node, AccessToken);
|
|
var organizationName = $"{(!string.IsNullOrEmpty(org.Child4) ? org.Child4 + "/" : "")}{(!string.IsNullOrEmpty(org.Child3) ? org.Child3 + "/" : "")}{(!string.IsNullOrEmpty(org.Child2) ? org.Child2 + "/" : "")}{(!string.IsNullOrEmpty(org.Child1) ? org.Child1 + "/" : "")}{org.Root ?? ""}";
|
|
var insignia = (from r in data
|
|
group r by new { OcId = r.OcId, InsigniaInitial = r.InsigniaInitial } into g
|
|
select new
|
|
{
|
|
RowNo = 1,
|
|
DepartmentName = organizationName,
|
|
//_userProfileRepository.GetOc(g.Key.OcId, 0, AccessToken).Root,
|
|
//_organizationCommonRepository.GetOrganizationNameFullPath(g.Key.OcId, false, false),
|
|
InsigniaInitial = g.Key.InsigniaInitial,
|
|
G1Male = g.Sum(x => x.Gendor == "ชาย" && x.RequestInsigniaName == "เหรียญจักรพรรดิมาลา" ? 1 : 0).ToString().ToThaiNumber(),
|
|
G1Female = g.Sum(x => x.Gendor == "หญิง" && x.RequestInsigniaName == "เหรียญจักรพรรดิมาลา" ? 1 : 0).ToString().ToThaiNumber(),
|
|
G2Male = g.Sum(x => x.Gendor == "ชาย" ? 1 : 0).ToString().ToThaiNumber(),
|
|
G2Female = g.Sum(x => x.Gendor == "หญิง" ? 1 : 0).ToString().ToThaiNumber(),
|
|
Remark = "",
|
|
}).ToList();
|
|
|
|
return insignia;
|
|
}
|
|
public async Task<dynamic> GetSummaryTotalCoinReport(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.Id == period.Id)
|
|
.Where(x => x.IsApprove == true)
|
|
.Where(x => x.Status == "PENDING")
|
|
.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,
|
|
Gendor = x.Gender, // _userProfileRepository.GetOfficerProfileById(x.ProfileId, AccessToken).Gender ?? "",
|
|
RequestInsigniaName = x.RequestInsignia.Name,
|
|
OcId = x.Request.OrganizationId
|
|
})
|
|
.ToListAsync();
|
|
|
|
var insignia = (from r in data_insignia
|
|
group r by new { OcId = r.OcId } into g
|
|
select new
|
|
{
|
|
RowNo = 1,
|
|
DepartmentName = _userProfileRepository.GetOc(g.Key.OcId, 0, AccessToken)?.Root ?? "-", //_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 == "ชาย" ? 1 : 0),
|
|
G2Female = g.Sum(x => x.Gendor == "หญิง" ? 1 : 0),
|
|
Remark = "",
|
|
}).ToList();
|
|
|
|
return new
|
|
{
|
|
G1Male = insignia.Sum(x => x.G1Male).ToString().ToThaiNumber(),
|
|
G1Female = insignia.Sum(x => x.G1Female).ToString().ToThaiNumber(),
|
|
G2Male = insignia.Sum(x => x.G2Male).ToString().ToThaiNumber(),
|
|
G2Female = insignia.Sum(x => x.G2Female).ToString().ToThaiNumber(),
|
|
Remark = "",
|
|
};
|
|
|
|
//return new { };
|
|
}
|
|
|
|
//45-บัญชีแสดงรายชื่อผู้ขอพระราชทานเหรียญจักรพรรดิมาลา
|
|
public async Task<dynamic> GetCoinReport(Guid id, string type = null, int node = -1, Guid nodeId = default)
|
|
{
|
|
var period = await _dbContext.Set<InsigniaPeriod>()
|
|
.FirstOrDefaultAsync(x => x.Id == id);
|
|
if (period == null)
|
|
throw new Exception(GlobalMessages.InsigniaPeriodNotFound);
|
|
|
|
var gender = (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.Status == "PENDING"
|
|
&& r.RequestInsignia.InsigniaType != null
|
|
&& r.RequestInsignia.InsigniaType.Name != "เหรียญบำเหน็จในราชการ"
|
|
select new
|
|
{
|
|
Male = r.Gender == "ชาย" ? 1 : 0,
|
|
Female = r.Gender == "หญิง" ? 1 : 0,
|
|
})
|
|
.Distinct()
|
|
.ToList();
|
|
var dataQuery = _dbContext.Set<InsigniaRequestProfile>()
|
|
.Include(x => x.Request)
|
|
.ThenInclude(x => x.Period)
|
|
.Include(x => x.Request)
|
|
/*.ThenInclude(x => x.Organization)*/
|
|
.Include(x => x.RequestInsignia)
|
|
.ThenInclude(x => x.InsigniaType)
|
|
.Where(r => r.Request.Period == period
|
|
&& r.IsApprove == true
|
|
&& r.Status == "PENDING"
|
|
&& r.RequestInsignia.InsigniaType != null
|
|
&& r.RequestInsignia.InsigniaType.Name != "เหรียญบำเหน็จในราชการ");
|
|
|
|
if (type == "officer")
|
|
{
|
|
dataQuery = dataQuery.Where(r => r.ProfileType == "officer");
|
|
}
|
|
else if (type == "employee")
|
|
{
|
|
dataQuery = dataQuery.Where(r => r.ProfileType == "employee");
|
|
}
|
|
|
|
switch (node)
|
|
{
|
|
case 0:
|
|
dataQuery = dataQuery.Where(r => r.RootDnaId == nodeId);
|
|
break;
|
|
|
|
case 1:
|
|
dataQuery = dataQuery.Where(r => r.Child1DnaId == nodeId);
|
|
break;
|
|
|
|
case 2:
|
|
dataQuery = dataQuery.Where(r => r.Child2DnaId == nodeId);
|
|
break;
|
|
|
|
case 3:
|
|
dataQuery = dataQuery.Where(r => r.Child3DnaId == nodeId);
|
|
break;
|
|
|
|
case 4:
|
|
dataQuery = dataQuery.Where(r => r.Child4DnaId == nodeId);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
|
|
// Grouping by ProfileId and InsigniaId, and calculating the sum for Male and Female
|
|
var data = await dataQuery
|
|
.GroupBy(r => new
|
|
{
|
|
r.RequestInsignia.ShortName,
|
|
r.RequestInsignia.Name,
|
|
r.ProfileId,
|
|
r.Prefix,
|
|
r.FirstName,
|
|
r.LastName,
|
|
r.Gender,
|
|
r.Root,
|
|
r.RootId,
|
|
r.Child1,
|
|
r.Child1Id,
|
|
r.Child2,
|
|
r.Child2Id,
|
|
r.Child3,
|
|
r.Child3Id,
|
|
r.Child4,
|
|
r.Child4Id,
|
|
r.RequestInsignia.Id,
|
|
r.Request.OrganizationId
|
|
})
|
|
.Select(group => new
|
|
{
|
|
InsigniaInitial = group.Key.ShortName,
|
|
InsigniaName = group.Key.Name,
|
|
ProfileId = group.Key.ProfileId,
|
|
FullName = $"{group.Key.Prefix}{group.Key.FirstName} {group.Key.LastName}",
|
|
Gender = group.Key.Gender,
|
|
Root = group.Key.Root ?? "",
|
|
RootId = group.Key.RootId,
|
|
Child1 = group.Key.Child1 ?? "",
|
|
Child1Id = group.Key.Child1Id,
|
|
Child2 = group.Key.Child2 ?? "",
|
|
Child2Id = group.Key.Child2Id,
|
|
Child3 = group.Key.Child3 ?? "",
|
|
Child3Id = group.Key.Child3Id,
|
|
Child4 = group.Key.Child4 ?? "",
|
|
Child4Id = group.Key.Child4Id,
|
|
Male = group.Count(r => r.Gender == "Male"), // Count male entries
|
|
Female = group.Count(r => r.Gender == "Female"), // Count female entries
|
|
InsigniaId = group.Key.Id,
|
|
OCName = _userProfileRepository.GetOc(group.Key.OrganizationId, 0, AccessToken).Root
|
|
})
|
|
.Distinct()
|
|
.ToListAsync();
|
|
|
|
// 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 : 50 - (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 = "",
|
|
Root = "",
|
|
RootId = (Guid?)Guid.Parse("00000000-0000-0000-0000-000000000000"),
|
|
Child1 = "",
|
|
Child1Id = (Guid?)Guid.Parse("00000000-0000-0000-0000-000000000000"),
|
|
Child2 = "",
|
|
Child2Id = (Guid?)Guid.Parse("00000000-0000-0000-0000-000000000000"),
|
|
Child3 = "",
|
|
Child3Id = (Guid?)Guid.Parse("00000000-0000-0000-0000-000000000000"),
|
|
Child4 = "",
|
|
Child4Id = (Guid?)Guid.Parse("00000000-0000-0000-0000-000000000000"),
|
|
Male = 0,
|
|
Female = 0,
|
|
InsigniaId = ins.InsigniaId,
|
|
OCName = ""
|
|
};
|
|
data.Add(p);
|
|
}
|
|
}
|
|
return data.OrderBy(x => x.InsigniaName);
|
|
}
|
|
|
|
//46-ประวัติสำหรับการเสนอขอพระราชทานเหรียญจักรพรรดิมาลา
|
|
public async Task<dynamic> GetHistorySalaryReport(Guid id)
|
|
{
|
|
//var profile = await _dbContext.Set<Profile>()
|
|
// .FirstOrDefaultAsync(x => x.Id == id);
|
|
|
|
var profile = _userProfileRepository.GetOfficerProfileById(id, AccessToken);
|
|
|
|
if (profile == null)
|
|
throw new Exception(GlobalMessages.DataNotFound);
|
|
|
|
//var positions = await _dbContext.Set<PositionPath>()
|
|
// .ToListAsync();
|
|
//var organizations = await _dbContext.Set<OrganizationEntity>()
|
|
// .Include(x => x.Parent)
|
|
// .ThenInclude(x => x.OrganizationOrganization)
|
|
// .ToListAsync();
|
|
|
|
var s_data = profile.ProfileSalary.ToList()
|
|
.Select(r => new
|
|
{
|
|
Date = r.Date,
|
|
DateTh = r.Date == null ? "-" : r.Date.Value.ToThaiShortDate().ToString().ToThaiNumber(),
|
|
Position = r.Position,
|
|
OCName = "",
|
|
Age = r.Date == null ? "-" : (r.Date.Value.Year - profile.BirthDate.Year).ToNumericText().ToThaiNumber(),
|
|
Amount = r.Amount == null ? null : r.Amount.Value.ToNumericText().ToThaiNumber(),
|
|
Remark = ""
|
|
})
|
|
.Distinct()
|
|
.OrderBy(x => x.Date)
|
|
.ToList();
|
|
return s_data;
|
|
}
|
|
|
|
public async Task<dynamic> GeInsigniaRequestProfiles(Guid id)
|
|
{
|
|
var profile = await _dbContext.Set<InsigniaRequestProfile>()
|
|
.Where(x => x.Id == id)
|
|
.Select(x => new
|
|
{
|
|
Fullname = $"{x.Prefix}{x.FirstName} {x.LastName}",
|
|
Position = x.Position ?? "",
|
|
Oc = (x.Child4 == null ? "" : x.Child4 + " ") +
|
|
(x.Child3 == null ? "" : x.Child3 + " ") +
|
|
(x.Child2 == null ? "" : x.Child2 + " ") +
|
|
(x.Child1 == null ? "" : x.Child1 + " ") +
|
|
(x.Root == null ? "" : x.Root),
|
|
BirthDate = x.BirthDate == null ? "" : x.BirthDate.Value.ToThaiShortDate().ToString().ToThaiNumber(),
|
|
DateAppoint = x.DateAppoint == null ? "" : x.DateAppoint.Value.ToThaiShortDate().ToString().ToThaiNumber(),
|
|
ProfileId = x.ProfileId
|
|
})
|
|
.FirstOrDefaultAsync();
|
|
|
|
if (profile == null)
|
|
throw new Exception(GlobalMessages.DataNotFound);
|
|
|
|
var profileSalarys = await _userProfileRepository.GetProfileSalaryById(profile.ProfileId, AccessToken);
|
|
var salarys = profileSalarys.Select(x => new
|
|
{
|
|
DateAffect = x.DateAffect == null ? "" : x.DateAffect.ToThaiShortDate().ToString().ToThaiNumber(),
|
|
Position = x.Position ?? "",
|
|
Root = x.Root,
|
|
Child1 = x.Child1,
|
|
Child2 = x.Child2,
|
|
Child3 = x.Child3,
|
|
Child4 = x.Child4,
|
|
Oc = (x.Child4 == null ? "" : x.Child4 + " ") +
|
|
(x.Child3 == null ? "" : x.Child3 + " ") +
|
|
(x.Child2 == null ? "" : x.Child2 + " ") +
|
|
(x.Child1 == null ? "" : x.Child1 + " ") +
|
|
(x.Root == null ? "" : x.Root),
|
|
Age = x.Age == null ? "" : x.Age.ToString().ToThaiNumber(),
|
|
Amount = x.Amount == null ? "" : x.Amount.ToString("N0", new CultureInfo("th-TH")).ToThaiNumber(),
|
|
Remark = x.Remark == null ? "" : x.Remark.ToThaiNumber(),
|
|
}).ToList();
|
|
|
|
var result = new
|
|
{
|
|
profile.Fullname,
|
|
profile.Position,
|
|
profile.Oc,
|
|
profile.BirthDate,
|
|
profile.DateAppoint,
|
|
Salarys = salarys
|
|
};
|
|
return result;
|
|
}
|
|
|
|
//47-บัญชีระดับผลการประเมินผลการปฏิบัติราชการในรอบ 5 ปี
|
|
public async Task<dynamic> GetEvaluationResultReport(Guid id, string type = null, int node = -1, Guid nodeId = default)
|
|
{
|
|
var period = await _dbContext.Set<InsigniaPeriod>()
|
|
.FirstOrDefaultAsync(x => x.Id == id);
|
|
if (period == null)
|
|
throw new Exception(GlobalMessages.InsigniaPeriodNotFound);
|
|
|
|
var data_insigniaQuery = _dbContext.Set<InsigniaRequestProfile>()
|
|
.Where(x => x.Request.Period.Id == period.Id)
|
|
.Where(x => x.IsApprove == true)
|
|
.Where(x => x.Status == "PENDING")
|
|
.Where(x => x.RequestInsignia.InsigniaType != null);
|
|
/*.Where(x => x.RequestInsignia.InsigniaType.Name == "เหรียญบำเหน็จในราชการ");*/
|
|
if (type == "officer")
|
|
{
|
|
data_insigniaQuery = data_insigniaQuery.Where(r => r.ProfileType == "officer");
|
|
}
|
|
else if (type == "employee")
|
|
{
|
|
data_insigniaQuery = data_insigniaQuery.Where(r => r.ProfileType == "employee");
|
|
}
|
|
|
|
|
|
switch (node)
|
|
{
|
|
case 0:
|
|
data_insigniaQuery = data_insigniaQuery.Where(r => r.RootDnaId == nodeId);
|
|
break;
|
|
|
|
case 1:
|
|
data_insigniaQuery = data_insigniaQuery.Where(r => r.Child1DnaId == nodeId);
|
|
break;
|
|
|
|
case 2:
|
|
data_insigniaQuery = data_insigniaQuery.Where(r => r.Child2DnaId == nodeId);
|
|
break;
|
|
|
|
case 3:
|
|
data_insigniaQuery = data_insigniaQuery.Where(r => r.Child3DnaId == nodeId);
|
|
break;
|
|
|
|
case 4:
|
|
data_insigniaQuery = data_insigniaQuery.Where(r => r.Child4DnaId == nodeId);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
var data = await data_insigniaQuery
|
|
.Select(x => new
|
|
{
|
|
ProfileId = x.ProfileId,
|
|
FullName = $"{x.Prefix}{x.FirstName} {x.LastName}",
|
|
RequestInsigniaName = x.RequestInsignia.Name, // Name of the Insignia
|
|
Reason = x.Reason,
|
|
})
|
|
.ToListAsync();
|
|
|
|
var seq = 1;
|
|
var resultList = new List<object>();
|
|
foreach (var d in data)
|
|
{
|
|
var _baseAPI = _configuration["API"];
|
|
var _apiUrl = $"{_baseAPI}/org/unauthorize/calculateEvaluation/{type}";
|
|
using (var _client = new HttpClient())
|
|
{
|
|
_client.DefaultRequestHeaders.Add("api-key", _configuration["API_KEY"]);
|
|
var _req = new HttpRequestMessage(HttpMethod.Get, _apiUrl);
|
|
var _res = await _client.SendAsync(_req);
|
|
var _result = await _res.Content.ReadAsStringAsync();
|
|
|
|
|
|
if (_res.IsSuccessStatusCode)
|
|
{
|
|
var orgResponse = JObject.Parse(_result);
|
|
var resultItems = orgResponse["result"];
|
|
|
|
// ค้นหาข้อมูลที่ตรงกันกับ ProfileId
|
|
var matchedData = resultItems
|
|
.Where(item => item["profileId"].ToString() == d.ProfileId.ToString())
|
|
.FirstOrDefault();
|
|
|
|
if (matchedData != null)
|
|
{
|
|
resultList.Add(new
|
|
{
|
|
rowNo = seq++.ToString().ToThaiNumber(),
|
|
d.ProfileId,
|
|
d.FullName,
|
|
d.RequestInsigniaName,
|
|
yearAPR1 = matchedData["yearAPR1"]?.ToString() ?? "-",
|
|
periodAPR1 = matchedData["periodAPR1"]?.ToString() ?? "-",
|
|
resultAPR1 = matchedData["resultAPR1"]?.ToString() ?? "-",
|
|
yearOCT1 = matchedData["yearOCT1"]?.ToString() ?? "-",
|
|
periodOCT1 = matchedData["periodOCT1"]?.ToString() ?? "-",
|
|
resultOCT1 = matchedData["resultOCT1"]?.ToString() ?? "-",
|
|
yearAPR2 = matchedData["yearAPR2"]?.ToString() ?? "-",
|
|
periodAPR2 = matchedData["periodAPR2"]?.ToString() ?? "-",
|
|
resultAPR2 = matchedData["resultAPR2"]?.ToString() ?? "-",
|
|
yearOCT2 = matchedData["yearOCT2"]?.ToString() ?? "-",
|
|
periodOCT2 = matchedData["periodOCT2"]?.ToString() ?? "-",
|
|
resultOCT2 = matchedData["resultOCT2"]?.ToString() ?? "-",
|
|
yearAPR3 = matchedData["yearAPR3"]?.ToString() ?? "-",
|
|
periodAPR3 = matchedData["periodAPR3"]?.ToString() ?? "-",
|
|
resultAPR3 = matchedData["resultAPR3"]?.ToString() ?? "-",
|
|
yearOCT3 = matchedData["yearOCT3"]?.ToString() ?? "-",
|
|
periodOCT3 = matchedData["periodOCT3"]?.ToString() ?? "-",
|
|
resultOCT3 = matchedData["resultOCT3"]?.ToString() ?? "-",
|
|
yearAPR4 = matchedData["yearAPR4"]?.ToString() ?? "-",
|
|
periodAPR4 = matchedData["periodAPR4"]?.ToString() ?? "-",
|
|
resultAPR4 = matchedData["resultAPR4"]?.ToString() ?? "-",
|
|
yearOCT4 = matchedData["yearOCT4"]?.ToString() ?? "-",
|
|
periodOCT4 = matchedData["periodOCT4"]?.ToString() ?? "-",
|
|
resultOCT4 = matchedData["resultOCT4"]?.ToString() ?? "-",
|
|
yearAPR5 = matchedData["yearAPR5"]?.ToString() ?? "-",
|
|
periodAPR5 = matchedData["periodAPR5"]?.ToString() ?? "-",
|
|
resultAPR5 = matchedData["resultAPR5"]?.ToString() ?? "-",
|
|
yearOCT5 = matchedData["yearOCT5"]?.ToString() ?? "-",
|
|
periodOCT5 = matchedData["periodOCT5"]?.ToString() ?? "-",
|
|
resultOCT5 = matchedData["resultOCT5"]?.ToString() ?? "-",
|
|
remark = d.Reason ?? "-"
|
|
});
|
|
}
|
|
else
|
|
{
|
|
resultList.Add(new
|
|
{
|
|
rowNo = seq++.ToString().ToThaiNumber(),
|
|
d.ProfileId,
|
|
d.FullName,
|
|
d.RequestInsigniaName,
|
|
yearAPR1 = "-",
|
|
periodAPR1 = "-",
|
|
resultAPR1 = "-",
|
|
yearOCT1 = "-",
|
|
periodOCT1 = "-",
|
|
resultOCT1 = "-",
|
|
yearAPR2 = "-",
|
|
periodAPR2 = "-",
|
|
resultAPR2 = "-",
|
|
yearOCT2 = "-",
|
|
periodOCT2 = "-",
|
|
resultOCT2 = "-",
|
|
yearAPR3 = "-",
|
|
periodAPR3 = "-",
|
|
resultAPR3 = "-",
|
|
yearOCT3 = "-",
|
|
periodOCT3 = "-",
|
|
resultOCT3 = "-",
|
|
yearAPR4 = "-",
|
|
periodAPR4 = "-",
|
|
resultAPR4 = "-",
|
|
yearOCT4 = "-",
|
|
periodOCT4 = "-",
|
|
resultOCT4 = "-",
|
|
yearAPR5 = "-",
|
|
periodAPR5 = "-",
|
|
resultAPR5 = "-",
|
|
yearOCT5 = "-",
|
|
periodOCT5 = "-",
|
|
resultOCT5 = "-",
|
|
remark = "-"
|
|
});
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return resultList;
|
|
}
|
|
|
|
//47-บัญชีระดับผลการประเมินผลการปฏิบัติราชการในรอบ 5 ปี NEW
|
|
public async Task<dynamic> GetEvaluationResult5YearReport(Guid id, string type = null, int node = -1, Guid nodeId = default)
|
|
{
|
|
var period = await _dbContext.Set<InsigniaPeriod>()
|
|
.FirstOrDefaultAsync(x => x.Id == id);
|
|
if (period == null)
|
|
throw new Exception(GlobalMessages.InsigniaPeriodNotFound);
|
|
|
|
var data_insigniaQuery = _dbContext.Set<InsigniaRequestProfile>()
|
|
.Where(x => x.Request.Period.Id == period.Id)
|
|
.Where(x => x.IsApprove == true)
|
|
.Where(x => x.Status == "PENDING")
|
|
.Where(x => x.RequestInsignia.InsigniaType != null);
|
|
|
|
if (type == "officer")
|
|
{
|
|
data_insigniaQuery = data_insigniaQuery.Where(r => r.ProfileType == "officer");
|
|
}
|
|
else if (type == "employee")
|
|
{
|
|
data_insigniaQuery = data_insigniaQuery.Where(r => r.ProfileType == "employee");
|
|
}
|
|
|
|
|
|
switch (node)
|
|
{
|
|
case 0:
|
|
data_insigniaQuery = data_insigniaQuery.Where(r => r.RootDnaId == nodeId);
|
|
break;
|
|
|
|
case 1:
|
|
data_insigniaQuery = data_insigniaQuery.Where(r => r.Child1DnaId == nodeId);
|
|
break;
|
|
|
|
case 2:
|
|
data_insigniaQuery = data_insigniaQuery.Where(r => r.Child2DnaId == nodeId);
|
|
break;
|
|
|
|
case 3:
|
|
data_insigniaQuery = data_insigniaQuery.Where(r => r.Child3DnaId == nodeId);
|
|
break;
|
|
|
|
case 4:
|
|
data_insigniaQuery = data_insigniaQuery.Where(r => r.Child4DnaId == nodeId);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
var data = await data_insigniaQuery
|
|
.Select(x => new
|
|
{
|
|
ProfileId = x.ProfileId,
|
|
FullName = $"{x.Prefix}{x.FirstName} {x.LastName}",
|
|
RequestInsigniaName = x.RequestInsignia.Name, // Name of the Insignia
|
|
Reason = x.Reason,
|
|
Agency = x.Root,
|
|
ResultAPR1 = x.APR1,
|
|
ResultOCT1 = x.OCT1,
|
|
ResultAPR2 = x.APR2,
|
|
ResultOCT2 = x.OCT2,
|
|
ResultAPR3 = x.APR3,
|
|
ResultOCT3 = x.OCT3,
|
|
ResultAPR4 = x.APR4,
|
|
ResultOCT4 = x.OCT4,
|
|
ResultAPR5 = x.APR5,
|
|
ResultOCT5 = x.OCT5
|
|
})
|
|
.ToListAsync();
|
|
|
|
var seq = 1;
|
|
var resultList = new List<object>();
|
|
foreach (var d in data)
|
|
{
|
|
resultList.Add(new
|
|
{
|
|
rowNo = seq++.ToString().ToThaiNumber(),
|
|
d.ProfileId,
|
|
d.FullName,
|
|
d.RequestInsigniaName,
|
|
Agency = d.Agency,
|
|
ResultAPR1 = d.ResultAPR1 ?? "-",
|
|
ResultOCT1 = d.ResultOCT1 ?? "-",
|
|
ResultAPR2 = d.ResultAPR2 ?? "-",
|
|
ResultOCT2 = d.ResultOCT2 ?? "-",
|
|
ResultAPR3 = d.ResultAPR3 ?? "-",
|
|
ResultOCT3 = d.ResultOCT3 ?? "-",
|
|
ResultAPR4 = d.ResultAPR4 ?? "-",
|
|
ResultOCT4 = d.ResultOCT4 ?? "-",
|
|
ResultAPR5 = d.ResultAPR5 ?? "-",
|
|
ResultOCT5 = d.ResultOCT5 ?? "-",
|
|
Remark = d.Reason ?? "-"
|
|
});
|
|
}
|
|
|
|
return resultList;
|
|
}
|
|
|
|
//noti ยื่นเสนอคน
|
|
public async Task NotifyInsignia()
|
|
{
|
|
var insigniaPeriods = await _dbContext.Set<InsigniaPeriod>()
|
|
.AsQueryable()
|
|
.ToListAsync();
|
|
foreach (var insigniaPeriod in insigniaPeriods)
|
|
{
|
|
if (insigniaPeriod.EndDate.AddDays(-insigniaPeriod.Amount).Date == DateTime.Now.Date)
|
|
{
|
|
await _repositoryNoti.PushNotificationAsync(
|
|
Guid.Parse("08dbc953-6441-408a-86d0-4df4ce449039"),
|
|
$"แจ้งเตือนรอบการเสนอขอ {insigniaPeriod.Name} รอบที่{insigniaPeriod.Round}",
|
|
$"แจ้งเตือนรอบการเสนอขอ {insigniaPeriod.Name} รอบที่{insigniaPeriod.Round}",
|
|
"",
|
|
"",
|
|
true
|
|
);
|
|
await _repositoryNoti.PushNotificationAsync(
|
|
Guid.Parse("08dbca3a-8b6a-4a4e-8b23-1f62e4f30ef6"),
|
|
$"แจ้งเตือนรอบการเสนอขอ {insigniaPeriod.Name} รอบที่{insigniaPeriod.Round}",
|
|
$"แจ้งเตือนรอบการเสนอขอ {insigniaPeriod.Name} รอบที่{insigniaPeriod.Round}",
|
|
"",
|
|
"",
|
|
true
|
|
);
|
|
}
|
|
}
|
|
}
|
|
|
|
//ล็อกข้อมูล โอนคนไปบันทึกผล
|
|
public async Task LockInsignia()
|
|
{
|
|
var insigniaPeriods = await _dbContext.Set<InsigniaPeriod>()
|
|
.AsQueryable()
|
|
.Include(x => x.InsigniaRequests)
|
|
.Include(x => x.ReliefDoc)
|
|
.ToListAsync();
|
|
foreach (var insigniaPeriod in insigniaPeriods)
|
|
{
|
|
if (insigniaPeriod.EndDate.Date.AddDays(5) > DateTime.Now.Date)
|
|
continue;
|
|
insigniaPeriod.IsLock = true;
|
|
var insigniaNote = await _dbContext.Set<InsigniaNote>()
|
|
.Include(x => x.InsigniaNoteProfiles)
|
|
//.ThenInclude(x => x.Profile)
|
|
.Include(x => x.InsigniaNoteProfiles)
|
|
.ThenInclude(x => x.RequestInsignia)
|
|
.FirstOrDefaultAsync(x => x.Year == insigniaPeriod.Year);
|
|
if (insigniaNote == null)
|
|
{
|
|
insigniaNote = new InsigniaNote
|
|
{
|
|
// Round = insigniaPeriod.Round,
|
|
Name = $"รอบการเสนอขอพระราชทานเครื่องราชฯ ปี {insigniaPeriod.Year + 543}",
|
|
Year = insigniaPeriod.Year,
|
|
// StartDate = insigniaPeriod.StartDate,
|
|
// EndDate = insigniaPeriod.EndDate,
|
|
// Amount = insigniaPeriod.Amount,
|
|
// ReliefDoc = insigniaPeriod.ReliefDoc,
|
|
CreatedFullName = "System Administrator",
|
|
CreatedUserId = "",
|
|
CreatedAt = DateTime.Now,
|
|
LastUpdateFullName = "System Administrator",
|
|
LastUpdateUserId = "",
|
|
LastUpdatedAt = DateTime.Now,
|
|
};
|
|
await _dbContext.Set<InsigniaNote>().AddAsync(insigniaNote);
|
|
await _dbContext.SaveChangesAsync();
|
|
insigniaNote = await _dbContext.Set<InsigniaNote>()
|
|
.Include(x => x.InsigniaNoteProfiles)
|
|
//.ThenInclude(x => x.Profile)
|
|
.Include(x => x.InsigniaNoteProfiles)
|
|
.ThenInclude(x => x.RequestInsignia)
|
|
.FirstOrDefaultAsync(x => x.Id == insigniaNote.Id);
|
|
}
|
|
var requestOlds = await _dbContext.Set<InsigniaRequest>()
|
|
.Where(p => p.Period == insigniaPeriod)
|
|
.Where(p => p.RequestStatus == "st5")
|
|
.ToListAsync();
|
|
foreach (var requestOld in requestOlds)
|
|
{
|
|
var profileOlds = await _dbContext.Set<InsigniaRequestProfile>()
|
|
//.Include(x => x.Profile)
|
|
.Include(x => x.RequestInsignia)
|
|
.Where(p => p.Request == requestOld)
|
|
.ToListAsync();
|
|
|
|
foreach (var profileOld in profileOlds)
|
|
{
|
|
if (profileOld.Status == "DELETE" || profileOld.Status == "REJECT")
|
|
continue;
|
|
var noreProfileOld = insigniaNote.InsigniaNoteProfiles
|
|
.Where(x => x.ProfileId == profileOld.ProfileId)
|
|
.FirstOrDefault();
|
|
if (noreProfileOld != null)
|
|
{
|
|
noreProfileOld.RequestDate = profileOld.RequestDate;
|
|
noreProfileOld.Salary = profileOld.Salary;
|
|
noreProfileOld.IsApprove = profileOld.IsApprove;
|
|
noreProfileOld.RequestInsignia = profileOld.RequestInsignia;
|
|
noreProfileOld.CreatedFullName = "System Administrator";
|
|
noreProfileOld.CreatedUserId = "";
|
|
noreProfileOld.CreatedAt = DateTime.Now;
|
|
noreProfileOld.LastUpdateFullName = "System Administrator";
|
|
noreProfileOld.LastUpdateUserId = "";
|
|
noreProfileOld.LastUpdatedAt = DateTime.Now;
|
|
}
|
|
else
|
|
{
|
|
if (profileOld.ProfileId == null)
|
|
continue;
|
|
await _dbContext.Set<InsigniaNoteProfile>().AddAsync(new InsigniaNoteProfile
|
|
{
|
|
RequestDate = profileOld.RequestDate,
|
|
Salary = profileOld.Salary,
|
|
IsApprove = profileOld.IsApprove,
|
|
Status = "PENDING",
|
|
ProfileId = profileOld.ProfileId,
|
|
RequestInsignia = profileOld.RequestInsignia,
|
|
OrganizationOrganizationSend = null,
|
|
InsigniaNote = insigniaNote,
|
|
CreatedFullName = "System Administrator",
|
|
CreatedUserId = "",
|
|
CreatedAt = DateTime.Now,
|
|
LastUpdateFullName = "System Administrator",
|
|
LastUpdateUserId = "",
|
|
LastUpdatedAt = DateTime.Now,
|
|
});
|
|
}
|
|
}
|
|
}
|
|
await _dbContext.SaveChangesAsync();
|
|
}
|
|
}
|
|
|
|
public void CalculateInsigniaRequestBkkByType(string type = "officer")
|
|
{
|
|
CalInsigniaRequestBkkByType(type).GetAwaiter().GetResult();
|
|
}
|
|
|
|
//คำนวนผู้ได้รับเครื่องราชฯ
|
|
public async Task CalInsigniaRequestBkkByType(string type = "officer")
|
|
{
|
|
var insigniaPeriods = await _dbContext.Set<InsigniaPeriod>()
|
|
.Include(x => x.InsigniaRequests)
|
|
.AsQueryable()
|
|
.ToListAsync();
|
|
insigniaPeriods = insigniaPeriods
|
|
.Where(x => x.StartDate <= DateTime.Now.Date && x.InsigniaRequests.Where(x => x.ProfileType!.ToLower().Trim() == type.Trim().ToLower()).Count() == 0).ToList();
|
|
|
|
foreach (var insigniaPeriod in insigniaPeriods)
|
|
{
|
|
var organizations = await _userProfileRepository.GetActiveRootLatestAsync(AccessToken);
|
|
if (organizations == null)
|
|
continue;
|
|
insigniaPeriod.RevisionId = Guid.Parse(organizations[0].OrgRevisionId);
|
|
foreach (var organization in organizations)
|
|
{
|
|
if (organization == null)
|
|
continue;
|
|
|
|
var result = await _repositoryInsignia.GetInsigniaRequestByTypeAsync(insigniaPeriod.Id, organization.Id, type);
|
|
if (result != null)
|
|
{
|
|
Guid period = result.PeriodId;
|
|
string requestStatus = result.RequestStatus;
|
|
var candidate = await _repositoryInsignia.GetInsigniaCandidateBKKByTypeAsync(insigniaPeriod.Id, organization.Id, type);
|
|
// ตรวจสอบว่ารายการอยู่ใน table insignia_request_new
|
|
if (requestStatus == null)
|
|
{
|
|
// บันทึกรายชื่อ
|
|
if (candidate != null)
|
|
await _repositoryInsignia.InsertCandidate(period, organization.Id, organization.OrgRootName, candidate, type);
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
public async Task CalInsignaiRequestBkk()
|
|
{
|
|
var insigniaPeriods = await _dbContext.Set<InsigniaPeriod>()
|
|
.Include(x => x.InsigniaRequests)
|
|
.AsQueryable()
|
|
.ToListAsync();
|
|
insigniaPeriods = insigniaPeriods
|
|
.Where(x => x.StartDate < DateTime.Now.Date || x.InsigniaRequests.Count == 0).ToList();
|
|
|
|
foreach (var insigniaPeriod in insigniaPeriods)
|
|
{
|
|
if (insigniaPeriod.StartDate >= DateTime.Now.Date || insigniaPeriod.InsigniaRequests.Count > 0)
|
|
continue;
|
|
var organizations = await _userProfileRepository.GetActiveRootLatestAsync(AccessToken);
|
|
if (organizations == null)
|
|
continue;
|
|
insigniaPeriod.RevisionId = Guid.Parse(organizations[0].OrgRevisionId);
|
|
foreach (var organization in organizations)
|
|
{
|
|
if (organization == null)
|
|
continue;
|
|
|
|
var result = await _repositoryInsignia.GetInsigniaRequest(insigniaPeriod.Id, organization.Id);
|
|
if (result != null)
|
|
{
|
|
Guid period = result.PeriodId;
|
|
string requestStatus = result.RequestStatus;
|
|
var candidate = await _repositoryInsignia.GetInsigniaCandidateBKK(insigniaPeriod.Id, organization.Id);
|
|
// ตรวจสอบว่ารายการอยู่ใน table insignia_request_new
|
|
if (requestStatus == null)
|
|
{
|
|
// บันทึกรายชื่อ
|
|
await _repositoryInsignia.InsertCandidate(period, organization.Id, organization.OrgRootName, candidate);
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
public async Task<dynamic> GetKhr5TotalReport(Guid id, string type = null, int node = -1, Guid nodeId = default)
|
|
{
|
|
var period = await _dbContext.Set<InsigniaNote>()
|
|
.FirstOrDefaultAsync(x => x.Id == id);
|
|
if (period == null)
|
|
throw new Exception(GlobalMessages.InsigniaPeriodNotFound);
|
|
|
|
var data_insigniaQuery = _dbContext.Set<InsigniaNoteProfile>()
|
|
.Include(x => x.RequestInsignia)
|
|
.ThenInclude(x => x.InsigniaType)
|
|
.Where(x => x.InsigniaNote.Id == period.Id)
|
|
// .Where(x => x.IsApprove == true)
|
|
.Where(x => x.Status == "DONE")
|
|
.Where(x => x.RequestInsignia.InsigniaType != null);
|
|
|
|
if (type == "officer")
|
|
{
|
|
data_insigniaQuery = data_insigniaQuery.Where(r => r.ProfileType.Trim().ToLower() == "officer");
|
|
}
|
|
else if (type == "employee")
|
|
{
|
|
data_insigniaQuery = data_insigniaQuery.Where(r => r.ProfileType.Trim().ToLower() == "employee");
|
|
}
|
|
|
|
switch (node)
|
|
{
|
|
case 0:
|
|
data_insigniaQuery = data_insigniaQuery.Where(r => r.RootDnaId == nodeId);
|
|
break;
|
|
|
|
case 1:
|
|
data_insigniaQuery = data_insigniaQuery.Where(r => r.Child1DnaId == nodeId);
|
|
break;
|
|
|
|
case 2:
|
|
data_insigniaQuery = data_insigniaQuery.Where(r => r.Child2DnaId == nodeId);
|
|
break;
|
|
|
|
case 3:
|
|
data_insigniaQuery = data_insigniaQuery.Where(r => r.Child3DnaId == nodeId);
|
|
break;
|
|
|
|
case 4:
|
|
data_insigniaQuery = data_insigniaQuery.Where(r => r.Child4DnaId == nodeId);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
|
|
var data = await data_insigniaQuery.Select(x => new
|
|
{
|
|
Gendor = x.Gender ?? "",
|
|
InsigniaTypeName = x.RequestInsignia.InsigniaType.Name,
|
|
RequestInsigniaName = x.RequestInsignia.Name,
|
|
InsigniaInitial = $"{x.RequestInsignia.Name}({x.RequestInsignia.ShortName})", // Insignia's full name and short name
|
|
OcId = x.Root
|
|
}).ToListAsync();
|
|
var insignia = (from r in data
|
|
group r by new { OcId = r.OcId, r.InsigniaTypeName, r.RequestInsigniaName } into g
|
|
select new
|
|
{
|
|
RowNo = 1,
|
|
DepartmentName = g.Key.OcId,
|
|
InsigniaTypeName = g.Key.InsigniaTypeName,
|
|
RequestInsigniaName = g.Key.RequestInsigniaName,
|
|
Male = g.Sum(x => x.Gendor == "ชาย" ? 1 : 0),
|
|
Female = g.Sum(x => x.Gendor == "หญิง" ? 1 : 0),
|
|
Remark = "",
|
|
}).ToList();
|
|
|
|
return insignia;
|
|
}
|
|
public async Task<dynamic> GetKhr6TotalReport(Guid id, string type = null, int node = -1, Guid nodeId = default)
|
|
{
|
|
var period = await _dbContext.Set<InsigniaNote>()
|
|
.FirstOrDefaultAsync(x => x.Id == id);
|
|
if (period == null)
|
|
throw new Exception(GlobalMessages.InsigniaPeriodNotFound);
|
|
|
|
var data_insigniaQuery = _dbContext.Set<InsigniaNoteProfile>()
|
|
.Include(x => x.RequestInsignia)
|
|
.ThenInclude(x => x.InsigniaType)
|
|
.Where(x => x.InsigniaNote.Id == period.Id)
|
|
// .Where(x => x.IsApprove == true)
|
|
.Where(x => x.Status == "DONE")
|
|
.Where(x => x.RequestInsignia.InsigniaType != null);
|
|
|
|
if (type == "officer")
|
|
{
|
|
data_insigniaQuery = data_insigniaQuery.Where(r => r.ProfileType.Trim().ToLower() == "officer");
|
|
}
|
|
else if (type == "employee")
|
|
{
|
|
data_insigniaQuery = data_insigniaQuery.Where(r => r.ProfileType.Trim().ToLower() == "employee");
|
|
}
|
|
|
|
switch (node)
|
|
{
|
|
case 0:
|
|
data_insigniaQuery = data_insigniaQuery.Where(r => r.RootDnaId == nodeId);
|
|
break;
|
|
|
|
case 1:
|
|
data_insigniaQuery = data_insigniaQuery.Where(r => r.Child1DnaId == nodeId);
|
|
break;
|
|
|
|
case 2:
|
|
data_insigniaQuery = data_insigniaQuery.Where(r => r.Child2DnaId == nodeId);
|
|
break;
|
|
|
|
case 3:
|
|
data_insigniaQuery = data_insigniaQuery.Where(r => r.Child3DnaId == nodeId);
|
|
break;
|
|
|
|
case 4:
|
|
data_insigniaQuery = data_insigniaQuery.Where(r => r.Child4DnaId == nodeId);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
|
|
var data = await data_insigniaQuery.Select(x => new
|
|
{
|
|
Gendor = x.Gender ?? "",
|
|
InsigniaTypeName = x.RequestInsignia.InsigniaType.Name,
|
|
RequestInsigniaName = x.RequestInsignia.Name,
|
|
IsApprove = x.IsApprove,
|
|
InsigniaInitial = $"{x.RequestInsignia.Name}({x.RequestInsignia.ShortName})", // Insignia's full name and short name
|
|
DatePayment = x.DatePayment,
|
|
OcId = x.Root
|
|
}).ToListAsync();
|
|
var insignia = (from r in data
|
|
group r by new { OcId = r.OcId, r.InsigniaTypeName, r.RequestInsigniaName } into g
|
|
select new
|
|
{
|
|
RowNo = 1,
|
|
DepartmentName = g.Key.OcId,
|
|
InsigniaTypeName = g.Key.InsigniaTypeName,
|
|
RequestInsigniaName = g.Key.RequestInsigniaName,
|
|
/* Pending = g.Sum(x => x.IsApprove == false ? 1 : 0),
|
|
Done = g.Sum(x => x.IsApprove == true ? 1 : 0),*/
|
|
Pending = g.Sum(x => x.DatePayment == null ? 1 : 0),
|
|
Done = g.Sum(x => x.DatePayment != null ? 1 : 0),
|
|
Remark = "",
|
|
}).ToList();
|
|
|
|
return insignia;
|
|
}
|
|
public async Task<dynamic> GetKhr4TotalReport(Guid id, string type = null, int node = -1, Guid nodeId = default)
|
|
{
|
|
var period = await _dbContext.Set<InsigniaNote>()
|
|
.FirstOrDefaultAsync(x => x.Id == id);
|
|
if (period == null)
|
|
throw new Exception(GlobalMessages.InsigniaPeriodNotFound);
|
|
|
|
var data_insigniaQuery = _dbContext.Set<InsigniaNoteProfile>()
|
|
.Include(x => x.RequestInsignia)
|
|
.ThenInclude(x => x.InsigniaType)
|
|
.Where(x => x.InsigniaNote.Id == period.Id)
|
|
.Where(x => x.Status == "DONE")
|
|
.Where(x => x.RequestInsignia.InsigniaType != null);
|
|
|
|
if (type == "officer")
|
|
{
|
|
data_insigniaQuery = data_insigniaQuery.Where(r => r.ProfileType.Trim().ToLower() == "officer");
|
|
}
|
|
else if (type == "employee")
|
|
{
|
|
data_insigniaQuery = data_insigniaQuery.Where(r => r.ProfileType.Trim().ToLower() == "employee");
|
|
}
|
|
|
|
switch (node)
|
|
{
|
|
case 0:
|
|
data_insigniaQuery = data_insigniaQuery.Where(r => r.RootDnaId == nodeId);
|
|
break;
|
|
|
|
case 1:
|
|
data_insigniaQuery = data_insigniaQuery.Where(r => r.Child1DnaId == nodeId);
|
|
break;
|
|
|
|
case 2:
|
|
data_insigniaQuery = data_insigniaQuery.Where(r => r.Child2DnaId == nodeId);
|
|
break;
|
|
|
|
case 3:
|
|
data_insigniaQuery = data_insigniaQuery.Where(r => r.Child3DnaId == nodeId);
|
|
break;
|
|
|
|
case 4:
|
|
data_insigniaQuery = data_insigniaQuery.Where(r => r.Child4DnaId == nodeId);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
|
|
var data = await data_insigniaQuery.Select(x => new
|
|
{
|
|
CitizenId = x.CitizenId,
|
|
Prefix = x.Prefix,
|
|
FullName = $"{x.FirstName} {x.LastName}",
|
|
PosTypeName = x.PosTypeName,
|
|
PosLevelName = x.PosLevelName,
|
|
Position = x.Position,
|
|
Root = x.Root,
|
|
OrganizationOrganizationReceive = x.OrganizationOrganizationReceive,
|
|
OrganizationOrganizationSend = x.OrganizationOrganizationSend,
|
|
IsApprove = x.IsApprove == true ? "ได้รับ" : "ไม่ได้รับ",
|
|
RequestInsignia = x.RequestInsignia.Name,
|
|
Number = x.Number,
|
|
DatePayment = x.DatePayment,
|
|
}).ToListAsync();
|
|
|
|
return data;
|
|
}
|
|
#endregion
|
|
}
|
|
}
|