Exemplo n.º 1
0
        public IActionResult Search(MoonSearchModel model)
        {
            if (!ModelState.IsValid)
            {
                return(Search());
            }

            MoonSearchQuery query = new MoonSearchQuery()
            {
                SystemName = model.SystemName,
                OreName    = model.OreName,
                OreClassId = _repoOre.GetOreClassId(model.OreTier),
                Percentage = model.Percentage
            };

            List <Sector> results = _repoWorld.Search(query);

            return(View("SearchResults", results));
        }
Exemplo n.º 2
0
        // Search Functions
        public List <Sector> Search(MoonSearchQuery query)
        {
            Dictionary <string, Sector> result = new Dictionary <string, Sector>();
            List <Sector> list = new List <Sector>();

            int    switch0    = 1;
            int    switch1    = 1;
            int    switch2    = 1;
            int    switch3    = 1;
            string systemName = "";
            string oreName    = "";
            int    oreClassId = 0;
            int    percentage = 0;

            if (query.SystemName != null && query.SystemName != "")
            {
                switch0    = 0;
                systemName = query.SystemName;
            }
            if (query.OreName != "Any")
            {
                switch1 = 0;
                oreName = query.OreName;
            }
            if (query.OreClassId > 0)
            {
                switch2    = 0;
                oreClassId = query.OreClassId;
            }
            if (query.Percentage > 0)
            {
                switch3    = 0;
                percentage = query.Percentage;
            }

            using (SqlConnection connection = new SqlConnection(GetConnectionString()))
            {
                using (SqlCommand command = new SqlCommand("Search", connection))
                {
                    command.CommandType = CommandType.StoredProcedure;
                    connection.Open();

                    command.Parameters.AddWithValue("@Switch0", switch0);
                    command.Parameters.AddWithValue("@Switch1", switch1);
                    command.Parameters.AddWithValue("@Switch2", switch2);
                    command.Parameters.AddWithValue("@Switch3", switch3);
                    command.Parameters.AddWithValue("@System", systemName);
                    command.Parameters.AddWithValue("@Ore", oreName);
                    command.Parameters.AddWithValue("@OreClassId", oreClassId);
                    command.Parameters.AddWithValue("@Percentage", percentage);

                    using (SqlDataReader reader = command.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            string sectorName   = reader["System"].ToString();
                            int    planetNumber = (int)reader["Planet"];
                            int    moonNumber   = (int)reader["Moon"];
                            string oreType      = reader["Ore"].ToString();
                            int    percent      = (int)reader["Percentage"];
                            string oreClass     = reader["OreClass"].ToString();

                            Sector sector = null;
                            Planet planet = null;
                            Moon   moon   = null;

                            if (result.ContainsKey(sectorName))
                            {
                                sector = result[sectorName];
                            }
                            else
                            {
                                sector             = new Sector(sectorName);
                                result[sectorName] = sector;
                            }

                            if (sector.Planets.ContainsKey(planetNumber))
                            {
                                planet = sector.Planets[planetNumber];
                            }
                            else
                            {
                                planet = new Planet(planetNumber);
                                sector.Planets[planetNumber] = planet;
                            }

                            if (planet.Moons.ContainsKey(moonNumber))
                            {
                                moon = planet.Moons[moonNumber];
                            }
                            else
                            {
                                moon = new Moon(moonNumber);
                                planet.Moons[moonNumber] = moon;
                            }

                            moon.AddOre(new OreType(oreType, oreClass), ((double)percent) / 100);
                        }
                    }
                }
            }

            foreach (var item in result)
            {
                list.Add(item.Value);
            }

            return(list);
        }