Prevent deleting lists with emails that are being sent
[MAILPOET-3417]
This commit is contained in:
@ -218,7 +218,8 @@ const itemActions = [
|
||||
display: function display(segmt) {
|
||||
return !isWooCommerceCustomersSegment(segmt)
|
||||
&& segmt.automated_emails_subjects.length === 0
|
||||
&& segmt.scheduled_emails_subjects.length === 0;
|
||||
&& segmt.scheduled_emails_subjects.length === 0
|
||||
&& segmt.sending_emails_subjects.length === 0;
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -229,6 +230,7 @@ const itemActions = [
|
||||
const subjects = [
|
||||
...segment.automated_emails_subjects,
|
||||
...segment.scheduled_emails_subjects,
|
||||
...segment.sending_emails_subjects,
|
||||
];
|
||||
MailPoet.Notice.error(
|
||||
MailPoet.I18n.t('trashDisallowed').replace(
|
||||
@ -243,6 +245,7 @@ const itemActions = [
|
||||
&& (
|
||||
segment.automated_emails_subjects.length > 0
|
||||
|| segment.scheduled_emails_subjects.length > 0
|
||||
|| segment.sending_emails_subjects.length > 0
|
||||
);
|
||||
},
|
||||
},
|
||||
@ -254,6 +257,7 @@ const itemActions = [
|
||||
const subjects = [
|
||||
...segment.automated_emails_subjects,
|
||||
...segment.scheduled_emails_subjects,
|
||||
...segment.sending_emails_subjects,
|
||||
];
|
||||
MailPoet.Notice.error(
|
||||
MailPoet.I18n.t('trashDisallowed').replace(
|
||||
@ -268,6 +272,7 @@ const itemActions = [
|
||||
&& (
|
||||
segment.automated_emails_subjects.length > 0
|
||||
|| segment.scheduled_emails_subjects.length > 0
|
||||
|| segment.sending_emails_subjects.length > 0
|
||||
);
|
||||
},
|
||||
},
|
||||
|
@ -48,17 +48,19 @@ class SegmentsResponseBuilder {
|
||||
}, $segments);
|
||||
$scheduledNewsletterSubjectsMap = $this->newsletterSegmentRepository->getScheduledNewsletterSubjectsBySegmentIds($segmendIds);
|
||||
$automatedNewsletterSubjectsMap = $this->newsletterSegmentRepository->getAutomatedEmailSubjectsBySegmentIds($segmendIds);
|
||||
$sendingNewsletterSubjectsMap = $this->newsletterSegmentRepository->getSendingEmailSubjectsBySegmentIds($segmendIds);
|
||||
foreach ($segments as $segment) {
|
||||
$data[] = $this->buildListingItem($segment, $scheduledNewsletterSubjectsMap, $automatedNewsletterSubjectsMap);
|
||||
$data[] = $this->buildListingItem($segment, $scheduledNewsletterSubjectsMap, $automatedNewsletterSubjectsMap, $sendingNewsletterSubjectsMap);
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
|
||||
private function buildListingItem(SegmentEntity $segment, array $scheduledNewsletterSubjectsMap, array $automatedNewsletterSubjectsMap): array {
|
||||
private function buildListingItem(SegmentEntity $segment, array $scheduledNewsletterSubjectsMap, array $automatedNewsletterSubjectsMap, array $sendingNewsletterSubjectsMap): array {
|
||||
$data = $this->build($segment);
|
||||
|
||||
$data['automated_emails_subjects'] = $automatedNewsletterSubjectsMap[$segment->getId()] ?? [];
|
||||
$data['scheduled_emails_subjects'] = $scheduledNewsletterSubjectsMap[$segment->getId()] ?? [];
|
||||
$data['sending_emails_subjects'] = $sendingNewsletterSubjectsMap[$segment->getId()] ?? [];
|
||||
$data['subscribers_count'] = $this->segmentSubscriberRepository->getSubscribersStatisticsCount($segment);
|
||||
$data['subscribers_url'] = $this->wp->adminUrl(
|
||||
'admin.php?page=mailpoet-subscribers#/filter[segment=' . $segment->getId() . ']'
|
||||
|
@ -53,4 +53,23 @@ class NewsletterSegmentRepository extends Repository {
|
||||
}
|
||||
return $nameMap;
|
||||
}
|
||||
|
||||
public function getSendingEmailSubjectsBySegmentIds(array $segmentIds): array {
|
||||
$results = $this->doctrineRepository->createQueryBuilder('ns')
|
||||
->select('IDENTITY(ns.segment) AS segment_id, n.subject')
|
||||
->join('ns.newsletter', 'n')
|
||||
->join('n.queues', 'q')
|
||||
->join('q.task', 't')
|
||||
->where('t.status IS NULL')
|
||||
->andWhere('ns.segment IN (:segmentIds)')
|
||||
->setParameter('segmentIds', $segmentIds)
|
||||
->getQuery()
|
||||
->getResult();
|
||||
|
||||
$nameMap = [];
|
||||
foreach ($results as $result) {
|
||||
$nameMap[(string)$result['segment_id']][] = $result['subject'];
|
||||
}
|
||||
return $nameMap;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user