예제 #1
0
        /// <summary>
        /// Loads documents that are matched by criteria from filter.
        /// </summary>
        /// <param name="userDto">The user dto.</param>
        /// <returns></returns>
        public IEnumerable <DocumentDTO> LoadUserDocuments(DocumentFilterDTO filter)
        {
            Expression <Func <tDocument, bool> > restriction = x => x.IsValid;

            if (filter.LoggedUser.AuthorizationRole == AuthorizationRoleCodes.Operator)
            {
                restriction = ExpressionUtils.AndOperation(restriction, u => u.tUserDocuments.Select(x => x.UserId).Contains(filter.LoggedUser.Id));
            }

            if (!String.IsNullOrEmpty(filter.Title))
            {
                restriction = ExpressionUtils.AndOperation(restriction, u => u.Title.Contains(filter.Title));
            }

            if (!String.IsNullOrEmpty(filter.Keywords))
            {
                string[] keywords = filter.Keywords.Split(' ', ',');
                Expression <Func <tDocument, bool> > wordRestriciton = x => false;              // false || kw1 || kw2

                foreach (string word in keywords)
                {
                    wordRestriciton = ExpressionUtils.OrOperation(wordRestriciton, x => x.tKeywords.Select(k => k.Name).Contains(word));
                }
                restriction = ExpressionUtils.AndOperation(restriction, wordRestriciton);
            }
            if (!String.IsNullOrEmpty(filter.Extension))
            {
                restriction = ExpressionUtils.AndOperation(restriction, u => u.Extension.Contains(filter.Extension));
            }
            if (filter.DateFrom.HasValue)
            {
                DateTime date1 = filter.DateFrom.Value.Date;
                restriction = ExpressionUtils.AndOperation(restriction, u => u.CreatedAt >= date1);
            }
            if (filter.DateTo.HasValue)
            {
                DateTime date2 = filter.DateTo.Value.AddDays(1).Date;
                restriction = ExpressionUtils.AndOperation(restriction, u => u.CreatedAt <= date2);
            }
            if (filter.OnlyActive)
            {
                restriction = ExpressionUtils.AndOperation(restriction, u => !u.IsArchived);
            }
            if (filter.OnlyArchived)
            {
                restriction = ExpressionUtils.AndOperation(restriction, u => u.IsArchived);
            }
            if (!String.IsNullOrEmpty(filter.UserName))
            {
                restriction = ExpressionUtils.AndOperation(restriction, u => u.tUserDocuments.Select(x => x.tUser.UserName).Contains(filter.UserName));
            }

            using (DMSDataBaseEntities context = new DMSDataBaseEntities())
            {
                return(Mapper.Map <IEnumerable <DocumentDTO> >(context.tDocuments.Where(restriction).OrderBy(u => u.CreatedAt)));
            }
        }
예제 #2
0
        /// <summary>
        /// Loads all document for current user.
        /// </summary>
        /// <param name="userDto">The user dto.</param>
        /// <returns></returns>
        public IEnumerable <DocumentDTO> LoadUserDocuments(UserDTO userDto)
        {
            Expression <Func <tDocument, bool> > restriction = x => x.IsValid;

            if (userDto.AuthorizationRole == AuthorizationRoleCodes.Operator)
            {
                restriction = ExpressionUtils.AndOperation(restriction, u => u.tUserDocuments.Select(x => x.UserId).Contains(userDto.Id));
            }
            BeginTransaction();
            var result = Mapper.Map <IEnumerable <DocumentDTO> >(Context.tDocuments.Where(restriction));

            EndTransaction();
            return(result);
        }
예제 #3
0
        /// <summary>
        /// Loads list of users for auto suggest sharing control. Only valid operators will be loaded.
        /// If document is new, the owner of the document will not be loaded, that is current user.
        /// If document is not new all users that already can access document will not be loaded.
        /// </summary>
        /// <param name="documentId">The document Id.</param>
        /// <returns></returns>
        public IEnumerable <UserDTO> LoadUsersForShareAutosuggest(DocumentDTO documentDTo, int loggedUserId)
        {
            Expression <Func <tUser, bool> > restriction = u => u.IsValid && u.AuthorizationRoleId == (int)AuthorizationRoleCodes.Operator;

            if (documentDTo != null)
            {
                restriction = ExpressionUtils.AndOperation(restriction, u => !u.tUserDocuments.Any(x => x.DocumentId == documentDTo.Id && x.UserId == u.Id));
            }
            else
            {
                restriction = ExpressionUtils.AndOperation(restriction, u => u.Id != loggedUserId);
            }

            using (DMSDataBaseEntities context = new DMSDataBaseEntities())
            {
                return(Mapper.Map <IEnumerable <UserDTO> >(context.tUsers.Where(restriction)));
            }
        }
예제 #4
0
        /// <summary>
        /// Returns list of user DTO objects that are valid and match user filter.
        /// </summary>
        /// <param name="filter"></param>
        /// <returns></returns>
        public IEnumerable <UserDTO> LoadFilteredUsers(UserFilterDTO filter)
        {
            Expression <Func <tUser, bool> > restriction = x => x.IsValid;

            if (!String.IsNullOrEmpty(filter.UserName))
            {
                restriction = ExpressionUtils.AndOperation(restriction, x => x.UserName.Contains(filter.UserName));
            }
            if (!String.IsNullOrEmpty(filter.FirstName))
            {
                restriction = ExpressionUtils.AndOperation(restriction, x => x.FirstName.Contains(filter.FirstName));
            }
            if (!String.IsNullOrEmpty(filter.LastName))
            {
                restriction = ExpressionUtils.AndOperation(restriction, x => x.FirstName.Contains(filter.LastName));
            }

            BeginTransaction();
            IEnumerable <UserDTO> result = Mapper.Map <IEnumerable <UserDTO> >(Context.tUsers.Where(restriction));

            EndTransaction();
            return(result);
        }