public void Setup()
        {
            // Arrange
            usersDb = new List <User> {
                new User {
                    Id = 1
                }
            };
            conditionsDb = new List <Condition>();

            conditionsRepository = new Mock <IConditionsRepository>();
            conditionsRepository
            .Setup(repo => repo.AddAsync(It.IsAny <Condition>()))
            .Callback <Condition>(
                entity =>
            {
                conditionsDb.Add(entity);
            });
            conditionsRepository.Setup(repo => repo.GetAllAsync()).ReturnsAsync(() => conditionsDb);

            usersRepository = new Mock <IUsersRepository>();
            usersRepository
            .Setup(repo => repo.FindOneAsync(It.IsAny <Expression <Func <User, bool> > >()))
            .Callback((Expression <Func <User, bool> > expression) =>
            {
                Func <User, bool> expr = expression.Compile();
                user = usersDb.Where(expr).ToList().FirstOrDefault();
            })
            .ReturnsAsync(() => user);

            conditionsService = new ConditionsService(conditionsRepository.Object, usersRepository.Object);
        }
        public IHttpActionResult GetDroneInfo(double?lat = null, double?lng = null)
        {
            if (lat == null || lng == null)
            {
                return(BadRequest("Missing Parametars"));
            }

            EnviromentInfoViewModel model = new EnviromentInfoViewModel();

            model.Coordinate = new Coordinate()
            {
                Latitude  = Double.Parse(lat.ToString()),
                Longitude = Double.Parse(lng.ToString())
            };

            String yahooApi = "https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20weather.forecast%20where%20woeid%20in%20(select%20woeid%20from%20geo.places%20where%20text%3D%22(" + lat + "%2C" + lng + ")%22)%20and%20u%3D'c'&format=json&callback=";

            String googleElevationApiKey = "https://maps.googleapis.com/maps/api/elevation/json?locations=" + lat + "," + lng + "&key=AIzaSyDTkIcb_EL4fQFTQMe9DA1N5gyQHgmCRGM";


            using (WebClient wc = new WebClient())
            {
                var     yahooWeatherData = wc.DownloadString(yahooApi);
                dynamic weatherResult    = JsonConvert.DeserializeObject(yahooWeatherData);

                JObject result = weatherResult.query.results;
                if (result == null)
                {
                    return(InternalServerError());
                }
                ;

                JObject wind = weatherResult.query.results.channel.wind;
                model.Wind = wind.ToObject <Wind>();
                model.Wind.directionSymbol = Helper.GetWindDirection(model.Wind.direction);

                JObject unit = weatherResult.query.results.channel.units;
                model.Unit = unit.ToObject <Unit>();

                JObject location = weatherResult.query.results.channel.location;
                model.Location = location.ToObject <Location>();

                JObject atmosphere = weatherResult.query.results.channel.atmosphere;
                model.Atmosphere = atmosphere.ToObject <Atmosphere>();

                JObject item = weatherResult.query.results.channel.item.condition;
                model.Condition = item.ToObject <Condition>();
                ConditionsService conditionsService = new ConditionsService();
                model.Condition.text = conditionsService.GetId(model.Condition.text);
                var     googleData      = wc.DownloadString(googleElevationApiKey);
                dynamic elevationResult = JsonConvert.DeserializeObject(googleData);

                JObject elevation = elevationResult.results[0];
                model.Elevation = elevation.ToObject <Elevation>();
            }


            return(Ok(model));
        }
Esempio n. 3
0
        private static ConditionsService InitializeConditionsService(SellMeDbContext context)
        {
            MapperInitializer.InitializeMapper();

            ConditionsService service = new ConditionsService(context);

            return(service);
        }
        public string GetConditionType(string condition = "sunny")
        {
            string            result            = "";
            ConditionsService conditionsService = new ConditionsService();

            result = conditionsService.GetId(condition);

            return(result);
        }
Esempio n. 5
0
        public async Task CreateConditionShouldCreateNewCondition()
        {
            var options = new DbContextOptionsBuilder <WHMSDbContext>().UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString()).Options;

            using var context = new WHMSDbContext(options);
            var service = new ConditionsService(context);

            var testCondition = new ConditionViewModel {
                Name = "Test", Description = "Description"
            };
            var conditionId = await service.CreateProductConditionAsync(testCondition);

            var condition = context.ProductConditions.FirstOrDefault();

            Assert.Equal(condition.Id, conditionId);
            Assert.Equal(condition.Name, testCondition.Name);
            Assert.Equal(condition.Description, testCondition.Description);
        }
Esempio n. 6
0
        public async Task GetAllConditionsShouldReturnAllConditions()
        {
            var options = new DbContextOptionsBuilder <WHMSDbContext>().UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString()).Options;

            using var context = new WHMSDbContext(options);
            for (int i = 0; i < 100; i++)
            {
                await context.ProductConditions.AddAsync(new ProductCondition { Name = i.ToString() });
            }

            await context.SaveChangesAsync();

            var service = new ConditionsService(context);

            var conditions      = service.GetAllConditions <ConditionViewModel>();
            var conditionsCount = conditions.ToList().Count();
            var exepcetedCount  = context.ProductConditions.Count();

            Assert.Equal(exepcetedCount, conditionsCount);
        }
        public IHttpActionResult GetProbability(double humidity = 10, double windSpeed = 50, double visibility = 1, string condition = "Sunny", double?lat = null, double?lng = null)
        {
            if (lat == null && lng == null)
            {
                return(BadRequest("Missing Parametars"));
            }


            IEnumerable <Drone> drones = db.Drone.Include("Coordinate").ToList();
            int numberOfDrones         = 0;

            foreach (Drone drone in drones)
            {
                double distanceInMeters = Helper
                                          .GetDistanceFromLatLonInMeters(Double.Parse(lat.ToString()), Double.Parse(lng.ToString()), drone.Coordinate.Latitude, drone.Coordinate.Longitude);

                if (distanceInMeters <= 8000)
                {
                    numberOfDrones++;
                }
            }


            ConditionsService conditionsService = new ConditionsService();
            double            result            = 0;

            // Humidity
            if (humidity >= 0 && humidity <= 20 || humidity > 80 && humidity <= 100)
            {
                result += 0.1 * 80;
            }
            else if (humidity > 20 && humidity < 40 || humidity >= 60 && humidity <= 80)
            {
                result += 0.1 * 90;
            }
            else
            {
                result += 0.1 * 100;
            }

            // Wind speed
            if (windSpeed == 0)
            {
                result += 0.3 * 100;
            }
            else if (windSpeed <= 5)
            {
                result += 0.3 * 85;
            }
            else if (windSpeed <= 10)
            {
                result += 0.3 * 60;
            }
            else if (windSpeed <= 25)
            {
                result += 0.3 * 20;
            }
            else if (windSpeed <= 40)
            {
                result += 0.3 * 5;
            }
            else
            {
                result += 0;
            }

            // Visibility
            if (visibility <= 1)
            {
                result += 0.2 * 5;
            }
            else if (visibility <= 5)
            {
                result += 0.2 * 60;
            }
            else if (visibility <= 12)
            {
                result += 0.2 * 90;
            }
            else
            {
                result += 0.2 * 100;
            }

            // Number of Drones
            if (numberOfDrones == 0)
            {
                result += 0.2 * 100;
            }
            else if (numberOfDrones < 3)
            {
                result += 0.2 * 70;
            }
            else if (numberOfDrones < 8)
            {
                result += 0.2 * 40;
            }
            else if (numberOfDrones < 15)
            {
                result += 0.2 * 10;
            }
            else
            {
                result += 0;
            }

            // Weather conditions
            if (conditionsService.GetCloudyConditions().Contains(condition))
            {
                result += 0.2 * 80;
            }
            else if (conditionsService.GetExtremeConditions().Contains(condition))
            {
                result += 0.2 * 0;
            }
            else if (conditionsService.GetFoggyConditions().Contains(condition))
            {
                result += 0.2 * 10;
            }
            else if (conditionsService.GetSnowConditions().Contains(condition))
            {
                result += 0.2 * 40;
            }
            else if (conditionsService.GetRainConditions().Contains(condition))
            {
                result += 0.2 * 30;
            }
            else if (conditionsService.GetClearConditions().Contains(condition))
            {
                result += 0.2 * 100;
            }

            return(Ok(new { probability = result }));
        }