public IActionResult Add() { MoonAddModel model = new MoonAddModel(); return(View(model)); }
public IActionResult Add(MoonAddModel model) { if (!ModelState.IsValid) { return(RedirectToAction("Add")); } List <Sector> sectors = null; try { sectors = new MoonProbeDataDump(model).Parse(); } catch (Exception) { //malformed data, just redirect } if (sectors == null) { return(RedirectToAction("Add")); } foreach (Sector sector in sectors) { if (!_repoWorld.SystemExists(sector.Name)) { _repoWorld.AddSystem(sector.Name); } int sectorId = _repoWorld.GetSystemId(sector.Name); foreach (var entryP in sector.Planets) { int planetNumber = (int)entryP.Key; Planet planet = entryP.Value; if (!_repoWorld.PlanetExists(planetNumber, sectorId)) { _repoWorld.AddPlanet(planetNumber, sectorId); } int planetId = _repoWorld.GetPlanetId(planetNumber, sectorId); foreach (var entryM in planet.Moons) { int moonNumber = (int)entryM.Key; Moon moon = entryM.Value; if (!_repoWorld.MoonExists(moonNumber, planetId)) { _repoWorld.AddMoon(moonNumber, planetId); } int moonId = _repoWorld.GetMoonId(moonNumber, planetId); _repoWorld.DeleteMoonOre(moonId); foreach (var ore in moon.GetOres()) { int oreId = _repoOre.GetOreId(ore.Type.Name); int percentage = (int)(ore.Percentage * 100); _repoWorld.AddMoonOre(moonId, oreId, percentage); } } } } return(RedirectToAction("Search")); }
public MoonProbeDataDump(MoonAddModel model) { _data = model.Data; }