public Article ValidateEntity(Article entity, DeletedEntityPolicy policy)
        {
            if (entity.Deleted)
            {
                switch (policy)
                {
                case DeletedEntityPolicy.INACCESSIBLE:
                    throw new EntityDeletedException();

                case DeletedEntityPolicy.OWNER:
                    if (entity.UserId != _currentUserService.UserId)
                    {
                        throw new EntityDeletedException();
                    }
                    break;

                case DeletedEntityPolicy.RESTRICTED:
                    entity.User   = null;
                    entity.UserId = 0;
                    break;

                case DeletedEntityPolicy.PUBLIC:
                default:
                    break;
                }
            }
            return(entity);
        }
Exemplo n.º 2
0
        public User ValidateEntity(User entity, DeletedEntityPolicy policy)
        {
            if (entity.Deleted)
            {
                switch (policy)
                {
                case DeletedEntityPolicy.INACCESSIBLE:
                    throw new EntityDeletedException();

                case DeletedEntityPolicy.OWNER:
                    if (entity.Id != _currentUserService.UserId)
                    {
                        throw new EntityDeletedException();
                    }
                    break;

                case DeletedEntityPolicy.RESTRICTED:
                    entity.UserName     = null;
                    entity.FirstName    = null;
                    entity.LastName     = null;
                    entity.ProfileImage = null;
                    break;

                case DeletedEntityPolicy.PUBLIC:
                default:
                    break;
                }
            }
            return(entity);
        }
Exemplo n.º 3
0
        public Board ValidateEntity(Board entity, DeletedEntityPolicy policy)
        {
            if (entity.Deleted)
            {
                switch (policy)
                {
                case DeletedEntityPolicy.INACCESSIBLE:
                    throw new EntityDeletedException();

                case DeletedEntityPolicy.OWNER:
                    if (!entity.Moderators.Any(m => m.UserId == _currentUserService.UserId))
                    {
                        throw new EntityDeletedException();
                    }
                    break;

                case DeletedEntityPolicy.RESTRICTED:
                    entity.Creator     = null;
                    entity.Moderators  = new List <Domain.Entities.JoinEntities.BoardUserModerator>();
                    entity.Subscribers = new List <Domain.Entities.JoinEntities.BoardUserSubscriber>();
                    break;

                case DeletedEntityPolicy.PUBLIC:
                default:
                    break;
                }
            }
            return(entity);
        }
Exemplo n.º 4
0
        public IQueryable <User> ValidateEntityQuerable(IQueryable <User> entities, DeletedEntityPolicy policy)
        {
            Func <User, User> policySelector = entity =>
            {
                if (entity.Deleted)
                {
                    switch (policy)
                    {
                    case DeletedEntityPolicy.INACCESSIBLE:
                        return(null);

                    case DeletedEntityPolicy.OWNER:
                        if (entity.Id != _currentUserService.UserId)
                        {
                            return(null);
                        }
                        break;

                    case DeletedEntityPolicy.RESTRICTED:
                        entity.UserName     = null;
                        entity.FirstName    = null;
                        entity.LastName     = null;
                        entity.ProfileImage = null;
                        break;

                    case DeletedEntityPolicy.PUBLIC:
                    default:
                        break;
                    }
                }

                return(entity);
            };

            // TODO: not effiecient to use where and convert to queryable
            IQueryable <User> validatedEntities = entities.Select(policySelector).Where(entity => entity != null).AsQueryable();

            return(validatedEntities);
        }
Exemplo n.º 5
0
        public IQueryable <Board> ValidateEntityQuerable(IQueryable <Board> entities, DeletedEntityPolicy policy)
        {
            Func <Board, Board> policySelector = entity =>
            {
                if (entity.Deleted)
                {
                    switch (policy)
                    {
                    case DeletedEntityPolicy.INACCESSIBLE:
                        return(null);

                    case DeletedEntityPolicy.OWNER:
                        if (!entity.Moderators.Any(m => m.UserId == _currentUserService.UserId))
                        {
                            return(null);
                        }
                        break;

                    case DeletedEntityPolicy.RESTRICTED:
                        entity.Creator     = null;
                        entity.Moderators  = new List <Domain.Entities.JoinEntities.BoardUserModerator>();
                        entity.Subscribers = new List <Domain.Entities.JoinEntities.BoardUserSubscriber>();
                        break;

                    case DeletedEntityPolicy.PUBLIC:
                    default:
                        break;
                    }
                }

                return(entity);
            };

            // TODO: not effiecient to use where and convert to queryable
            IQueryable <Board> validatedEntities = entities.Select(policySelector).Where(entity => entity != null).AsQueryable();

            return(validatedEntities);
        }