Esempio n. 1
0
 public IEnumerable <WeatherForecast> WeatherForecasts()
 {
     return(_services.GetForecasts());
 }
Esempio n. 2
0
        public ActionResult <AllStdevs> GetAllStdevsFrom(long cityId, DateTime fromDate, DateTime toDate)
        {
            if (fromDate == default)
            {
                fromDate = DateTime.Now.Date;
            }

            if (toDate == default)
            {
                toDate = DateTime.Now.Date;
            }

            if ((toDate - fromDate).TotalDays > 14 || (toDate - fromDate).TotalDays < 0)
            {
                Log.Error($"No data was provided for city with Id {cityId} as time period was too big {fromDate.Date} - {toDate.Date}");
                return(BadRequest(new ErrorHandlingModel
                {
                    Error = HandlingErrors.TimeSpanTooLong
                }));
            }

            var userName = User.Claims.Single(a => a.Type == System.Security.Claims.ClaimTypes.NameIdentifier).Value;
            var unit     = _context.UserSettings.First(x => x.User == userName).Units;

            var forecasts = service.GetForecasts(fromDate, toDate, cityId);

            foreach (var item in forecasts)
            {
                item.Temperature = converter.ConvertetFromCelcius(item.Temperature, unit);
            }
            ;


            var actualTemperature = service.GetActualTemperatures(fromDate, toDate, cityId);

            foreach (var item in actualTemperature)
            {
                item.Temperature = converter.ConvertetFromCelcius(item.Temperature, unit);
            }

            var averageActualTemperature = actualTemperature.Average(i => (double?)i.Temperature);
            var providers = service.GetProvidersWithStdevs(actualTemperature, forecasts, averageActualTemperature);

            var allStdevs = new AllStdevs
            {
                CityId    = cityId,
                FromDate  = fromDate,
                ToDate    = toDate,
                Providers = providers
            };

            foreach (var provider in allStdevs.Providers.ToList())
            {
                foreach (var stdev in provider.Stdevs.ToList())
                {
                    if (stdev.Factual == null)
                    {
                        provider.Stdevs.Remove(stdev);
                    }
                }
            }
            return(Ok(allStdevs));
        }