This commit is contained in:
Suphonchai Phoonsawat 2025-05-28 15:58:02 +07:00
parent fd25873348
commit 9483d537ce
2 changed files with 259 additions and 1 deletions

View file

@ -8974,6 +8974,100 @@ namespace BMA.EHR.Application.Repositories
// }
// insert candidate list
public async Task UpdateCandidateAsync(Guid periodId, Guid ocId, string oc, List<InsigniaResultSet> items)
{
try
{
var period = await _dbContext.Set<InsigniaPeriod>().FirstOrDefaultAsync(p => p.Id == periodId);
if (period == null)
throw new Exception(GlobalMessages.InsigniaPeriodNotFound);
var req = await _dbContext.Set<InsigniaRequest>()
.Include(x => x.RequestProfiles)
.Include(x => x.Period)
.Where(x => x.Period.Id == periodId)
.Where(x => x.OrganizationId == ocId)
.FirstOrDefaultAsync();
if (req != null)
{
foreach (var item in items)
{
var reqInsignia = await _dbContext.Set<Insignia>()
.FirstOrDefaultAsync(i => i.Id == item.RequestInsignia.Id);
if (reqInsignia == null) throw new Exception(GlobalMessages.InsigniaNotFound);
var pf = req.RequestProfiles.FirstOrDefault(x => x.ProfileId == item.ProfileId);
if (pf != null) continue; // มีอยู่แล้วข้ามไป
req.RequestProfiles.Add(new InsigniaRequestProfile
{
Status = "PENDING",
ProfileId = item.ProfileId,
RequestInsignia = reqInsignia,
Salary = item.Salary,
RequestDate = DateTime.Now,
MatchingConditions =
System.Text.Json.JsonSerializer.Serialize(item.MatchingConditions),
CreatedFullName = FullName ?? "System Administrator",
CreatedUserId = UserId ?? "",
CreatedAt = DateTime.Now,
LastUpdateFullName = FullName ?? "System Administrator",
LastUpdateUserId = UserId ?? "",
LastUpdatedAt = DateTime.Now,
// Add Information for reused in API Call
ProfileType = item.ProfileType ?? "officer",
Prefix = item.Prefix,
FirstName = item.FirstName,
LastName = item.LastName,
CitizenId = item.CitizenId,
BirthDate = item.BirthDate,
DateAppoint = item.DateAppoint,
Position = item.Position,
Gender = item.Gender,
PosTypeName = item.PosTypeName,
PosLevelName = item.PosLevelName,
PosNo = item.PosNo,
Amount = item.Salary,
PositionSalaryAmount = item.PositionSalary,
LastInsigniaName = item.LastInsignia,
Root = item.Root,
RootId = item.RootId,
RootDnaId = item.RootDnaId,
Child1 = item.Child1,
Child1Id = item.Child1Id,
Child1DnaId = item.Child1DnaId,
Child2 = item.Child2,
Child2Id = item.Child2Id,
Child2DnaId = item.Child2DnaId,
Child3 = item.Child3,
Child3Id = item.Child3Id,
Child3DnaId = item.Child3DnaId,
Child4 = item.Child4,
Child4Id = item.Child4Id,
Child4DnaId = item.Child4DnaId,
MarkDiscipline = item.MarkDiscipline,
MarkInsignia = item.MarkInsignia,
MarkLeave = item.MarkLeave,
MarkRate = item.MarkRate
});
}
await _dbContext.SaveChangesAsync();
}
}
catch
{
throw;
}
}
public async Task InsertCandidate(Guid periodId, Guid ocId, string oc, List<InsigniaResultSet> items)
{
try
@ -8981,7 +9075,7 @@ namespace BMA.EHR.Application.Repositories
var period = await _dbContext.Set<InsigniaPeriod>().FirstOrDefaultAsync(p => p.Id == periodId);
if (period == null)
throw new Exception(GlobalMessages.CoinPeriodNotFound);
throw new Exception(GlobalMessages.InsigniaPeriodNotFound);
var periodOlds = await _dbContext.Set<InsigniaPeriod>().Where(p => p.Year == period.Year).ToListAsync();
foreach (var periodOld in periodOlds)