Exemplo n.º 1
0
        // GET: /Character/Create
        public async Task<ActionResult> Create()
        {
            var model = new CharacterEditViewModel
            {
                Games = await db.Games.ToDictionaryAsync(g => (int) g.GameId, g => g.Name),
            };

            ViewBag.Title = "Add Character";
            return View("Edit", model);
        }
Exemplo n.º 2
0
        public static CharacterEditViewModel FromCharacter(Character character)
        {
            var model = new CharacterEditViewModel
            {
                Id = character.Id,
                Name = character.Name,
                GameId = character.GameId,
                ApiKeyId = character.ApiKeyId,
                ApiKey = character.ApiKey
            };

            return model;
        }
Exemplo n.º 3
0
        public async Task<ActionResult> Edit(CharacterEditViewModel model)
        {
            var userId = User.Identity.GetUserId();
            if (ModelState.IsValid)
            {
                var character = model.ToCharacter();

                if (!await db.Characters.AnyAsync(c => c.Id == character.Id))
                {
                    if (
                        !await
                            db.Characters.AnyAsync(
                                c => c.GameId == character.GameId && c.Name == character.Name))
                    {
                        character.UserId = userId;
                        db.Characters.Add(character);
                    }
                    else
                    {
                        ModelState.AddModelError("Name", "A Character with this name already exists for this game.");
                        model.Games = await db.Games.ToDictionaryAsync(g => (int)g.GameId, g => g.Name);
                        ViewBag.Title = "Add Character";
                        return View(model);
                    }
                }
                else
                {
                    if (await db.Characters.AnyAsync(c => c.Id == character.Id && c.UserId == userId))
                    {
                        character.UserId = userId;
                        db.Entry(character).State = EntityState.Modified;
                    }
                }

                await db.SaveChangesAsync();
                return RedirectToAction("Manage", "Account");
            }
            ViewBag.Title = model.Id == 0 ? "Add Character" : "Edit Character";
            return View(model);
        }