@@ -1693,14 +1693,15 @@ public function addOfflineBookableRoomReservation(Summit $summit, int $room_id,
16931693 }
16941694
16951695 $ owner_id = $ payload ["owner_id " ];
1696+ $ quantity = intval ($ payload ["quantity " ] ?? 1 );
16961697
16971698 $ owner = $ this ->member_repository ->getById ($ owner_id );
16981699
16991700 if (!$ owner instanceof Member) {
17001701 throw new EntityNotFoundException ('Member not found. ' );
17011702 }
17021703
1703- if ($ owner ->getReservationsCountBySummit ($ summit ) >= $ summit ->getMeetingRoomBookingMaxAllowed ())
1704+ if ($ quantity == 1 && $ owner ->getReservationsCountBySummit ($ summit ) >= $ summit ->getMeetingRoomBookingMaxAllowed ())
17041705 throw new ValidationException
17051706 (
17061707 sprintf
@@ -1744,14 +1745,51 @@ public function addOfflineBookableRoomReservation(Summit $summit, int $room_id,
17441745 }
17451746 }
17461747
1747- $ reservation = SummitRoomReservationFactory::build ($ summit , $ payload );
1748- $ reservation ->markAsOffline ();
1749- $ room ->addReservation ($ reservation );
1750- $ reservation ->setPaid ();
1748+ $ booking_slot_len = $ summit ->getMeetingRoomBookingSlotLength ();
1749+ $ next_start_date = null ;
1750+ $ next_end_date = null ;
1751+
1752+ Log::debug (sprintf ("SummitLocationService::addOfflineBookableRoomReservation we are gonna create %s slots " , $ quantity ));
1753+ for ($ i = 0 ; $ i < $ quantity ; $ i ++) {
1754+ $ reservation = SummitRoomReservationFactory::build ($ summit , $ payload );
1755+
1756+ if (!is_null ($ next_start_date )) {
1757+ Log::debug
1758+ (
1759+ sprintf
1760+ (
1761+ "SummitLocationService::addOfflineBookableRoomReservation setting next_start_date %s " ,
1762+ $ next_start_date ->format ('Y-m-d H:i:s ' )
1763+ )
1764+ );
1765+ $ reservation ->setStartDatetime ($ next_start_date );
1766+ }
1767+
1768+ if (!is_null ($ next_end_date )) {
1769+ Log::debug
1770+ (
1771+ sprintf
1772+ (
1773+ "SummitLocationService::addOfflineBookableRoomReservation setting next_end_date %s " ,
1774+ $ next_end_date ->format ('Y-m-d H:i:s ' )
1775+ )
1776+ );
1777+ $ reservation ->setEndDatetime ($ next_end_date );
1778+ }
1779+ $ reservation ->markAsOffline ();
1780+ $ room ->addReservation ($ reservation );
1781+ $ reservation ->setPaid ();
1782+ $ next_start_date = clone $ reservation ->getEndDatetime ();
1783+ $ next_end_date = clone $ reservation ->getEndDatetime ()->add (new \DateInterval ("PT " . $ booking_slot_len . 'M ' ));
1784+ }
1785+
17511786 return $ reservation ;
17521787 });
17531788
1754- Event::dispatch (new CreatedBookableRoomReservation ($ reservation ->getId ()));
1789+ $ supress_email = boolval ($ payload ["supress_email " ] ?? false );
1790+
1791+ if (!$ supress_email )
1792+ Event::dispatch (new CreatedBookableRoomReservation ($ reservation ->getId ()));
17551793
17561794 return $ reservation ;
17571795 }
0 commit comments