Ejemplo n.º 1
0
        public async Task <List <PortReport> > GetOverallDayStatistic(DateTime day)
        {
            var reports = await PortReports.Query()
                          .Where(report => report.Year == day.Year)
                          .Where(report => report.Month == day.Month)
                          .Where(report => report.Day == day.Day)
                          .GroupBy(report => report.Hour)
                          .Select(report => new
            {
                Hour     = report.Key,
                Inbound  = report.Sum(inner => inner.InboundTraffic),
                Outbound = report.Sum(inner => inner.OutboundTraffic)
            })
                          .ToListAsync();

            var hourRange = Enumerable.Range(0, 24);
            var result    = new List <PortReport>();

            foreach (var hour in hourRange)
            {
                var existing = reports.FirstOrDefault(report => report.Hour == hour);

                if (existing != null)
                {
                    result.Add(new PortReport
                    {
                        Day             = day.Day,
                        Year            = day.Year,
                        Hour            = existing.Hour,
                        Month           = day.Month,
                        InboundTraffic  = existing.Inbound,
                        OutboundTraffic = existing.Outbound
                    });
                }
                else
                {
                    result.Add(new PortReport
                    {
                        Day   = day.Day,
                        Year  = day.Year,
                        Hour  = hour,
                        Month = day.Month
                    });
                }
            }

            return(result);
        }
Ejemplo n.º 2
0
        public async Task <List <PortReport> > GetDayStatisticForPort(string snmpIpAddress, int portNumber, DateTime day)
        {
            var reports = await PortReports.Query()
                          .Where(report => report.SnmpIpAddress == snmpIpAddress)
                          .Where(report => report.PortNumber == portNumber)
                          .Where(report => report.Year == day.Year)
                          .Where(report => report.Month == day.Month)
                          .Where(report => report.Day == day.Day)
                          .ToListAsync();

            var hourRange = Enumerable.Range(0, 24);
            var result    = new List <PortReport>();

            foreach (var hour in hourRange)
            {
                var existing = reports.FirstOrDefault(report => report.Hour == hour);

                if (existing != null)
                {
                    result.Add(existing);
                }
                else
                {
                    result.Add(new PortReport
                    {
                        Day           = day.Day,
                        Year          = day.Year,
                        PortNumber    = portNumber,
                        SnmpIpAddress = snmpIpAddress,
                        Hour          = hour,
                        Month         = day.Month
                    });
                }
            }

            return(result);
        }