Use Populator to add group and event to available options
[MAILPOET-4934]
This commit is contained in:
@ -50,6 +50,10 @@ export function EditNewsletter(): JSX.Element {
|
||||
|
||||
const createEmail = useCallback(async () => {
|
||||
setRedirectToTemplateSelection(true);
|
||||
const options = {
|
||||
automationId,
|
||||
automationStepId,
|
||||
};
|
||||
const response = await MailPoet.Ajax.post({
|
||||
api_version: window.mailpoet_api_version,
|
||||
endpoint: 'newsletters',
|
||||
@ -57,10 +61,7 @@ export function EditNewsletter(): JSX.Element {
|
||||
data: {
|
||||
type: 'automation',
|
||||
subject: '',
|
||||
options: {
|
||||
automationId,
|
||||
automationStepId,
|
||||
},
|
||||
options,
|
||||
},
|
||||
});
|
||||
|
||||
|
@ -193,46 +193,49 @@ class SendEmailAction implements Action {
|
||||
$email->setReplyToName($args['reply_to_name'] ?? '');
|
||||
$email->setReplyToAddress($args['reply_to_address'] ?? '');
|
||||
$email->setGaCampaign($args['ga_campaign'] ?? '');
|
||||
if ($this->automationHasWooCommerceTrigger($automation)) {
|
||||
$this->storeNewsletterOption($email, NewsletterOptionFieldEntity::NAME_GROUP, 'woocommerce');
|
||||
}
|
||||
if ($this->automationHasAbandonedCartTrigger($automation)) {
|
||||
$this->storeNewsletterOption($email, NewsletterOptionFieldEntity::NAME_EVENT, 'woocommerce_abandoned_shopping_cart');
|
||||
}
|
||||
$this->storeNewsletterOption(
|
||||
$email,
|
||||
NewsletterOptionFieldEntity::NAME_GROUP,
|
||||
$this->automationHasWooCommerceTrigger($automation) ? 'woocommerce' : null
|
||||
);
|
||||
$this->storeNewsletterOption(
|
||||
$email,
|
||||
NewsletterOptionFieldEntity::NAME_EVENT,
|
||||
$this->automationHasAbandonedCartTrigger($automation) ? 'woocommerce_abandoned_shopping_cart' : null
|
||||
);
|
||||
|
||||
$this->newslettersRepository->persist($email);
|
||||
$this->newslettersRepository->flush();
|
||||
}
|
||||
|
||||
private function storeNewsletterOption(NewsletterEntity $newsletter, string $optionName, string $optionValue): void {
|
||||
private function storeNewsletterOption(NewsletterEntity $newsletter, string $optionName, string $optionValue = null): void {
|
||||
$options = $newsletter->getOptions()->toArray();
|
||||
foreach ($options as $option) {
|
||||
foreach ($options as $key => $option) {
|
||||
if ($option->getName() === $optionName) {
|
||||
if ($optionValue) {
|
||||
$option->setValue($optionValue);
|
||||
return;
|
||||
}
|
||||
$newsletter->getOptions()->remove($key);
|
||||
$this->newsletterOptionsRepository->remove($option);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
$optionField = $this->newsletterOptionFieldsRepository->findOneBy([
|
||||
if (!$optionValue) {
|
||||
return;
|
||||
}
|
||||
|
||||
$field = $this->newsletterOptionFieldsRepository->findOneBy([
|
||||
'name' => $optionName,
|
||||
'newsletterType' => $newsletter->getType(),
|
||||
]);
|
||||
|
||||
if (!$optionField) {
|
||||
$optionField = new NewsletterOptionFieldEntity();
|
||||
$optionField->setName($optionName);
|
||||
$optionField->setNewsletterType($newsletter->getType());
|
||||
$this->newsletterOptionFieldsRepository->persist($optionField);
|
||||
}
|
||||
$option = $this->newsletterOptionsRepository->findOneBy([
|
||||
'newsletter' => $newsletter,
|
||||
'optionField' => $optionField,
|
||||
]);
|
||||
if (!$option instanceof NewsletterOptionEntity) {
|
||||
$option = new NewsletterOptionEntity($newsletter, $optionField);
|
||||
$newsletter->getOptions()->add($option);
|
||||
$this->newsletterOptionsRepository->persist($option);
|
||||
if (!$field) {
|
||||
return;
|
||||
}
|
||||
$option = new NewsletterOptionEntity($newsletter, $field);
|
||||
$option->setValue($optionValue);
|
||||
$this->newsletterOptionsRepository->persist($option);
|
||||
$newsletter->getOptions()->add($option);
|
||||
}
|
||||
|
||||
|
@ -430,10 +430,26 @@ class Populator {
|
||||
'name' => 'group',
|
||||
'newsletter_type' => NewsletterEntity::TYPE_AUTOMATIC,
|
||||
],
|
||||
[
|
||||
'name' => 'group',
|
||||
'newsletter_type' => NewsletterEntity::TYPE_AUTOMATION,
|
||||
],
|
||||
[
|
||||
'name' => 'group',
|
||||
'newsletter_type' => NewsletterEntity::TYPE_AUTOMATION_TRANSACTIONAL,
|
||||
],
|
||||
[
|
||||
'name' => 'event',
|
||||
'newsletter_type' => NewsletterEntity::TYPE_AUTOMATIC,
|
||||
],
|
||||
[
|
||||
'name' => 'event',
|
||||
'newsletter_type' => NewsletterEntity::TYPE_AUTOMATION,
|
||||
],
|
||||
[
|
||||
'name' => 'event',
|
||||
'newsletter_type' => NewsletterEntity::TYPE_AUTOMATION_TRANSACTIONAL,
|
||||
],
|
||||
[
|
||||
'name' => 'sendTo',
|
||||
'newsletter_type' => NewsletterEntity::TYPE_AUTOMATIC,
|
||||
|
Reference in New Issue
Block a user