public async Task <IActionResult> Edit(EditBattleReportViewModel viewModel) { viewModel.StatusMessage = string.Empty; if (!ModelState.IsValid) { viewModel.Factions = await _db.Factions.OrderBy(f => f.Name).ToListAsync(); viewModel.PosterWon = viewModel.BattleReport.WinnersUsername == User.Identity.Name; int postersFactionId = viewModel.Factions.First(f => f.Name == viewModel.BattleReport.PostersFaction).Id; viewModel.PostersFactionThemes = await _db.Themes.Where(t => t.FactionId == postersFactionId).OrderBy(t => t.Name).ToListAsync(); viewModel.PostersFactionCasters = await _db.Casters.Where(c => c.FactionId == postersFactionId).OrderBy(c => c.Name).ToListAsync(); int opponentsFactionId = viewModel.Factions.First(f => f.Name == viewModel.BattleReport.OpponentsFaction).Id; viewModel.OpponentsFactionThemes = await _db.Themes.Where(t => t.FactionId == opponentsFactionId).OrderBy(t => t.Name).ToListAsync(); viewModel.OpponentsFactionCasters = await _db.Casters.Where(c => c.FactionId == opponentsFactionId).OrderBy(c => c.Name).ToListAsync(); return(View(viewModel)); } BattleReport battleReport = await _db.BattleReports.FindAsync(viewModel.BattleReport.Id); battleReport.PostersFaction = viewModel.BattleReport.PostersFaction; battleReport.PostersTheme = viewModel.BattleReport.PostersTheme; battleReport.PostersCaster = viewModel.BattleReport.PostersCaster; battleReport.PostersArmyList = viewModel.BattleReport.PostersArmyList; battleReport.PostersArmyPoints = viewModel.BattleReport.PostersArmyPoints; battleReport.PostersControlPoints = viewModel.BattleReport.PostersControlPoints; battleReport.OpponentsFaction = viewModel.BattleReport.OpponentsFaction; battleReport.OpponentsTheme = viewModel.BattleReport.OpponentsTheme; battleReport.OpponentsCaster = viewModel.BattleReport.OpponentsCaster; battleReport.OpponentsArmyList = viewModel.BattleReport.OpponentsArmyList; battleReport.OpponentsArmyPoints = viewModel.BattleReport.OpponentsArmyPoints; battleReport.OpponentsControlPoints = viewModel.BattleReport.OpponentsControlPoints; battleReport.DatePlayed = viewModel.BattleReport.DatePlayed; battleReport.EndCondition = viewModel.BattleReport.EndCondition; battleReport.GameSize = viewModel.BattleReport.GameSize; battleReport.Scenario = viewModel.BattleReport.Scenario; battleReport.LosersUsername = viewModel.PosterWon ? viewModel.BattleReport.OpponentsUsername : viewModel.BattleReport.PostersUsername; battleReport.LosingFaction = viewModel.PosterWon ? viewModel.BattleReport.OpponentsFaction : viewModel.BattleReport.PostersFaction; battleReport.LosingTheme = viewModel.PosterWon ? viewModel.BattleReport.OpponentsTheme : viewModel.BattleReport.PostersTheme; battleReport.LosingCaster = viewModel.PosterWon ? viewModel.BattleReport.OpponentsCaster : viewModel.BattleReport.PostersCaster; battleReport.WinnersUsername = viewModel.PosterWon ? viewModel.BattleReport.PostersUsername : viewModel.BattleReport.OpponentsUsername; battleReport.WinningFaction = viewModel.PosterWon ? viewModel.BattleReport.PostersFaction : viewModel.BattleReport.OpponentsFaction; battleReport.WinningTheme = viewModel.PosterWon ? viewModel.BattleReport.PostersTheme : viewModel.BattleReport.OpponentsTheme; battleReport.WinningCaster = viewModel.PosterWon ? viewModel.BattleReport.PostersCaster : viewModel.BattleReport.OpponentsCaster; await _db.SaveChangesAsync(); return(RedirectToAction(nameof(UnconfirmedBattleReports), new { id = User.Identity.Name })); }
public async Task <IActionResult> Edit(int?id) { if (id == null) { return(NotFound()); } BattleReport battleReport = await _db.BattleReports.FindAsync(id); if (battleReport == null) { return(NotFound()); } if (battleReport.PostersUsername != User.Identity.Name) { return(Unauthorized()); } EditBattleReportViewModel viewModel = new EditBattleReportViewModel() { Factions = await _db.Factions.OrderBy(f => f.Name).ToListAsync(), BattleReport = battleReport, StatusMessage = string.Empty }; viewModel.PosterWon = viewModel.BattleReport.WinnersUsername == User.Identity.Name; int postersFactionId = viewModel.Factions.First(f => f.Name == battleReport.PostersFaction).Id; viewModel.PostersFactionThemes = await _db.Themes.Where(t => t.FactionId == postersFactionId).OrderBy(t => t.Name).ToListAsync(); viewModel.PostersFactionCasters = await _db.Casters.Where(c => c.FactionId == postersFactionId).OrderBy(c => c.Name).ToListAsync(); int opponentsFactionId = viewModel.Factions.First(f => f.Name == battleReport.OpponentsFaction).Id; viewModel.OpponentsFactionThemes = await _db.Themes.Where(t => t.FactionId == opponentsFactionId).OrderBy(t => t.Name).ToListAsync(); viewModel.OpponentsFactionCasters = await _db.Casters.Where(c => c.FactionId == opponentsFactionId).OrderBy(c => c.Name).ToListAsync(); return(View(viewModel)); }