コード例 #1
0
 public function statistics($dateString = null)
 {
     // echo('<pre>');
     Carbon::setLocale('nl');
     //check if valid date
     $isRightFormat = preg_match('(^[0-9]{4}-[0-9]{2}-[0-9]{2}$)', $dateString);
     if ($dateString && $isRightFormat && Carbon::createFromFormat('Y-m-d', $dateString) !== false) {
         $date = Carbon::createFromFormat('Y-m-d h:i:s', $dateString . ' 00:00:00', 'Europe/Brussels');
     } else {
         $date = Carbon::today('Europe/Brussels');
     }
     $clients = Client::where('entertime', '>', $date)->where('entertime', '<', $date->copy()->addDay());
     //get number of booked tables
     $clientSum = $clients->count();
     //get total amount of clients
     $clientAmount = $clients->sum('amount');
     //get number of orders
     $orders = Order::where('starttime', '>', $date)->where('starttime', '<', $date->copy()->addDay());
     $ordersCount = $orders->count('id');
     $longestTime = $shortestTime = null;
     $ordersGet = $orders->get();
     //get total number of staff members working today
     $staff = WaiterArea::groupBy('FK_waiter_id')->where('start_time', '>', $date)->where('end_time', '<', $date->copy()->addDay())->get()->count();
     //check all orders to set longest and shortest wait time
     foreach ($ordersGet as $order) {
         $starttime = Carbon::createFromFormat('Y-m-d H:i:s', $order->starttime);
         if ($order->endtime) {
             $endtime = Carbon::createFromFormat('Y-m-d H:i:s', $order->endtime);
         } else {
             $endtime = Carbon::now('Europe/Brussels');
         }
         $wait_time = $endtime->diffInSeconds($starttime);
         //if longesTime or shortestTime is null, set equal to first wait time
         if ($longestTime == null || $shortestTime == null) {
             $longestTime = $shortestTime = [];
             $longestTime['time'] = $shortestTime['time'] = $wait_time;
             $longestTime['start'] = $shortestTime['start'] = $starttime;
             $longestTime['end'] = $shortestTime['end'] = $endtime;
             $longestTime['table'] = $shortestTime['table'] = $order->client->table->number;
         }
         //if wait time is longer than old longest time, change longest time
         if ($wait_time > $longestTime['time']) {
             $longestTime['time'] = $wait_time;
             $longestTime['start'] = $starttime;
             $longestTime['end'] = $endtime;
             $longestTime['table'] = $order->client->table->number;
         }
         //if wait time is shorter than old shortest time, change shortest time
         if ($wait_time < $shortestTime['time']) {
             $shortestTime['time'] = $wait_time;
             $shortestTime['start'] = $starttime;
             $shortestTime['end'] = $endtime;
             $shortestTime['table'] = $order->client->table->number;
         }
     }
     //set times readable for humans
     if (isset($longestTime) && isset($shortestTime)) {
         $longestTime['time'] = $longestTime['end']->diffForHumans($longestTime['start'], true);
         $shortestTime['time'] = $shortestTime['end']->diffForHumans($shortestTime['start'], true);
     }
     $clientsHour = [];
     //make graph
     $clientsHour = $this->dayGraph($date, $clients->get());
     $data = [];
     $data['date'] = $date->toDateString();
     $data['clientSum'] = $clientSum;
     $data['clientAmount'] = $clientAmount;
     $data['orders'] = $ordersCount;
     $data['shortestTime'] = $shortestTime;
     $data['longestTime'] = $longestTime;
     $data['clientsHour'] = $clientsHour;
     $data['staff'] = $staff;
     return View('statistic')->with($data);
 }
コード例 #2
0
 /**
  * Update the specified resource in storage.
  *
  * @param  int  $id
  * @return Response
  */
 public function update(Request $request, $id)
 {
     $validator = $this->validator($request->all());
     if ($validator->fails()) {
         return redirect()->back()->withErrors($validator);
     }
     $start_time = Carbon::today();
     $end_time = Carbon::today();
     $start_time->hour = substr($request->input('start_time'), 0, 2);
     $start_time->minute = substr($request->input('start_time'), 3, 2);
     $end_time->hour = substr($request->input('end_time'), 0, 2);
     $end_time->minute = substr($request->input('end_time'), 3, 2);
     $waiterArea = WaiterArea::findorfail($id);
     $waiterArea->FK_area_id = $request->input('area');
     $waiterArea->start_time = $start_time;
     $waiterArea->end_time = $end_time;
     $waiterArea->save();
     return redirect()->back();
 }