public async Task <IViewComponentResult> InvokeAsync(int reportElementId)
        {
            BoolHeatmapDto boolHeatmapDto = await _reportElementManager.GetBoolHeatmapById(reportElementId);

            BoolHeatmapViewModel result = _mapper.Map <BoolHeatmapDto, BoolHeatmapViewModel>(boolHeatmapDto);

            return(View("BoolHeatmap", result));
        }
Ejemplo n.º 2
0
        public async Task <BoolHeatmapDto> GetBoolHeatmapById(int reportElementId)
        {
            ReportElement reportElement = await unitOfWork.ReportElementRepo.GetById(reportElementId);

            if (reportElement == null)
            {
                return new BoolHeatmapDto {
                           IsCorrect = false
                }
            }
            ;

            DateTime dateFrom = new DateTime();
            DateTime dateTo   = DateTime.Now.AddMinutes(1);

            if (reportElement.Hours != 0)
            {
                dateFrom = DateTime.Now.AddHours(-(int)reportElement.Hours);
            }

            int[]    hoursArray = new int[(int)(dateTo - dateFrom).TotalHours];
            string[] daysArray  = new string[(int)(dateTo - dateFrom).TotalHours];

            for (int i = 0; i < hoursArray.Length; i++)
            {
                hoursArray[i] = dateFrom.AddHours(i).Hour;
                daysArray[i]  = dateFrom.AddHours(i).Date.ToString("dd.MM.yyyy");
            }

            IEnumerable <BoolValuePercentagePerHour> boolValuePercentagesPerHours = await
                                                                                    unitOfWork.HistoryRepo.GetBoolValuePercentagesPerHours(reportElement.SensorId.Value, dateFrom, dateTo);

            List <BoolValuePercentagePerHour> BoolValuePercentagesPerHours = new List <BoolValuePercentagePerHour>();

            int w = 0;

            for (int j = 0; j < hoursArray.Length; j++)
            {
                if (!boolValuePercentagesPerHours.Any(a => a.HourTime == hoursArray[j] && a.DayDate.ToString().Contains(daysArray[j])))
                {
                    BoolValuePercentagesPerHours.Add(
                        new BoolValuePercentagePerHour
                    {
                        DayDate        = dateFrom,
                        HourTime       = hoursArray[j],
                        TrueCount      = null,
                        TrueFalseCount = null,
                        TruePercentage = null
                    });
                    dateFrom = dateFrom.AddHours(1);
                }
                else
                {
                    if (w != boolValuePercentagesPerHours.Count())
                    {
                        BoolValuePercentagesPerHours.Add(
                            new BoolValuePercentagePerHour
                        {
                            DayDate        = dateFrom,
                            HourTime       = hoursArray[j],
                            TrueCount      = boolValuePercentagesPerHours.ElementAt(w).TrueCount,
                            TrueFalseCount = boolValuePercentagesPerHours.ElementAt(w).TrueFalseCount,
                            TruePercentage = boolValuePercentagesPerHours.ElementAt(w).TruePercentage
                        });
                        w++;
                        dateFrom = dateFrom.AddHours(1);
                    }
                    else
                    {
                        BoolValuePercentagesPerHours.Add(
                            new BoolValuePercentagePerHour
                        {
                            DayDate        = dateFrom,
                            HourTime       = hoursArray[j],
                            TrueCount      = null,
                            TrueFalseCount = null,
                            TruePercentage = null
                        });
                        dateFrom = dateFrom.AddHours(1);
                    }
                }
            }

            if (boolValuePercentagesPerHours.Count() == 0)
            {
                return new BoolHeatmapDto {
                           Id = reportElementId, IsCorrect = false
                }
            }
            ;

            BoolHeatmapDto heatmap = mapper.Map <Sensor, BoolHeatmapDto>(reportElement.Sensor);

            heatmap.Id            = reportElement.Id;
            heatmap.DashboardName = reportElement.Dashboard.Name;
            heatmap.DashboardId   = reportElement.Dashboard.Id;
            heatmap.BoolValuePercentagesPerHours = BoolValuePercentagesPerHours;
            heatmap.Hours = reportElement.Hours;

            return(heatmap);
        }