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());
        }
Esempio n. 2
0
 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));
 }