public async Task <ActionResult> GetAllPlanets() { var model = new AllPlanetsViewModel(); List <PlanetModel> planets = await starWarsApi.GetAllPlanetsAsync(); planets = planets.OrderByDescending(o => o.PlanetDiameterDouble).ToList(); model.AverageDiameter = planets .Where(o => o.PlanetDiameterDouble > 0) .Average(a => a.PlanetDiameterDouble); foreach (PlanetModel p in planets) { PlanetDetailsViewModel pdvm = new PlanetDetailsViewModel(); int diameter = 0; int.TryParse(p.PlanetDiameter, out diameter); pdvm.Diameter = diameter; pdvm.Population = p.PlanetPopulation; pdvm.Name = p.PlanetName; pdvm.Terrain = p.PlanetTerrain; pdvm.LengthOfYear = p.PlanetOrbitalPeriod; model.Planets.Add(pdvm); } return(View(model)); }
public async Task <ActionResult> GetAllPlanets(CancellationToken cancellationToken) { // TODO: Implement this controller action AllPlanetsViewModel vm = null; try { vm = await _starWarsService.GetAllPlanetsAsync(cancellationToken); } catch (NullReferenceException ex) { if (ex.Message.Contains("not found")) { return(new HttpStatusCodeResult(HttpStatusCode.NotFound)); } //potentially log error here and return 500 return(new HttpStatusCodeResult(HttpStatusCode.InternalServerError)); } catch (Exception ex) { //potentially log error and rethrow error, or, in this case, just return 500 return(new HttpStatusCodeResult(HttpStatusCode.InternalServerError)); } return(View(vm)); }
public ActionResult GetAllPlanets() { var model = new AllPlanetsViewModel(); // TODO: Implement this controller action return(View(model)); }
public ActionResult GetAllPlanets() { var allPlanets = _starWarsService.GetAllPlanets(); var formattedPlanets = Mapper.Map <List <PlanetDetailsViewModel> >(allPlanets) .OrderByDescending(x => x.Diameter).ToList(); var model = new AllPlanetsViewModel { Planets = formattedPlanets }; return(View(model)); }
//refactor to individual classes public AllPlanetsViewModel AllPlanetsMapper(List <Planet> planetList) { var model = new AllPlanetsViewModel(); var config = new MapperConfiguration(cfg => cfg.CreateMap <Planet, PlanetDetailsViewModel>() .ForMember(dest => dest.Diameter, opt => opt.MapFrom(src => (src.Diameter == "unknown") ? -1 : int.Parse(src.Diameter))) .ForMember(dest => dest.Id, opt => opt.MapFrom(src => Regex.Match(src.Url, @"\d+").Value)) ); var mapper = config.CreateMapper(); model.Planets = mapper.Map <List <PlanetDetailsViewModel> >(planetList); model.Planets = model.Planets.OrderByDescending(o => o.Diameter).ToList(); model.AverageDiameter = model.Planets.Where(i => i.Diameter > 0).Average(i => i.Diameter); return(model); }
/// <summary> /// Retrieve a list of all planets, and order them by their Diameter, from largest to smallest, /// as well as the average diameter of those planets whose diameter is known. /// </summary> /// <returns>ActionResult</returns> public async Task <IActionResult> GetAllPlanets() { var model = new AllPlanetsViewModel(); model.PlanetViewModels = (await _StarWarsService.GetPlanetsAsync()) .Select(p => new PlanetDetailsViewModel { Name = p.Name, Population = p.Population == "unknown" ? "unknown" : long.Parse(p.Population).ToString("N0"), Diameter = p.Diameter, Terrain = p.Terrain, LengthOfYear = p.LengthOfYear }) .OrderByDescending(p => p.DiameterAsInt) // Largest Diameter to Smallest Diameter .ToList(); return(View(model)); }
public AllPlanetsViewModel ToAllPlanetsViewModel() { var model = new AllPlanetsViewModel(); model.Planets = Results.Select(r => r.ToPlanetDetailsViewModel()).OrderByDescending( p => (p.Diameter == "unknown") ? -1 : long.Parse(p.Diameter)).ToList(); var knownDiameters = model.Planets.Where(p => p.Diameter != "unknown").Select(p => long.Parse(p.Diameter)).ToList(); double averageDiameter = 0; knownDiameters.ForEach(d => { averageDiameter += d; }); averageDiameter /= knownDiameters.Count(); model.AverageDiameter = averageDiameter; return(model); }
/// <summary> /// Gets all the planets in Star Wars Universe. /// </summary> /// <returns>View of all the planets in the Star Wars Universe</returns> public AllPlanetsViewModel GetAllPlanets() { var model = new AllPlanetsViewModel { Next = "https://swapi.co/api/planets/" }; while (model.Next != null) { var result = JsonConvert.DeserializeObject <AllPlanetsViewModel>(request.GetResponse(model.Next)); // Update the planets object model.Count = result.Count; model.Next = result.Next; model.Planets.AddRange(result.Planets.ToList()); } return(model); }
public AllPlanetsViewModel GetAllPlanets() { List <PlanetModel> result = swapiAccessors.RequestAllPlanets(); var allPlanets = new AllPlanetsViewModel(); allPlanets.Planets.AddRange(result.Select(p => new PlanetDetailsViewModel() { Name = p.Name, Population = p.Population, Diameter = p.Diameter, Terrain = p.Terrain, LengthOfYear = p.OrbitalPeriod }).OrderByDescending(o => o.NumberDiameter)); allPlanets.AverageDiameter = allPlanets.Planets .Select(n => n.NumberDiameter) .Where(a => a > 0).Average(); return(allPlanets); }
public ActionResult GetAllPlanets() { var model = new AllPlanetsViewModel(); return(View(model)); }