public ActionResult Edit(int?id) { var fileManager = new FileManager(Server); if (!id.HasValue) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } var fullPlanet = planetRepository.GetFullDataPlanet(id ?? (int)InvalidPropertyValues.undefinedValue); if (fullPlanet == null) { return(HttpNotFound()); } var climates = climateRepository.GetClimates(); var terrains = terrainRepository.GetTerrains(); var planetClimates = fullPlanet.ClimateZones.ToList(); var planetTerrains = fullPlanet.SurfaceMorphologies.ToList(); var climateViewModels = PopulateClimates(climates, planetClimates); var terrainViewModels = PopulateTerrains(terrains, planetTerrains); var viewModel = ContainerPlanetFormViewModel.CreateFromModels(fullPlanet, fullPlanet.Details, fileManager, climateViewModels, terrainViewModels); return(View("PlanetForm", viewModel)); }
public ActionResult New() { var climates = climateRepository.GetClimates(); var terrains = terrainRepository.GetTerrains(); var climateViewModels = PopulateClimates(climates, null); var terrainViewModels = PopulateTerrains(terrains, null); var viewModel = ContainerPlanetFormViewModel.CreateEmpty(climateViewModels, terrainViewModels); return(View("PlanetForm", viewModel)); }
public ActionResult Save(PlanetFormViewModel planetViewModel, PlanetDetailFormViewModel detailsViewModel, PlanetAssetsFormViewModel planetAssetsFormViewModel, List <ClimateZoneViewModel> climateZonesViewModel, List <SurfaceMorphologyViewModel> surfaceMorphologiesViewModel) { var fileManager = new FileManager(Server); if (!ModelState.IsValid) { Planet planetWithAssets = planetRepository.GetPlanetRawWithAssets(planetViewModel.PlanetFormViewModelId); planetViewModel.AssignUploadedAvatar(fileManager); if (planetWithAssets != null) { planetAssetsFormViewModel = new PlanetAssetsFormViewModel(planetWithAssets, fileManager); } var viewModel = ContainerPlanetFormViewModel.CreateFromViewModels(planetViewModel, detailsViewModel, planetAssetsFormViewModel, climateZonesViewModel, surfaceMorphologiesViewModel); return(View("PlanetForm", viewModel)); } Planet planetToDB; if (planetViewModel.PlanetFormViewModelId == 0) { planetToDB = Planet.CreateFromFormViewModel(planetViewModel, fileManager); var planetDetails = PlanetDetail.CreateFromFormViewModel(detailsViewModel, planetViewModel); planetToDB.UpdateSecondaryData(planetDetails, climateZonesViewModel, surfaceMorphologiesViewModel); planetToDB.InitializeAssets(fileManager, planetAssetsFormViewModel); planetRepository.Add(planetToDB); } else { planetToDB = planetRepository.GetFullDataPlanet(planetViewModel.PlanetFormViewModelId); if (planetToDB == null) { return(HttpNotFound()); } planetToDB.UpdateFromFormViewModel(planetViewModel, fileManager); var planetDetails = PlanetDetail.Create(detailsViewModel.RotationPeriod, detailsViewModel.OrbitalPeriod, detailsViewModel.Diameter, detailsViewModel.Population, planetToDB); planetToDB.UpdateSecondaryData(planetDetails, climateZonesViewModel, surfaceMorphologiesViewModel); planetToDB.UpdateAssets(fileManager, planetAssetsFormViewModel); filePathRepository.RemoveFilepaths(planetToDB.FilePathsToDelete); } unitOfWork.Complete(); planetToDB.SaveAssets(fileManager, planetAssetsFormViewModel); return(RedirectToAction("Index", "Planet")); }