report insignia5

This commit is contained in:
kittapath 2025-02-13 15:42:15 +07:00
parent f953e24515
commit da9ed437dc
2 changed files with 162 additions and 23 deletions

View file

@ -1137,28 +1137,28 @@ namespace BMA.EHR.Application.Repositories.Reports
/*var orgResponse = JsonConvert.DeserializeObject<dynamic>(_result);*/
var orgResponse = JObject.Parse(_result);
var resultItems = orgResponse["result"];
/* if (orgResponse != null && orgResponse.result != null)
{*/
var matchedData = resultItems
.Where(item => item["profileId"].ToString() == d.ProfileId.ToString())
.FirstOrDefault();
/*
if (matchedData != null)
{
// แสดงข้อมูลที่ตรงกัน
var receiver = new CommandReceiver
{
Sequence = seq,
CitizenId = matchedData.citizenId ?? "",
Prefix = matchedData.prefix ?? "",
FirstName = matchedData.firstName ?? "",
LastName = matchedData.lastName ?? "",
RefPlacementProfileId = Guid.Parse(matchedData.profileId.ToString()),
};
/* if (orgResponse != null && orgResponse.result != null)
{*/
var matchedData = resultItems
.Where(item => item["profileId"].ToString() == d.ProfileId.ToString())
.FirstOrDefault();
/*
if (matchedData != null)
{
// แสดงข้อมูลที่ตรงกัน
var receiver = new CommandReceiver
{
Sequence = seq,
CitizenId = matchedData.citizenId ?? "",
Prefix = matchedData.prefix ?? "",
FirstName = matchedData.firstName ?? "",
LastName = matchedData.lastName ?? "",
RefPlacementProfileId = Guid.Parse(matchedData.profileId.ToString()),
};
seq++;
resultData.Add(receiver);
}*/
seq++;
resultData.Add(receiver);
}*/
/*}*/
return matchedData;
@ -1369,6 +1369,80 @@ namespace BMA.EHR.Application.Repositories.Reports
}
}
}
public async Task<dynamic> GetKhr5TotalReport(Guid id, string type = null, int node = -1, Guid nodeId = default)
{
var period = await _dbContext.Set<InsigniaPeriod>()
.FirstOrDefaultAsync(x => x.Id == id);
if (period == null)
throw new Exception(GlobalMessages.InsigniaPeriodNotFound);
var data_insigniaQuery = _dbContext.Set<InsigniaRequestProfile>()
.Include(x => x.Request)
.Include(x => x.RequestInsignia)
.ThenInclude(x => x.InsigniaType)
.Where(x => x.Request.Period.Id == period.Id)
.Where(x => x.IsApprove == true)
.Where(x => x.Status == "PENDING")
.Where(x => x.RequestInsignia.InsigniaType != null);
if (type == "officer")
{
data_insigniaQuery = data_insigniaQuery.Where(r => r.ProfileType == "officer");
}
else if (type == "employee")
{
data_insigniaQuery = data_insigniaQuery.Where(r => r.ProfileType == "employee");
}
switch (node)
{
case 0:
data_insigniaQuery = data_insigniaQuery.Where(r => r.RootDnaId == nodeId);
break;
case 1:
data_insigniaQuery = data_insigniaQuery.Where(r => r.Child1DnaId == nodeId);
break;
case 2:
data_insigniaQuery = data_insigniaQuery.Where(r => r.Child2DnaId == nodeId);
break;
case 3:
data_insigniaQuery = data_insigniaQuery.Where(r => r.Child3DnaId == nodeId);
break;
case 4:
data_insigniaQuery = data_insigniaQuery.Where(r => r.Child4DnaId == nodeId);
break;
default:
break;
}
var data = await data_insigniaQuery.Select(x => new
{
Gendor = x.Gender ?? "",
InsigniaTypeName = x.RequestInsignia.InsigniaType.Name,
RequestInsigniaName = x.RequestInsignia.Name,
InsigniaInitial = $"{x.RequestInsignia.Name}({x.RequestInsignia.ShortName})", // Insignia's full name and short name
OcId = x.Request.OrganizationId
}).ToListAsync();
var insignia = (from r in data
group r by new { OcId = r.OcId, r.InsigniaTypeName, r.RequestInsigniaName } into g
select new
{
RowNo = 1,
DepartmentName = _userProfileRepository.GetOc(g.Key.OcId, 0, AccessToken).Root,// _organizationCommonRepository.GetOrganizationNameFullPath(g.Key.OcId, false, false),
InsigniaTypeName = g.Key.InsigniaTypeName,
RequestInsigniaName = g.Key.RequestInsigniaName,
Male = g.Sum(x => x.Gendor == "ชาย" ? 1 : 0),
Female = g.Sum(x => x.Gendor == "หญิง" ? 1 : 0),
Remark = "",
}).ToList();
return insignia;
}
#endregion
}
}