PluginProbe ʕ •ᴥ•ʔ
Booking for Appointments and Events Calendar – Amelia / 2.4
Booking for Appointments and Events Calendar – Amelia v2.4
2.4.5 2.4.4 2.4.3 2.4.2 2.4.1 2.4 trunk 1.2.1 1.2.10 1.2.11 1.2.12 1.2.13 1.2.14 1.2.15 1.2.16 1.2.17 1.2.18 1.2.19 1.2.2 1.2.20 1.2.21 1.2.22 1.2.23 1.2.24 1.2.25 1.2.26 1.2.27 1.2.28 1.2.29 1.2.3 1.2.30 1.2.31 1.2.32 1.2.33 1.2.34 1.2.35 1.2.36 1.2.37 1.2.38 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 2.0 2.0.1 2.0.2 2.1 2.1.1 2.1.2 2.1.3 2.2 2.2.1 2.3
ameliabooking / src / Application / Commands / Settings / FeaturesIntegrations / ToggleFeatureIntegrationCommandHandler.php
ameliabooking / src / Application / Commands / Settings / FeaturesIntegrations Last commit date
ToggleFeatureIntegrationCommand.php 6 months ago ToggleFeatureIntegrationCommandHandler.php 3 months ago
ToggleFeatureIntegrationCommandHandler.php
75 lines
1 <?php
2
3 namespace AmeliaBooking\Application\Commands\Settings\FeaturesIntegrations;
4
5 use AmeliaBooking\Application\Commands\CommandHandler;
6 use AmeliaBooking\Application\Commands\CommandResult;
7 use AmeliaBooking\Application\Common\Exceptions\AccessDeniedException;
8 use AmeliaBooking\Domain\Entity\Entities;
9 use AmeliaBooking\Domain\Services\Settings\SettingsService;
10
11 class ToggleFeatureIntegrationCommandHandler extends CommandHandler
12 {
13 public $mandatoryFields = [
14 'code'
15 ];
16
17 public function handle(ToggleFeatureIntegrationCommand $command)
18 {
19 $result = new CommandResult();
20
21 if (!$command->getPermissionService()->currentUserCanWrite(Entities::SETTINGS)) {
22 throw new AccessDeniedException('You are not allowed to write settings.');
23 }
24
25 $this->checkMandatoryFields($command);
26
27 $code = $command->getField('code');
28
29 /** @var SettingsService $settingsService */
30 $settingsService = $this->getContainer()->get('domain.settings.service');
31
32 $payments = $settingsService->getCategorySettings('payments');
33
34 $featuresIntegrations = $settingsService->getCategorySettings('featuresIntegrations');
35
36 if (!isset($featuresIntegrations[$code])) {
37 $result->setResult(CommandResult::RESULT_ERROR);
38 $result->setMessage('Feature or integration does not exist.');
39
40 return $result;
41 }
42
43 $featuresIntegrations[$code]['enabled'] = !$featuresIntegrations[$code]['enabled'];
44 $settingsService->setCategorySettings('featuresIntegrations', $featuresIntegrations);
45
46 if (
47 isset($payments[$code]['enabled'], $featuresIntegrations[$code]) &&
48 !$featuresIntegrations[$code]['enabled'] &&
49 $payments[$code]['enabled']
50 ) {
51 $defaultPaymentMethod = 'onSite';
52
53 $payments[$code]['enabled'] = false;
54
55 foreach (['stripe', 'payPal', 'wc', 'mollie', 'razorpay', 'square', 'barion'] as $method) {
56 if ($featuresIntegrations[$method]['enabled'] && $payments[$method]['enabled']) {
57 $defaultPaymentMethod = $method;
58
59 break;
60 }
61 }
62
63 if ($defaultPaymentMethod === 'onSite') {
64 $payments['onSite'] = true;
65 }
66
67 $payments['defaultPaymentMethod'] = $defaultPaymentMethod;
68
69 $settingsService->setCategorySettings('payments', $payments);
70 }
71
72 return $result;
73 }
74 }
75