/// <summary>
        ///     Returns the main battle replay list; params filter
        /// </summary>
        public ActionResult Index(BattleSearchModel model) {
            var db = new ZkDataContext();

            model = model ?? new BattleSearchModel();
            var q = db.SpringBattles.Include(x => x.SpringBattlePlayers);

            if (!string.IsNullOrEmpty(model.Title)) q = q.Where(b => b.Title.Contains(model.Title));

            if (!string.IsNullOrEmpty(model.Map)) q = q.Where(b => b.ResourceByMapResourceID.InternalName == model.Map);

            
            //if (user == null && Global.IsAccountAuthorized) user = Global.Account.Name;
            if (!string.IsNullOrEmpty(model.User1)) q = q.Where(b => b.SpringBattlePlayers.Any(p => !p.IsSpectator && p.Account.Name == model.User1));
            if (!string.IsNullOrEmpty(model.User2)) q = q.Where(b => b.SpringBattlePlayers.Any(p => !p.IsSpectator && p.Account.Name == model.User2));
            if (!string.IsNullOrEmpty(model.User3)) q = q.Where(b => b.SpringBattlePlayers.Any(p => !p.IsSpectator && p.Account.Name == model.User3));


            if (model.PlayersFrom.HasValue) q = q.Where(b => b.SpringBattlePlayers.Count(p => !p.IsSpectator) >= model.PlayersFrom);
            if (model.PlayersTo.HasValue) q = q.Where(b => b.SpringBattlePlayers.Count(p => !p.IsSpectator) <= model.PlayersTo);
            
            if (model.Age != AgeOption.Any)
            {
                var limit = DateTime.UtcNow;
                switch (model.Age)
                {
                    case AgeOption.Today:
                        limit = DateTime.Now.AddDays(-1);
                        break;
                    case AgeOption.ThisWeek:
                        limit = DateTime.UtcNow.AddDays(-7);
                        break;
                    case AgeOption.ThisMonth:
                        limit = DateTime.UtcNow.AddDays(-31);
                        break;
                }
                q = q.Where(b => b.StartTime >= limit);
            }

            if (model.Mission != YesNoAny.Any)
            {
                var bval = model.Mission == YesNoAny.Yes;
                q = q.Where(b => b.IsMission == bval);
            }

            if (model.Bots != YesNoAny.Any)
            {
                var bval = model.Bots == YesNoAny.Yes;
                q = q.Where(b => b.HasBots == bval);
            }

            q = q.OrderByDescending(b => b.StartTime);

            if (model.offset.HasValue) q = q.Skip(model.offset.Value);
            q = q.Take(Global.AjaxScrollCount);

            var result =
                q.ToList()
                    .Select(
                        b =>
                            new BattleQuickInfo
                            {
                                Battle = b,
                                Players = b.SpringBattlePlayers,
                                Map = b.ResourceByMapResourceID,
                                Mod = b.ResourceByModResourceID
                            })
                    .ToList();


            //if(result.Count == 0)
            //    return Content("");
            model.Data = result;
            if (model.offset.HasValue) return View("BattleTileList", model);
            return View("BattleIndex", model);
        }
Exemplo n.º 2
0
        /// <summary>
        ///     Returns the main battle replay list; params filter
        /// </summary>
        public ActionResult Index(BattleSearchModel model)
        {
            var db = new ZkDataContext();

            model = model ?? new BattleSearchModel();
            var q = db.SpringBattles.Include(x => x.SpringBattlePlayers);

            if (!string.IsNullOrEmpty(model.Title))
            {
                q = q.Where(b => b.Title.Contains(model.Title));
            }

            if (!string.IsNullOrEmpty(model.Map))
            {
                q = q.Where(b => b.ResourceByMapResourceID.InternalName.Contains(model.Map));
            }


            //if (user == null && Global.IsAccountAuthorized) user = Global.Account.Name;
            if (model.UserId != null)
            {
                int uniqueIds = model.UserId.Distinct().Count();
                switch (model.Victory)
                {
                case YesNoAny.Any:
                    q = q.Where(b => b.SpringBattlePlayers.Where(p => model.UserId.Contains(p.AccountID) && !p.IsSpectator).Count() == uniqueIds);
                    break;

                case YesNoAny.Yes:
                    q = q.Where(b => b.SpringBattlePlayers.Where(p => model.UserId.Contains(p.AccountID) && !p.IsSpectator && p.IsInVictoryTeam).Count() == uniqueIds);
                    break;

                case YesNoAny.No:
                    q = q.Where(b => b.SpringBattlePlayers.Where(p => model.UserId.Contains(p.AccountID) && !p.IsSpectator && !p.IsInVictoryTeam).Count() == uniqueIds);
                    break;
                }
            }

            if (model.PlayersFrom.HasValue)
            {
                q = q.Where(b => b.SpringBattlePlayers.Count(p => !p.IsSpectator) >= model.PlayersFrom);
            }
            if (model.PlayersTo.HasValue)
            {
                q = q.Where(b => b.SpringBattlePlayers.Count(p => !p.IsSpectator) <= model.PlayersTo);
            }

            if (model.Age != AgeOption.Any)
            {
                var limit = DateTime.UtcNow;
                switch (model.Age)
                {
                case AgeOption.Today:
                    limit = DateTime.Now.AddDays(-1);
                    break;

                case AgeOption.ThisWeek:
                    limit = DateTime.UtcNow.AddDays(-7);
                    break;

                case AgeOption.ThisMonth:
                    limit = DateTime.UtcNow.AddDays(-31);
                    break;
                }
                q = q.Where(b => b.StartTime >= limit);
            }

            if (model.Mission != YesNoAny.Any)
            {
                var bval = model.Mission == YesNoAny.Yes;
                q = q.Where(b => b.IsMission == bval);
            }

            if (model.Bots != YesNoAny.Any)
            {
                var bval = model.Bots == YesNoAny.Yes;
                q = q.Where(b => b.HasBots == bval);
            }

            if (model.Rank != RankSelector.Undefined)
            {
                int rank = (int)model.Rank;
                q = q.Where(b => b.Rank == rank);
            }

            q = q.OrderByDescending(b => b.StartTime);

            if (model.offset.HasValue)
            {
                q = q.Skip(model.offset.Value);
            }
            q = q.Take(Global.AjaxScrollCount);

            var result =
                q.ToList()
                .Select(
                    b =>
                    new BattleQuickInfo
            {
                Battle  = b,
                Players = b.SpringBattlePlayers,
                Map     = b.ResourceByMapResourceID,
                Mod     = b.ResourceByModResourceID
            })
                .ToList();


            //if(result.Count == 0)
            //    return Content("");
            model.Data = result;
            if (model.offset.HasValue)
            {
                return(View("BattleTileList", model));
            }
            return(View("BattleIndex", model));
        }
        /// <summary>
        ///     Returns the main battle replay list; params filter
        /// </summary>
        public ActionResult Index(BattleSearchModel model)
        {
            var db = new ZkDataContext();

            model = model ?? new BattleSearchModel();
            var q = db.SpringBattles.Include(x => x.SpringBattlePlayers);

            // battle filters
            if (!string.IsNullOrEmpty(model.Title))
            {
                q = q.Where(b => b.Title.Contains(model.Title));
            }
            if (!string.IsNullOrEmpty(model.Map))
            {
                q = q.Where(b => b.ResourceByMapResourceID.InternalName.Contains(model.Map));
            }

            if (model.MinDuration.HasValue)
            {
                q = q.Where(b => b.Duration >= 60 * model.MinDuration);
            }
            if (model.MaxDuration.HasValue && model.MaxDuration != MAX_DURATION_MINUTES)
            {
                q = q.Where(b => b.Duration <= 60 * model.MaxDuration);
            }
            if (model.PlayersFrom.HasValue)
            {
                q = q.Where(b => b.SpringBattlePlayers.Count(p => !p.IsSpectator) >= model.PlayersFrom);
            }
            if (model.PlayersTo.HasValue && model.PlayersTo != MAX_PLAYER_COUNT)
            {
                q = q.Where(b => b.SpringBattlePlayers.Count(p => !p.IsSpectator) <= model.PlayersTo);
            }
            if (model.AgeFrom.HasValue)
            {
                q = q.Where(b => b.StartTime >= model.AgeFrom);
            }
            if (model.AgeTo.HasValue)
            {
                q = q.Where(b => b.StartTime <= model.AgeTo);
            }

            if (model.MinRank != RankSelector.Undefined && model.MinRank > RankSelector.Grey)
            {
                q = q.Where(b => b.MinRank >= (int)model.MinRank);
            }
            if (model.MaxRank != RankSelector.Undefined && model.MaxRank < RankSelector.Purple)
            {
                q = q.Where(b => b.MaxRank <= (int)model.MaxRank);
            }

            if (model.Mission.HasValue)
            {
                q = q.Where(b => b.IsMission == model.Mission);
            }
            if (model.Bots.HasValue)
            {
                q = q.Where(b => b.HasBots == model.Bots);
            }

            //if (user == null && Global.IsAccountAuthorized) user = Global.Account.Name;
            //if (model.UserId != null) {
            //    int uniqueIds = model.UserId.Distinct().Count();
            //    switch (model.Victory)
            //    {
            //        case YesNoAny.Any:
            //            q = q.Where(b => b.SpringBattlePlayers.Where(p => model.UserId.Contains(p.AccountID) && !p.IsSpectator).Count() == uniqueIds);
            //            break;
            //        case YesNoAny.Yes:
            //            q = q.Where(b => b.SpringBattlePlayers.Where(p => model.UserId.Contains(p.AccountID) && !p.IsSpectator && p.IsInVictoryTeam).Count() == uniqueIds);
            //            break;
            //        case YesNoAny.No:
            //            q = q.Where(b => b.SpringBattlePlayers.Where(p => model.UserId.Contains(p.AccountID) && !p.IsSpectator && !p.IsInVictoryTeam).Count() == uniqueIds);
            //            break;
            //    }
            //}

            q = q.OrderByDescending(b => b.StartTime);

            if (model.offset.HasValue)
            {
                q = q.Skip(model.offset.Value);
            }
            q = q.Take(Global.AjaxScrollCount);

            var result =
                q.ToList()
                .Select(
                    b =>
                    new BattleQuickInfo
            {
                Battle  = b,
                Players = b.SpringBattlePlayers,
                Map     = b.ResourceByMapResourceID,
                Mod     = b.ResourceByModResourceID
            })
                .ToList();


            //if(result.Count == 0)
            //    return Content("");
            model.Data = result;
            if (model.offset.HasValue)
            {
                return(View("BattleTileList", model));
            }
            return(View("BattleIndex", model));
        }