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 / Infrastructure / WP / InstallActions / DB / User / Provider / ProvidersServiceTable.php
ameliabooking / src / Infrastructure / WP / InstallActions / DB / User / Provider Last commit date
ProvidersDayOffTable.php 2 months ago ProvidersGoogleCalendarTable.php 2 months ago ProvidersLocationTable.php 2 months ago ProvidersOutlookCalendarTable.php 2 months ago ProvidersPeriodLocationTable.php 2 months ago ProvidersPeriodServiceTable.php 2 months ago ProvidersPeriodTable.php 2 months ago ProvidersServiceTable.php 2 months ago ProvidersSpecialDayPeriodLocationTable.php 2 months ago ProvidersSpecialDayPeriodServiceTable.php 2 months ago ProvidersSpecialDayPeriodTable.php 2 months ago ProvidersSpecialDayTable.php 2 months ago ProvidersTimeOutTable.php 2 months ago ProvidersViewsTable.php 2 months ago ProvidersWeekDayTable.php 2 months ago
ProvidersServiceTable.php
74 lines
1 <?php
2
3 namespace AmeliaBooking\Infrastructure\WP\InstallActions\DB\User\Provider;
4
5 use AmeliaBooking\Domain\Common\Exceptions\InvalidArgumentException;
6 use AmeliaBooking\Infrastructure\WP\InstallActions\DB\AbstractDatabaseTable;
7
8 /**
9 * Class ProvidersServiceTable
10 *
11 * @package AmeliaBooking\Infrastructure\WP\InstallActions\DB\User\Provider
12 */
13 class ProvidersServiceTable extends AbstractDatabaseTable
14 {
15 public const TABLE = 'providers_to_services';
16
17 /**
18 * @return string
19 * @throws InvalidArgumentException
20 */
21 public static function buildTable()
22 {
23 $table = self::getTableName();
24
25 $charsetCollate = self::getCharsetCollate();
26
27 return "CREATE TABLE {$table} (
28 `id` int(11) NOT NULL AUTO_INCREMENT,
29 `userId` int(11) NOT NULL,
30 `serviceId` int(11) NOT NULL,
31 `price` double NOT NULL,
32 `minCapacity` int(11) NOT NULL,
33 `maxCapacity` int(11) NOT NULL,
34 `customPricing` TEXT NULL DEFAULT NULL,
35 PRIMARY KEY (`id`),
36 UNIQUE KEY `id` (`id`)
37 ) {$charsetCollate};";
38 }
39
40 /**
41 * @return array
42 * @throws InvalidArgumentException
43 */
44 public static function alterTable()
45 {
46 $table = self::getTableName();
47
48 global $wpdb;
49
50 $duplicatedRowsIds = $wpdb->get_col(
51 "SELECT t1.id AS id
52 FROM {$table} t1
53 INNER JOIN {$table} t2 ON t1.userId = t2.userId AND t1.serviceId = t2.serviceId
54 WHERE
55 t1.id > t2.id AND
56 t1.userId = t2.userId AND
57 t1.serviceId = t2.serviceId
58 GROUP BY t1.id"
59 );
60
61 foreach ($duplicatedRowsIds as $key => $id) {
62 $duplicatedRowsIds[$key] = (int)$duplicatedRowsIds[$key];
63 }
64
65 if ($duplicatedRowsIds) {
66 $duplicatedRowsIdsQuery = implode(', ', $duplicatedRowsIds);
67
68 $wpdb->query("DELETE FROM {$table} WHERE id IN ({$duplicatedRowsIdsQuery})");
69 }
70
71 return [];
72 }
73 }
74