This commit is contained in:
Suphonchai Phoonsawat 2024-06-20 13:37:25 +07:00
parent 6c09c68c5c
commit 1ae6f5e8d1
23 changed files with 304 additions and 123 deletions

View file

@ -92,31 +92,43 @@ namespace BMA.EHR.Application.Repositories
}
}
public async Task<bool> UpdateDutyTimeAsync(Guid profileId, Guid roundId, DateTime effectiveDate)
public async Task<bool> UpdateDutyTimeAsync(Guid profileId, Guid roundId, DateTime effectiveDate, string? accessToken)
{
try
{
var profile = await _dbContext.Set<Profile>()
.AsQueryable()
.Include(x => x.Prefix)
.FirstOrDefaultAsync(x => x.Id == profileId);
var apiPath = $"{_configuration["API"]}/org/dotnet/update-dutytime";
if (profile == null)
var body = new
{
throw new Exception(GlobalMessages.DataNotFound);
}
else
{
var fullName = $"{profile.Prefix.Name}{profile.FirstName} {profile.LastName}";
Console.WriteLine(fullName);
EffevtiveDate = effectiveDate,
RoundId = roundId,
ProfileId = profileId
};
profile.DutyTimeId = roundId;
profile.DutyTimeEffectiveDate = effectiveDate;
var apiResult = await PostExternalAPIBooleanAsync(apiPath, accessToken ?? "", body);
await UpdateAsync(profile);
return apiResult;
//var profile = await _dbContext.Set<Profile>()
// .AsQueryable()
// .Include(x => x.Prefix)
// .FirstOrDefaultAsync(x => x.Id == profileId);
return true;
}
//if (profile == null)
//{
// throw new Exception(GlobalMessages.DataNotFound);
//}
//else
//{
// var fullName = $"{profile.Prefix.Name}{profile.FirstName} {profile.LastName}";
// Console.WriteLine(fullName);
// profile.DutyTimeId = roundId;
// profile.DutyTimeEffectiveDate = effectiveDate;
// await UpdateAsync(profile);
// return true;
//}
}
catch
{
@ -124,16 +136,21 @@ namespace BMA.EHR.Application.Repositories
}
}
public async Task<List<Profile>> GetProfileWithKeycloak()
public async Task<List<GetProfileByKeycloakIdDto>> GetProfileWithKeycloak(string? accessToken)
{
try
{
var data = await _dbContext.Set<Profile>().AsQueryable()
.Where(x => x.ProfileType == "officer")
.Where(x => x.KeycloakId != null)
.ToListAsync();
var apiPath = $"{_configuration["API"]}/org/dotnet/keycloak";
return data;
var apiResult = await GetExternalAPIAsync(apiPath, accessToken ?? "");
if (apiResult != null)
{
var raw = JsonConvert.DeserializeObject<GetListProfileByKeycloakIdResultDto>(apiResult);
if (raw != null)
return raw.Result;
}
return null;
}
catch
{
@ -193,28 +210,51 @@ namespace BMA.EHR.Application.Repositories
}
}
public async Task<List<Profile>> SearchProfileEmployee(string? citizenId, string? firstName, string? lastName)
public async Task<List<SearchProfileDto>> SearchProfileEmployee(string? citizenId, string? firstName, string? lastName, string accessToken)
{
try
{
var data = _dbContext.Set<Profile>().AsQueryable()
.Where(x => x.ProfileType == "employee");
var apiPath = $"{_configuration["API"]}/org/dotnet/search-employee";
var body = new
{
citizenId = citizenId,
firstName = firstName,
lastName = lastName
};
var profiles = new List<SearchProfileDto>();
var apiResult = await PostExternalAPIAsync(apiPath, accessToken, body);
if (apiResult != null)
{
var raw = JsonConvert.DeserializeObject<SearchProfileResultDto>(apiResult);
if (raw != null && raw.Result != null)
{
profiles.AddRange(raw.Result);
}
}
return profiles;
if (citizenId != null)
data = data.Where(x => x.CitizenId!.Contains(citizenId));
if (firstName != null)
data = data.Where(x => x.FirstName!.Contains(firstName));
if (lastName != null)
data = data.Where(x => x.LastName!.Contains(lastName));
data = data.Include(x => x.Prefix);
//.Include(x => x.PosNoEmployee);
//var data = _dbContext.Set<Profile>().AsQueryable()
// .Where(x => x.ProfileType == "employee");
return await data.ToListAsync();
//if (citizenId != null)
// data = data.Where(x => x.CitizenId!.Contains(citizenId));
//if (firstName != null)
// data = data.Where(x => x.FirstName!.Contains(firstName));
//if (lastName != null)
// data = data.Where(x => x.LastName!.Contains(lastName));
//data = data.Include(x => x.Prefix);
////.Include(x => x.PosNoEmployee);
//return await data.ToListAsync();
}
catch
{
@ -222,17 +262,22 @@ namespace BMA.EHR.Application.Repositories
}
}
public string GetUserFullName(Guid keycloakId)
public string GetUserFullName(Guid keycloakId, string? accessToken)
{
try
{
var data = _dbContext.Set<Profile>().AsQueryable()
.Include(x => x.Prefix)
.Where(x => x.KeycloakId == keycloakId)
.Select(x => $"{x.Prefix!.Name}{x.FirstName} {x.LastName}")
.FirstOrDefault();
var apiPath = $"{_configuration["API"]}/org/dotnet/keycloak";
var apiResult = GetExternalAPIAsync(apiPath, accessToken ?? "");
if (apiResult.Result != null)
{
var raw = JsonConvert.DeserializeObject<GetUserFullNameResultDto>(apiResult.Result);
if (raw != null)
return raw.Result;
}
return string.Empty;
return data ?? "-";
}
catch
{
@ -240,21 +285,34 @@ namespace BMA.EHR.Application.Repositories
}
}
public Guid GetUserOCId(Guid keycloakId)
public Guid GetUserOCId(Guid keycloakId, string? accessToken)
{
try
{
var data = _dbContext.Set<ProfilePosition>()
.Include(x => x.Profile)
.Include(x => x.OrganizationPosition)
.ThenInclude(x => x.Organization)
.Where(x => x.Profile!.KeycloakId == keycloakId)
.FirstOrDefault();
if (data == null)
throw new Exception(GlobalMessages.DataNotFound);
var apiPath = $"{_configuration["API"]}/org/dotnet/user-oc/{keycloakId}";
return data.OrganizationPosition!.Organization!.Id;
var apiResult = GetExternalAPIAsync(apiPath, accessToken ?? "");
if (apiResult.Result != null)
{
var raw = JsonConvert.DeserializeObject<GetUserOCIdResultDto>(apiResult.Result);
if (raw != null)
return raw.Result!.RootId;
}
return Guid.Empty;
//var data = _dbContext.Set<ProfilePosition>()
// .Include(x => x.Profile)
// .Include(x => x.OrganizationPosition)
// .ThenInclude(x => x.Organization)
// .Where(x => x.Profile!.KeycloakId == keycloakId)
// .FirstOrDefault();
//if (data == null)
// throw new Exception(GlobalMessages.DataNotFound);
//return data.OrganizationPosition!.Organization!.Id;
}
catch
{
@ -262,14 +320,26 @@ namespace BMA.EHR.Application.Repositories
}
}
public Guid? GetRootOcId(Guid ocId)
public Guid? GetRootOcId(Guid ocId, string? accessToken)
{
try
{
var data = _dbContext.Set<OrganizationEntity>()
.FirstOrDefault(o => o.Id == ocId);
var apiPath = $"{_configuration["API"]}/org/dotnet/root-oc/{ocId}";
return data == null ? Guid.Empty : data.OrganizationAgencyId;
var apiResult = GetExternalAPIAsync(apiPath, accessToken ?? "");
if (apiResult.Result != null)
{
var raw = JsonConvert.DeserializeObject<GetRootOCIdResultDto>(apiResult.Result);
if (raw != null)
return raw.Result;
}
return null;
//var data = _dbContext.Set<OrganizationEntity>()
// .FirstOrDefault(o => o.Id == ocId);
//return data == null ? Guid.Empty : data.OrganizationAgencyId;
}