예제 #1
0
        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));
        }