PluginProbe ʕ •ᴥ•ʔ
Booking for Appointments and Events Calendar – Amelia / 1.2.21
Booking for Appointments and Events Calendar – Amelia v1.2.21
2.4.9 2.4.8 2.4.7 2.4.6 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 / Square / DisconnectFromSquareAccountCommandHandler.php
ameliabooking / src / Application / Commands / Square Last commit date
DisconnectFromSquareAccountCommand.php 2 years ago DisconnectFromSquareAccountCommandHandler.php 2 years ago FetchAccessTokenSquareCommand.php 2 years ago FetchAccessTokenSquareCommandHandler.php 2 years ago GetSquareAuthURLCommand.php 2 years ago GetSquareAuthURLCommandHandler.php 2 years ago SquarePaymentCommand.php 2 years ago SquarePaymentCommandHandler.php 2 years ago SquarePaymentNotifyCommand.php 2 years ago SquarePaymentNotifyCommandHandler.php 2 years ago SquareRefundWebhookCommand.php 2 years ago SquareRefundWebhookCommandHandler.php 2 years ago
DisconnectFromSquareAccountCommandHandler.php
69 lines
1 <?php
2
3 namespace AmeliaBooking\Application\Commands\Square;
4
5 use AmeliaBooking\Application\Commands\CommandHandler;
6 use AmeliaBooking\Application\Commands\CommandResult;
7 use AmeliaBooking\Application\Common\Exceptions\AccessDeniedException;
8 use AmeliaBooking\Application\Services\User\UserApplicationService;
9 use AmeliaBooking\Domain\Common\Exceptions\AuthorizationException;
10 use AmeliaBooking\Domain\Common\Exceptions\InvalidArgumentException;
11 use AmeliaBooking\Domain\Entity\Entities;
12 use AmeliaBooking\Domain\Entity\User\AbstractUser;
13 use AmeliaBooking\Domain\Services\Settings\SettingsService;
14 use AmeliaBooking\Infrastructure\Common\Exceptions\NotFoundException;
15 use AmeliaBooking\Infrastructure\Common\Exceptions\QueryExecutionException;
16 use AmeliaBooking\Infrastructure\Services\Payment\SquareService;
17 use Interop\Container\Exception\ContainerException;
18
19 /**
20 * Class DisconnectFromSquareAccountCommandHandler
21 *
22 * @package AmeliaBooking\Application\Commands\Square
23 */
24 class DisconnectFromSquareAccountCommandHandler extends CommandHandler
25 {
26 /**
27 * @param DisconnectFromSquareAccountCommand $command
28 *
29 * @return CommandResult
30 * @throws AccessDeniedException
31 * @throws NotFoundException
32 * @throws QueryExecutionException
33 * @throws ContainerException
34 * @throws InvalidArgumentException
35 * @throws \Exception
36 */
37 public function handle(DisconnectFromSquareAccountCommand $command)
38 {
39
40 if (!$this->getContainer()->getPermissionsService()->currentUserCanWrite(Entities::SETTINGS) && empty($command->getField('data'))) {
41 throw new AccessDeniedException('You are not allowed to write settings.');
42 }
43
44 /** @var SquareService $squareService */
45 $squareService = $this->container->get('infrastructure.payment.square.service');
46
47 /** @var SettingsService $settingsService */
48 $settingsService = $this->container->get('domain.settings.service');
49
50
51 $result = new CommandResult();
52
53 if (!empty($settingsService->getCategorySettings('payments')['square']['accessToken']) &&
54 !$squareService->disconnectAccount(!empty($command->getField('data')))) {
55 $result->setResult(CommandResult::RESULT_ERROR);
56 $result->setMessage('Unable to disconnect from Square account.');
57 $result->setData(['success' => false]);
58
59 return $result;
60 }
61
62 $result->setResult(CommandResult::RESULT_SUCCESS);
63 $result->setMessage('Successfully logged out of Square account');
64 $result->setData(['success' => true]);
65
66 return $result;
67 }
68 }
69