コード例 #1
0
 public function createReservation(Request $request)
 {
     $room_info = $request['room_info'];
     $start_dt = Carbon::createFromFormat('d-m-Y', $request['start_dt'])->toDateString();
     $end_dt = Carbon::createFromFormat('d-m-Y', $request['end_dt'])->toDateString();
     $customer = Customer::firstOrCreate($request['customer']);
     $reservation = Reservation::create();
     $reservation->total_price = $room_info['total_price'];
     $reservation->occupancy = $request['occupancy'];
     $reservation->customer_id = $customer->id;
     $reservation->checkin = $start_dt;
     $reservation->checkout = $end_dt;
     $reservation->save();
     $date = $start_dt;
     while (strtotime($date) < strtotime($end_dt)) {
         $room_calendar = RoomCalendar::where('day', '=', $date)->where('room_type_id', '=', $room_info['id'])->first();
         $night = ReservationNight::create();
         $night->day = $date;
         $night->rate = $room_calendar->rate;
         $night->room_type_id = $room_info['id'];
         $night->reservation_id = $reservation->id;
         $room_calendar->availability--;
         $room_calendar->reservations++;
         $room_calendar->save();
         $night->save();
         $date = date("Y-m-d", strtotime("+1 day", strtotime($date)));
     }
     $nights = $reservation->nights;
     $customer = $reservation->customer;
     return $reservation;
 }
コード例 #2
0
 public function createReservation(Request $request)
 {
     //        $request = array (
     //            'customer' =>
     //                array (
     //                    'first_name' => 'Marie-Laure',
     //                    'last_name' => 'Lamarque-Choy',
     //                    'email' => '*****@*****.**',
     //                ),
     //            'room_info' =>
     //                array (
     //                    'id' => 4,
     //                    'name' => 'Large Studio',
     //                    'short_name' => 'LXS1',
     //                    'base_price' => '200.00',
     //                    'base_availability' => '3',
     //                    'max_occupancy' => '4',
     //                    'created_at' => '2016-01-11 00:00:00',
     //                    'updated_at' => '2016-01-11 00:00:00',
     //                    'total_price' => 0,
     //                ),
     //            'start_dt' => '15-1-2016',
     //            'end_dt' => '16-1-2016',
     //            'occupancy' => '2',
     //        );
     $room_info = $request['room_info'];
     $start_dt = Carbon::createFromFormat('d-m-Y', $request['start_dt'])->toDateString();
     $end_dt = Carbon::createFromFormat('d-m-Y', $request['end_dt'])->toDateString();
     $customer = Customer::firstOrCreate($request['customer']);
     $reservation = Reservation::create();
     $reservation->total_price = $room_info['total_price'];
     $reservation->occupancy = $request['occupancy'];
     $reservation->customer_id = $customer->id;
     $reservation->checkin = $start_dt;
     $reservation->checkout = $end_dt;
     //$var = "'".var_export($request->all())."''";
     //return $var;
     $reservation->save();
     $date = $start_dt;
     while (strtotime($date) < strtotime($end_dt)) {
         $room_calendar = RoomCalendar::where('day', '=', $date)->where('room_type_id', '=', $room_info['id'])->first();
         $night = ReservationNight::create();
         $night->day = $date;
         //dd($room_calendar);
         $night->rate = $room_calendar->rate;
         $night->room_type_id = $room_info['id'];
         $night->reservation_id = $reservation->id;
         $room_calendar->availability--;
         $room_calendar->reservations++;
         $room_calendar->save();
         $night->save();
         $date = date("Y-m-d", strtotime("+1 day", strtotime($date)));
     }
     $nights = $reservation->nights;
     $customer = $reservation->customer;
     return $reservation;
 }
コード例 #3
0
 public function searchAvailability(Request $request)
 {
     $start_dt = Carbon::createFromFormat('d-m-Y', $request['start_dt'])->toDateTimeString();
     $end_dt = Carbon::createFromFormat('d-m-Y', $request['end_dt'])->toDateTimeString();
     $min_occupancy = $request['min_occupancy'];
     $room_types = RoomType::where('max_occupancy', '>=', $min_occupancy)->get();
     $available_room_types = [];
     foreach ($room_types as $room_type) {
         $count = RoomCalendar::where('day', '>=', $start_dt)->where('day', '<', $end_dt)->where('room_type_id', '=', $room_type->id)->where('availability', '<=', 0)->count();
         if ($count == 0) {
             $total_price = RoomCalendar::where('day', '>=', $start_dt)->where('day', '<', $end_dt)->where('room_type_id', '=', $room_type->id)->sum('rate');
             $room_type->total_price = $total_price;
             array_push($available_room_types, $room_type);
         }
     }
     return $available_room_types;
 }