add field to support cms and change sum api
This commit is contained in:
parent
6d9f252f1a
commit
b8109e80ac
16 changed files with 2132 additions and 23 deletions
|
|
@ -386,6 +386,16 @@ namespace BMA.EHR.Recruit.Service.Controllers
|
|||
Year = req.Year,
|
||||
Name = req.Name,
|
||||
Order = req.Order,
|
||||
Detail = req.Detail,
|
||||
Fee = req.Fee,
|
||||
AnnouncementStartDate = req.AnnouncementStartDate,
|
||||
AnnouncementEndDate = req.AnnouncementEndDate,
|
||||
RegisterStartDate = req.RegisterStartDate,
|
||||
RegisterEndDate = req.RegisterEndDate,
|
||||
ExamDate = req.ExamDate,
|
||||
PaymentStartDate = req.PaymentStartDate,
|
||||
PaymentEndDate = req.PaymentEndDate,
|
||||
Note = req.Note,
|
||||
});
|
||||
|
||||
await _context.SaveChangesAsync();
|
||||
|
|
@ -398,6 +408,55 @@ namespace BMA.EHR.Recruit.Service.Controllers
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// แก้ไขข้อมูลรอบการจัดสอบแข่งขัน
|
||||
/// </summary>
|
||||
/// <param name="id">รหัสรอบการสอบแข่งขัน</param>
|
||||
/// <param name="req">Request parameters</param>
|
||||
/// <returns></returns>
|
||||
/// <response code="200">เมื่อทำการเพิ่มข้อมูลสำเร็จ</response>
|
||||
/// <response code="400">ค่าตัวแปรที่ส่งมาไม่ถูกต้อง</response>
|
||||
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
|
||||
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
|
||||
[HttpPut("period/{id:length(36)}")]
|
||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
||||
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
||||
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||
public async Task<ActionResult<ResponseObject>> PutPeriodAsync(Guid id, [FromBody] PostRecruitImportRequest req)
|
||||
{
|
||||
try
|
||||
{
|
||||
var data = await _context.RecruitImports.AsQueryable().FirstOrDefaultAsync(x => x.Id == id);
|
||||
|
||||
if (data == null)
|
||||
return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound);
|
||||
|
||||
data.Name = req.Name;
|
||||
data.Year = req.Year;
|
||||
data.Order = req.Order;
|
||||
data.Detail = req.Detail;
|
||||
data.Fee = req.Fee;
|
||||
data.AnnouncementEndDate = req.AnnouncementEndDate;
|
||||
data.AnnouncementStartDate = req.AnnouncementStartDate;
|
||||
data.RegisterStartDate = req.RegisterStartDate;
|
||||
data.RegisterEndDate = req.RegisterEndDate;
|
||||
data.PaymentEndDate = req.PaymentEndDate;
|
||||
data.PaymentStartDate = req.PaymentStartDate;
|
||||
data.ExamDate = req.ExamDate;
|
||||
data.Note = req.Note;
|
||||
|
||||
await _context.SaveChangesAsync();
|
||||
|
||||
return Success();
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return Error(ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// ลบข้อมูลรอบการจัดสอบแข่งขัน
|
||||
|
|
@ -806,6 +865,223 @@ namespace BMA.EHR.Recruit.Service.Controllers
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// นำเข้ารายชื่อผู้สมัครสอบแข่งขัน
|
||||
/// </summary>
|
||||
/// <param name="id">รหัสรอบการสอบแข่งขัน</param>
|
||||
/// <returns></returns>
|
||||
/// <response code="200">เมื่อทำนำเข้าข้อมูลสำเร็จ</response>
|
||||
/// <response code="400">ค่าตัวแปรที่ส่งมาไม่ถูกต้อง</response>
|
||||
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
|
||||
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
|
||||
[HttpPost("candidate/{id:length(36)}"), DisableRequestSizeLimit]
|
||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
||||
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
||||
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||
public async Task<ActionResult<ResponseObject>> ImportCandidateFileByIdAsync(Guid id)
|
||||
{
|
||||
var tmpDir = Path.Combine(_webHostEnvironment.ContentRootPath, "tmp");
|
||||
if (!Directory.Exists(tmpDir))
|
||||
Directory.CreateDirectory(tmpDir);
|
||||
|
||||
var importFile = Path.Combine(tmpDir, $"c_{DateTime.Now.ToString("ddMMyyyyHHmmss")}.xlsx");
|
||||
var import_doc_id = "";
|
||||
|
||||
try
|
||||
{
|
||||
if (Request.Form.Files == null || Request.Form.Files.Count == 0)
|
||||
{
|
||||
return Error(GlobalMessages.NoFileToUpload);
|
||||
}
|
||||
|
||||
var imported = await _context.RecruitImports.AsQueryable()
|
||||
.Include(x => x.ImportHostories)
|
||||
.Include(x => x.ImportFile)
|
||||
.Include(x => x.Recruits)
|
||||
.ThenInclude(x => x.Addresses)
|
||||
.Include(x => x.Recruits)
|
||||
.ThenInclude(x => x.Occupations)
|
||||
.Include(x => x.Recruits)
|
||||
.ThenInclude(x => x.Certificates)
|
||||
.Include(x => x.Recruits)
|
||||
.ThenInclude(x => x.Educations)
|
||||
.Include(x => x.Recruits)
|
||||
.ThenInclude(x => x.Payments)
|
||||
.Include(x => x.Recruits)
|
||||
.FirstOrDefaultAsync(x => x.Id == id);
|
||||
|
||||
if (imported == null)
|
||||
return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound);
|
||||
|
||||
if (imported.Recruits != null)
|
||||
{
|
||||
// remove old score data
|
||||
_context.Recruits.RemoveRange(imported.Recruits);
|
||||
await _context.SaveChangesAsync();
|
||||
}
|
||||
|
||||
var file = Request.Form.Files[0];
|
||||
var doc = await _minioService.UploadFileAsync(file);
|
||||
import_doc_id = doc.Id.ToString("D");
|
||||
|
||||
var fileContent = (await _minioService.DownloadFileAsync(doc.Id)).FileContent;
|
||||
|
||||
// สร้างรอบการบรรจุ โดยเอาเข้ามูลมาใส่จาก Request
|
||||
imported.ImportHostories.Add(new RecruitImportHistory
|
||||
{
|
||||
Description = "นำเข้าข้อมูลผู้สมัครสอบแข่งขัน",
|
||||
CreatedAt = DateTime.Now,
|
||||
CreatedUserId = UserId ?? "",
|
||||
CreatedFullName = FullName ?? "System Administrator",
|
||||
});
|
||||
|
||||
//await _context.RecruitImports.AddAsync(imported);
|
||||
|
||||
// import datafile
|
||||
System.IO.File.WriteAllBytes(importFile, fileContent);
|
||||
|
||||
using (var c_package = new ExcelPackage(new FileInfo(importFile)))
|
||||
{
|
||||
// loop from sheet2 to end
|
||||
|
||||
for (int i = 1; i < c_package.Workbook.Worksheets.Count; i++)
|
||||
{
|
||||
var workSheet = c_package.Workbook.Worksheets[i];
|
||||
var totalRows = workSheet.Dimension.Rows;
|
||||
var cols = workSheet.GetHeaderColumns();
|
||||
|
||||
int row = 2;
|
||||
|
||||
while (row <= totalRows)
|
||||
{
|
||||
var cell1 = workSheet?.Cells[row, 1]?.GetValue<string>();
|
||||
if (cell1 == "" || cell1 == null) break;
|
||||
|
||||
var r = new Models.Recruits.Recruit();
|
||||
r.ExamId = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.ExamID)]?.GetValue<string>();
|
||||
r.CitizenId = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.PersonalID)]?.GetValue<string>();
|
||||
r.Prefix = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.Prefix)]?.GetValue<string>();
|
||||
r.FirstName = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.FirstName)]?.GetValue<string>();
|
||||
r.LastName = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.LastName)]?.GetValue<string>();
|
||||
r.Gendor = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.Gender)]?.GetValue<string>();
|
||||
r.National = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.National)]?.GetValue<string>().IsNull("");
|
||||
r.Race = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.Race)]?.GetValue<string>().IsNull("");
|
||||
r.Religion = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.Religion)]?.GetValue<string>().IsNull("");
|
||||
r.DateOfBirth = Convert.ToDateTime(workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.DateOfBirth)]?.GetValue<string>().ToDateTime(DateTimeFormat.Ymd, "-"));
|
||||
r.Marry = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.Marry)]?.GetValue<string>();
|
||||
r.Isspecial = "N";
|
||||
r.CitizenCardIssuer = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.PersonalCardIssue)]?.GetValue<string>();
|
||||
r.CitizenCardExpireDate = Convert.ToDateTime(workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.PersonalCardExpireDate)]?.GetValue<string>().ToDateTime(DateTimeFormat.Ymd, "-"));
|
||||
r.ApplyDate = (DateTime)workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.ApplyDate)]?.GetValue<DateTime>();
|
||||
|
||||
|
||||
// address
|
||||
r.Addresses.Add(new RecruitAddress()
|
||||
{
|
||||
Address = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.Address)]?.GetValue<string>() ?? "",
|
||||
Moo = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.Moo)]?.GetValue<string>() ?? "",
|
||||
Soi = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.Soi)]?.GetValue<string>() ?? "",
|
||||
Road = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.Road)]?.GetValue<string>() ?? "",
|
||||
District = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.District)]?.GetValue<string>() ?? "",
|
||||
Amphur = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.Amphur)]?.GetValue<string>() ?? "",
|
||||
Province = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.Province)]?.GetValue<string>() ?? "",
|
||||
ZipCode = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.ZipCode)]?.GetValue<string>() ?? "",
|
||||
Telephone = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.Telephone)]?.GetValue<string>() ?? "",
|
||||
Mobile = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.Mobile)]?.GetValue<string>() ?? "",
|
||||
Address1 = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.Address1)]?.GetValue<string>() ?? "",
|
||||
Moo1 = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.Moo1)]?.GetValue<string>() ?? "",
|
||||
Soi1 = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.Soi1)]?.GetValue<string>() ?? "",
|
||||
Road1 = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.Road1)]?.GetValue<string>() ?? "",
|
||||
District1 = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.District1)]?.GetValue<string>() ?? "",
|
||||
Amphur1 = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.Amphur1)]?.GetValue<string>() ?? "",
|
||||
Province1 = "",
|
||||
ZipCode1 = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.ZipCode1)]?.GetValue<string>() ?? "",
|
||||
});
|
||||
|
||||
// payment
|
||||
r.Payments.Add(new RecruitPayment()
|
||||
{
|
||||
PaymentId = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.PaymentID)]?.GetValue<string>() ?? "",
|
||||
CompanyCode = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.CompanyCode)]?.GetValue<string>() ?? "",
|
||||
TextFile = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.TextFile)]?.GetValue<string>() ?? "",
|
||||
BankCode = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.BankCode)]?.GetValue<string>() ?? "",
|
||||
AccountNumber = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.AccouontNumer)]?.GetValue<string>() ?? "",
|
||||
TransDate = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.TransDate)]?.GetValue<string>() ?? "",
|
||||
TransTime = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.TransTime)]?.GetValue<string>() ?? "",
|
||||
CustomerName = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.CustomerName)]?.GetValue<string>() ?? "",
|
||||
RefNo1 = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.RefNo1)]?.GetValue<string>() ?? "",
|
||||
TermBranch = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.TermBranch)]?.GetValue<string>() ?? "",
|
||||
TellerId = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.TellerID)]?.GetValue<string>() ?? "",
|
||||
CreditDebit = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.CreditDebit)]?.GetValue<string>() ?? "",
|
||||
PaymentType = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.Type)]?.GetValue<string>(),
|
||||
ChequeNo = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.ChequeNo)]?.GetValue<string>() ?? "",
|
||||
Amount = (decimal)workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.Amount)]?.GetValue<decimal>(),
|
||||
ChqueBankCode = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.ChqBankCode)]?.GetValue<string>() ?? ""
|
||||
});
|
||||
|
||||
// occupation
|
||||
r.Occupations.Add(new RecruitOccupation()
|
||||
{
|
||||
Occupation = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.Occupation)]?.GetValue<string>() ?? "",
|
||||
Position = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.Position)]?.GetValue<string>() ?? "",
|
||||
Workplace = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.Workplace)]?.GetValue<string>() ?? "",
|
||||
Telephone = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.WorkplaceTelephone)]?.GetValue<string>() ?? "",
|
||||
WorkAge = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.WorkAge)]?.GetValue<string>() ?? "",
|
||||
});
|
||||
|
||||
// certificate
|
||||
r.Certificates.Add(new RecruitCertificate()
|
||||
{
|
||||
CertificateNo = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.CertificateNo)]?.GetValue<string>() ?? "",
|
||||
Description = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.CertificateDesc)]?.GetValue<string>() ?? "",
|
||||
IssueDate = Convert.ToDateTime(workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.CertificateIssueDate)]?.GetValue<string>().ToDateTime(DateTimeFormat.Ymd, "-")),
|
||||
ExpiredDate = Convert.ToDateTime(workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.CertificateExpireDate)]?.GetValue<string>().ToDateTime(DateTimeFormat.Ymd, "-"))
|
||||
});
|
||||
|
||||
r.Educations.Add(new RecruitEducation()
|
||||
{
|
||||
Degree = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.Degree)]?.GetValue<string>() ?? "",
|
||||
Major = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.Major)]?.GetValue<string>() ?? "",
|
||||
MajorGroupId = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.MajorGroupID)]?.GetValue<string>() ?? "",
|
||||
MajorGroupName = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.MajorGroupName)]?.GetValue<string>() ?? "",
|
||||
University = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.University)]?.GetValue<string>() ?? "",
|
||||
GPA = (double)workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.GPA)]?.GetValue<double>(),
|
||||
Specialist = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.SpecialList)]?.GetValue<string>() ?? "",
|
||||
HighDegree = workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.HighDegree)]?.GetValue<string>() ?? "",
|
||||
BachelorDate = Convert.ToDateTime(workSheet?.Cells[row, GetColumnIndex(cols, CandidateFileHeader.BachelorDate)]?.GetValue<string>().ToDateTime(DateTimeFormat.Ymd, "-"))
|
||||
});
|
||||
|
||||
r.RecruitImport = imported;
|
||||
_context.Recruits.Add(r);
|
||||
|
||||
//imported.Recruits.Add(r);
|
||||
row++;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// finally save to database
|
||||
|
||||
_context.SaveChanges();
|
||||
|
||||
return Success();
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
await _minioService.DeleteFileAsync(Guid.Parse(import_doc_id));
|
||||
return Error(ex);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (System.IO.File.Exists(importFile))
|
||||
System.IO.File.Delete(importFile);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region " Score File "
|
||||
|
|
@ -829,6 +1105,7 @@ namespace BMA.EHR.Recruit.Service.Controllers
|
|||
|
||||
var rec_import = await _context.RecruitImports.AsQueryable()
|
||||
.Include(x => x.ScoreImport)
|
||||
.ThenInclude(x => x.Scores)
|
||||
.Include(x => x.ImportHostories)
|
||||
.FirstOrDefaultAsync(x => x.Id == id);
|
||||
|
||||
|
|
@ -836,7 +1113,14 @@ namespace BMA.EHR.Recruit.Service.Controllers
|
|||
return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound);
|
||||
|
||||
if (rec_import.ScoreImport != null)
|
||||
return Error($"มีการนำเข้าข้อมูลเอาไว้ก่อนหน้านี้แล้ว ไม่สามารถนำเข้าได้!!");
|
||||
{
|
||||
// remove old score data
|
||||
if (rec_import.ScoreImport.Scores != null)
|
||||
{
|
||||
_context.RecruitScores.RemoveRange(rec_import.ScoreImport.Scores);
|
||||
await _context.SaveChangesAsync();
|
||||
}
|
||||
}
|
||||
|
||||
var file = Request.Form.Files[0];
|
||||
var doc = await _minioService.UploadFileAsync(file);
|
||||
|
|
@ -916,6 +1200,7 @@ namespace BMA.EHR.Recruit.Service.Controllers
|
|||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
await _minioService.DeleteFileAsync(Guid.Parse(import_doc_id));
|
||||
return Error(ex);
|
||||
}
|
||||
finally
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue