fix: optimize leave calendar api

This commit is contained in:
Suphonchai Phoonsawat 2024-07-08 21:16:36 +07:00
parent ec4d0ea309
commit bef050f835

View file

@ -818,37 +818,59 @@ namespace BMA.EHR.Leave.Service.Controllers
{
//var thisYear = DateTime.Now.Year;
var data = await _leaveRequestRepository.GetLeaveRequestByYearAsync(req.Year);
var personList = new List<GetProfileByKeycloakIdDto>();
var result = new List<GetLeaveRequestCalendarResultDto>();
var profileList = await _userProfileRepository.GetProfileWithKeycloak(AccessToken);
foreach (var item in data)
{
var profile = personList.FirstOrDefault(x => x.Keycloak == item.KeycloakUserId);
if(profile == null)
{
profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(item.KeycloakUserId, AccessToken);
personList.Add(profile);
}
//var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(item.KeycloakUserId, AccessToken);
var resultData = (from d in data
join p in profileList on d.KeycloakUserId equals p.Keycloak
select new GetLeaveRequestCalendarResultDto
{
Id = d.Id,
LeaveTypeId = d.Type.Id,
LeaveTypeName = d.Type.Name,
DateSendLeave = d.CreatedAt.Date,
Status = d.LeaveStatus,
FullName = $"{p.Prefix}{p.FirstName} {p.LastName}",
LeaveEndDate = d.LeaveEndDate,
LeaveStartDate = d.LeaveStartDate,
KeycloakId = d.KeycloakUserId
var resData = new GetLeaveRequestCalendarResultDto
{
Id = item.Id,
LeaveTypeName = item.Type.Name,
LeaveTypeId = item.Type.Id,
DateSendLeave = item.CreatedAt.Date,
Status = item.LeaveStatus,
FullName = $"{profile.Prefix}{profile.FirstName} {profile.LastName}",
LeaveStartDate = item.LeaveStartDate,
LeaveEndDate = item.LeaveEndDate,
KeycloakId = item.KeycloakUserId
};
})
.ToList();
result.Add(resData);
}
return Success(resultData);
return Success(result);
//var personList = new List<GetProfileByKeycloakIdDto>();
//var result = new List<GetLeaveRequestCalendarResultDto>();
//foreach (var item in data)
//{
// var profile = personList.FirstOrDefault(x => x.Keycloak == item.KeycloakUserId);
// if (profile == null)
// {
// profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(item.KeycloakUserId, AccessToken);
// personList.Add(profile);
// }
// //var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(item.KeycloakUserId, AccessToken);
// var resData = new GetLeaveRequestCalendarResultDto
// {
// Id = item.Id,
// LeaveTypeName = item.Type.Name,
// LeaveTypeId = item.Type.Id,
// DateSendLeave = item.CreatedAt.Date,
// Status = item.LeaveStatus,
// FullName = $"{profile.Prefix}{profile.FirstName} {profile.LastName}",
// LeaveStartDate = item.LeaveStartDate,
// LeaveEndDate = item.LeaveEndDate,
// KeycloakId = item.KeycloakUserId
// };
// result.Add(resData);
//}
//return Success(result);
}
/// <summary>