ย้ายคนจากสรรหาไปบรรจุ
This commit is contained in:
parent
afd9994783
commit
9a53f34107
15 changed files with 846 additions and 260 deletions
|
|
@ -1,5 +1,6 @@
|
|||
using System.Security.Claims;
|
||||
using System.Text.Json;
|
||||
using BMA.EHR.Domain.Models.Placement;
|
||||
using BMA.EHR.Extensions;
|
||||
using BMA.EHR.Recurit.Exam.Service.Core;
|
||||
using BMA.EHR.Recurit.Exam.Service.Data;
|
||||
|
|
@ -11,6 +12,7 @@ using BMA.EHR.Recurit.Exam.Service.Responses.Document;
|
|||
using Microsoft.EntityFrameworkCore;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using OfficeOpenXml;
|
||||
using BMA.EHR.Domain.Models.Placement;
|
||||
|
||||
namespace BMA.EHR.Recurit.Exam.Service.Services
|
||||
{
|
||||
|
|
@ -1829,6 +1831,138 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
|
|||
stream.Position = 0;
|
||||
return stream;
|
||||
}
|
||||
|
||||
public async Task UpdateAsyncCandidateToPlacement(Guid examId)
|
||||
{
|
||||
var periodExam = await _context.PeriodExams.AsQueryable()
|
||||
.Include(x => x.Candidate)
|
||||
.ThenInclude(x => x.Educations)
|
||||
.Include(x => x.Candidate)
|
||||
.ThenInclude(x => x.PositionExam)
|
||||
.FirstOrDefaultAsync(x => x.Id == examId);
|
||||
|
||||
if (periodExam == null)
|
||||
throw new Exception(GlobalMessages.ExamNotFound);
|
||||
|
||||
var _placement = await _contextMetadata.Placements.AsQueryable()
|
||||
.FirstOrDefaultAsync(x => x.Name == periodExam.Name && x.Year == ((int)(periodExam.Year == null ? 0 : periodExam.Year)));
|
||||
if (_placement != null)
|
||||
throw new Exception("รอบการสอบนี้ได้ทำการบรรจุไปแล้ว");
|
||||
|
||||
var placement = new Placement
|
||||
{
|
||||
Name = periodExam.Name,
|
||||
Round = periodExam.Round == null ? "" : periodExam.Round.ToString(),
|
||||
Year = (int)(periodExam.Year == null ? 0 : periodExam.Year),
|
||||
Number = periodExam.Candidate.Where(x => x.Status.Contains("done")).Count(),
|
||||
PlacementType = await _contextMetadata.PlacementTypes.FirstOrDefaultAsync(x => x.Name.Trim().ToUpper().Contains("คัดเลือก")) == null ? await _contextMetadata.PlacementTypes.FirstOrDefaultAsync() : await _contextMetadata.PlacementTypes.FirstOrDefaultAsync(x => x.Name.Trim().ToUpper().Contains("คัดเลือก")),
|
||||
StartDate = DateTime.Now,
|
||||
EndDate = DateTime.Now.AddYears(2).AddDays(-1),
|
||||
CreatedAt = DateTime.Now,
|
||||
CreatedUserId = UserId ?? "",
|
||||
CreatedFullName = FullName ?? "",
|
||||
LastUpdatedAt = DateTime.Now,
|
||||
LastUpdateUserId = UserId ?? "",
|
||||
LastUpdateFullName = FullName ?? "",
|
||||
};
|
||||
await _contextMetadata.Placements.AddAsync(placement);
|
||||
foreach (var candidate in periodExam.Candidate)
|
||||
{
|
||||
var placementProfile = new PlacementProfile
|
||||
{
|
||||
Placement = placement,
|
||||
PositionCandidate = await _contextMetadata.PositionPaths.FirstOrDefaultAsync(x => x.Id == (candidate.PositionExam == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : candidate.PositionExam.PositionId)),
|
||||
Prefix = await _contextMetadata.Prefixes.FirstOrDefaultAsync(x => x.Id == candidate.PrefixId),
|
||||
Firstname = candidate.FirstName,
|
||||
Lastname = candidate.LastName,
|
||||
Nationality = candidate.Nationality,
|
||||
DateOfBirth = candidate.DateOfBirth,
|
||||
Relationship = await _contextMetadata.Relationships.FirstOrDefaultAsync(x => x.Id == candidate.RelationshipId),
|
||||
Email = candidate.Email,
|
||||
CitizenId = candidate.CitizenId,
|
||||
CitizenDistrict = await _contextMetadata.Districts.FirstOrDefaultAsync(x => x.Id == candidate.CitizenDistrictId),
|
||||
CitizenProvince = await _contextMetadata.Provinces.FirstOrDefaultAsync(x => x.Id == candidate.CitizenProvinceId),
|
||||
CitizenDate = candidate.CitizenDate,
|
||||
Telephone = candidate.Telephone,
|
||||
MobilePhone = candidate.MobilePhone,
|
||||
Knowledge = candidate.Knowledge,
|
||||
RegistAddress = candidate.RegistAddress,
|
||||
RegistProvince = await _contextMetadata.Provinces.FirstOrDefaultAsync(x => x.Id == candidate.RegistProvinceId),
|
||||
RegistDistrict = await _contextMetadata.Districts.FirstOrDefaultAsync(x => x.Id == candidate.RegistDistrictId),
|
||||
RegistSubDistrict = await _contextMetadata.SubDistricts.FirstOrDefaultAsync(x => x.Id == candidate.RegistSubDistrictId),
|
||||
RegistZipCode = candidate.RegistZipCode,
|
||||
RegistSame = candidate.RegistSame,
|
||||
CurrentAddress = candidate.CurrentAddress,
|
||||
CurrentProvince = await _contextMetadata.Provinces.FirstOrDefaultAsync(x => x.Id == candidate.CurrentProvinceId),
|
||||
CurrentDistrict = await _contextMetadata.Districts.FirstOrDefaultAsync(x => x.Id == candidate.CurrentDistrictId),
|
||||
CurrentSubDistrict = await _contextMetadata.SubDistricts.FirstOrDefaultAsync(x => x.Id == candidate.CurrentSubDistrictId),
|
||||
CurrentZipCode = candidate.CurrentZipCode,
|
||||
Marry = candidate.Marry,
|
||||
MarryPrefix = await _contextMetadata.Prefixes.FirstOrDefaultAsync(x => x.Id == candidate.MarryPrefixId),
|
||||
MarryFirstName = candidate.MarryFirstName,
|
||||
MarryLastName = candidate.MarryLastName,
|
||||
MarryOccupation = candidate.MarryOccupation,
|
||||
MarryNationality = candidate.MarryNationality,
|
||||
FatherPrefix = await _contextMetadata.Prefixes.FirstOrDefaultAsync(x => x.Id == candidate.FatherPrefixId),
|
||||
FatherFirstName = candidate.FatherFirstName,
|
||||
FatherLastName = candidate.FatherLastName,
|
||||
FatherOccupation = candidate.FatherOccupation,
|
||||
FatherNationality = candidate.FatherNationality,
|
||||
MotherPrefix = await _contextMetadata.Prefixes.FirstOrDefaultAsync(x => x.Id == candidate.MotherPrefixId),
|
||||
MotherFirstName = candidate.MotherFirstName,
|
||||
MotherLastName = candidate.MotherLastName,
|
||||
MotherOccupation = candidate.MotherOccupation,
|
||||
MotherNationality = candidate.MotherNationality,
|
||||
OccupationType = candidate.OccupationType,
|
||||
OccupationCompany = candidate.OccupationCompany,
|
||||
OccupationDepartment = candidate.OccupationDepartment,
|
||||
OccupationEmail = candidate.OccupationEmail,
|
||||
OccupationTelephone = candidate.OccupationTelephone,
|
||||
OccupationPosition = candidate.OccupationPosition,
|
||||
PointTotalA = Convert.ToDouble(candidate.PointTotalA),
|
||||
PointA = Convert.ToDouble(candidate.PointA),
|
||||
PointTotalB = Convert.ToDouble(candidate.PointTotalB),
|
||||
PointB = Convert.ToDouble(candidate.PointB),
|
||||
PointTotalC = Convert.ToDouble(candidate.PointTotalC),
|
||||
PointC = Convert.ToDouble(candidate.PointC),
|
||||
ExamNumber = Convert.ToInt32(candidate.Number),
|
||||
ExamRound = 1,
|
||||
IsRelief = false,
|
||||
PlacementStatus = "UN-CONTAIN",
|
||||
Pass = candidate.Pass,
|
||||
CreatedAt = DateTime.Now,
|
||||
CreatedUserId = UserId ?? "",
|
||||
CreatedFullName = FullName ?? "",
|
||||
LastUpdatedAt = DateTime.Now,
|
||||
LastUpdateUserId = UserId ?? "",
|
||||
LastUpdateFullName = FullName ?? "",
|
||||
};
|
||||
await _contextMetadata.PlacementProfiles.AddAsync(placementProfile);
|
||||
|
||||
foreach (var education in candidate.Educations)
|
||||
{
|
||||
var placementEducation = new PlacementEducation
|
||||
{
|
||||
PlacementProfile = placementProfile,
|
||||
EducationLevel = await _contextMetadata.EducationLevels.FirstOrDefaultAsync(x => x.Id == education.EducationLevelId),
|
||||
Field = education.Major,
|
||||
Gpa = education.Scores.ToString(),
|
||||
Institute = education.Name,
|
||||
IsDate = true,
|
||||
StartDate = education.DurationStart,
|
||||
EndDate = education.DurationEnd,
|
||||
CreatedAt = DateTime.Now,
|
||||
CreatedUserId = UserId ?? "",
|
||||
LastUpdatedAt = DateTime.Now,
|
||||
LastUpdateUserId = UserId ?? "",
|
||||
CreatedFullName = FullName ?? "",
|
||||
LastUpdateFullName = FullName ?? "",
|
||||
};
|
||||
await _contextMetadata.PlacementEducations.AddAsync(placementEducation);
|
||||
}
|
||||
}
|
||||
await _contextMetadata.SaveChangesAsync();
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue