コード例 #1
0
        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));
        }
コード例 #2
0
        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));
        }
コード例 #3
0
        public ActionResult GetAllPlanets()
        {
            var model = new AllPlanetsViewModel();

            // TODO: Implement this controller action

            return(View(model));
        }
コード例 #4
0
        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));
        }
コード例 #5
0
ファイル: ViewMapperHelper.cs プロジェクト: raecharles/SWAPI
        //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);
        }
コード例 #6
0
ファイル: HomeController.cs プロジェクト: mschluper/swapi
        /// <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));
        }
コード例 #7
0
        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);
        }
コード例 #8
0
        /// <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);
        }
コード例 #9
0
ファイル: SwapiRepo.cs プロジェクト: abflin2/SWAPICodeSample
        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);
        }
コード例 #10
0
        public ActionResult GetAllPlanets()
        {
            var model = new AllPlanetsViewModel();

            return(View(model));
        }