PluginProbe ʕ •ᴥ•ʔ
Booking for Appointments and Events Calendar – Amelia / 1.2.32
Booking for Appointments and Events Calendar – Amelia v1.2.32
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 / Infrastructure / Repository / Bookable / Service / PackageServiceLocationRepository.php
ameliabooking / src / Infrastructure / Repository / Bookable / Service Last commit date
CategoryRepository.php 1 year ago ExtraRepository.php 1 year ago PackageCustomerRepository.php 10 months ago PackageCustomerServiceRepository.php 1 year ago PackageRepository.php 1 year ago PackageServiceLocationRepository.php 1 year ago PackageServiceProviderRepository.php 1 year ago PackageServiceRepository.php 1 year ago ProviderServiceRepository.php 1 year ago ResourceEntitiesRepository.php 1 year ago ResourceRepository.php 1 year ago ServiceRepository.php 1 year ago
PackageServiceLocationRepository.php
90 lines
1 <?php
2
3 namespace AmeliaBooking\Infrastructure\Repository\Bookable\Service;
4
5 use AmeliaBooking\Domain\Entity\Location\Location;
6 use AmeliaBooking\Domain\Factory\Bookable\Service\PackageServiceFactory;
7 use AmeliaBooking\Infrastructure\Common\Exceptions\QueryExecutionException;
8 use AmeliaBooking\Infrastructure\Repository\AbstractRepository;
9
10 /**
11 * Class PackageServiceLocationRepository
12 *
13 * @package AmeliaBooking\Infrastructure\Repository\Bookable\Service
14 */
15 class PackageServiceLocationRepository extends AbstractRepository
16 {
17 public const FACTORY = PackageServiceFactory::class;
18
19 /**
20 * @param Location $entity
21 * @param int $packageServiceId
22 *
23 * @return int
24 * @throws QueryExecutionException
25 */
26 public function add($entity, $packageServiceId)
27 {
28 $data = $entity->toArray();
29
30 $params = [
31 ':packageServiceId' => $packageServiceId,
32 ':locationId' => $data['id'],
33 ];
34
35 try {
36 $statement = $this->connection->prepare(
37 "INSERT INTO {$this->table}
38 (`packageServiceId`, `locationId`)
39 VALUES
40 (:packageServiceId, :locationId)"
41 );
42
43 $res = $statement->execute($params);
44 if (!$res) {
45 throw new QueryExecutionException('Unable to add data in ' . __CLASS__);
46 }
47 } catch (\Exception $e) {
48 throw new QueryExecutionException('Unable to add data in ' . __CLASS__, $e->getCode(), $e);
49 }
50
51 return $this->connection->lastInsertId();
52 }
53
54 /**
55 *
56 * It will delete all relations for one package service except ones that are sent in locations array
57 *
58 * @param array $locationsIds
59 * @param int $packageServiceId
60 *
61 * @return bool
62 * @throws QueryExecutionException
63 */
64 public function deleteAllNotInLocationsServicesArrayForPackage($locationsIds, $packageServiceId)
65 {
66 $locations = ' ';
67
68 if (!empty($locationsIds)) {
69 foreach ($locationsIds as $index => $value) {
70 ++$index;
71 $locations .= ':locationId' . $index . ', ';
72 $params[':locationId' . $index] = (int)$value;
73 }
74 $locations = 'AND `locationId` NOT IN (' . rtrim($locations, ', ') . ')';
75 }
76
77 $params[':packageServiceId'] = $packageServiceId;
78
79 try {
80 $statement = $this->connection->prepare(
81 "DELETE FROM {$this->table} WHERE 1 = 1 {$locations} AND packageServiceId = :packageServiceId"
82 );
83
84 return $statement->execute($params);
85 } catch (\Exception $e) {
86 throw new QueryExecutionException('Unable to delete data from ' . __CLASS__, $e->getCode(), $e);
87 }
88 }
89 }
90