// GET: Pokemons/Edit/5 public async Task<IActionResult> Edit(int? id) { if (id == null) { return NotFound(); } var pokemon = await _context.Pokemon.FindAsync(id); if (pokemon == null) { return NotFound(); } ViewData["RegionId"] = new SelectList(_context.Region, "Id", "ClassType", pokemon.RegionId); //ViewData["TypesId"] = new SelectList(_context.Types, "Id", "Name"); //ViewData["AttackId"] = new SelectList(_context.Attack, "Id", "Name"); List<PokemonType> pokemonTypes = _context.PokemonType.Where(pt => pt.PokemonId == pokemon.Id).ToList(); List<PokemonAttack> pokemonAttacks = _context.PokemonAttack.Where(pa => pa.PokemonId == pokemon.Id).ToList(); List<int> typesIds = new List<int>(); List<int> attackIds = new List<int>(); foreach (var pokemonType in pokemonTypes) { typesIds.Add(pokemonType.TypeId); } foreach (var pokemonAttack in pokemonAttacks) { attackIds.Add(pokemonAttack.AttackId); } PokemonEditViewModel pokemonEdit = new PokemonEditViewModel() { Name=pokemon.Name, Description=pokemon.Description, Height=pokemon.Height, Gender=pokemon.Gender, Weight=pokemon.Weight, RegionId = pokemon.RegionId, PhotoString = pokemon.PhotoPath, TypesIds= typesIds, AttackIds= attackIds }; ViewData["TypesId"] = new SelectList(_context.Types, "Id", "Name", pokemonEdit.TypesIds); ViewData["AttackId"] = new SelectList(_context.Attack, "Id", "Name", pokemonEdit.AttackIds); ViewData["Gender"] = new SelectList(new[] { "Femenino", "Masculino" }, pokemon.Gender); return View(pokemonEdit); }
private string ProcessUploadedFileEdit(PokemonEditViewModel model) { string uniqueFileName = null; if (model.PhotoPath != null) { string uploadFolder = Path.Combine(_hostingEnvironment.WebRootPath, "Images"); uniqueFileName = Guid.NewGuid().ToString() + "_" + model.PhotoPath.FileName; string filePath = Path.Combine(uploadFolder, uniqueFileName); using (var fileStream = new FileStream(filePath, FileMode.Create)) { model.PhotoPath.CopyTo(fileStream); } } return uniqueFileName; }
public async Task<IActionResult> Edit(int id, [Bind("Id,Name,Description,Gender,Height,Weight,RegionId,PhotoPath,PhotoString,AttackIds,TypesIds")] PokemonEditViewModel pokemon) { if (id != pokemon.Id) { return NotFound(); } if (ModelState.IsValid) { if (pokemon.RegionId == 0) { ViewBag.ErrorTitle = $"Región no seleccionada para crear Pokemon {pokemon.Name}"; ViewBag.ErrorMessage = $"Para crear pokemon {pokemon.Name} debe seleccionar una región a la cual pertenece" + $". Seleccione una región y luego trate de nuevo" + $"."; return View("Error1"); } if (pokemon.Gender == null) { ViewBag.ErrorTitle = $"Genero no seleccionado para crear Pokemon {pokemon.Name}"; ViewBag.ErrorMessage = $"Para crear pokemon {pokemon.Name} debe seleccionar un Genero al cual pertenece" + $". Seleccione una genero y luego trate de nuevo" + $"."; return View("Error1"); } if (pokemon.AttackIds.Count > 4 || pokemon.AttackIds.Count < 1) { ViewBag.ErrorTitle = $"Cantidad requerida de ataques seleccionados para crear Pokemon {pokemon.Name}"; ViewBag.ErrorMessage = $"Para crear pokemon {pokemon.Name} solo debe seleccionar entre 1 y 4 ataques" + $". Seleccione y luego trate de nuevo" + $"."; return View("Error1"); } if (pokemon.TypesIds.Count > 2 || pokemon.AttackIds.Count < 1) { ViewBag.ErrorTitle = $"Cantidad requerida de tipos seleccionados para crear Pokemon {pokemon.Name}"; ViewBag.ErrorMessage = $"Para crear pokemon {pokemon.Name} solo debe seleccionar entre 1 y 2 tipos" + $". Seleccione y luego trate de nuevo" + $"."; return View("Error1"); } try { List<PokemonType> pokemonTypes = _context.PokemonType.Where(pt => pt.PokemonId == pokemon.Id).ToList(); List<PokemonAttack> pokemonAttacks = _context.PokemonAttack.Where(pa => pa.PokemonId == pokemon.Id).ToList(); _context.PokemonType.RemoveRange(pokemonTypes); _context.PokemonAttack.RemoveRange(pokemonAttacks); foreach (var item in pokemon.AttackIds) { PokemonAttack pokemonAttack = new PokemonAttack() { PokemonId = pokemon.Id, AttackId = item }; _context.PokemonAttack.Add(pokemonAttack); //await _context.SaveChangesAsync(); } foreach (var item in pokemon.TypesIds) { PokemonType pokemonType = new PokemonType() { PokemonId = pokemon.Id, TypeId = item }; _context.PokemonType.Add(pokemonType); //await _context.SaveChangesAsync(); } string uniqueFileName = ""; if (pokemon.PhotoPath == null) { uniqueFileName = pokemon.PhotoString; } else { uniqueFileName = ProcessUploadedFileEdit(pokemon); } Pokemon pokemonEdit = new Pokemon() { Id=pokemon.Id, Name = pokemon.Name, Description = pokemon.Description, Height = pokemon.Height, Gender = pokemon.Gender, Weight = pokemon.Weight, RegionId = pokemon.RegionId, PhotoPath = uniqueFileName, }; _context.Pokemon.Update(pokemonEdit); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!PokemonExists(pokemon.Id)) { return NotFound(); } else { throw; } } return RedirectToAction(nameof(Index)); } ViewData["RegionId"] = new SelectList(_context.Region, "Id", "ClassType", pokemon.RegionId); ViewData["TypesId"] = new SelectList(_context.Types, "Id", "Name", pokemon.TypesIds); ViewData["AttackId"] = new SelectList(_context.Attack, "Id", "Name", pokemon.AttackIds); ViewData["Gender"] = new SelectList(new[] { "Femenino", "Masculino" }, pokemon.Gender); return View(pokemon); }