// 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); }
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; }
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); }