コード例 #1
0
        // GET: Characters/Edit/5
        public async Task <IActionResult> Edit(int?id)
        {
            var UCVM = new UpdateCharacterViewModel();

            UCVM.Character = await _context.Character.FindAsync(id);

            var characterFeats     = _context.Feat;
            var characterEquipment = _context.Equipment;

            List <SelectListItem> EquipmentSelectListItems = new List <SelectListItem>();
            List <SelectListItem> FeatSelectListItems      = new List <SelectListItem>();

            foreach (var equipment in characterEquipment)
            {
                SelectListItem li = new SelectListItem
                {
                    Value = equipment.EquipmentId.ToString(),
                    Text  = equipment.EquipmentName
                };
                EquipmentSelectListItems.Add(li);
            }

            foreach (var feat in characterFeats)
            {
                SelectListItem li = new SelectListItem
                {
                    Value = feat.FeatId.ToString(),
                    Text  = feat.Description
                };
                FeatSelectListItems.Add(li);
            }

            UCVM.Equipment = EquipmentSelectListItems;
            UCVM.Feats     = FeatSelectListItems;

            ViewData["UserId"] = new SelectList(_context.ApplicationUser, "Id", "Id");
            return(View(UCVM));
        }
コード例 #2
0
        public async Task <IActionResult> UpdateCharacter(long id, UpdateCharacterViewModel characterViewModel)
        {
            var currentCharacter = await _characterService.GetWithAllByIdAsync(id, false);

            if (currentCharacter == null)
            {
                return(NotFound(NotFoundErrorViewModel.Create(nameof(Character), id)));
            }

            var userId = GetUserIdFromClaims(User);

            if (!userId.HasValue)
            {
                return(Unauthorized(new UnauthorizedErrorViewModel()));
            }


            var character = Mapper.Map <Character>(characterViewModel);

            _characterFacadeService.UpdateCharacter(currentCharacter, character, userId.Value);
            await _dbContext.SaveChangesAsync();

            return(Accepted());
        }
コード例 #3
0
        public async Task <IActionResult> Edit(int id, UpdateCharacterViewModel model)
        {
            ModelState.Remove("UserId");
            ModelState.Remove("User");
            ModelState.Remove("Races");
            ModelState.Remove("Feats");
            ModelState.Remove("Backgrounds");
            ModelState.Remove("CharacterClass");

            if (id != model.Character.CharacterId)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    var characterUserId = model.Character.UserId;
                    var user            = await GetCurrentUserAsync();

                    model.Character.UserId = user.Id;
                    _context.Update(model.Character);

                    var previousFeats = _context.FeatCharacter.Where(fc => fc.CharacterId == model.Character.CharacterId).ToList();

                    foreach (var fc in previousFeats)
                    {
                        _context.Remove(fc);
                    }

                    foreach (int currentId in model.FeatIds)
                    {
                        var joinTableEntry = new FeatCharacter
                        {
                            FeatId      = currentId,
                            CharacterId = model.Character.CharacterId
                        };

                        _context.Add(joinTableEntry);
                    }

                    var previousEquipment = _context.EquipmentCharacter.Where(ec => ec.CharacterId == model.Character.CharacterId).ToList();

                    foreach (var ec in previousEquipment)
                    {
                        _context.Remove(ec);
                    }

                    foreach (int currentId in model.EquipmentIds)
                    {
                        var joinTableEntry2 = new EquipmentCharacter
                        {
                            EquipmentId = currentId,
                            CharacterId = model.Character.CharacterId
                        };
                        _context.Add(joinTableEntry2);
                    }

                    await _context.SaveChangesAsync();
                }

                catch (DbUpdateConcurrencyException)
                {
                    if (!CharacterExists(model.Character.CharacterId))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(model));
        }