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