เพิ่ม api แสดงข้อมูลเงินเดือนที่บันทึกในระบบสรรหา

This commit is contained in:
Suphonchai Phoonsawat 2023-08-07 14:57:23 +07:00
parent f80c1ca295
commit 72c53c2e42
6 changed files with 236 additions and 67 deletions

View file

@ -1,5 +1,7 @@
using BMA.EHR.Application.Common.Interfaces;
using BMA.EHR.Application.Requests.Commands;
using BMA.EHR.Application.Responses;
using BMA.EHR.Domain.Extensions;
using BMA.EHR.Domain.Models.Commands.Core;
using BMA.EHR.Domain.Models.MetaData;
using BMA.EHR.Domain.Models.Organizations;
@ -33,6 +35,77 @@ namespace BMA.EHR.Application.Repositories.Commands
#region " Methods "
#region " Private "
private async Task GetReceiverForByCommndTypeAsync(Command command)
{
switch (command.CommandType.Category.Trim().ToUpper())
{
case "C-PM-01":
await GetReceiver01(command);
break;
default: throw new Exception(GlobalMessages.MethodForCommandTypeNotImplement);
}
}
/// <summary>
/// C-PM-01
/// </summary>
/// <param name="command"></param>
/// <returns></returns>
private async Task GetReceiver01(Command command)
{
try
{
// 1. หารายชื่อที่ถูกเลือกไปแล้ว ในประเภทเดียวกัน
var otherCommandReceivers = await _dbContext.Set<CommandReceiver>()
.Include(x => x.Command)
.ThenInclude(x => x.CommandType)
.Where(x => x.Command.CommandType.CommandCode.Trim().ToUpper() == "C-PM-01")
.Where(x => x.Id != command.Id)
.Select(x => x.CitizenId)
.ToListAsync();
// 2. Query
var appointPeople = await _dbContext.Set<PlacementProfile>()
.Include(x => x.Prefix)
.Include(x => x.OrganizationPosition)
.ThenInclude(x => x.Organization)
//.Where(x => x.OrganizationPosition!.Organization!.Id == command.OwnerGovId)
.Where(x => !otherCommandReceivers.Contains(x.CitizenId!))
.Where(x => x.PlacementStatus.Trim().ToUpper() == "PREPARE-CONTAIN")
.Where(x => x.Draft! == true)
.OrderBy(x => x.ExamNumber)
.ToListAsync();
// 3. Create new Record
var seq = 1;
foreach (var item in appointPeople)
{
var receiver = new CommandReceiver
{
Sequence = seq,
CitizenId = item.CitizenId!,
Prefix = item.Prefix!.Name,
FirstName = item.Firstname!,
LastName = item.Lastname!,
RefPlacementProfileId = item.Id
};
seq++;
command.Receivers.Add(receiver);
}
await _dbContext.SaveChangesAsync();
}
catch
{
throw;
}
}
#endregion
#region " Override "
public override async Task<Command?> GetByIdAsync(Guid id)
@ -97,49 +170,10 @@ namespace BMA.EHR.Application.Repositories.Commands
}
else
{
// 1. หารายชื่อที่ถูกเลือกไปแล้ว ในประเภทเดียวกัน
var otherCommandReceivers = await _dbContext.Set<CommandReceiver>()
.Include(x => x.Command)
.ThenInclude(x => x.CommandType)
.Where(x => x.Command.CommandType.CommandCode.Trim().ToUpper() == "C-PM-01")
.Where(x => x.Id != Id)
.Select(x => x.CitizenId)
.ToListAsync();
// 2. Query
var appointPeople = await _dbContext.Set<PlacementProfile>()
.Include(x => x.Prefix)
.Include(x => x.OrganizationPosition)
.ThenInclude(x => x.Organization)
//.Where(x => x.OrganizationPosition!.Organization!.Id == command.OwnerGovId)
.Where(x => !otherCommandReceivers.Contains(x.CitizenId!))
.Where(x => x.PlacementStatus.Trim().ToUpper() == "PREPARE-CONTAIN")
.Where(x => x.Draft! == true)
.OrderBy(x => x.ExamNumber)
.ToListAsync();
// 3. Create new Record
var seq = 1;
foreach (var item in appointPeople)
{
var receiver = new CommandReceiver
{
Sequence = seq,
CitizenId = item.CitizenId!,
Prefix = item.Prefix!.Name,
FirstName = item.Firstname!,
LastName = item.Lastname!,
RefPlacementProfileId = item.Id
};
seq++;
command.Receivers.Add(receiver);
}
await _dbContext.SaveChangesAsync();
await GetReceiverForByCommndTypeAsync(command);
// query for new list
return command.Receivers;
return command.Receivers!;
}
}
}
@ -559,6 +593,30 @@ namespace BMA.EHR.Application.Repositories.Commands
#region " Placement "
public async Task<PlacementSalaryResponse> GetPlacementSalaryAsync(Guid placementProfileId)
{
try
{
var placementProfile = await _dbContext.Set<PlacementProfile>()
.FirstOrDefaultAsync(p => p.Id == placementProfileId);
if (placementProfile == null)
throw new Exception($"Invalid placement profile: {placementProfileId}");
return new PlacementSalaryResponse
{
SalaryAmount = placementProfile.Amount ?? 0,
PositionSalaryAmount = placementProfile.PositionSalaryAmount ?? 0,
MonthSalaryAmount = placementProfile.MouthSalaryAmount ?? 0
};
}
catch
{
throw;
}
}
public async Task UpdatePlacementSalaryAsync(Guid placementProfileId, UpdatePlacementSalaryRequest req)
{
try
@ -604,7 +662,30 @@ namespace BMA.EHR.Application.Repositories.Commands
#endregion
public async Task UpdateCommandInfo(Guid id, string orderNo, string orderYear, DateTime signDate)
#region " Command Info "
public async Task<CommandInfoResponse> GetCommandInfoAsync(Guid id)
{
try
{
var command = await _dbContext.Set<Command>().FirstOrDefaultAsync(x => x.Id == id);
if (command == null)
throw new Exception(GlobalMessages.CommandNotFound);
return new CommandInfoResponse
{
SignDate = command.CommandExcecuteDate.Value,
OrderNo = command.CommandNo,
OrderYear = command.CommandYear,
};
}
catch
{
throw;
}
}
public async Task UpdateCommandInfoAsync(Guid id, string orderNo, string orderYear, DateTime signDate)
{
try
{
@ -623,25 +704,27 @@ namespace BMA.EHR.Application.Repositories.Commands
}
}
//public async Task<Guid> GetRootOcIdAsync(Guid ocId)
//{
// try
// {
// var data = await _dbContext.Set<OrganizationEntity>().AsQueryable()
#endregion
public async Task<Guid> GetRootOcIdAsync(Guid ocId)
{
try
{
var data = await _dbContext.Set<OrganizationEntity>().AsQueryable()
.Include(x => x.OrganizationAgency)
.Include(x => x.OrganizationGovernmentAgency)
.FirstOrDefaultAsync(o => o.Id == ocId);
// .FirstOrDefaultAsync(o => o.Id == ocId);
if (data == null)
throw new Exception(GlobalMessages.OrganizationNotFound);
// if (data == null)
// throw new Exception(GlobalMessages.OrganizationNotFound);
// return data
// }
// catch
// {
// throw;
// }
//}
return data.OrganizationAgency!.Id;
}
catch
{
throw;
}
}
#endregion