Exemple #1
0
        public async Task <int> GetAdminActionsCount(AdminActionsFilterModel filterModel)
        {
            if (filterModel == null)
            {
                throw new ArgumentNullException(nameof(filterModel));
            }

            return(await _legacyContext.AdminActions.ApplyFilter(filterModel).CountAsync());
        }
        public async Task <IActionResult> Unclaimed()
        {
            var filterModel = new AdminActionsFilterModel
            {
                Filter = AdminActionsFilterModel.FilterType.UnclaimedBans,
                Order  = AdminActionsFilterModel.OrderBy.CreatedDesc
            };

            var adminActions = await _adminActionsRepository.GetAdminActions(filterModel);

            return(View(adminActions));
        }
        public async Task <IActionResult> MyActions()
        {
            var filterModel = new AdminActionsFilterModel
            {
                AdminId = User.XtremeIdiotsId(),
                Order   = AdminActionsFilterModel.OrderBy.CreatedDesc
            };

            var adminActions = await _adminActionsRepository.GetAdminActions(filterModel);

            return(View(adminActions));
        }
        public async Task <IActionResult> LatestAdminActions()
        {
            var filterModel = new AdminActionsFilterModel
            {
                Order       = AdminActionsFilterModel.OrderBy.CreatedDesc,
                TakeEntries = 15
            };

            var adminActionDtos = await _adminActionsRepository.GetAdminActions(filterModel);

            return(View(adminActionDtos));
        }
Exemple #5
0
        public async Task <List <AdminActionDto> > GetAdminActions(AdminActionsFilterModel filterModel)
        {
            if (filterModel == null)
            {
                throw new ArgumentNullException(nameof(filterModel));
            }

            var adminActions = await _legacyContext.AdminActions
                               .ApplyFilter(filterModel)
                               .ToListAsync();

            var models = adminActions.Select(aa => aa.ToDto()).ToList();

            return(models);
        }
        public async Task <IActionResult> Details(Guid?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            var player = await _playersRepository.GetPlayer((Guid)id);

            var adminActionsFilterModel = new AdminActionsFilterModel
            {
                PlayerId = (Guid)id,
                Order    = AdminActionsFilterModel.OrderBy.CreatedDesc
            };

            var adminActions = await _adminActionsRepository.GetAdminActions(adminActionsFilterModel);

            var playerDetailsViewModel = new PlayerDetailsViewModel
            {
                Player       = player,
                AdminActions = adminActions
            };

            if (!string.IsNullOrWhiteSpace(player.IpAddress))
            {
                try
                {
                    var geoLocation = await _geoLocationClient.LookupAddress(player.IpAddress);

                    if (geoLocation.Success)
                    {
                        playerDetailsViewModel.GeoLocation = geoLocation.GeoLocationDto;
                    }
                }
                catch
                {
                    // ignored
                }
            }

            return(View(playerDetailsViewModel));
        }
        public async Task <IActionResult> GetLatestAdminActions()
        {
            var filterModel = new AdminActionsFilterModel
            {
                Order       = AdminActionsFilterModel.OrderBy.CreatedDesc,
                TakeEntries = 15
            };

            var adminActionDtos = await _adminActionsRepository.GetAdminActions(filterModel);

            var results = new List <dynamic>();

            foreach (var adminActionDto in adminActionDtos)
            {
                string actionText;
                if (adminActionDto.Expires <= DateTime.UtcNow && (adminActionDto.Type == AdminActionType.Ban || adminActionDto.Type == AdminActionType.TempBan))
                {
                    actionText = $"lifted a {adminActionDto.Type} on";
                }
                else
                {
                    actionText = $"added a {adminActionDto.Type} to";
                }

                var adminName = !string.IsNullOrWhiteSpace(adminActionDto.AdminName) ? adminActionDto.AdminName : "Unknown";
                results.Add(new
                {
                    GameIconUrl = $"https://portal.xtremeidiots.com/images/game-icons/{adminActionDto.GameType.ToString()}.png",
                    AdminName   = adminName,
                    adminActionDto.AdminId,
                    ActionType = adminActionDto.Type.ToString(),
                    ActionText = actionText,
                    PlayerName = adminActionDto.Username,
                    PlayerLink = $"https://portal.xtremeidiots.com/Players/Details/{adminActionDto.PlayerId}"
                });
            }

            return(Json(results));
        }
        public static IQueryable <AdminActions> ApplyFilter(this IQueryable <AdminActions> adminActions, AdminActionsFilterModel filterModel)
        {
            adminActions = adminActions.Include(aa => aa.PlayerPlayer)
                           .Include(aa => aa.Admin)
                           .AsQueryable();

            if (filterModel.GameType != GameType.Unknown)
            {
                adminActions = adminActions.Where(aa => aa.PlayerPlayer.GameType == filterModel.GameType).AsQueryable();
            }

            if (filterModel.PlayerId != Guid.Empty)
            {
                adminActions = adminActions.Where(aa => aa.PlayerPlayerId == filterModel.PlayerId).AsQueryable();
            }

            if (!string.IsNullOrWhiteSpace(filterModel.AdminId))
            {
                adminActions = adminActions.Where(aa => aa.Admin.XtremeIdiotsId == filterModel.AdminId).AsQueryable();
            }

            switch (filterModel.Filter)
            {
            case AdminActionsFilterModel.FilterType.ActiveBans:
                adminActions = adminActions.Where(aa => aa.Type == AdminActionType.Ban && aa.Expires == null ||
                                                  aa.Type == AdminActionType.TempBan && aa.Expires > DateTime.UtcNow)
                               .AsQueryable();
                break;

            case AdminActionsFilterModel.FilterType.UnclaimedBans:
                adminActions = adminActions.Where(aa => aa.Type == AdminActionType.Ban && aa.Expires == null &&
                                                  aa.Admin == null)
                               .AsQueryable();
                break;
            }

            switch (filterModel.Order)
            {
            case AdminActionsFilterModel.OrderBy.CreatedAsc:
                adminActions = adminActions.OrderBy(aa => aa.Created).AsQueryable();
                break;

            case AdminActionsFilterModel.OrderBy.CreatedDesc:
                adminActions = adminActions.OrderByDescending(aa => aa.Created).AsQueryable();
                break;
            }

            adminActions = adminActions.Skip(filterModel.SkipEntries).AsQueryable();

            if (filterModel.TakeEntries != 0)
            {
                adminActions = adminActions.Take(filterModel.TakeEntries).AsQueryable();
            }

            return(adminActions);
        }