Esempio n. 1
0
        public JsonResult AddMany(long userId, List <UserKnowledgeItem> knowledgeItems)
        {
            IUserKnowledgeQuery userKnowledgeQuery = CreateUserKnowledgeQuery(userId);

            if (EnumerableValidator.IsNullOrEmpty(knowledgeItems) || knowledgeItems.Any(userKnowledgeQuery.IsInvalid))
            {
                LoggerWrapper.LogTo(LoggerName.Errors).ErrorFormat(
                    "KnowledgeController.AddMany пользователь с идентификатором {0}, передал некорректные данные",
                    userId);
                return(JsonResultHelper.Error(INVALID_DATA));
            }
            List <KnowledgeAddStatus> statuses      = userKnowledgeQuery.Add(knowledgeItems, MAX_COUNT_ITEMS_PER_DAY);
            KnowledgeAddStatus        summaryStatus = EnumerableValidator.IsCountEquals(statuses, knowledgeItems)
                                                   ? GetSummaryStatus(statuses)
                                                   : KnowledgeAddStatus.Error;

            if (summaryStatus == KnowledgeAddStatus.Ok)
            {
                return(JsonResultHelper.Success(true));
            }

            if (summaryStatus == KnowledgeAddStatus.ReachMaxLimit)
            {
                LoggerWrapper.LogTo(LoggerName.Errors).ErrorFormat(
                    "KnowledgeController.AddMany пользователь с идентификатором {0}, достиг лимит данных за сегодня",
                    userId);
                return(JsonResultHelper.Error(
                           string.Format(
                               "Сегодня вы уже добавили максимальное количество данных на обучение. В день вы можете добавлять не более {0} порций знаний. Завтра Вы вновь сможете добавлять новые элементы, а пока, рекомендуем изучить сегодняшний материал.",
                               MAX_COUNT_ITEMS_PER_DAY)));
            }

            if (summaryStatus == KnowledgeAddStatus.AlreadyExists)
            {
                LoggerWrapper.LogTo(LoggerName.Errors).ErrorFormat(
                    "KnowledgeController.AddMany пользователь с идентификатором {0}, уже добавлял данные",
                    userId);
                return(JsonResultHelper.Error("Ранее вы уже добавляли эти данные на обучение."));
            }

            LoggerWrapper.LogTo(LoggerName.Errors).ErrorFormat(
                "KnowledgeController.AddMany. Для пользователя с идентификатором {0} не удалось добавить данные, какая-то ошибка!",
                userId);
            return
                (JsonResultHelper.Error("Не удалось добавить порцию знаний! Попробуйте позже."));
        }