Beispiel #1
0
        public Pokemon CreateToPokemon(PokemonCreateViewModel pcvm)
        {
            Soort         s         = new Soort((Soort.TypeSoorten)pcvm.Type, null);
            List <Aanval> aanvallen = new List <Aanval>();

            aanvallen.Add(AanvalViewModelConvert.ViewModelToAanval(pcvm.ToeTeVoegenAanval));
            MemoryStream memoryStream = new MemoryStream();

            pcvm.Image.CopyTo(memoryStream);
            return(new Pokemon(pcvm.Naam, s, aanvallen, memoryStream.ToArray()));
        }
        public IActionResult CreatePokemon()
        {
            if (HttpContext.Session.GetInt32("AccountID") == null)
            {
                return(RedirectToAction("Login", "Account"));
            }

            PokemonCreateViewModel pcvm = new PokemonCreateViewModel();

            pcvm.AlleSoorten = SoortViewModelConvert.SoortListToViewModelList(soortRepo.GetAll());
            return(View(pcvm));
        }
 public IActionResult CreatePokemon(PokemonCreateViewModel pcvm)
 {
     if (ModelState.IsValid)
     {
         PokemonCreateConvert pcc = new PokemonCreateConvert();
         pcvm.ToeTeVoegenAanval = AanvalViewModelConvert.AanvalToViewModel(aanvalRepo.GetByName(pcvm.NaamAanval));
         Pokemon p = pcc.CreateToPokemon(pcvm);
         pokemonRepo.Create(p);
         return(RedirectToAction("AllePokemon"));
     }
     pcvm.AlleSoorten = SoortViewModelConvert.SoortListToViewModelList(soortRepo.GetAll());
     return(View(pcvm));
 }
        private string ProcessUploadedFile(PokemonCreateViewModel 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> Create([Bind("Id,Name,Description,Gender,Height,Weight,RegionId,PhotoPath,AttackIds,TypesIds")] PokemonCreateViewModel pokemon)
        {
            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");
                }
                string uniqueFileName = ProcessUploadedFile(pokemon);
                Pokemon pokemonnew = new Pokemon()
                {
                    Name=pokemon.Name,
                    Description=pokemon.Description,
                    Gender= pokemon.Gender,
                    Height=pokemon.Height,
                    Weight=pokemon.Weight,
                    RegionId=pokemon.RegionId,
                    PhotoPath= uniqueFileName

                };
                _context.Add(pokemonnew);
                await _context.SaveChangesAsync();

                foreach (var item in pokemon.AttackIds)
                {
                    PokemonAttack pokemonAttack = new PokemonAttack()
                    {
                        PokemonId = pokemonnew.Id,
                        AttackId = item
                    };
                    _context.Add(pokemonAttack);
                    await _context.SaveChangesAsync();
                }

                foreach (var item in pokemon.TypesIds)
                {
                    PokemonType pokemonType = new PokemonType()
                    {
                        PokemonId = pokemonnew.Id,
                        TypeId = item
                    };
                    _context.Add(pokemonType);
                    await _context.SaveChangesAsync();
                }
                
                return RedirectToAction(nameof(Index));
            }
            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");
            return View(pokemon);
        }