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("Не удалось добавить порцию знаний! Попробуйте позже.")); }