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 / Domain / Factory / Schedule / BlockTimeFactory.php
ameliabooking / src / Domain / Factory / Schedule Last commit date
BlockTimeFactory.php 2 months ago DayOffFactory.php 5 years ago PeriodFactory.php 2 years ago PeriodLocationFactory.php 3 years ago PeriodServiceFactory.php 7 years ago SpecialDayFactory.php 7 years ago SpecialDayPeriodFactory.php 2 years ago SpecialDayPeriodLocationFactory.php 3 years ago SpecialDayPeriodServiceFactory.php 7 years ago TimeOutFactory.php 7 years ago WeekDayFactory.php 7 years ago
BlockTimeFactory.php
90 lines
1 <?php
2
3 namespace AmeliaBooking\Domain\Factory\Schedule;
4
5 use AmeliaBooking\Domain\Collection\Collection;
6 use AmeliaBooking\Domain\Entity\Schedule\BlockTime;
7 use AmeliaBooking\Domain\Common\Exceptions\InvalidArgumentException;
8 use AmeliaBooking\Domain\Factory\User\UserFactory;
9 use AmeliaBooking\Domain\Services\DateTime\DateTimeService;
10 use AmeliaBooking\Domain\ValueObjects\DateTime\DateTimeValue;
11 use AmeliaBooking\Domain\ValueObjects\Number\Integer\Id;
12 use AmeliaBooking\Domain\ValueObjects\String\Name;
13 use DateTimeZone;
14
15 class BlockTimeFactory
16 {
17 /**
18 * @param $data
19 * @return BlockTime
20 * @throws InvalidArgumentException
21 */
22 public static function create($data): BlockTime
23 {
24 $blockTime = new BlockTime(
25 new Name($data['name']),
26 $data['userId'] ? new Id($data['userId']) : null,
27 new DateTimeValue(DateTimeService::getCustomDateTimeObject($data['startDate'])),
28 new DateTimeValue(DateTimeService::getCustomDateTimeObject($data['endDate'])),
29 );
30
31 if (isset($data['id'])) {
32 $blockTime->setId(new Id($data['id']));
33 }
34
35 if (isset($data['user'])) {
36 $blockTime->setUser(UserFactory::create($data['user']));
37 }
38
39 return $blockTime;
40 }
41
42
43 /**
44 * @param array $rows
45 *
46 * @return Collection
47 * @throws InvalidArgumentException
48 */
49 public static function createCollection($rows)
50 {
51 $blockTimes = [];
52
53 foreach ($rows as $row) {
54 $startDate = $row['startDate'];
55 $endDate = $row['endDate'];
56 $userId = isset($row['userId']) ? $row['userId'] : null;
57
58 $blockTimes[$row['id']] = [
59 'id' => $row['id'],
60 'userId' => $row['userId'],
61 'name' => $row['name'],
62 'startDate' => DateTimeService::getCustomDateTimeFromUtc($startDate),
63 'endDate' => DateTimeService::getCustomDateTimeFromUtc($endDate),
64 ];
65
66 if ($userId) {
67 $blockTimes[$row['id']]['user'] =
68 [
69 'id' => $userId,
70 'firstName' => $row['user_firstName'],
71 'lastName' => $row['user_lastName'],
72 'fullName' => $row['user_fullName'],
73 'type' => 'provider',
74 ];
75 }
76 }
77
78 $collection = new Collection();
79
80 foreach ($blockTimes as $key => $value) {
81 $collection->addItem(
82 self::create($value),
83 $key
84 );
85 }
86
87 return $collection;
88 }
89 }
90