PluginProbe ʕ •ᴥ•ʔ
Booking for Appointments and Events Calendar – Amelia / trunk
Booking for Appointments and Events Calendar – Amelia vtrunk
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 hour ago GetCustomerCommand.php 1 year ago GetCustomerCommandHandler.php 6 months ago GetCustomersCommand.php 1 year ago GetCustomersCommandHandler.php 2 months ago UpdateCustomerCommand.php 1 year ago UpdateCustomerCommandHandler.php 1 hour ago UpdateCustomerNoteCommand.php 3 months ago UpdateCustomerNoteCommandHandler.php 3 months ago UpdateCustomerStatusCommand.php 1 year ago UpdateCustomerStatusCommandHandler.php 6 months ago
GetCustomerCommandHandler.php
81 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 QueryExecutionException
30 */
31 public function handle(GetCustomerCommand $command)
32 {
33 $result = new CommandResult();
34
35 $this->checkMandatoryFields($command);
36
37 /** @var UserApplicationService $userAS */
38 $userAS = $this->getContainer()->get('application.user.service');
39
40 if (!$command->getPermissionService()->currentUserCanRead(Entities::CUSTOMERS)) {
41 if ($command->getToken()) {
42 if ($userAS->getAuthenticatedUser($command->getToken(), false, 'providerCabinet') === null) {
43 $result->setResult(CommandResult::RESULT_ERROR);
44 $result->setMessage('Could not retrieve user');
45 $result->setData(
46 [
47 'reauthorize' => true
48 ]
49 );
50
51 return $result;
52 }
53 } else {
54 throw new AccessDeniedException('You are not allowed to read user');
55 }
56 }
57
58 /** @var UserRepositoryInterface $userRepository */
59 $userRepository = $this->getContainer()->get('domain.users.repository');
60
61 /** @var AbstractUser $user */
62 $user = $userRepository->getById((int)$command->getField('id'));
63
64 $userArray = $user->toArray();
65
66 $userArray = apply_filters('amelia_get_customer_filter', $userArray);
67
68 do_action('amelia_get_customer', $userArray);
69
70 $result->setResult(CommandResult::RESULT_SUCCESS);
71 $result->setMessage('Successfully retrieved user');
72 $result->setData(
73 [
74 Entities::USER => $userArray
75 ]
76 );
77
78 return $result;
79 }
80 }
81