Example #1
0
        public async Task <PostingPermissionDto> IsPostingAllowedAsync(TPrimaryKey threadId, string userIpAddress)
        {
            var bans = await _context.Bans
                       .Where(
                ban =>
                ((ban.Category == null) || (ban.Category.Threads.Any(thread => thread.Id == threadId))) &&
                (!ban.IsDeleted) &&
                (ban.Start <= DateTime.UtcNow) &&
                (ban.End >= DateTime.UtcNow))
                       .ToListAsync();

            var relatedBan = bans
                             .FirstOrDefault(ban =>
                                             _ipAddressCalculator.IsInRange(ban.LowerIpAddress, ban.UpperIpAddress, userIpAddress));

            var isPostingAllowed = relatedBan == null;

            BanDto banDto = null;

            if (!isPostingAllowed)
            {
                banDto = _mapper.Map <BanDto>(relatedBan);
            }

            return(new PostingPermissionDto {
                IsPostingAllowed = isPostingAllowed, Ban = banDto
            });
        }
Example #2
0
        public async Task <Tuple <bool, string> > IsPostingAllowedAsync(TPrimaryKey threadId, string userIpAddress)
        {
            var bans = await Context
                       .Bans
                       .Where(
                ban =>
                ((ban.Category == null) || (ban.Category.Threads.Any(thread => thread.Id == threadId))) &&
                (!ban.IsDeleted) &&
                (ban.Start <= DateTime.UtcNow) &&
                (ban.End >= DateTime.UtcNow))
                       .ToListAsync();

            var relatedBan = bans
                             .FirstOrDefault(ban =>
                                             _ipAddressCalculator.IsInRange(userIpAddress, ban.LowerIpAddress, ban.UpperIpAddress));

            var isPostingAllowed = relatedBan == null;

            return(new Tuple <bool, string>(isPostingAllowed, relatedBan?.Reason));
        }