Skip to content

Commit 4c3da90

Browse files
committed
ISSUE-345: subscriber import update
1 parent 05b0f8e commit 4c3da90

9 files changed

+32
-32
lines changed

config/services/managers.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,19 @@ services:
44
autoconfigure: true
55
public: false
66

7-
PhpList\Core\Domain\Subscription\Service\SubscriberManager:
7+
PhpList\Core\Domain\Subscription\Service\Manager\SubscriberManager:
88
autowire: true
99
autoconfigure: true
1010

1111
PhpList\Core\Domain\Identity\Service\SessionManager:
1212
autowire: true
1313
autoconfigure: true
1414

15-
PhpList\Core\Domain\Subscription\Service\SubscriberListManager:
15+
PhpList\Core\Domain\Subscription\Service\Manager\SubscriberListManager:
1616
autowire: true
1717
autoconfigure: true
1818

19-
PhpList\Core\Domain\Subscription\Service\SubscriptionManager:
19+
PhpList\Core\Domain\Subscription\Service\Manager\SubscriptionManager:
2020
autowire: true
2121
autoconfigure: true
2222

@@ -32,10 +32,10 @@ services:
3232
autowire: true
3333
autoconfigure: true
3434

35-
PhpList\Core\Domain\Udentity\Service\AdministratorManager:
35+
PhpList\Core\Domain\Identity\Service\AdministratorManager:
3636
autowire: true
3737
autoconfigure: true
3838

39-
PhpList\Core\Domain\Subscription\Service\SubscriberCsvExportManager:
39+
PhpList\Core\Domain\Subscription\Service\SubscriberCsvExporter:
4040
autowire: true
4141
autoconfigure: true

src/Subscription/Controller/SubscriberAttributeDefinitionController.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
use OpenApi\Attributes as OA;
88
use PhpList\Core\Domain\Subscription\Model\SubscriberAttributeDefinition;
9-
use PhpList\Core\Domain\Subscription\Service\AttributeDefinitionManager;
9+
use PhpList\Core\Domain\Subscription\Service\Manager\AttributeDefinitionManager;
1010
use PhpList\Core\Security\Authentication;
1111
use PhpList\RestBundle\Common\Controller\BaseController;
1212
use PhpList\RestBundle\Common\Service\Provider\PaginatedDataProvider;

src/Subscription/Controller/SubscriberAttributeValueController.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
use PhpList\Core\Domain\Subscription\Model\Subscriber;
1010
use PhpList\Core\Domain\Subscription\Model\SubscriberAttributeDefinition;
1111
use PhpList\Core\Domain\Subscription\Model\SubscriberAttributeValue;
12-
use PhpList\Core\Domain\Subscription\Service\SubscriberAttributeManager;
12+
use PhpList\Core\Domain\Subscription\Service\Manager\SubscriberAttributeManager;
1313
use PhpList\Core\Security\Authentication;
1414
use PhpList\RestBundle\Common\Controller\BaseController;
1515
use PhpList\RestBundle\Common\Service\Provider\PaginatedDataProvider;

src/Subscription/Controller/SubscriberController.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
use OpenApi\Attributes as OA;
88
use PhpList\Core\Domain\Subscription\Model\Subscriber;
9-
use PhpList\Core\Domain\Subscription\Service\SubscriberManager;
9+
use PhpList\Core\Domain\Subscription\Service\Manager\SubscriberManager;
1010
use PhpList\Core\Security\Authentication;
1111
use PhpList\RestBundle\Common\Controller\BaseController;
1212
use PhpList\RestBundle\Common\Validator\RequestValidator;

src/Subscription/Controller/SubscriberExportController.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
use OpenApi\Attributes as OA;
88
use PhpList\Core\Domain\Subscription\Model\Filter\SubscriberFilter;
9-
use PhpList\Core\Domain\Subscription\Service\SubscriberCsvExportManager;
9+
use PhpList\Core\Domain\Subscription\Service\SubscriberCsvExporter;
1010
use PhpList\Core\Security\Authentication;
1111
use PhpList\RestBundle\Common\Controller\BaseController;
1212
use PhpList\RestBundle\Common\Validator\RequestValidator;
@@ -17,12 +17,12 @@
1717
#[Route('/subscribers', name: 'subscriber_export_')]
1818
class SubscriberExportController extends BaseController
1919
{
20-
private SubscriberCsvExportManager $exportManager;
20+
private SubscriberCsvExporter $exportManager;
2121

2222
public function __construct(
2323
Authentication $authentication,
2424
RequestValidator $validator,
25-
SubscriberCsvExportManager $exportManager
25+
SubscriberCsvExporter $exportManager
2626
) {
2727
parent::__construct($authentication, $validator);
2828
$this->exportManager = $exportManager;

src/Subscription/Controller/SubscriberImportController.php

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
use Exception;
88
use OpenApi\Attributes as OA;
99
use PhpList\Core\Domain\Subscription\Model\Dto\SubscriberImportOptions;
10-
use PhpList\Core\Domain\Subscription\Service\SubscriberCsvImportManager;
10+
use PhpList\Core\Domain\Subscription\Service\SubscriberCsvImporter;
1111
use PhpList\Core\Security\Authentication;
1212
use PhpList\RestBundle\Common\Controller\BaseController;
1313
use PhpList\RestBundle\Common\Validator\RequestValidator;
@@ -20,12 +20,12 @@
2020
#[Route('/subscribers', name: 'subscriber_import_')]
2121
class SubscriberImportController extends BaseController
2222
{
23-
private SubscriberCsvImportManager $importManager;
23+
private SubscriberCsvImporter $importManager;
2424

2525
public function __construct(
2626
Authentication $authentication,
2727
RequestValidator $validator,
28-
SubscriberCsvImportManager $importManager
28+
SubscriberCsvImporter $importManager
2929
) {
3030
parent::__construct($authentication, $validator);
3131
$this->importManager = $importManager;
@@ -49,16 +49,16 @@ public function __construct(
4949
format: 'binary'
5050
),
5151
new OA\Property(
52-
property: 'request_confirmation',
53-
description: 'Whether to request confirmation from imported subscribers',
54-
type: 'boolean',
55-
default: false
52+
property: 'list_id',
53+
description: 'List id to add imported subscribers to',
54+
type: 'integer',
55+
default: null
5656
),
5757
new OA\Property(
58-
property: 'html_email',
59-
description: 'Whether imported subscribers prefer HTML emails',
58+
property: 'update_existing',
59+
description: 'Weather to update existing subscribers or not',
6060
type: 'boolean',
61-
default: true
61+
default: false
6262
)
6363
],
6464
type: 'object'
@@ -111,17 +111,18 @@ public function importSubscribers(Request $request): JsonResponse
111111
$file = $request->files->get('file');
112112

113113
if (!$file) {
114-
return $this->json(['success' => false, 'message' => 'No file uploaded'], Response::HTTP_BAD_REQUEST);
114+
return $this->json(['message' => 'No file uploaded'], Response::HTTP_BAD_REQUEST);
115115
}
116116

117117
if ($file->getClientMimeType() !== 'text/csv' && $file->getClientOriginalExtension() !== 'csv') {
118-
return $this->json(['success' => false, 'message' => 'File must be a CSV'], Response::HTTP_BAD_REQUEST);
118+
return $this->json(['message' => 'File must be a CSV'], Response::HTTP_BAD_REQUEST);
119119
}
120120

121121
try {
122-
$options = new SubscriberImportOptions();
123-
124-
$stats = $this->importManager->importFromCsv($file, $options);
122+
$stats = $this->importManager->importFromCsv(
123+
$file,
124+
new SubscriberImportOptions($request->getPayload()->getBoolean('update_existing'))
125+
);
125126

126127
return $this->json([
127128
'imported' => $stats['created'],

src/Subscription/Controller/SubscriberListController.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
use OpenApi\Attributes as OA;
88
use PhpList\Core\Domain\Subscription\Model\SubscriberList;
9-
use PhpList\Core\Domain\Subscription\Service\SubscriberListManager;
9+
use PhpList\Core\Domain\Subscription\Service\Manager\SubscriberListManager;
1010
use PhpList\Core\Security\Authentication;
1111
use PhpList\RestBundle\Common\Controller\BaseController;
1212
use PhpList\RestBundle\Common\Service\Provider\PaginatedDataProvider;

src/Subscription/Controller/SubscriptionController.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
use OpenApi\Attributes as OA;
88
use PhpList\Core\Domain\Subscription\Model\SubscriberList;
9-
use PhpList\Core\Domain\Subscription\Service\SubscriptionManager;
9+
use PhpList\Core\Domain\Subscription\Service\Manager\SubscriptionManager;
1010
use PhpList\Core\Security\Authentication;
1111
use PhpList\RestBundle\Common\Controller\BaseController;
1212
use PhpList\RestBundle\Common\Validator\RequestValidator;

tests/Integration/Subscription/Controller/SubscriberImportControllerTest.php

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ public function testImportSubscribersWithoutFileReturnsBadRequestStatus(): void
4444

4545
$this->assertHttpBadRequest();
4646
$responseContent = $this->getDecodedJsonResponseContent();
47-
self::assertSame(false, $responseContent['success']);
4847
self::assertStringContainsString('No file uploaded', $responseContent['message']);
4948
}
5049

@@ -70,7 +69,6 @@ public function testImportSubscribersWithNonCsvFileReturnsBadRequestStatus(): vo
7069

7170
$this->assertHttpBadRequest();
7271
$responseContent = $this->getDecodedJsonResponseContent();
73-
self::assertSame(false, $responseContent['success']);
7472
self::assertStringContainsString('File must be a CSV', $responseContent['message']);
7573
}
7674

@@ -99,7 +97,6 @@ public function testImportSubscribersWithValidCsvFile(): void
9997
self::assertSame(Response::HTTP_OK, $response->getStatusCode());
10098

10199
$responseContent = $this->getDecodedJsonResponseContent();
102-
self::assertSame(true, $responseContent['success']);
103100
self::assertArrayHasKey('imported', $responseContent);
104101
self::assertArrayHasKey('skipped', $responseContent);
105102
self::assertArrayHasKey('errors', $responseContent);
@@ -133,7 +130,9 @@ public function testImportSubscribersWithOptions(): void
133130
self::assertSame(Response::HTTP_OK, $response->getStatusCode());
134131

135132
$responseContent = $this->getDecodedJsonResponseContent();
136-
self::assertSame(true, $responseContent['success']);
133+
self::assertArrayHasKey('imported', $responseContent);
134+
self::assertArrayHasKey('skipped', $responseContent);
135+
self::assertArrayHasKey('errors', $responseContent);
137136
}
138137

139138
public function testGetMethodIsNotAllowed(): void

0 commit comments

Comments
 (0)