コード例 #1
0
 /**
  * Process and generate data could be accepted by
  * {@link http://www.highcharts.com/ Charts}
  * for a given year.
  *
  * @param $year
  * @return \Illuminate\View\View
  */
 public function chart($year)
 {
     $dt = Carbon::createFromDate($year, 1, 1);
     $dt_diff = Carbon::createFromDate($year, 1, 1)->endOfYear();
     $reservations = Reservation::whereBetween('arrive_at', [$dt, $dt_diff])->where('is_valid', true)->get();
     $tmp = [];
     foreach ($reservations as $reservation) {
         $arrive_at = Carbon::parse($reservation->arrive_at);
         $leave_at = Carbon::parse($reservation->leave_at);
         while ($arrive_at->lte($leave_at)) {
             $month = $this->months[$arrive_at->month - 1];
             if (empty($tmp[$arrive_at->month][$arrive_at->day])) {
                 $tmp[$arrive_at->month][$arrive_at->day] = 0;
             }
             $tmp[$arrive_at->month][$arrive_at->day] += $reservation->nb_people;
             $arrive_at->addDay();
         }
     }
     $monthly = ['categories' => [], 'data' => []];
     $daily = [];
     foreach ($tmp as $month => $list) {
         foreach ($list as $day => $nb) {
             $daily[$month]['categories'][] = $day;
             $daily[$month]['data'][] = round($nb / self::$MAX * 100);
         }
         $monthly['categories'][] = $month;
         $monthly['data'][] = round(max($list) / self::$MAX * 100);
     }
     ksort($daily);
     foreach ($daily as $month => $value) {
         asort($value['categories']);
         $keys = array_keys($value['categories']);
         $tmp = [];
         foreach ($keys as $i => $key) {
             $tmp[$i] = $value['data'][$key];
         }
         $value['data'] = $tmp;
         $value['categories'] = array_values($value['categories']);
         $daily[$month] = $value;
     }
     asort($monthly['categories']);
     $keys = array_keys($monthly['categories']);
     $tmp = [];
     foreach ($keys as $i => $key) {
         $tmp[$i] = $monthly['data'][$key];
     }
     $monthly['data'] = $tmp;
     $monthly['categories'] = array_values($monthly['categories']);
     $months = $this->months;
     return view('stats.chart', compact('year', 'monthly', 'daily', 'months'));
 }
コード例 #2
0
 /**
  * Check available rooms
  *
  * @return array
  */
 public function checkAvailability(Request $request)
 {
     //add params start_date, end_date
     //Start date_input
     $input = $request->all();
     $currentOccupants = [];
     $rooms = Room::all();
     $check_date = Reservation::whereBetween('start_date', [$input['start_date'], $input['end_date']])->get();
     foreach ($rooms as $index => $room) {
         # code...
         $currentOccupants[$index] = Reservation::where('room_id', $room->id)->where('status', 'accepted')->where('start_date', '<=', [$input['start_date']])->where('end_date', '>=', [$input['end_date']])->count();
     }
     // //EOF date_input
     //display all_table
     $all_table = Room::where('availability', 'vacant')->get();
     // return view('welcome')->with('table',$table);
     return view('welcome')->with(compact('check_date', 'input', 'all_table', 'currentOccupants'));
 }
コード例 #3
0
 /**
  * List of Reservation in date given.
  *
  * @param $year
  * @param $month
  * @param $day
  * @return \Illuminate\View\View
  */
 private function day($year, $month, $day)
 {
     $dt = Carbon::createFromDate($year, 1, 1);
     $dt_diff = Carbon::createFromDate($year, 1, 1)->endOfYear();
     $reservations = Reservation::whereBetween('arrive_at', [$dt, $dt_diff])->get();
     $tmp = [];
     foreach ($reservations as $reservation) {
         if ($reservation->is_valid) {
             $reservation->arrive_at = Carbon::parse($reservation->arrive_at);
             $reservation->leave_at = Carbon::parse($reservation->leave_at);
             $tmp[] = $reservation;
         }
     }
     $reservations = $tmp;
     $dt = Carbon::createFromDate($year, $month, $day);
     $isTaken = [];
     if (count($reservations) > 0) {
         foreach ($reservations as $reservation) {
             $arrive_at = $reservation->arrive_at;
             $leave_at = $reservation->leave_at;
             if ($dt->between($arrive_at, $leave_at->addDay(), true)) {
                 $isTaken[] = $reservation;
             }
         }
     }
     $monthLitt = $this->months[$month - 1];
     $months = $this->months;
     return view('calendar.day', compact('month', 'months', 'monthLitt', 'year', 'day', 'isTaken'));
 }