예제 #1
0
 public function testCreatingReservation()
 {
     $this->generateReservables();
     $reservable = $this->generatedReservables[0];
     $reservationData = ['post_type' => 'reservation', 'post_title' => 'Test reservation', 'post_status' => 'reservation_pending'];
     $reservationMeta = ['start_date' => '2016-01-07', 'end_date' => '2016-01-08', 'reserver_email' => '*****@*****.**'];
     $reservation = Reservation::create($reservationData, $reservationMeta, $reservable);
     $this->assertInstanceOf(Reservation::class, $reservation);
     $reservation->accept();
     $this->assertTrue($reservation->isAccepted());
 }
예제 #2
0
 protected function generateReservations()
 {
     if (empty($this->generatedReservables)) {
         $this->generateReservables();
     }
     $resData = [['post' => ['post_title' => 'Test reservation'], 'meta' => ['start_date' => '2016-01-07', 'end_date' => '2016-01-10', 'reserver_email' => '*****@*****.**', 'user_id' => 1], 'reservable' => $this->generatedReservables[0]], ['post' => ['post_title' => 'Test reservation 2'], 'meta' => ['start_date' => '2016-02-10', 'end_date' => '2016-02-15', 'reserver_email' => '*****@*****.**', 'user_id' => 1], 'reservable' => $this->generatedReservables[array_rand($this->generatedReservables)]]];
     foreach ($resData as $reservationData) {
         $reservation = Reservation::create($reservationData['post'], $reservationData['meta'], $reservationData['reservable']);
         $this->generatedReservations[] = $reservation;
     }
 }
예제 #3
0
 /**
  * Create a new reservation from the form.
  *
  * @access protected
  * @since 0.1.0
  * @todo Pickle this up to smaller methods and pass some control over to the
  *       reservation object class.
  *
  * @param mixed[] $data Data for reservation.
  *
  * @return void
  */
 protected function createReservation($data)
 {
     $reservable = $this->reservable;
     $reservation_meta_data = ['reservable_id' => $reservable->ID, 'reserver_email' => $data['wprsrv-reserver-email'], 'reserver_name' => $data['wprsrv-reserver-name']];
     if ($reservable->isSingleDay()) {
         $reservation_meta_data['start_date'] = $data['wprsrv-reservation-date'];
         $reservation_meta_data['end_date'] = $data['wprsrv-reservation-date'];
         $reservation_meta_data['reservation_date'] = $data['wprsrv-reservation-date'];
     } else {
         $reservation_meta_data['start_date'] = $data['wprsrv-reservation-date-start'];
         $reservation_meta_data['end_date'] = $data['wprsrv-reservation-date-end'];
     }
     if ($reservable->isSingleDay()) {
         $reservationTitle = [$reservable->post_title, ': ', $reservation_meta_data['start_date'], ', by ', $reservation_meta_data['reserver_email']];
     } else {
         $reservationTitle = [$reservable->post_title, ': ', $reservation_meta_data['start_date'], ' to ', $reservation_meta_data['end_date'], ', by ', $reservation_meta_data['reserver_email']];
     }
     $reservationTitle = implode('', $reservationTitle);
     $reservation_post_data = ['post_type' => 'reservation', 'post_title' => $reservationTitle, 'post_status' => 'reservation_pending', 'post_content' => $data['wprsrv-reservation-description']];
     try {
         $reservation = Reservation::create($reservation_post_data, $reservation_meta_data, $reservable);
     } catch (\InvalidArgumentException $iae) {
         $_POST['reservation_notice'] = _x('The data you gave looked invalid, please check your fields and try again.', 'reservation form error', 'wprsrv');
         return;
     } catch (\Exception $e) {
         \Wprsrv\wprsrv()->logger->critical('Could not create new reservation: {msg}', ['msg' => print_r($e, true)]);
         $_POST['reservation_notice'] = _x('Sorry, something went wrong in the reservation system, please try again.', 'reservation form error', 'wprsrv');
         return;
     }
     if ($reservation instanceof Reservation) {
         $this->reservation = $reservation;
     } else {
         return;
     }
     $_POST['reservation_success'] = _x('Thank you for your reservation. You will get a confirmation email in a few moments.', 'reservation form success', 'wprsrv');
 }