final class TaskController extends Controller

Контроллер для управления задачами связанными с лайками в социальной сети ВКонтакте.

Traits

AuthorizesRequests
DispatchesJobs
ValidatesRequests

Methods

__construct(LoggingServiceInterface $loggingService, VkClientService $vkClient, TaskRepositoryInterface $taskRepository, AccountRepositoryInterface $accountRepository, AccountController $accountController)

Создает новый экземпляр TaskController.

JsonResponse
getTasksByStatus(Request $request, string|null $status = null, int|null $accountId = null)

Возвращает задачи или задачу по указанному статусу и/или ID аккаунта.

JsonResponse
getTaskInfo(int $taskId)

Получает информацию о задаче по её ID.

JsonResponse
createAndQueueLikeTasksFromNewsfeed(Request $request, bool $isCyclic = false)

Создает задачи на лайки из ленты новостей и добавляет их в очередь.

int
fetchPostsAndCreateLikeTasks(Request $request, int $account_id, int $maxCreatedCount, bool $isCyclic)

Извлекает посты из ленты новостей и создает для них задачи на лайк.

bool
isValidPostForTask(array $post)

Проверяет, подходит ли пост для создания задачи на лайк.

bool
checkExistingTask(int $ownerId, int $postId)

Проверяет, существует ли уже задача для данного поста.

createPendingLikeTask(int $accountId, array $post, bool $isCyclic)

Создает новую задачу на лайк в статусе "pending".

JsonResponse
createLikeTasksForUserWallPosts(Request $request)

Создает задачи на лайки для постов со стен пользователей и добавляет их в очередь.

JsonResponse
processAndQueuePendingLikeTasks(string $token)

Обрабатывает задачи на лайки в статусе "pending" и добавляет их в очередь на выполнение.

JsonResponse
createCyclicTask(Request $request)

Создает циклическую задачу на лайки в социальной сети, используя предоставленные данные.

JsonResponse
countTasksByAccountAndStatus(string|null $status = null, int|null $accountId = null)

Подсчитывает количество задач по указанному статусу и/или ID аккаунта.

array
generateUniqueRandomMinutes(int $count)

Генерирует массив уникальных случайных минут для выполнения задач в течение одного часа.

JsonResponse
deleteAllTasks(string|null $status = null, int|null $accountId = null)

Удаляет все задачи на основе указанного статуса и/или ID аккаунта.

JsonResponse
deleteTaskById(int $id)

Удаляет задачу по её ID.

JsonResponse
deleteLike(int $taskId)

Удаляет лайк с поста, связанного с задачей по её ID.

Details

at line 34
__construct(LoggingServiceInterface $loggingService, VkClientService $vkClient, TaskRepositoryInterface $taskRepository, AccountRepositoryInterface $accountRepository, AccountController $accountController)

Создает новый экземпляр TaskController.

Parameters

LoggingServiceInterface $loggingService

Сервис логирования.

VkClientService $vkClient

Сервис клиента ВКонтакте.

TaskRepositoryInterface $taskRepository

Репозиторий задач.

AccountRepositoryInterface $accountRepository

Репозиторий аккаунтов.

AccountController $accountController

Контроллер аккаунтов.

at line 49
JsonResponse getTasksByStatus(Request $request, string|null $status = null, int|null $accountId = null)

Возвращает задачи или задачу по указанному статусу и/или ID аккаунта.

Parameters

Request $request
string|null $status

Статус задачи для фильтрации.

int|null $accountId

ID аккаунта для фильтрации.

Return Value

JsonResponse

Ответ с данными о задачах.

at line 75
JsonResponse getTaskInfo(int $taskId)

Получает информацию о задаче по её ID.

Parameters

int $taskId

ID задачи.

Return Value

JsonResponse

Ответ с данными о задаче.

Exceptions

VkException

at line 118
JsonResponse createAndQueueLikeTasksFromNewsfeed(Request $request, bool $isCyclic = false)

Создает задачи на лайки из ленты новостей и добавляет их в очередь.

Дополнительно учитывает, является ли задача циклической, для корректной обработки внутри методов.

Parameters

Request $request HTTP-запрос.
bool $isCyclic

Флаг, указывающий, является ли задача циклической.

Return Value

JsonResponse

Ответ с результатом добавления задач в очередь.

Exceptions

VkException

at line 151
protected int fetchPostsAndCreateLikeTasks(Request $request, int $account_id, int $maxCreatedCount, bool $isCyclic)

Извлекает посты из ленты новостей и создает для них задачи на лайк.

Этот метод выполняет несколько ключевых функций:

  1. Получает посты из ленты новостей пользователя.
  2. Проверяет каждый пост на соответствие критериям для создания задачи.
  3. Если пост подходит, проверяет, не была ли для этого поста уже создана задача.
  4. Если задача не была создана, создает новую задачу на лайк в статусе "pending".
  5. Процесс продолжается до тех пор, пока не будет достигнуто максимальное количество созданных задач или пока не закончатся посты в ленте.

Parameters

Request $request

HTTP-запрос с параметрами для извлечения ленты новостей.

int $account_id

ID аккаунта пользователя, для которого получаем ленту новостей.

int $maxCreatedCount

Максимальное количество задач, которые необходимо создать.

bool $isCyclic

Флаг, указывающий, является ли задача циклической.

Return Value

int

Количество созданных задач.

Exceptions

VkException

at line 215
protected bool isValidPostForTask(array $post)

Проверяет, подходит ли пост для создания задачи на лайк.

Parameters

array $post

Массив данных поста.

Return Value

bool

Возвращает true, если пост удовлетворяет всем условиям.

at line 241
protected bool checkExistingTask(int $ownerId, int $postId)

Проверяет, существует ли уже задача для данного поста.

Parameters

int $ownerId

ID владельца поста.

int $postId

ID поста.

Return Value

bool

Возвращает true, если задача уже существует.

at line 260
protected Task createPendingLikeTask(int $accountId, array $post, bool $isCyclic)

Создает новую задачу на лайк в статусе "pending".

Метод получает информацию о пользователе через VK API, создает запись в базе данных с информацией о задаче и возвращает созданную задачу.

Parameters

int $accountId

ID аккаунта, от имени которого будет выполняться задача.

array $post

Данные поста, для которого создается задача на лайк.

bool $isCyclic

Флаг, указывающий, является ли задача циклической.

Return Value

Task

Созданная задача.

Exceptions

VkException

at line 294
JsonResponse createLikeTasksForUserWallPosts(Request $request)

Создает задачи на лайки для постов со стен пользователей и добавляет их в очередь.

Метод принимает список доменов пользователей, получает первый пост со стены каждого пользователя, создает для него задачу на лайк и добавляет все созданные задачи в очередь на выполнение.

Parameters

Request $request

HTTP-запрос с параметрами.

Return Value

JsonResponse

Ответ с информацией о созданных задачах.

Exceptions

VkException

at line 344
JsonResponse processAndQueuePendingLikeTasks(string $token)

Обрабатывает задачи на лайки в статусе "pending" и добавляет их в очередь на выполнение.

Изменяет статус задач с "pending" на "queued" и создает задания в очереди Laravel.

Parameters

string $token

Токен доступа для API ВКонтакте.

Return Value

JsonResponse

Ответ с информацией о задачах, добавленных в очередь.

at line 414
JsonResponse createCyclicTask(Request $request)

Создает циклическую задачу на лайки в социальной сети, используя предоставленные данные.

Этот метод обрабатывает HTTP-запрос, содержащий необходимые данные для создания циклической задачи, включая идентификатор аккаунта, количество задач в час, общее количество задач и статус задачи. Он также генерирует уникальное расписание (массив уникальных случайных минут в течение часа), в которое будут выполняться задачи, и сохраняет это расписание в базе данных.

Parameters

Request $request

HTTP-запрос, содержащий следующие параметры:

  • account_id: Идентификатор аккаунта, для которого создается задача.
  • tasks_per_hour: Количество задач на лайки, которое должно быть выполнено в час.
  • tasks_count: Общее количество задач на лайки, которое нужно выполнить.
  • status: Статус задачи (например, 'active').

Return Value

JsonResponse

Ответ, содержащий статус выполнения операции, данные созданной циклической задачи и сообщение об успешном создании задачи.

at line 446
JsonResponse countTasksByAccountAndStatus(string|null $status = null, int|null $accountId = null)

Подсчитывает количество задач по указанному статусу и/или ID аккаунта.

Parameters

string|null $status

Статус задачи для фильтрации.

int|null $accountId

ID аккаунта для фильтрации.

Return Value

JsonResponse

Ответ с количеством задач.

at line 470
array generateUniqueRandomMinutes(int $count)

Генерирует массив уникальных случайных минут для выполнения задач в течение одного часа.

Этот метод используется для создания расписания выполнения задач на лайки в социальной сети, гарантируя, что каждая задача будет запланирована на уникальную минуту в пределах одного часа. Таким образом обеспечивается равномерное распределение задач во времени.

Parameters

int $count

Количество уникальных минут (задач), которое необходимо сгенерировать. Это значение должно быть меньше или равно 60, так как в часе 60 минут.

Return Value

array

Массив, содержащий уникальные случайные минуты в диапазоне от 1 до 60. Каждое значение в массиве указывает минуту в часе, когда должна быть выполнена задача.

at line 494
JsonResponse deleteAllTasks(string|null $status = null, int|null $accountId = null)

Удаляет все задачи на основе указанного статуса и/или ID аккаунта.

Parameters

string|null $status

Статус задач для удаления.

int|null $accountId

ID аккаунта для удаления задач.

Return Value

JsonResponse

Ответ об успешном удалении задач.

at line 510
JsonResponse deleteTaskById(int $id)

Удаляет задачу по её ID.

Parameters

int $id

ID задачи для удаления.

Return Value

JsonResponse

Ответ об успешном удалении задачи.

at line 541
JsonResponse deleteLike(int $taskId)

Удаляет лайк с поста, связанного с задачей по её ID.

Parameters

int $taskId

ID задачи, для которой нужно удалить лайк.

Return Value

JsonResponse

Ответ об успешном удалении лайка или ошибке.

Exceptions

VkException