fix : optimize query speed

This commit is contained in:
Suphonchai Phoonsawat 2024-07-10 13:45:45 +07:00
parent b707c25f89
commit 940405e2e6

View file

@ -869,18 +869,24 @@ namespace BMA.EHR.Leave.Service.Controllers
//var count = await _processUserTimeStampRepository.GetTimeStampHistoryForAdminCountAsync(startDate, endDate);
var imgUrl = $"{_configuration["MinIO:Endpoint"]}{_configuration["MinIO:BucketName"]}";
var data = (await _processUserTimeStampRepository.GetTimeStampHistoryForAdminAsync(startDate, endDate))
.Select(d => new CheckInProcessHistoryForAdminDto
{
Id = d.Id,
FullName = _userProfileRepository.GetUserFullName(d.KeycloakUserId, AccessToken),
CheckInDate = d.CheckIn.Date,
CheckInTime = d.CheckIn.ToString("HH:mm"),
CheckInLocation = d.CheckInPOI,
CheckInLat = d.CheckInLat,
CheckInLon = d.CheckInLon,
CheckInStatus = d.CheckInStatus != "" ? d.CheckInStatus :
var resultData = await _processUserTimeStampRepository.GetTimeStampHistoryForAdminAsync(startDate, endDate);
var data = new List<CheckInProcessHistoryForAdminDto>();
foreach (var d in resultData)
{
var pf = await _userProfileRepository.GetProfileByKeycloakIdAsync(d.KeycloakUserId, AccessToken);
if (pf == null) continue;
data.Add(new CheckInProcessHistoryForAdminDto
{
Id = d.Id,
FullName = $"{pf.Prefix}{pf.FirstName} {pf.LastName}",
CheckInDate = d.CheckIn.Date,
CheckInTime = d.CheckIn.ToString("HH:mm"),
CheckInLocation = d.CheckInPOI,
CheckInLat = d.CheckInLat,
CheckInLon = d.CheckInLon,
CheckInStatus = d.CheckInStatus != "" ? d.CheckInStatus :
DateTime.Parse(d.CheckIn.ToString("yyyy-MM-dd HH:mm")) >
DateTime.Parse($"{d.CheckIn.Date.ToString("yyyy-MM-dd")} {duty.StartTimeMorning}") ?
@ -891,16 +897,16 @@ namespace BMA.EHR.Leave.Service.Controllers
"NORMAL",
CheckInIsLocation = d.IsLocationCheckIn,
CheckInLocationName = d.CheckInLocationName,
//CheckInImageUrl = $"{imgUrl}/{d.CheckInImageUrl}",
CheckInIsLocation = d.IsLocationCheckIn,
CheckInLocationName = d.CheckInLocationName,
//CheckInImageUrl = $"{imgUrl}/{d.CheckInImageUrl}",
CheckOutDate = d.CheckOut == null ? null : d.CheckOut.Value.Date,
CheckOutTime = d.CheckOut == null ? "" : d.CheckOut.Value.ToString("HH:mm"),
CheckOutLocation = d.CheckOut == null ? "" : d.CheckOutPOI,
CheckOutLat = d.CheckOut == null ? null : d.CheckOutLat,
CheckOutLon = d.CheckOut == null ? null : d.CheckOutLon,
CheckOutStatus = d.CheckOutStatus != "" ? d.CheckOutStatus :
CheckOutDate = d.CheckOut == null ? null : d.CheckOut.Value.Date,
CheckOutTime = d.CheckOut == null ? "" : d.CheckOut.Value.ToString("HH:mm"),
CheckOutLocation = d.CheckOut == null ? "" : d.CheckOutPOI,
CheckOutLat = d.CheckOut == null ? null : d.CheckOutLat,
CheckOutLon = d.CheckOut == null ? null : d.CheckOutLon,
CheckOutStatus = d.CheckOutStatus != "" ? d.CheckOutStatus :
d.CheckOut == null ? null : DateTime.Parse(d.CheckOut.Value.ToString("yyyy-MM-dd HH:mm")) <
DateTime.Parse($"{d.CheckIn.Date.ToString("yyyy-MM-dd")} {duty.EndTimeAfternoon}") ?
"ABSENT" :
@ -908,12 +914,58 @@ namespace BMA.EHR.Leave.Service.Controllers
DateTime.Parse($"{d.CheckIn.Date.ToString("yyyy-MM-dd")} {duty.EndTimeMorning}") ?
"ABSENT" :
"NORMAL",
CheckOutIsLocation = d.IsLocationCheckOut,
CheckOutLocationName = d.CheckOutLocationName
//CheckOutImageUrl = d.CheckOut == null ? "" : $"{imgUrl}/{d.CheckOutImageUrl}",
})
CheckOutIsLocation = d.IsLocationCheckOut,
CheckOutLocationName = d.CheckOutLocationName
//CheckOutImageUrl = d.CheckOut == null ? "" : $"{imgUrl}/{d.CheckOutImageUrl}",
});
}
.ToList();
// var data = (await _processUserTimeStampRepository.GetTimeStampHistoryForAdminAsync(startDate, endDate))
// .Select(d => new CheckInProcessHistoryForAdminDto
// {
// Id = d.Id,
// FullName = _userProfileRepository.GetUserFullName(d.KeycloakUserId, AccessToken),
// CheckInDate = d.CheckIn.Date,
// CheckInTime = d.CheckIn.ToString("HH:mm"),
// CheckInLocation = d.CheckInPOI,
// CheckInLat = d.CheckInLat,
// CheckInLon = d.CheckInLon,
// CheckInStatus = d.CheckInStatus != "" ? d.CheckInStatus :
// DateTime.Parse(d.CheckIn.ToString("yyyy-MM-dd HH:mm")) >
// DateTime.Parse($"{d.CheckIn.Date.ToString("yyyy-MM-dd")} {duty.StartTimeMorning}") ?
// DateTime.Parse(d.CheckIn.ToString("yyyy-MM-dd HH:mm")) >
// DateTime.Parse($"{d.CheckIn.ToString("yyyy-MM-dd")} {duty.EndTimeMorning}") ?
// "ABSENT" :
// "LATE" :
// "NORMAL",
// CheckInIsLocation = d.IsLocationCheckIn,
// CheckInLocationName = d.CheckInLocationName,
// //CheckInImageUrl = $"{imgUrl}/{d.CheckInImageUrl}",
// CheckOutDate = d.CheckOut == null ? null : d.CheckOut.Value.Date,
// CheckOutTime = d.CheckOut == null ? "" : d.CheckOut.Value.ToString("HH:mm"),
// CheckOutLocation = d.CheckOut == null ? "" : d.CheckOutPOI,
// CheckOutLat = d.CheckOut == null ? null : d.CheckOutLat,
// CheckOutLon = d.CheckOut == null ? null : d.CheckOutLon,
// CheckOutStatus = d.CheckOutStatus != "" ? d.CheckOutStatus :
// d.CheckOut == null ? null : DateTime.Parse(d.CheckOut.Value.ToString("yyyy-MM-dd HH:mm")) <
// DateTime.Parse($"{d.CheckIn.Date.ToString("yyyy-MM-dd")} {duty.EndTimeAfternoon}") ?
// "ABSENT" :
// DateTime.Parse(d.CheckOut.Value.ToString("yyyy-MM-dd HH:mm")) <
// DateTime.Parse($"{d.CheckIn.Date.ToString("yyyy-MM-dd")} {duty.EndTimeMorning}") ?
// "ABSENT" :
// "NORMAL",
// CheckOutIsLocation = d.IsLocationCheckOut,
// CheckOutLocationName = d.CheckOutLocationName
// //CheckOutImageUrl = d.CheckOut == null ? "" : $"{imgUrl}/{d.CheckOutImageUrl}",
// })
// .ToList();
if (keyword != "")
{