private List <EquipmentAndPointsViewModel> _retrievePointsStatus(Company company, string type, string roleType) { if (company == null) { return(new List <EquipmentAndPointsViewModel>()); } // TO DO // Let's assume to build a table with a single point per row var equipList = _buildingService.GetEquipmentByCompany(type, company); var viewModelMap = new Dictionary <string, EquipmentAndPointsViewModel>(); foreach (var item in equipList) { PointRole pt = item.PointRoles.Items.FirstOrDefault(r => r.Type.Id == roleType); // For now let's filter out equipment without the requested pointrole. // Not sure if we need them or not if (pt != null) { var model = new EquipmentAndPointsViewModel { EquipmentName = item.Name, EquipmentId = item.Id, EquipmentType = item.Type.Id, }; var list = new List <PointViewModel>(); var m = new PointViewModel() { PointRole = pt.Type.Id, PointId = pt.Point.Id }; list.Add(m); model.PointsStatus = list; viewModelMap.Add(model.PointsStatus.First().PointId, model); } } if (viewModelMap.Count == 0) { return(new List <EquipmentAndPointsViewModel>()); } var pointsInfo = _buildingService.GetPointsSummary(viewModelMap.Keys, company); foreach (var item in pointsInfo) { if (viewModelMap.ContainsKey(item.Id) && viewModelMap[item.Id].PointsStatus.Any()) { viewModelMap[item.Id].PointsStatus.First().UoM = (item.Units == null) ? item.States.Id : item.Units.Id; // At this point GetPointsSummary does not return the nested Newest field // To be improved if (item.SampleSummary.Newest != null) { viewModelMap[item.Id].PointsStatus.First().LastValue = string.Format("{0:0.##}", item.SampleSummary.Newest.Value); viewModelMap[item.Id].PointsStatus.First().TimeStampLastValue = item.SampleSummary.Newest.Timestamp; } } } return(viewModelMap.Values.ToList()); }
private static string FormatRoleTypeName(PointRole role) { if (role == null || role.Type == null || role.Type.Id == null) { return(string.Empty); } return(role.Type.Id.Humanize(LetterCasing.Title).Truncate(30)); }