Skip to content

Commit 54a34a2

Browse files
committed
Putting mailer into consistent state with external changes
remp/remp#187
1 parent cc9664b commit 54a34a2

17 files changed

+212
-21
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
.idea
22
.vscode
33
.env
4+
45
docker-compose.override.yml
56
.yarn-error.log
67
.DS_Store

Docker/php/remp.sh

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,30 @@ cd ${APP_NAME}
55
if [ ! -f ".env" ]
66
then
77
cp .env.example .env
8+
89
composer install
10+
911
yarn install --no-bin-links
1012
npm rebuild node-sass optipng-bin --no-bin-links
1113
chmod -R u+x node_modules
1214
yarn run dev
15+
1316
if [ -f "artisan" ]
1417
then
1518
php artisan migrate
1619
php artisan db:seed
1720
php artisan key:generate
21+
php artisan ide-helper:generate
22+
php artisan ide-helper:meta
1823
php artisan ide-helper:models
24+
25+
php artisan list | grep "jwt:secret" > /dev/null
26+
if [ $? -eq "0" ]; then
27+
php artisan jwt:secret
28+
fi
1929
elif [ -f "bin/command.php" ]
2030
then
31+
cp app/config/config.local.neon.example app/config/config.local.neon
2132
php bin/command.php migrate:migrate
2233
php bin/command.php seed:db
2334
php bin/command.php seed:demo

Mailer/app/commands/DatabaseSeedCommand.php

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace Remp\MailerModule\Commands;
44

55
use Remp\MailerModule\Repository\ConfigsRepository;
6+
use Remp\MailerModule\Repository\ListCategoriesRepository;
67
use Symfony\Component\Console\Command\Command;
78
use Symfony\Component\Console\Input\InputInterface;
89
use Symfony\Component\Console\Output\OutputInterface;
@@ -11,11 +12,15 @@ class DatabaseSeedCommand extends Command
1112
{
1213
private $configsRepository;
1314

15+
private $listCategoriesRepository;
16+
1417
public function __construct(
15-
ConfigsRepository $configsRepository
18+
ConfigsRepository $configsRepository,
19+
ListCategoriesRepository $listCategoriesRepository
1620
) {
1721
parent::__construct();
1822
$this->configsRepository = $configsRepository;
23+
$this->listCategoriesRepository = $listCategoriesRepository;
1924
}
2025

2126
protected function configure()
@@ -54,6 +59,21 @@ protected function execute(InputInterface $input, OutputInterface $output)
5459
$output->writeln(" * Config <info>{$configValue['0']}</info> exists");
5560
}
5661
}
62+
63+
$listCategories = [
64+
['title' => 'Newsletters', 'sorting' => 100],
65+
['title' => 'System', 'sorting' => 999],
66+
];
67+
$output->writeln('Newsletter list categories:');
68+
foreach ($listCategories as $category) {
69+
if ($this->listCategoriesRepository->getTable()->where(['title' => $category['title']])->count('*') > 0) {
70+
$output->writeln(" * Newsletter list <info>{$category['title']}</info> exists");
71+
continue;
72+
}
73+
$this->listCategoriesRepository->add($category['title'], $category['sorting']);
74+
$output->writeln(" * Newsletter list <info>{$category['title']}</info> created");
75+
}
76+
5777
$output->writeln('<info>OK!</info>');
5878
}
5979
}

Mailer/app/commands/DemoSeedCommand.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,10 @@ protected function execute(InputInterface $input, OutputInterface $output)
5454
// list category
5555
$output->write('List categories: ');
5656
/** @var ActiveRow $category */
57-
$category = $this->listCategoriesRepository->findBy('title', 'DEMO newsletters');
57+
$category = $this->listCategoriesRepository->findBy('title', 'Newsletters');
5858
if (!$category) {
5959
$category = $this->listCategoriesRepository->insert([
60-
'title' => 'DEMO newsletters',
60+
'title' => 'Newsletters',
6161
'sorting' => 100,
6262
'created_at' => new \DateTime(),
6363
]);

Mailer/app/commands/EmailChangedWorkerCommand.php

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,9 @@
22

33
namespace Remp\MailerModule\Commands;
44

5-
use Nette\Database\Table\ActiveRow;
65
use Nette\Utils\Json;
76
use Remp\MailerModule\Broker\ConsumerFactory;
8-
use Remp\MailerModule\Repository\ListsRepository;
97
use Remp\MailerModule\Repository\UserSubscriptionsRepository;
10-
use Remp\MailerModule\User\IUser;
118
use Symfony\Component\Console\Command\Command;
129
use Symfony\Component\Console\Input\InputInterface;
1310
use Symfony\Component\Console\Output\OutputInterface;
@@ -20,17 +17,13 @@ class EmailChangedWorkerCommand extends Command
2017

2118
private $userSubscriptionsRepository;
2219

23-
private $userProvider;
24-
2520
public function __construct(
2621
ConsumerFactory $consumerFactory,
27-
UserSubscriptionsRepository $userSubscriptionsRepository,
28-
IUser $userProvider
22+
UserSubscriptionsRepository $userSubscriptionsRepository
2923
) {
3024
parent::__construct();
3125
$this->consumerFactory = $consumerFactory;
3226
$this->userSubscriptionsRepository = $userSubscriptionsRepository;
33-
$this->userProvider = $userProvider;
3427
}
3528

3629
/**
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
services:
2+
# This is a reference IUser implementation.
3+
# You should make your own implementation against your CRM system and register it here.
4+
- Remp\MailerModule\User\Dummy
5+
6+
# To be able to send an email, you need to provide at least one ISegment implementation
7+
# You should make your own implementation against your CRM system and register it here.
8+
segmentAgreggator:
9+
setup:
10+
- register(Remp\MailerModule\Segment\Dummy())
11+
12+
# local_configs override DBs configs records.
13+
local_configs:
14+
15+
# Configuring usage of mailhog for local development
16+
remp_mailermodule_mailer_smtpmailer_host: mailhog
17+
remp_mailermodule_mailer_smtpmailer_port: 1025
18+
remp_mailermodule_mailer_smtpmailer_username: ''
19+
remp_mailermodule_mailer_smtpmailer_password: ''
20+
remp_mailermodule_mailer_smtpmailer_secure: ''

Mailer/app/forms/ListFormFactory.php

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,17 @@ public function create()
3131
$form->addProtection();
3232

3333
$categoryPairs = $this->listCategoriesRepository->all()->fetchPairs('id', 'title');
34-
$form->addSelect('mail_type_category_id', 'Category', $categoryPairs);
34+
$form
35+
->addSelect('mail_type_category_id', 'Category', $categoryPairs)
36+
->setRequired('Category is required');
3537

3638
$form->addSelect('priority', 'Priority', [10 => 'High', 100 => 'Normal', 1000 => 'Low']);
3739

3840
$form->addText('code', 'Code')
39-
->setRequired('Required');
41+
->setRequired('Code is required');
4042

4143
$form->addText('title', 'Title')
42-
->setRequired('Required');
44+
->setRequired('Title is required');
4345

4446
$form->addTextArea('description', 'Description')
4547
->setAttribute('rows', 3);

Mailer/app/forms/TemplateFormFactory.php

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,29 +51,30 @@ public function create($id)
5151
$form->addHidden('id', $id);
5252

5353
$form->addText('name', 'Name')
54-
->setRequired('Required');
54+
->setRequired('Name is required');
5555

5656
if (isset($id) && $count > 0) {
5757
$form->addText('code', 'Code')
58-
->setRequired('Required')
58+
->setRequired('Code is required')
5959
->setDisabled();
6060
} else {
6161
$form->addText('code', 'Code')
62-
->setRequired('Required');
62+
->setRequired('Code is required');
6363
}
6464

6565
$form->addText('description', 'Description');
6666

6767
$form->addSelect('mail_layout_id', 'Layout', $this->layoutsRepository->all()->fetchPairs('id', 'name'));
6868

69-
$form->addSelect('mail_type_id', 'Newsletter list', $this->listsRepository->all()->fetchPairs('id', 'title'));
69+
$form->addSelect('mail_type_id', 'Newsletter list', $this->listsRepository->all()->fetchPairs('id', 'title'))
70+
->setRequired('Newsletter list is required');
7071

7172
$form->addText('from', 'From')
7273
->addRule(FormRules::ADVANCED_EMAIL, 'Enter correct email')
73-
->setRequired('Required');
74+
->setRequired('From field is required');
7475

7576
$form->addText('subject', 'Subject')
76-
->setRequired('Required');
77+
->setRequired('Subject is required');
7778

7879
$form->addTextArea('mail_body_text', 'Text version')
7980
->setAttribute('rows', 3);

Mailer/app/models/Repositories/ListCategoriesRepository.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace Remp\MailerModule\Repository;
44

5+
use Nette\Utils\DateTime;
56
use Remp\MailerModule\Repository;
67

78
class ListCategoriesRepository extends Repository
@@ -12,4 +13,13 @@ public function all()
1213
{
1314
return $this->getTable()->order('sorting ASC');
1415
}
16+
17+
public function add($title, $sorting)
18+
{
19+
return $this->getTable()->insert([
20+
'title' => $title,
21+
'sorting' => $sorting,
22+
'created_at' => new DateTime(),
23+
]);
24+
}
1525
}

Mailer/app/models/Segments/Dummy.php

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<?php
2+
namespace Remp\MailerModule\Segment;
3+
4+
class Dummy implements ISegment
5+
{
6+
const PROVIDER_ALIAS = 'dummy-segment';
7+
8+
public function provider()
9+
{
10+
return [static::PROVIDER_ALIAS => $this];
11+
}
12+
13+
public function list()
14+
{
15+
return [
16+
[
17+
'name' => 'Dummy segment',
18+
'provider' => static::PROVIDER_ALIAS,
19+
'code' => 'dummy-segment',
20+
'group' => 'dummy',
21+
],
22+
];
23+
}
24+
25+
public function users($segment)
26+
{
27+
return [1,2];
28+
}
29+
}

0 commit comments

Comments
 (0)