PluginProbe ʕ •ᴥ•ʔ
Booking for Appointments and Events Calendar – Amelia / 1.2.20
Booking for Appointments and Events Calendar – Amelia v1.2.20
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 1 year ago DisconnectFromSquareAccountCommandHandler.php 1 year ago FetchAccessTokenSquareCommand.php 1 year ago FetchAccessTokenSquareCommandHandler.php 1 year ago GetSquareAuthURLCommand.php 1 year ago GetSquareAuthURLCommandHandler.php 1 year ago SquarePaymentCommand.php 1 year ago SquarePaymentCommandHandler.php 1 year ago SquarePaymentNotifyCommand.php 1 year ago SquarePaymentNotifyCommandHandler.php 1 year ago SquareRefundWebhookCommand.php 1 year ago SquareRefundWebhookCommandHandler.php 1 year 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