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)); }
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); }
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); }
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 })); }