Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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));
        }