PluginProbe ʕ •ᴥ•ʔ
Booking for Appointments and Events Calendar – Amelia / 1.2.31
Booking for Appointments and Events Calendar – Amelia v1.2.31
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 / User / Customer / GetCustomerCommandHandler.php
ameliabooking / src / Application / Commands / User / Customer Last commit date
AddCustomerCommand.php 1 year ago AddCustomerCommandHandler.php 1 year ago GetCustomerCommand.php 1 year ago GetCustomerCommandHandler.php 1 year ago GetCustomersCommand.php 1 year ago GetCustomersCommandHandler.php 1 year ago UpdateCustomerCommand.php 1 year ago UpdateCustomerCommandHandler.php 1 year ago UpdateCustomerStatusCommand.php 1 year ago UpdateCustomerStatusCommandHandler.php 1 year ago
GetCustomerCommandHandler.php
82 lines
1 <?php
2
3 namespace AmeliaBooking\Application\Commands\User\Customer;
4
5 use AmeliaBooking\Application\Common\Exceptions\AccessDeniedException;
6 use AmeliaBooking\Application\Services\User\UserApplicationService;
7 use AmeliaBooking\Domain\Common\Exceptions\InvalidArgumentException;
8 use AmeliaBooking\Domain\Entity\Entities;
9 use AmeliaBooking\Domain\Entity\User\AbstractUser;
10 use AmeliaBooking\Application\Commands\CommandResult;
11 use AmeliaBooking\Application\Commands\CommandHandler;
12 use AmeliaBooking\Domain\Repository\User\UserRepositoryInterface;
13 use AmeliaBooking\Infrastructure\Common\Exceptions\QueryExecutionException;
14
15 /**
16 * Class GetCustomerCommandHandler
17 *
18 * @package AmeliaBooking\Application\Commands\User\Customer
19 */
20 class GetCustomerCommandHandler extends CommandHandler
21 {
22 /**
23 * @param GetCustomerCommand $command
24 *
25 * @return CommandResult
26 * @throws \Slim\Exception\ContainerValueNotFoundException
27 * @throws AccessDeniedException
28 * @throws InvalidArgumentException
29 * @throws \Interop\Container\Exception\ContainerException
30 * @throws QueryExecutionException
31 */
32 public function handle(GetCustomerCommand $command)
33 {
34 $result = new CommandResult();
35
36 $this->checkMandatoryFields($command);
37
38 /** @var UserApplicationService $userAS */
39 $userAS = $this->getContainer()->get('application.user.service');
40
41 if (!$command->getPermissionService()->currentUserCanRead(Entities::CUSTOMERS)) {
42 if ($command->getToken()) {
43 if ($userAS->getAuthenticatedUser($command->getToken(), false, 'providerCabinet') === null) {
44 $result->setResult(CommandResult::RESULT_ERROR);
45 $result->setMessage('Could not retrieve user');
46 $result->setData(
47 [
48 'reauthorize' => true
49 ]
50 );
51
52 return $result;
53 }
54 } else {
55 throw new AccessDeniedException('You are not allowed to read user');
56 }
57 }
58
59 /** @var UserRepositoryInterface $userRepository */
60 $userRepository = $this->getContainer()->get('domain.users.repository');
61
62 /** @var AbstractUser $user */
63 $user = $userRepository->getById((int)$command->getField('id'));
64
65 $userArray = $user->toArray();
66
67 $userArray = apply_filters('amelia_get_customer_filter', $userArray);
68
69 do_action('amelia_get_customer', $userArray);
70
71 $result->setResult(CommandResult::RESULT_SUCCESS);
72 $result->setMessage('Successfully retrieved user');
73 $result->setData(
74 [
75 Entities::USER => $userArray
76 ]
77 );
78
79 return $result;
80 }
81 }
82