seat()->get()[$splitted[1]]; $now = new \DateTime(); $timeDisableReservation = \DateTime::createFromFormat('Y-m-d H:i:s', date("Y-m-d H:i:s", strtotime('+2 hours', $now->getTimestamp()))); // just hours before the event (+2 bc of time zone diff) $eventDate = \DateTime::createFromFormat('Y-m-d H:i:s', $event->end_date . " " . $event->starttime); if (!(($timeDisableReservation->getTimestamp() < $eventDate->getTimestamp()) || (Auth::check() && Auth::user()->isAdmin()))){ \Session::flash('flash_error', 'Der Kartenverkauf für das '.$event->title.' ist bereits beendet.'); return redirect('/home'); } $reservationType = $event->reservation()->first()->name; //e.g. "Ohne Sitzplatz", ... if ($reservationType == "Mit Platzwahl") { return ($this->showSeat($event, $seat)); } else if ($reservationType == "Mit Tischwahl") { return ($this->showTable($event, $seat)); } else if ($reservationType == "Ohne Platzwahl") { return ($this->showNoSeat($event, $seat)); } else { return ($this->showNoReservation($event, $seat)); } } private function showSeat($event, $seat) { $seatMap = null; $seatMap = $this->calcSeatMap($seat); $alreadyBooked = $seat->singleSeats()->get()->where('booked', '1'); $seatMap = $this->removeBookedOnes($seatMap, $alreadyBooked); $maxX = $seat->singleSeats()->max('x'); $maxY = $seat->singleSeats()->max('y'); $concessions = $event->concessions()->get(); $paymentmethods = $this->getPaymentmethods($event); $users = array(); if (Auth::check() && Auth::user()->isAdmin()) { $users = User::all(); $concessions = Concession::where('deleted', 0); } $users_identifier = User::select('id', DB::raw("concat(lastname, ' ', firstname, ' (',email,', ',street,', ',location,')') as identifier")); return view('book.viewSeat', compact('event', 'seatMap', 'maxX', 'maxY', 'concessions', 'paymentmethods', 'seat', 'users', 'users_identifier')); } public function printSeatMap($id){ $event=Event::find($id); $seat = $event->seat()->get()[0]; $seatMap = null; $seatMap = $this->calcSeatMap($seat); $alreadyBooked = $seat->singleSeats()->get()->where('booked', '1'); $seatMap = $this->removeBookedOnes($seatMap, $alreadyBooked); $maxX = $seat->singleSeats()->max('x'); $maxY = $seat->singleSeats()->max('y'); $seatName = []; for($i = 1; $i<=$maxX; $i++){ for($j = 1; $j<=$maxY; $j++){ $simpleSeatPlace = new FormatSeatWithNumbering($i, $j); $seatName[$i][$j] = $simpleSeatPlace->getText(); } } return view('admin.events.seatmap', compact('event', 'seatMap', 'maxX', 'maxY', 'seat', 'seatName')); } public function printSeatMapNew($id){ $event=Event::find($id); $sql = "select order1.id FROM orders AS order1 WHERE ( SELECT ( SELECT (SELECT(SELECT id FROM events WHERE id=s1.event_id limit 1) FROM seats AS s1 WHERE id=ss1.seat_id limit 1) FROM single_seats AS ss1 WHERE id=ssu1.single_seat_id limit 1) FROM single_seat_user AS ssu1 WHERE order_id=order1.id limit 1) LIKE '%".$event->id."%' "; /*dd($sql); $data = DB::select( DB::raw($sql) );*/ $data = DB::select(DB::raw($sql)); return view('admin.events.seatmapnew', compact("data")); } private function showTable($event, $seat) { $seatMap = null; $seatMap = $this->calcSeatMap($seat); $alreadyBooked = $seat->singleSeats()->get()->where('booked', '1'); $seatMap = $this->removeBookedOnes($seatMap, $alreadyBooked); $maxX = $seat->singleSeats()->max('x'); $maxY = $seat->singleSeats()->max('y'); if(strtotime('2019-05-31') >= strtotime('now')){ $concessions = Concession::where('name', 'Frühbucherrabatt')->get(); }else{ $concessions = $event->concessions()->get(); } $paymentmethods = $this->getPaymentmethods($event); $users = array(); if (Auth::check() && Auth::user()->isAdmin()) { $users = User::all(); $concessions = Concession::where('deleted', 0); } $users_identifier = User::select('id', DB::raw("concat(lastname, ' ', firstname, ' (',email,', ',street,', ',location,')') as identifier")); return view('book.viewTable', compact('event', 'seatMap', 'maxX', 'maxY', 'concessions', 'paymentmethods', 'seat', 'users', 'users_identifier')); } private function showNoSeat($event, $seat) { $concessions = $event->concessions()->get(); if (Auth::check() && Auth::user()->isAdmin()) { $concessions = Concession::where('deleted', 0); } $maxSeats = sizeof($event->seat()->first()->singleSeats()->get()); $availableSeats = $this->getAvailableSeats($event); $paymentmethods = $this->getPaymentmethods($event); $users_identifier = User::select('id', DB::raw("concat(lastname, ' ', firstname, ' (',email,', ',street,', ',location,')') as identifier")); return view('book.viewNoSeat', compact('event', 'concessions', 'maxSeats', 'availableSeats', 'paymentmethods', 'seat', 'users_identifier')); } private function showNoReservation($event, $seat) { return view('book.viewNoReservation'); } private function removeBookedOnes($seatMap, $alreadyBooked) { foreach ($alreadyBooked as $ab) { if($ab->x != 0) $seatMap = $this->removeSeatFromMap($seatMap, $ab); } return $seatMap; } private function getPaymentmethods($event) { $paymentmethods = Paymentmethod::where('name', '!=', 'Kulturkarte')->get(); if ($event->payableWithCultureCard) { $paymentmethods = Paymentmethod::all(); } return $paymentmethods; } private function getAvailableSeats($event){ return sizeof($event->seat()->first()->singleSeats()->where('booked', '0')->get()); } private function removeSeatFromMap($seatMap, $seat) { $x = $seat->x; $y = $seat->y; $linelength = strpos($seatMap, "\n"); $seatMap[($x - 1) * ($linelength + 1) + $y - 1] = 'z'; return ($seatMap); } }