public async Task <ActionResult> Create3(MatchEditorViewModel viewModel, string Command) { if (!ModelState.IsValid) { return(View(viewModel)); } if (Command == "Previous") { TempData["Create2"] = viewModel; return(RedirectToAction("Create2")); } if (Command == "Save") { var competitionV = await DbProvider.GetCompetition((Guid)viewModel.CompetitionGuid, viewModel.ViewDate); var campaignGuid = competitionV.Competition.Campaigns.Single(c => c.StartDate <= viewModel.MatchDate && c.EndDate > viewModel.MatchDate).PrimaryKey; var newMatchV = viewModel.ToMatchV(UserId, UserId, campaignGuid); var newMatch = new Match() { PrimaryKey = viewModel.HeaderKey }; DbProvider.Add(newMatch); DbProvider.Add(newMatchV); DbProvider.SaveChanges(); return(RedirectToDetailsIndex(newMatch.PrimaryKey)); } return(View(viewModel)); }
public async Task <ActionResult> Edit3(MatchEditorViewModel viewModel, string Command) { await SetModelsByPrimaryKey(viewModel); if (!ModelState.IsValid) { return(View(viewModel)); } if (Command == "Previous") { TempData["MatchEditorViewModel"] = viewModel; return(RedirectToAction("Edit2")); } if (Command == "Save") { viewModel.MatchViewModels = viewModel.HeaderEntity.Versions.OrderByDescending(v => v.EffectiveFrom).ThenByDescending(v => v.IsActive).ToViewModels(DateTime.Now); var competitionV = await DbProvider.GetCompetition((Guid)viewModel.CompetitionGuid, viewModel.ViewDate); var campaignGuid = competitionV.Competition.Campaigns.Single(c => c.StartDate <= viewModel.MatchDate && c.EndDate > viewModel.MatchDate).PrimaryKey; var query = viewModel.HeaderEntity.GetApprovedVersionsByEffectiveDate <Match, MatchV>(Date.LowDate); if (query.Any()) { var entityV = query.Single(); if (viewModel.Equals(entityV)) { ModelState.AddModelError(string.Empty, "No changes have been made."); return(View(viewModel)); } if (entityV.ModifiedUserId == UserId) { entityV.SetData(viewModel); entityV.DateModified = DateTime.Now; DbProvider.SaveChanges(); return(RedirectToEditor("Home", entityV)); } else { entityV.IsActive = false; var newEntityV = viewModel.ToMatchV(entityV.OwnerUserId, UserId, campaignGuid); DbProvider.Add(newEntityV); foreach (var matchEvent in entityV.MatchEvents) { var newMatchEvent = new MatchEvent() { PrimaryKey = Guid.NewGuid(), MatchVPrimaryKey = newEntityV.PrimaryKey, TeamPrimaryKey = matchEvent.TeamPrimaryKey, PersonPrimaryKey = matchEvent.PersonPrimaryKey, PositionType = matchEvent.PositionType, MatchEventType = matchEvent.MatchEventType, Minute = matchEvent.Minute, Extra = matchEvent.Extra }; DbProvider.Add(newMatchEvent); } DbProvider.SaveChanges(); return(RedirectToEditor("Home", newEntityV)); } } } return(View(viewModel)); }