getUserIdForBooking($book); $event = Event::find($book["event_id"]); $reservationType = $event->reservation()->first()->name; //e.g. "Ohne Sitzplatz", ... $culturecardConc = Concession::where('name', 'Kulturkarte')->first(); if(isset($book["concession"])){ if(in_array($culturecardConc->id, $book["concession"])){ $culturecard = $this->getCultureCardWithConsessionAvailable(User::find($userid)); $culturecard->conc_ticket_event_id = $event->id; $culturecard->save(); } } // $returnResult = $this->checkCultureCardForBooking($book, $event, $userid); // if($returnResult) return $returnResult; $returnResult = $this->checkSeatsAreFreeForBooking($book); if($returnResult) return $returnResult; if ($reservationType == "Mit Platzwahl") { return ((new SeatReservationBookController())->store($book, $userid)); } else if ($reservationType == "Mit Tischwahl") { return ((new SeatReservationBookController())->store($book, $userid)); } else if ($reservationType == "Ohne Platzwahl") { return ((new NoSeatReservationBookController())->store($book, $userid)); } } private function getUserIdForBooking($book){ //normal user buys a ticket $userid = Auth::user()->id; //admin buys ticket for an existing user if (!empty($book["user"]) > 0 && Auth::check() && Auth::user()->isAdmin()) { $userid = $book["user"]; } if(!empty($book["newLastname"]) > 0){ $existingUser = User::where('firstname', $book["newFirstname"]) ->where('lastname', $book["newLastname"]) ->where('street', $book["newStreet"]) ->where('location', $book["newLocation"])->first(); if($existingUser == null){ $newUser = new User; $newUser->firstname = $book["newFirstname"]; $newUser->lastname = $book["newLastname"]; $newUser->street = $book["newStreet"]; $newUser->location = $book["newLocation"]; $newUser->email = $book["newLastname"]."-".$book["newFirstname"]."-".rand(100000,999999)."@inserted.user"; $newUser->password = "automaticallyGeneratedPwjiaghaighö"; $newUser->save(); $userid = $newUser->id; }else{ $userid = $existingUser->id; } } return $userid; } private function checkSeatsAreFreeForBooking($book){ if(isset($book["seat"])){ $boughtSeat = Seat::find($book["seat_id"]); foreach ($book["seat"] as $seat) { $splitted = explode("_", $seat); $x = $splitted[0]; $y = $splitted[1]; $singleSeat = $boughtSeat->singleSeats()->get()->where('x', $x)->where('y', $y)->first(); if($singleSeat->booked){ return 'Mindestens einer der ausgewählten Sitzplätze wurde bereits von jemanden anderen reserviert! Zur Startseite'; } } } return false; } }