Exemplo n.º 1
0
        // GET: Creatures/Edit/5
        public async Task <IActionResult> Edit(int?id)
        {
            if (_userManager.GetUserAsync(User).Result.isAdmin)
            {
                var currentUser = await GetCurrentUserAsync();

                if (id == null)
                {
                    return(NotFound());
                }

                var creature = await _context.Creature.FindAsync(id);

                CreatureEditViewModel viewModel = new CreatureEditViewModel
                {
                    Creature = creature
                };

                if (creature == null)
                {
                    return(NotFound());
                }


                return(View(viewModel));
            }
            else
            {
                var creature = await _context.Creature.FindAsync(id);

                var currentUser = await GetCurrentUserAsync();

                if (currentUser.Id != creature.UserId)
                {
                    return(NotFound());
                }
                CreatureEditViewModel viewModel = new CreatureEditViewModel
                {
                    Creature = creature
                };

                return(View(viewModel));
            }
        }
Exemplo n.º 2
0
        public async Task <IActionResult> Edit(int id, CreatureEditViewModel viewModel)
        {
            if (id != viewModel.Creature.Id)
            {
                return(NotFound());
            }

            var currentUser = await GetCurrentUserAsync();

            ModelState.Remove("Creature.UserId");
            ModelState.Remove("Creature.User");
            ModelState.Remove("Creature.Image");

            var creature = viewModel.Creature;


            if (ModelState.IsValid)
            {
                try
                {
                    var creatureFromDatabase = await _context.Creature.FindAsync(id);

                    string photoFileName = null;

                    if (viewModel.Image != null)
                    {
                        string uploadsFolder = Path.Combine(hostingEnvironment.WebRootPath, "images");
                        photoFileName = Guid.NewGuid().ToString() + "_" + viewModel.Image.FileName;
                        string filePath = Path.Combine(uploadsFolder, photoFileName);
                        viewModel.Image.CopyTo(new FileStream(filePath, FileMode.Create));
                        creature.ImagePath = photoFileName;
                    }


                    creatureFromDatabase.Name      = creature.Name;
                    creatureFromDatabase.Lore      = creature.Lore;
                    creatureFromDatabase.Region    = creature.Region;
                    creatureFromDatabase.ImagePath = creature.ImagePath;

                    //creatureFromDatabase.UserId = viewModel.Creature.UserId;
                    //creatureFromDatabase.User = viewModel.Creature.User;

                    _context.Update(creatureFromDatabase);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!CreatureExists(creature.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }

                return(RedirectToAction(nameof(Index)));
            }

            return(View(viewModel));
        }