Delete also stats notification scheduled tasks when deleting a newsletter

[MAILPOET-3015]
This commit is contained in:
Rostislav Wolny
2020-06-25 15:30:01 +02:00
committed by Veljko V
parent 05eee7bcfa
commit aaf38a6f96
2 changed files with 31 additions and 6 deletions

View File

@@ -253,15 +253,26 @@ class NewslettersRepository extends Repository {
WHERE nl.`newsletter_id` IN (:ids)
", ['ids' => $ids], ['ids' => Connection::PARAM_INT_ARRAY]);
// Delete stats notifications
// Delete stats notifications tasks
$scheduledTasksTable = $entityManager->getClassMetadata(ScheduledTaskEntity::class)->getTableName();
$statsNotificationsTable = $entityManager->getClassMetadata(StatsNotificationEntity::class)->getTableName();
$taskIds = $entityManager->getConnection()->executeQuery("
SELECT task_id FROM $statsNotificationsTable sn
WHERE sn.`newsletter_id` IN (:ids)
", ['ids' => $ids], ['ids' => Connection::PARAM_INT_ARRAY])->fetchAll();
$taskIds = array_column($taskIds, 'task_id');
$entityManager->getConnection()->executeUpdate("
DELETE st FROM $scheduledTasksTable st
WHERE st.`id` IN (:ids)
", ['ids' => $taskIds], ['ids' => Connection::PARAM_INT_ARRAY]);
// Delete stats notifications
$entityManager->getConnection()->executeUpdate("
DELETE sn FROM $statsNotificationsTable sn
WHERE sn.`newsletter_id` IN (:ids)
", ['ids' => $ids], ['ids' => Connection::PARAM_INT_ARRAY]);
// Delete scheduled tasks and scheduled task subscribers
$scheduledTasksTable = $entityManager->getClassMetadata(ScheduledTaskEntity::class)->getTableName();
$sendingQueueTable = $entityManager->getClassMetadata(SendingQueueEntity::class)->getTableName();
$scheduledTaskSubscribersTable = $entityManager->getClassMetadata(ScheduledTaskSubscriberEntity::class)->getTableName();