public ActionResult Guild(int id = -1, int d = -1, int g = -1) { #region Validation if (id == -1) { return(View("InvalidResource", model: "bossfight")); } var difficulty = _difficultyRepository.GetDefaultDifficulty(); if (difficulty == null) { return(View("InvalidResource", model: "encounter difficulty")); } if (d != -1) { var overrideDifficulty = _difficultyRepository.Get(d); if (overrideDifficulty != null) { difficulty = overrideDifficulty; } } var bossFight = _bossFightRepository.Get(id); if (bossFight == null) { return(View("InvalidResource", model: "bossfight")); } var guild = _guildRepository.Get(g); if (guild == null) { return(View("InvalidResource", model: "guild")); } // Privacy if (!Request.IsAuthenticated && guild.HideFromRankings) { return(View("GuildPrivate")); } if (guild.HideFromRankings) { bool sameGuild = false; // Check we have a valid user var user = _authRepository.GetUserAccount(User.Identity.GetUserId()); if (user == null) { HttpContext.GetOwinContext().Authentication.SignOut(); return(RedirectToAction("Index", "Home")); } // Get the characters for this user var userCharacters = _authUserCharacterRepository.GetCharacters(user.Email); if (userCharacters.Any(c => c.GuildId == guild.Id) || User.IsInRole(UserGroups.Admin)) { sameGuild = true; } if (!sameGuild) { return(View("GuildPrivate")); } } #endregion var model = new GuildRecords() { GuildName = guild.Name, // Fight related BossFight = bossFight, Difficulty = difficulty, // General, not guild related SingleFastestKill = _encounterRepository.GetFastestKills(id, difficulty.Id).FirstOrDefault(), // Fix this later - use the method that only returns one // Player-based SingleTopAps = _recordsRepository.GetSingleTopAps(id, difficulty.Id), SingleTopDps = _recordsRepository.GetSingleTopDps(id, difficulty.Id), SingleTopHps = _recordsRepository.GetSingleTopHps(id, difficulty.Id), // Guild-based SingleTopApsGuild = _recordsRepository.GetSingleTopApsGuild(id, difficulty.Id), SingleTopDpsGuild = _recordsRepository.GetSingleTopDpsGuild(id, difficulty.Id), SingleTopHpsGuild = _recordsRepository.GetSingleTopHpsGuild(id, difficulty.Id), // This guild-related GuildHybridXpsOverTimeChart = _recordCharts.GuildHybridXpsOverTime(id, difficulty.Id, g, guild.Name, bossFight.Name), GuildDurationOverTimeChart = _recordCharts.GetEncounterDurationOverTime(id, difficulty.Id, g, guild.Name, bossFight.Name), GuildTopDps = _recordsRepository.GetTopGuildDps(id, g, difficulty.Id), GuildTopHps = _recordsRepository.GetTopGuildHps(id, g, difficulty.Id), GuildTopAps = _recordsRepository.GetTopGuildAps(id, g, difficulty.Id), PlayerDpsOverTimeChart = _recordCharts.GuildPlayerXpsOverTime(id, difficulty.Id, guild.Id, guild.Name, bossFight.Name, "DPS", 20), PlayerHpsOverTimeChart = _recordCharts.GuildPlayerXpsOverTime(id, difficulty.Id, guild.Id, guild.Name, bossFight.Name, "HPS", 20), PlayerApsOverTimeChart = _recordCharts.GuildPlayerXpsOverTime(id, difficulty.Id, guild.Id, guild.Name, bossFight.Name, "APS", 20), }; if (System.IO.File.Exists(Server.MapPath(string.Format("~/Content/images/portrait/{0}.png", bossFight.PortraitFilename)))) { model.LoadImage = true; } return(View(model)); }
public ActionResult BossFight(int id = -1, int o = 0, int d = -1) { if (id == -1) { return(View("InvalidResource", model: "bossfight")); } var difficulty = _difficultyRepository.GetDefaultDifficulty(); if (difficulty == null) { return(View("InvalidResource", model: "encounter difficulty")); } if (d != -1) { var overrideDifficulty = _difficultyRepository.Get(d); if (overrideDifficulty != null) { difficulty = overrideDifficulty; } } var bossFight = _bossFightRepository.Get(id); if (bossFight == null) { return(View("InvalidResource", model: "bossfight")); } bool returnAll = false; if (Request.IsAuthenticated) { if (User.IsInRole(UserGroups.Admin)) { returnAll = true; } } var dbSessions = returnAll ? _sessionRepository.GetAllBossFightSessions(id, difficulty.Id) : _sessionRepository.GetBossFightSessions(id, User.Identity.GetUserId(), difficulty.Id); if (o == 0) { dbSessions = dbSessions.Where(s => s.Date >= DateTime.Today.Date.Subtract(new TimeSpan(14, 0, 0, 0))).Take(10).ToList(); } var leaderboards = _leaderboardRepository.GetLeaderboards_v2(id, 10, difficulty.Id); var model = new SessionBossFightVM { BossFight = bossFight, Sessions = dbSessions, Difficulty = difficulty, TopSingleTargetDps = leaderboards.TopSingleTargetDps, Top10WarriorAps = leaderboards.WarriorTopAps, Top10WarriorDps = leaderboards.WarriorTopDps, Top10WarriorHps = leaderboards.WarriorTopHps, Top10MageAps = leaderboards.MageTopAps, Top10MageDps = leaderboards.MageTopDps, Top10MageHps = leaderboards.MageTopHps, Top10ClericAps = leaderboards.ClericTopAps, Top10ClericDps = leaderboards.ClericTopDps, Top10ClericHps = leaderboards.ClericTopHps, Top10RogueAps = leaderboards.RogueTopAps, Top10RogueDps = leaderboards.RogueTopDps, Top10RogueHps = leaderboards.RogueTopHps, Top10PrimalistAps = leaderboards.PrimalistTopAps, Top10PrimalistDps = leaderboards.PrimalistTopDps, Top10PrimalistHps = leaderboards.PrimalistTopHps, FastestKills = leaderboards.FastestKills, Top10SingleTargetWarriorDps = leaderboards.WarriorTopSingleTarget, Top10SingleTargetMageDps = leaderboards.MageTopSingleTarget, Top10SingleTargetClericDps = leaderboards.ClericTopSingleTarget, Top10SingleTargetRogueDps = leaderboards.RogueTopSingleTarget, Top10SingleTargetPrimalistDps = leaderboards.PrimalistTopSingleTarget, TopAps = leaderboards.TopAps, TopDps = leaderboards.TopDps, TopHps = leaderboards.TopHps, TopSupportDps = leaderboards.TopSupportDps, WarriorTopSupportDps = leaderboards.WarriorTopSupportDps, MageTopSupportDps = leaderboards.MageTopSupportDps, ClericTopSupportDps = leaderboards.ClericTopSupportDps, RogueTopSupportDps = leaderboards.RogueTopSupportDps, PrimalistTopSupportDps = leaderboards.PrimalistTopSupportDps, TopBurstDamage1S = leaderboards.TopBurstDamage1S }; model.SingleFastestKill = model.FastestKills.FirstOrDefault(); model.SingleTopDps = model.Top10Dps.FirstOrDefault(); model.SingleTopHps = model.Top10Hps.FirstOrDefault(); model.SingleTopAps = model.Top10Aps.FirstOrDefault(); foreach (var guildSession in model.Sessions) { guildSession.BossesSeen = _sessionRepository.GetBossesKilled(guildSession.Id); guildSession.BossesSeenNotKilled = _sessionRepository.GetBossesSeenButNotKilled(guildSession.Id); } if (System.IO.File.Exists(Server.MapPath(string.Format("~/Content/images/portrait/{0}.png", bossFight.PortraitFilename)))) { model.LoadImage = true; } return(View(model)); }