ปรับ report ระบบสรรหา
This commit is contained in:
parent
07903d3b67
commit
e94eb0f3e9
2 changed files with 463 additions and 12 deletions
|
|
@ -731,11 +731,13 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var stream = await _periodExamService.DownloadCandidateAsync(examId);
|
//var stream = await _periodExamService.DownloadCandidateAsync(examId);
|
||||||
|
|
||||||
string excelName = $"Candidate_{DateTime.Now.ToString("yyyyMMddHHmmssfff")}.xlsx";
|
//string excelName = $"Candidate_{DateTime.Now.ToString("yyyyMMddHHmmssfff")}.xlsx";
|
||||||
return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", excelName);
|
//return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", excelName);
|
||||||
// return Success();
|
|
||||||
|
var data = await _periodExamService.NewDownloadCandidateAsync(examId);
|
||||||
|
return Success(data);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
|
@ -759,11 +761,13 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var stream = await _periodExamService.DownloadCandidateAllAsync(examId);
|
//var stream = await _periodExamService.DownloadCandidateAllAsync(examId);
|
||||||
|
|
||||||
string excelName = $"Candidate_{DateTime.Now.ToString("yyyyMMddHHmmssfff")}.xlsx";
|
//string excelName = $"Candidate_{DateTime.Now.ToString("yyyyMMddHHmmssfff")}.xlsx";
|
||||||
return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", excelName);
|
//return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", excelName);
|
||||||
// return Success();
|
|
||||||
|
var data = await _periodExamService.NewDownloadCandidateAllAsync(examId);
|
||||||
|
return Success(data);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
|
@ -787,11 +791,13 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var stream = await _periodExamService.GetsDashboardExamAsync(item, examId);
|
//var stream = await _periodExamService.GetsDashboardExamAsync(item, examId);
|
||||||
|
|
||||||
string excelName = $"Candidate_{DateTime.Now.ToString("yyyyMMddHHmmssfff")}.xlsx";
|
//string excelName = $"Candidate_{DateTime.Now.ToString("yyyyMMddHHmmssfff")}.xlsx";
|
||||||
return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", excelName);
|
//return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", excelName);
|
||||||
// return Success();
|
|
||||||
|
var data = await _periodExamService.NewGetsDashboardExamAsync(item, examId);
|
||||||
|
return Success(data);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1338,6 +1338,128 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
|
||||||
return stream;
|
return stream;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<dynamic> NewDownloadCandidateAsync(string examId)
|
||||||
|
{
|
||||||
|
var periodExam = await _context.PeriodExams.AsQueryable()
|
||||||
|
.Where(x => x.CheckDisability == false)
|
||||||
|
.FirstOrDefaultAsync(x => x.Id == Guid.Parse(examId));
|
||||||
|
|
||||||
|
if (periodExam == null)
|
||||||
|
throw new Exception(GlobalMessages.ExamNotFound);
|
||||||
|
|
||||||
|
var candidates = new List<Candidate>();
|
||||||
|
if (periodExam.SetSeat == true)
|
||||||
|
{
|
||||||
|
candidates = await _context.Candidates
|
||||||
|
.AsQueryable()
|
||||||
|
.Include(x => x.PositionExam)
|
||||||
|
.OrderBy(x => x.ExamIdenNumber)
|
||||||
|
.Where(x => x.PeriodExam == periodExam)
|
||||||
|
.Where(x => x.Status != "waiver")
|
||||||
|
.Where(x => x.Status != "register")
|
||||||
|
.ToListAsync();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
candidates = await _context.Candidates
|
||||||
|
.AsQueryable()
|
||||||
|
.Include(x => x.PositionExam)
|
||||||
|
.OrderBy(x => x.ExamIdenNumber)
|
||||||
|
.Where(x => x.PeriodExam == periodExam)
|
||||||
|
.Where(x => x.Status != "register")
|
||||||
|
.ToListAsync();
|
||||||
|
}
|
||||||
|
var _data = new List<object>();
|
||||||
|
|
||||||
|
if (candidates.Count > 0)
|
||||||
|
{
|
||||||
|
foreach (var item in candidates)
|
||||||
|
{
|
||||||
|
_data.Add(new
|
||||||
|
{
|
||||||
|
Number = item.Number != null ? item.Number.ToThaiNumber() : "-",
|
||||||
|
ExamIdenNumber = item.ExamIdenNumber != null ? item.ExamIdenNumber.ToString() : "-",
|
||||||
|
CitizenId = item.CitizenId != null ? item.CitizenId.ToThaiNumber() : "-",
|
||||||
|
SeatNumber = item.SeatNumber != null ? item.SeatNumber.ToThaiNumber() : "-",
|
||||||
|
PrefixName = item.PrefixName != null ? item.PrefixName.ToThaiNumber() : "-",
|
||||||
|
FullName = item.FirstName != null && item.LastName != null ? $"{item.FirstName} {item.LastName}" : "-",
|
||||||
|
PositionName = item.PositionExam != null && item.PositionExam?.PositionName != null ? item.PositionExam?.PositionName.ToThaiNumber() : "-",
|
||||||
|
PositionLevelName = item.PositionExam != null && item.PositionExam?.PositionLevelName != null ? item.PositionExam?.PositionLevelName.ToThaiNumber() : "-",
|
||||||
|
|
||||||
|
PointPath1A = item.PointPath1A != null ? item.PointPath1A.ToThaiNumber() : "-",
|
||||||
|
PointPath2A = item.PointPath2A != null ? item.PointPath2A.ToThaiNumber() : "-",
|
||||||
|
PointPath3A = item.PointPath3A != null ? item.PointPath3A.ToThaiNumber() : "-",
|
||||||
|
PointA = item.PointA != null ? item.PointA.ToThaiNumber() : "-",
|
||||||
|
PointPerA = item.PointPerA != null ? item.PointPerA.ToThaiNumber() : "-",
|
||||||
|
ResultA = item.ResultA != null ? item.ResultA.ToThaiNumber() : "-",
|
||||||
|
|
||||||
|
PointB = item.PointB != null ? item.PointB.ToThaiNumber() : "-",
|
||||||
|
PointPerB = item.PointPerB != null ? item.PointPerB.ToThaiNumber() : "-",
|
||||||
|
ResultB = item.ResultB != null ? item.ResultB.ToThaiNumber() : "-",
|
||||||
|
|
||||||
|
PointPath1C = item.PointPath1C != null ? item.PointPath1C.ToThaiNumber() : "-",
|
||||||
|
PointPath2C = item.PointPath2C != null ? item.PointPath2C.ToThaiNumber() : "-",
|
||||||
|
PointC = item.PointC != null ? item.PointC.ToThaiNumber() : "-",
|
||||||
|
PointPerC = item.PointPerC != null ? item.PointPerC.ToThaiNumber() : "-",
|
||||||
|
ResultC = item.ResultC != null ? item.ResultC.ToThaiNumber() : "-",
|
||||||
|
|
||||||
|
Pass = item.Pass != null ? item.Pass.ToThaiNumber() : "-",
|
||||||
|
PaymentStatus = item.PeriodExam == null || item.PeriodExam.Fee <= 0 ? "ไม่มีชำระเงิน" : (item.PaymentDate == null ? "ยังไม่ชำระเงิน" : "ชำระแล้ว"),
|
||||||
|
PaymentDate = item.PaymentDate == null ? "-" : $"{item.PaymentDate.Value.ToThaiShortDate()} {item.PaymentDate.Value:HH:mm:ss.ffff}".ToString().ToThaiNumber(),
|
||||||
|
RegisterDate = item.RegisterDate == null ? "-" : $"{item.RegisterDate.Value.ToThaiShortDate()} {item.RegisterDate.Value:HH:mm:ss.ffff}".ToString().ToThaiNumber(),
|
||||||
|
ExamReason = item.ExamReason != null ? item.ExamReason.ToThaiNumber() : "-"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_data.Add(new
|
||||||
|
{
|
||||||
|
Number = "-",
|
||||||
|
ExamIdenNumber = "-",
|
||||||
|
CitizenId = "-",
|
||||||
|
SeatNumber = "-",
|
||||||
|
PrefixName = "-",
|
||||||
|
FullName = "-",
|
||||||
|
PositionName = "-",
|
||||||
|
PositionLevelName = "-",
|
||||||
|
|
||||||
|
PointPath1A = "-",
|
||||||
|
PointPath2A = "-",
|
||||||
|
PointPath3A = "-",
|
||||||
|
PointA = "-",
|
||||||
|
PointPerA = "-",
|
||||||
|
ResultA = "-",
|
||||||
|
|
||||||
|
PointB = "-",
|
||||||
|
PointPerB = "-",
|
||||||
|
ResultB = "-",
|
||||||
|
|
||||||
|
PointPath1C = "-",
|
||||||
|
PointPath2C = "-",
|
||||||
|
PointC = "-",
|
||||||
|
PointPerC = "-",
|
||||||
|
ResultC = "-",
|
||||||
|
|
||||||
|
Pass = "-",
|
||||||
|
PaymentStatus = "-",
|
||||||
|
PaymentDate = "-",
|
||||||
|
RegisterDate = "-",
|
||||||
|
ExamReason = "-"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return new
|
||||||
|
{
|
||||||
|
template = "candidate",
|
||||||
|
reportName = $"Candidate_{DateTime.Now.ToString("yyyyMMddHHmmssfff")}",
|
||||||
|
data = new
|
||||||
|
{
|
||||||
|
data = _data
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
public async Task<PeriodExam> GetsPaymentExamAsync(string examId)
|
public async Task<PeriodExam> GetsPaymentExamAsync(string examId)
|
||||||
{
|
{
|
||||||
var periodExam = await _context.PeriodExams.AsQueryable()
|
var periodExam = await _context.PeriodExams.AsQueryable()
|
||||||
|
|
@ -1769,6 +1891,186 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
|
||||||
return stream;
|
return stream;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<dynamic> NewDownloadCandidateAllAsync(string examId)
|
||||||
|
{
|
||||||
|
var periodExam = await _context.PeriodExams.AsQueryable()
|
||||||
|
.Where(x => x.CheckDisability == false)
|
||||||
|
.FirstOrDefaultAsync(x => x.Id == Guid.Parse(examId));
|
||||||
|
|
||||||
|
if (periodExam == null)
|
||||||
|
throw new Exception(GlobalMessages.ExamNotFound);
|
||||||
|
|
||||||
|
var candidates = await _context.Candidates
|
||||||
|
.AsQueryable()
|
||||||
|
.OrderBy(x => x.ExamIdenNumber)
|
||||||
|
.Where(x => x.PeriodExam == periodExam)
|
||||||
|
.Where(x => x.Status != "register")
|
||||||
|
.Select(c => new
|
||||||
|
{
|
||||||
|
Id = c.Id,
|
||||||
|
Status = c.Status,
|
||||||
|
CitizenId = c.CitizenId,
|
||||||
|
FullName = $"{c.PrefixName}{c.FirstName} {c.LastName}",
|
||||||
|
Nationality = c.Nationality,
|
||||||
|
DateOfBirth = c.DateOfBirth == null ? "" : c.DateOfBirth.Value.Date.ToThaiShortDate(),
|
||||||
|
Age = c.DateOfBirth == null ? "" : c.DateOfBirth.Value.Date.CalculateAgeStrV2(0, 0),
|
||||||
|
ReligionName = c.ReligionName,
|
||||||
|
Telephone = c.Telephone,
|
||||||
|
MobilePhone = c.MobilePhone,
|
||||||
|
Email = c.Email,
|
||||||
|
Knowledge = c.Knowledge,
|
||||||
|
RegistAddress = c.RegistAddress,
|
||||||
|
RegistProvinceName = c.RegistProvinceName,
|
||||||
|
RegistDistrictName = c.RegistDistrictName,
|
||||||
|
RegistSubDistrictName = c.RegistSubDistrictName,
|
||||||
|
RegistZipCode = c.RegistZipCode,
|
||||||
|
CurrentAddress = c.CurrentAddress,
|
||||||
|
CurrentProvinceName = c.CurrentProvinceName,
|
||||||
|
CurrentDistrictName = c.CurrentDistrictName,
|
||||||
|
CurrentSubDistrictName = c.CurrentSubDistrictName,
|
||||||
|
CurrentZipCode = c.CurrentZipCode,
|
||||||
|
OccupationOrg = c.OccupationOrg,
|
||||||
|
OccupationPile = c.OccupationPile,
|
||||||
|
OccupationGroup = c.OccupationGroup,
|
||||||
|
OccupationSalary = c.OccupationSalary,
|
||||||
|
OccupationPosition = c.OccupationPosition,
|
||||||
|
OccupationPositionType = c.OccupationPositionType,
|
||||||
|
OccupationTelephone = c.OccupationTelephone,
|
||||||
|
RegisterDate = c.RegisterDate,
|
||||||
|
PositionName = c.PositionExam.PositionName,
|
||||||
|
PositionLevelName = c.PositionExam.PositionLevelName,
|
||||||
|
|
||||||
|
ContactFullName = $"{c.ContactPrefixName}{c.ContactFirstname} {c.ContactLastname}",
|
||||||
|
ContactRelations = c.ContactRelations,
|
||||||
|
ContactTel = c.ContactTel,
|
||||||
|
|
||||||
|
Number = c.Number,
|
||||||
|
ExamIdenNumber = c.ExamIdenNumber,
|
||||||
|
SeatNumber = c.SeatNumber,
|
||||||
|
PointTotalA = c.PointTotalA,
|
||||||
|
PointPath1A = c.PointPath1A,
|
||||||
|
PointPath2A = c.PointPath2A,
|
||||||
|
PointPath3A = c.PointPath3A,
|
||||||
|
PointA = c.PointA,
|
||||||
|
PointPerA = c.PointPerA,
|
||||||
|
ResultA = c.ResultA,
|
||||||
|
PointTotalB = c.PointTotalB,
|
||||||
|
PointB = c.PointB,
|
||||||
|
PointPerB = c.PointPerB,
|
||||||
|
ResultB = c.ResultB,
|
||||||
|
PointTotalC = c.PointTotalC,
|
||||||
|
PointPath1C = c.PointPath1C,
|
||||||
|
PointPath2C = c.PointPath2C,
|
||||||
|
PointC = c.PointC,
|
||||||
|
PointPerC = c.PointPerC,
|
||||||
|
ResultC = c.ResultC,
|
||||||
|
Pass = c.Pass,
|
||||||
|
ExamReason = c.ExamReason,
|
||||||
|
CreatedAt = c.CreatedAt,
|
||||||
|
})
|
||||||
|
.ToListAsync();
|
||||||
|
|
||||||
|
var _data = new List<object>();
|
||||||
|
if (candidates.Count > 0)
|
||||||
|
{
|
||||||
|
int num = 1;
|
||||||
|
foreach (var item in candidates)
|
||||||
|
{
|
||||||
|
var education = await _context.Educations
|
||||||
|
.AsQueryable()
|
||||||
|
.OrderBy(x => x.EducationEndDate)
|
||||||
|
.Where(x => x.Candidate.Id == item.Id)
|
||||||
|
.FirstOrDefaultAsync();
|
||||||
|
|
||||||
|
var careers = await _context.Careers
|
||||||
|
.AsQueryable()
|
||||||
|
.OrderBy(x => x.DurationStart)
|
||||||
|
.Where(x => x.Candidate.Id == item.Id)
|
||||||
|
.ToListAsync();
|
||||||
|
|
||||||
|
_data.Add(new
|
||||||
|
{
|
||||||
|
Num = num.ToString().ToThaiNumber(),
|
||||||
|
PositionName = item.PositionName != null && item.PositionLevelName != null ? $"{item.PositionName} {item.PositionLevelName}".ToThaiNumber() : "-",
|
||||||
|
FullName = item.FullName != null ? item.FullName.ToThaiNumber() : "-",
|
||||||
|
Nationality = item.Nationality != null ? item.Nationality.ToThaiNumber() : "-",
|
||||||
|
ReligionName = item.ReligionName != null ? item.ReligionName.ToThaiNumber() : "-",
|
||||||
|
DateOfBirth = item.DateOfBirth != null ? item.DateOfBirth.ToThaiNumber() : "-",
|
||||||
|
Age = item.Age != null ? item.Age.ToThaiNumber() : "-",
|
||||||
|
Telephone = item.Telephone != null ? item.Telephone.ToThaiNumber() : "-",
|
||||||
|
Email = item.Email != null ? item.Email : "-",
|
||||||
|
CitizenId = item.CitizenId != null ? item.CitizenId.ToThaiNumber() : "-",
|
||||||
|
|
||||||
|
EducationLevelExamName = education == null ? "-" : education.EducationLevelExamName.ToThaiNumber(),
|
||||||
|
EducationName = education == null ? "-" : education.EducationName.ToThaiNumber(),
|
||||||
|
EducationMajor = education == null ? "-" : education.EducationMajor.ToThaiNumber(),
|
||||||
|
EducationLocation = education == null ? "-" : education.EducationLocation.ToThaiNumber(),
|
||||||
|
EducationEndDate = education == null ? "-" : (education.EducationEndDate == null ? "-" : education.EducationEndDate.Value.Date.ToThaiShortDate().ToThaiNumber()),
|
||||||
|
EducationScores = education == null ? "-" : education.EducationScores.ToThaiNumber(),
|
||||||
|
EducationType = education == null ? "-" : education.EducationType.ToThaiNumber(),
|
||||||
|
EducationLevelHighName = education == null ? "-" : education.EducationLevelHighName.ToThaiNumber().ToThaiNumber(),
|
||||||
|
|
||||||
|
OccupationPositionType = item.OccupationPositionType == null ? "-" : GenerateStatusOccupation(item.OccupationPositionType),
|
||||||
|
OccupationPosition = item.OccupationPosition == null ? "-" : item.OccupationPosition.ToThaiNumber(),
|
||||||
|
OccupationSalary = item.OccupationSalary == null ? "-" : item.OccupationSalary.ToString().ToThaiNumber(),
|
||||||
|
OccupationGroup = item.OccupationGroup == null ? "-" : item.OccupationGroup.ToThaiNumber(),
|
||||||
|
OccupationPile = item.OccupationPile == null ? "-" : item.OccupationPile.ToThaiNumber(),
|
||||||
|
OccupationOrg = item.OccupationOrg == null ? "-" : item.OccupationOrg.ToThaiNumber(),
|
||||||
|
OccupationTelephone = item.OccupationTelephone == null ? "-" : item.OccupationTelephone.ToThaiNumber(),
|
||||||
|
|
||||||
|
Position = /*career.Position == null ? "-" : career.Position.ToThaiNumber()*/"-",
|
||||||
|
Type = /*career.Type == null ? "-" : career.Type*/"-",
|
||||||
|
DurationStart = /*career.DurationStart == null ? "-" : career.DurationStart.Date.ToThaiShortDate().ToThaiNumber()*/"-",
|
||||||
|
DurationEnd = /*career.DurationEnd == null ? "-" : career.DurationEnd.Date.ToThaiShortDate().ToThaiNumber()*/"-",
|
||||||
|
RangeDate = /*career.RangeDate == null ? "-" : career.RangeDate.ToThaiNumber()*/"-",
|
||||||
|
|
||||||
|
CurrentAddress = item.CurrentAddress == null ? "-" : item.CurrentAddress.ToThaiNumber(),
|
||||||
|
CurrentProvinceName = item.CurrentProvinceName == null ? "-" : item.CurrentProvinceName.ToThaiNumber(),
|
||||||
|
CurrentDistrictName = item.CurrentDistrictName == null ? "-" : item.CurrentDistrictName.ToThaiNumber(),
|
||||||
|
CurrentSubDistrictName = item.CurrentSubDistrictName == null ? "-" : item.CurrentSubDistrictName.ToThaiNumber(),
|
||||||
|
CurrentZipCode = item.CurrentZipCode == null ? "-" : item.CurrentZipCode.ToThaiNumber(),
|
||||||
|
|
||||||
|
RegistAddress = item.RegistAddress == null ? "-" : item.RegistAddress.ToThaiNumber(),
|
||||||
|
RegistProvinceName = item.RegistProvinceName == null ? "-" : item.RegistProvinceName.ToThaiNumber(),
|
||||||
|
RegistDistrictName = item.RegistDistrictName == null ? "-" : item.RegistDistrictName.ToThaiNumber(),
|
||||||
|
RegistSubDistrictName = item.RegistSubDistrictName == null ? "-" : item.RegistSubDistrictName.ToThaiNumber(),
|
||||||
|
RegistZipCode = item.RegistZipCode == null ? "-" : item.RegistZipCode.ToThaiNumber(),
|
||||||
|
|
||||||
|
ContactFullName = item.ContactFullName == null ? "-" : item.ContactFullName.ToThaiNumber(),
|
||||||
|
ContactRelations = item.ContactRelations == null ? "-" : item.ContactRelations.ToThaiNumber(),
|
||||||
|
ContactTel = item.ContactTel == null ? "-" : item.ContactTel.ToThaiNumber(),
|
||||||
|
CandidateStatus = GenerateStatusCandidate(item.Status),
|
||||||
|
|
||||||
|
Number = item.Number == null ? "-" : item.Number.ToThaiNumber(),
|
||||||
|
ExamIdenNumber = item.ExamIdenNumber == null ? "-" : item.ExamIdenNumber.ToThaiNumber(),
|
||||||
|
SeatNumber = item.SeatNumber == null ? "-" : item.SeatNumber.ToThaiNumber(),
|
||||||
|
PointTotalA = item.PointTotalA == null ? "-" : item.PointTotalA.ToThaiNumber(),
|
||||||
|
PointA = item.PointA == null ? "-" : item.PointA.ToThaiNumber(),
|
||||||
|
ResultA = item.ResultA == null ? "-" : item.ResultA.ToThaiNumber(),
|
||||||
|
PointTotalB = item.PointTotalB == null ? "-" : item.PointTotalB.ToThaiNumber(),
|
||||||
|
PointB = item.PointB == null ? "-" : item.PointB.ToThaiNumber(),
|
||||||
|
ResultB = item.ResultB == null ? "-" : item.ResultB.ToThaiNumber(),
|
||||||
|
PointTotalC = item.PointTotalC == null ? "-" : item.PointTotalC.ToThaiNumber(),
|
||||||
|
PointC = item.PointC == null ? "-" : item.PointC.ToThaiNumber(),
|
||||||
|
ResultC = item.ResultC == null ? "-" : item.ResultC.ToThaiNumber(),
|
||||||
|
Pass = item.Pass == null ? "-" : item.Pass.ToThaiNumber(),
|
||||||
|
CreatedAt = item.CreatedAt.Date == null ? "-" : item.CreatedAt.Date.ToThaiShortDate().ToThaiNumber(),
|
||||||
|
RegisterDate = item.RegisterDate.Value.Date == null ? "-" : $"{item.RegisterDate.Value.Date.ToThaiShortDate()} {item.RegisterDate.Value.ToString("HH:mm:ss.ffff")}".ToThaiNumber()
|
||||||
|
});
|
||||||
|
num = num + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return new
|
||||||
|
{
|
||||||
|
template = "candidateDetail",
|
||||||
|
reportName = $"CandidateDetail_{DateTime.Now.ToString("yyyyMMddHHmmssfff")}",
|
||||||
|
data = new
|
||||||
|
{
|
||||||
|
data = _data
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
public async Task<MemoryStream> GetsDashboardExamAsync(RequestCandidateDashboard item, string examId)
|
public async Task<MemoryStream> GetsDashboardExamAsync(RequestCandidateDashboard item, string examId)
|
||||||
{
|
{
|
||||||
var periodExam = await _context.PeriodExams.AsQueryable()
|
var periodExam = await _context.PeriodExams.AsQueryable()
|
||||||
|
|
@ -1966,6 +2268,149 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
|
||||||
return stream;
|
return stream;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<dynamic> NewGetsDashboardExamAsync(RequestCandidateDashboard item, string examId)
|
||||||
|
{
|
||||||
|
var periodExam = await _context.PeriodExams.AsQueryable()
|
||||||
|
.FirstOrDefaultAsync(x => x.Id == Guid.Parse(examId));
|
||||||
|
|
||||||
|
if (periodExam == null)
|
||||||
|
throw new Exception(GlobalMessages.ExamNotFound);
|
||||||
|
|
||||||
|
var candidates = await _context.Candidates
|
||||||
|
.AsQueryable()
|
||||||
|
.OrderBy(x => x.ExamIdenNumber)
|
||||||
|
.Where(x => x.PeriodExam == periodExam)
|
||||||
|
.Where(x => x.Status != "register")
|
||||||
|
.Select(c => new
|
||||||
|
{
|
||||||
|
Id = c.Id,
|
||||||
|
Status = c.Status,
|
||||||
|
CitizenId = c.CitizenId,
|
||||||
|
FullName = $"{c.PrefixName}{c.FirstName} {c.LastName}",
|
||||||
|
Nationality = c.Nationality,
|
||||||
|
DateOfBirth = c.DateOfBirth == null ? "" : c.DateOfBirth.Value.Date.ToThaiShortDate(),
|
||||||
|
Age = c.DateOfBirth == null ? 0 : DateTime.Now.Date.Year - c.DateOfBirth.Value.Date.Year,
|
||||||
|
ReligionName = c.ReligionName,
|
||||||
|
Telephone = c.Telephone,
|
||||||
|
MobilePhone = c.MobilePhone,
|
||||||
|
Email = c.Email,
|
||||||
|
Knowledge = c.Knowledge,
|
||||||
|
RegistAddress = c.RegistAddress,
|
||||||
|
RegistProvinceName = c.RegistProvinceName,
|
||||||
|
RegistDistrictName = c.RegistDistrictName,
|
||||||
|
RegistSubDistrictName = c.RegistSubDistrictName,
|
||||||
|
RegistZipCode = c.RegistZipCode,
|
||||||
|
CurrentAddress = c.CurrentAddress,
|
||||||
|
CurrentProvinceName = c.CurrentProvinceName,
|
||||||
|
CurrentDistrictName = c.CurrentDistrictName,
|
||||||
|
CurrentSubDistrictName = c.CurrentSubDistrictName,
|
||||||
|
CurrentZipCode = c.CurrentZipCode,
|
||||||
|
OccupationOrg = c.OccupationOrg,
|
||||||
|
OccupationPile = c.OccupationPile,
|
||||||
|
OccupationGroup = c.OccupationGroup,
|
||||||
|
OccupationSalary = c.OccupationSalary,
|
||||||
|
OccupationPosition = c.OccupationPosition,
|
||||||
|
OccupationPositionType = c.OccupationPositionType,
|
||||||
|
OccupationTelephone = c.OccupationTelephone,
|
||||||
|
Number = c.Number,
|
||||||
|
ExamIdenNumber = c.ExamIdenNumber,
|
||||||
|
SeatNumber = c.SeatNumber,
|
||||||
|
PointTotalA = c.PointTotalA,
|
||||||
|
PointPath1A = c.PointPath1A,
|
||||||
|
PointPath2A = c.PointPath2A,
|
||||||
|
PointPath3A = c.PointPath3A,
|
||||||
|
PointA = c.PointA,
|
||||||
|
PointPerA = c.PointPerA,
|
||||||
|
ResultA = c.ResultA,
|
||||||
|
PointTotalB = c.PointTotalB,
|
||||||
|
PointB = c.PointB,
|
||||||
|
PointPerB = c.PointPerB,
|
||||||
|
ResultB = c.ResultB,
|
||||||
|
PointTotalC = c.PointTotalC,
|
||||||
|
PointPath1C = c.PointPath1C,
|
||||||
|
PointPath2C = c.PointPath2C,
|
||||||
|
PointC = c.PointC,
|
||||||
|
PointPerC = c.PointPerC,
|
||||||
|
ResultC = c.ResultC,
|
||||||
|
Pass = c.Pass,
|
||||||
|
ExamReason = c.ExamReason,
|
||||||
|
CreatedAt = c.CreatedAt,
|
||||||
|
})
|
||||||
|
.ToListAsync();
|
||||||
|
|
||||||
|
var educations = new List<object>();
|
||||||
|
var careers = new List<object>();
|
||||||
|
var ages = new {
|
||||||
|
one = "๐",
|
||||||
|
two = "๐",
|
||||||
|
three = "๐",
|
||||||
|
four = "๐",
|
||||||
|
five = "๐",
|
||||||
|
six = "๐",
|
||||||
|
};
|
||||||
|
var educationsCount = 0;
|
||||||
|
var careersCount = 0;
|
||||||
|
if (candidates.Count > 0)
|
||||||
|
{
|
||||||
|
educations = await _context.Educations
|
||||||
|
.AsQueryable()
|
||||||
|
.Where(x => x.Candidate.PeriodExam == periodExam)
|
||||||
|
.Where(x => x.Candidate.Status != "register")
|
||||||
|
.GroupBy(x => x.EducationLevelExamName)
|
||||||
|
.Select(x => (object)new
|
||||||
|
{
|
||||||
|
Name = x.Key,
|
||||||
|
ToTal = x.Count(),
|
||||||
|
Count = x.Count().ToString().ToThaiNumber(),
|
||||||
|
})
|
||||||
|
.ToListAsync();
|
||||||
|
|
||||||
|
educationsCount = educations.Sum(x => ((dynamic)x).ToTal);
|
||||||
|
|
||||||
|
careers = await _context.Careers
|
||||||
|
.AsQueryable()
|
||||||
|
.Where(x => x.Candidate.PeriodExam == periodExam)
|
||||||
|
.Where(x => x.Candidate.Status != "register")
|
||||||
|
.GroupBy(x => x.Position)
|
||||||
|
.Select(x => (object)new
|
||||||
|
{
|
||||||
|
Name = x.Key,
|
||||||
|
Total = x.Count(),
|
||||||
|
Count = x.Count().ToString().ToThaiNumber(),
|
||||||
|
})
|
||||||
|
.ToListAsync();
|
||||||
|
|
||||||
|
careersCount = careers.Sum(x => ((dynamic)x).Total);
|
||||||
|
|
||||||
|
ages = new
|
||||||
|
{
|
||||||
|
one = candidates.Where(x => x.Age >= 1 && x.Age <= 20).Count().ToString().ToThaiNumber(),
|
||||||
|
two = candidates.Where(x => x.Age >= 21 && x.Age <= 45).Count().ToString().ToThaiNumber(),
|
||||||
|
three = candidates.Where(x => x.Age >= 46 && x.Age <= 60).Count().ToString().ToThaiNumber(),
|
||||||
|
four = candidates.Where(x => x.Age >= 61 && x.Age <= 70).Count().ToString().ToThaiNumber(),
|
||||||
|
five = candidates.Where(x => x.Age >= 71 && x.Age <= 80).Count().ToString().ToThaiNumber(),
|
||||||
|
six = candidates.Where(x => x.Age >= 81).Count().ToString().ToThaiNumber(),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
return new
|
||||||
|
{
|
||||||
|
template = "candidateDashboard",
|
||||||
|
reportName = $"สรุปข้อลการสมัครสอบ {periodExam.Name} ครั้งที่ {periodExam.Round}/{periodExam.Year.Value.ToThaiYear()}",
|
||||||
|
data = new
|
||||||
|
{
|
||||||
|
periodExamName = periodExam.Name.ToThaiNumber(),
|
||||||
|
periodExamRound = $"{periodExam.Round}/{periodExam.Year + 543}".ToThaiNumber(),
|
||||||
|
candidatesCount = candidates.Count().ToString().ToThaiNumber(),
|
||||||
|
educations = educations,
|
||||||
|
educationsCount = educationsCount.ToString().ToThaiNumber(),
|
||||||
|
careers = careers,
|
||||||
|
careersCount = careersCount.ToString().ToThaiNumber(),
|
||||||
|
ages = ages
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
public async Task<MemoryStream> DownloadCandidatePaymentAllAsync(string examId)
|
public async Task<MemoryStream> DownloadCandidatePaymentAllAsync(string examId)
|
||||||
{
|
{
|
||||||
var periodExam = await _context.PeriodExams.AsQueryable()
|
var periodExam = await _context.PeriodExams.AsQueryable()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue