コード例 #1
0
        public IEnumerable <Freeze> GetFreezeOnSite(string siteId)
        {
            DateTime from;

            if (DateTime.UtcNow.Hour < 12)
            {
                from = new DateTime(DateTime.UtcNow.Year, DateTime.UtcNow.Month, DateTime.UtcNow.Day, 0, 0, 0, DateTimeKind.Utc);
            }
            else
            {
                from = new DateTime(DateTime.UtcNow.Year, DateTime.UtcNow.Month, DateTime.UtcNow.Day, 12, 0, 0, DateTimeKind.Utc);
            }

            Site site = siteRepository.Get(siteId);
            Dictionary <string, IEnumerable <Freeze> > freezeByDevice = freezeRepository.GetByDevice(site.Devices.Select(e => e.Id), from);

            if (freezeByDevice == null)
            {
                return(new List <Freeze>());
            }

            IList <Freeze>         freezeForecast = new List <Freeze>();
            IEnumerable <DateTime> dates          = freezeByDevice.Values.SelectMany(e => e.Select(i => i.Date)).Distinct();

            foreach (DateTime date in dates)
            {
                IEnumerable <Freeze> freezeAtDate = freezeByDevice.Values.SelectMany(e => e.Where(i => i.Date == date));
                freezeForecast.Add(new Freeze
                {
                    Date            = date,
                    TrustIndication = freezeAtDate.Max(e => e.TrustIndication),
                    DeviceId        = freezeAtDate.First(e => e.TrustIndication == freezeAtDate.Max(i => i.TrustIndication)).DeviceId
                });
            }

            return(freezeForecast);
        }