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 / User / Customer / GetCustomerCommandHandler.php
ameliabooking / src / Application / Commands / User / Customer Last commit date
AddCustomerCommand.php 7 years ago AddCustomerCommandHandler.php 1 year ago GetCustomerCommand.php 7 years ago GetCustomerCommandHandler.php 1 year ago GetCustomersCommand.php 7 years ago GetCustomersCommandHandler.php 1 year ago UpdateCustomerCommand.php 7 years 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