/// <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))); } }
/// <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); }
/// <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))); } }
/// <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); }