Beispiel #1
0
        /// <summary>
        /// Получает данные пользователя
        /// </summary>
        /// <param name="sourceLanguageId">идентификатор языка с которого переводят</param>
        /// <param name="translationLanguageId">идентификатор языка на который переводят</param>
        /// <param name="status">статус данных, которые нужно получить</param>
        /// <param name="prevId">максимальный идентификатор предыдущей записи</param>
        /// <param name="count">кол-во записей для получения</param>
        /// <returns></returns>
        public List <UserKnowledgeItem> GetData(long sourceLanguageId,
                                                long translationLanguageId,
                                                KnowledgeStatus status,
                                                long prevId,
                                                int count)
        {
            List <UserKnowledgeItem> result = Adapter.ReadByContext(c => {
                DateTime minDate = GetDefaultDeletedDate();
                IQueryable <UserKnowledge> usersKnowledgesQuery =
                    c.UserKnowledge.Where(
                        e =>
                        e.UserId == _userId && e.LanguageId == _languageId && e.Id < prevId && e.DeletedDate == minDate);
                if (status != KnowledgeStatus.All)
                {
                    usersKnowledgesQuery = usersKnowledgesQuery.Where(e => e.Status == (int)status);
                }
                usersKnowledgesQuery = usersKnowledgesQuery.OrderByDescending(e => e.CreationDate).Take(count);

                List <UserKnowledge> userKnowledges  = usersKnowledgesQuery.ToList();
                List <UserKnowledgeItem> innerResult = ConvertEntitiesToItems(sourceLanguageId, translationLanguageId,
                                                                              userKnowledges);
                return(innerResult);
            }, new List <UserKnowledgeItem>(0));

            return(result);
        }
Beispiel #2
0
 /// <summary>
 /// Determines whether this instance [can edit knowledge] the specified permission.
 /// </summary>
 /// <param name="permission">The permission.</param>
 /// <param name="status">The status.</param>
 /// <param name="creatorId">The creator ID.</param>
 /// <returns>
 ///     <c>true</c> if this instance [can edit knowledge] the specified permission; otherwise, <c>false</c>.
 /// </returns>
 public static bool CanEditKnowledge(this Permission permission, KnowledgeStatus status, int creatorId)
 {
     if (status == KnowledgeStatus.Deleted)
     {
         return(permission.HasPermission(Permission.Admin));
     }
     return
         ((permission >= Permission.Moderate) ||
          (permission == Permission.Publish && creatorId == KbContext.CurrentUserId));
 }
Beispiel #3
0
        /// <summary>
        /// Determines whether this instance can view the specified permission.
        /// </summary>
        /// <param name="permission">The permission.</param>
        /// <param name="status">The status.</param>
        /// <returns>
        ///     <c>true</c> if this instance can view the specified permission; otherwise, <c>false</c>.
        /// </returns>
        public static bool CanViewKnowledge(this Permission permission, KnowledgeStatus status)
        {
            switch (status)
            {
            case KnowledgeStatus.New:
                return(permission.HasPermission(Permission.Publish));

            case KnowledgeStatus.Active:
                return(permission.HasPermission(Permission.View));

            case KnowledgeStatus.Hide:
                return(permission.HasPermission(Permission.Moderate));

            case KnowledgeStatus.Deleted:
                return(permission.HasPermission(Permission.Admin));

            default:
                throw new ArgumentOutOfRangeException();
            }
        }