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 / Payment / AddPaymentCommandHandler.php
ameliabooking / src / Application / Commands / Payment Last commit date
AddPaymentCommand.php 7 years ago AddPaymentCommandHandler.php 2 years ago CalculatePaymentAmountCommand.php 3 years ago CalculatePaymentAmountCommandHandler.php 3 years ago DeletePaymentCommand.php 7 years ago DeletePaymentCommandHandler.php 2 years ago GetPaymentCommand.php 7 years ago GetPaymentCommandHandler.php 1 year ago GetPaymentsCommand.php 7 years ago GetPaymentsCommandHandler.php 1 year ago UpdatePaymentCommand.php 7 years ago UpdatePaymentCommandHandler.php 2 years ago
AddPaymentCommandHandler.php
83 lines
1 <?php
2 /**
3 * @copyright © TMS-Plugins. All rights reserved.
4 * @licence See LICENCE.md for license details.
5 */
6
7 namespace AmeliaBooking\Application\Commands\Payment;
8
9 use AmeliaBooking\Application\Commands\CommandHandler;
10 use AmeliaBooking\Application\Commands\CommandResult;
11 use AmeliaBooking\Application\Common\Exceptions\AccessDeniedException;
12 use AmeliaBooking\Domain\Common\Exceptions\InvalidArgumentException;
13 use AmeliaBooking\Domain\Entity\Payment\Payment;
14 use AmeliaBooking\Domain\Entity\Entities;
15 use AmeliaBooking\Domain\Factory\Payment\PaymentFactory;
16 use AmeliaBooking\Domain\ValueObjects\Number\Integer\Id;
17 use AmeliaBooking\Infrastructure\Common\Exceptions\QueryExecutionException;
18 use AmeliaBooking\Infrastructure\Repository\Payment\PaymentRepository;
19
20 /**
21 * Class AddPaymentCommandHandler
22 *
23 * @package AmeliaBooking\Application\Commands\Payment
24 */
25 class AddPaymentCommandHandler extends CommandHandler
26 {
27 /** @var array */
28 public $mandatoryFields = [];
29
30 /**
31 * @param AddPaymentCommand $command
32 *
33 * @return CommandResult
34 * @throws InvalidArgumentException
35 * @throws QueryExecutionException
36 * @throws AccessDeniedException
37 * @throws \Interop\Container\Exception\ContainerException
38 */
39 public function handle(AddPaymentCommand $command)
40 {
41 if (!$command->getPermissionService()->currentUserCanWrite(Entities::FINANCE)) {
42 throw new AccessDeniedException('You are not allowed to add new payment.');
43 }
44
45 $result = new CommandResult();
46
47 $this->checkMandatoryFields($command);
48
49 $paymentArray = $command->getFields();
50
51 $paymentArray = apply_filters('amelia_before_payment_added_filter', $paymentArray);
52
53 do_action('amelia_before_payment_added', $paymentArray);
54
55 $payment = PaymentFactory::create($paymentArray);
56 if (!$payment instanceof Payment) {
57 $result->setResult(CommandResult::RESULT_ERROR);
58 $result->setMessage('Unable to create payment.');
59
60 return $result;
61 }
62
63 /** @var PaymentRepository $paymentRepository */
64 $paymentRepository = $this->container->get('domain.payment.repository');
65
66 if ($paymentId = $paymentRepository->add($payment)) {
67 $payment->setId(new Id($paymentId));
68
69 do_action('amelia_after_payment_added', $payment->toArray());
70
71 $result->setResult(CommandResult::RESULT_SUCCESS);
72 $result->setMessage('New payment successfully created.');
73 $result->setData(
74 [
75 Entities::PAYMENT => $payment->toArray(),
76 ]
77 );
78 }
79
80 return $result;
81 }
82 }
83