PluginProbe ʕ •ᴥ•ʔ
Booking for Appointments and Events Calendar – Amelia / 2.0.2
Booking for Appointments and Events Calendar – Amelia v2.0.2
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 / Payment / GetPaymentsCommandHandler.php
ameliabooking / src / Application / Commands / Payment Last commit date
AddPaymentCommand.php 6 months ago AddPaymentCommandHandler.php 6 months ago CalculatePaymentAmountCommand.php 6 months ago CalculatePaymentAmountCommandHandler.php 6 months ago DeletePaymentCommand.php 6 months ago DeletePaymentCommandHandler.php 6 months ago GetPaymentCommand.php 6 months ago GetPaymentCommandHandler.php 6 months ago GetPaymentDetailsCommand.php 6 months ago GetPaymentDetailsCommandHandler.php 6 months ago GetPaymentsCommand.php 6 months ago GetPaymentsCommandHandler.php 6 months ago UpdatePaymentCommand.php 6 months ago UpdatePaymentCommandHandler.php 6 months ago
GetPaymentsCommandHandler.php
113 lines
1 <?php
2
3 /**
4 * @copyright © Melograno Ventures. All rights reserved.
5 * @licence See LICENCE.md for license details.
6 */
7
8 namespace AmeliaBooking\Application\Commands\Payment;
9
10 use AmeliaBooking\Application\Commands\CommandHandler;
11 use AmeliaBooking\Application\Commands\CommandResult;
12 use AmeliaBooking\Application\Common\Exceptions\AccessDeniedException;
13 use AmeliaBooking\Application\Services\Payment\PaymentApplicationService;
14 use AmeliaBooking\Domain\Common\Exceptions\InvalidArgumentException;
15 use AmeliaBooking\Domain\Entity\Entities;
16 use AmeliaBooking\Domain\Services\Reservation\ReservationServiceInterface;
17 use AmeliaBooking\Infrastructure\Common\Exceptions\QueryExecutionException;
18 use AmeliaBooking\Infrastructure\Repository\Payment\PaymentRepository;
19
20 /**
21 * Class GetPaymentsCommandHandler
22 *
23 * @package AmeliaBooking\Application\Commands\Payment
24 */
25 class GetPaymentsCommandHandler extends CommandHandler
26 {
27 /**
28 * @param GetPaymentsCommand $command
29 *
30 * @return CommandResult
31 * @throws \Slim\Exception\ContainerValueNotFoundException
32 * @throws QueryExecutionException
33 * @throws InvalidArgumentException
34 * @throws AccessDeniedException
35 */
36 public function handle(GetPaymentsCommand $command)
37 {
38 if (!$command->getPermissionService()->currentUserCanRead(Entities::FINANCE)) {
39 throw new AccessDeniedException('You are not allowed to read payments.');
40 }
41
42 $result = new CommandResult();
43
44 $this->checkMandatoryFields($command);
45
46 /** @var PaymentRepository $paymentRepository */
47 $paymentRepository = $this->container->get('domain.payment.repository');
48
49 /** @var PaymentApplicationService $paymentAS */
50 $paymentAS = $this->container->get('application.payment.service');
51
52 $params = $command->getField('params');
53
54 if (!empty($params['dates'])) {
55 $params['dates'][0] .= ' 00:00:00';
56 $params['dates'][1] .= ' 23:59:59';
57 }
58
59 if (!empty($params['sort'])) {
60 $sort = $params['sort'];
61 $isDescending = substr($sort, 0, 1) === '-';
62 $params['sort'] = [
63 'field' => $isDescending ? substr($sort, 1) : $sort,
64 'order' => $isDescending ? 'DESC' : 'ASC',
65 ];
66 }
67
68 $paymentsData = $paymentAS->getPaymentsData(
69 $params,
70 $params['limit'] ?? 10
71 );
72
73 $isInvoicePage = !empty($params['invoices']) && filter_var($params['invoices'], FILTER_VALIDATE_BOOLEAN);
74
75 $payments = [];
76
77 foreach ($paymentsData as $paymentId => $payment) {
78 /** @var ReservationServiceInterface $reservationService */
79 $reservationService = $this->container->get('application.reservation.service')->get(
80 $payment['type']
81 );
82
83 $paymentsData[$paymentId]['summary'] = $reservationService->getPaymentSummary(
84 $payment,
85 $isInvoicePage
86 );
87
88 $payments[] = $paymentsData[$paymentId];
89 }
90
91 $payments = apply_filters('amelia_get_payments_filter', $payments);
92
93 do_action('amelia_get_payments', $payments);
94
95 $result->setResult(CommandResult::RESULT_SUCCESS);
96 $result->setMessage('Successfully retrieved payments.');
97 $result->setData(
98 [
99 Entities::PAYMENTS => $payments,
100 'filteredCount' => (int)$paymentRepository->getFilteredIdsCount($params, $isInvoicePage),
101 'totalCount' => (int)$paymentRepository->getFilteredIdsCount(
102 [
103 'separateRows' => !empty($params['separateRows']),
104 ],
105 $isInvoicePage
106 ),
107 ]
108 );
109
110 return $result;
111 }
112 }
113