CODE
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Systemrezerwacji\Gateways\BackendGateway;
use App\Systemrezerwacji\interfaces\BackendRepositoryInterface;
use Carbon\Exceptions\Exception;
use Illuminate\Support\Facades\App;
use Symfony\Component\HttpKernel\Exception\HttpException;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use function PHPUnit\Framework\throwException;
class BackendController extends Controller
{
public function __construct(BackendRepositoryInterface $bR, BackendGateway $bG)
{
$this->bR = $bR;
$this->bG = $bG;
}
public function index(Request $request)
{
$objects = $this->bG->getReservations($request);
return view('backend.index',['objects'=>$objects]);
}
public function ajaxGetReservationData(Request $request)
{
$reservation = $this->bR->getReservationData($request);
return response()->json([
'room_number' => $reservation->room_number,
'day_in' => $reservation->day_in,
'day_out' => $reservation->day_out,
'FullName' => $reservation->user->FullName,
'userLink' => route('person', ['id' => $reservation->user->id]),
'confirmResLink' => route('confirmReservation', ['id' => $reservation->id]),
'deleteResLink' => route('deleteReservation', ['id' => $reservation->id]),
'status' => $reservation->status,
]);
}
public function cities(){
return view('backend.cities');
}
public function myobjects(){
return view('backend.myobjects');
}
public function profile(){
return view('backend.profile');
}
public function saveobject(){
return view('backend.saveobject');
}
public function saveroom(){
return view('backend.saveroom');
}
public function confirmReservation($id)
{
return 'to do';
}
public function deleteReservation($id)
{
return redirect()->back(); /* Lecture 34 */
}
}
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Systemrezerwacji\Gateways\BackendGateway;
use App\Systemrezerwacji\interfaces\BackendRepositoryInterface;
use Carbon\Exceptions\Exception;
use Illuminate\Support\Facades\App;
use Symfony\Component\HttpKernel\Exception\HttpException;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use function PHPUnit\Framework\throwException;
class BackendController extends Controller
{
public function __construct(BackendRepositoryInterface $bR, BackendGateway $bG)
{
$this->bR = $bR;
$this->bG = $bG;
}
public function index(Request $request)
{
$objects = $this->bG->getReservations($request);
return view('backend.index',['objects'=>$objects]);
}
public function ajaxGetReservationData(Request $request)
{
$reservation = $this->bR->getReservationData($request);
return response()->json([
'room_number' => $reservation->room_number,
'day_in' => $reservation->day_in,
'day_out' => $reservation->day_out,
'FullName' => $reservation->user->FullName,
'userLink' => route('person', ['id' => $reservation->user->id]),
'confirmResLink' => route('confirmReservation', ['id' => $reservation->id]),
'deleteResLink' => route('deleteReservation', ['id' => $reservation->id]),
'status' => $reservation->status,
]);
}
public function cities(){
return view('backend.cities');
}
public function myobjects(){
return view('backend.myobjects');
}
public function profile(){
return view('backend.profile');
}
public function saveobject(){
return view('backend.saveobject');
}
public function saveroom(){
return view('backend.saveroom');
}
public function confirmReservation($id)
{
return 'to do';
}
public function deleteReservation($id)
{
return redirect()->back(); /* Lecture 34 */
}
}
CODE
<?php
namespace App\Systemrezerwacji\Traits;
use Illuminate\Http\Request;
trait Ajax {
public function ajaxGetReservationData(Request $request)
{
$reservation = $this->bR->getReservationData($request);
return response()->json([
'room_number' => $reservation->room_number,
'day_in' => $reservation->day_in,
'day_out' => $reservation->day_out,
'FullName' => $reservation->user->FullName,
'userLink' => route('person', ['id' => $reservation->user->id]),
'confirmResLink' => route('confirmReservation', ['id' => $reservation->id]),
'deleteResLink' => route('deleteReservation', ['id' => $reservation->id]),
'status' => $reservation->status
]);
}
}
namespace App\Systemrezerwacji\Traits;
use Illuminate\Http\Request;
trait Ajax {
public function ajaxGetReservationData(Request $request)
{
$reservation = $this->bR->getReservationData($request);
return response()->json([
'room_number' => $reservation->room_number,
'day_in' => $reservation->day_in,
'day_out' => $reservation->day_out,
'FullName' => $reservation->user->FullName,
'userLink' => route('person', ['id' => $reservation->user->id]),
'confirmResLink' => route('confirmReservation', ['id' => $reservation->id]),
'deleteResLink' => route('deleteReservation', ['id' => $reservation->id]),
'status' => $reservation->status
]);
}
}
CODE
<?php
namespace App\Systemrezerwacji\Repositories;
use App\Systemrezerwacji\interfaces\BackendRepositoryInterface;
use App\Models\{TouristObject, Reservation};
class BackendRepository implements BackendRepositoryInterface {
public function getOwnerReservations($request)
{
return TouristObject::with([
'rooms' => function($q) {
$q->has('reservations');
},
'rooms.reservations.user'
])
->has('rooms.reservations')
->where('user_id', $request->user()->id)
->get();
}
public function getTouristReservations($request)
{
return TouristObject::with([
'rooms.reservations' => function($q) use($request) {
$q->where('user_id',$request->user()->id);
},
'rooms'=>function($q) use($request){
$q->whereHas('reservations',function($query) use($request){
$query->where('user_id',$request->user()->id);
});
},
'rooms.reservations.user'
])
->whereHas('rooms.reservations',function($q) use($request){
$q->where('user_id',$request->user()->id);
})
->get();
}
public function getReservationData($request)
{
return Reservation::with('user', 'room')
->where('room_id', $request->input('room_id'))
->where('day_in', '<=' ,$request->input('date'))
->where('day_out', '>=' , $request->input('date'))
->first();
}
}
namespace App\Systemrezerwacji\Repositories;
use App\Systemrezerwacji\interfaces\BackendRepositoryInterface;
use App\Models\{TouristObject, Reservation};
class BackendRepository implements BackendRepositoryInterface {
public function getOwnerReservations($request)
{
return TouristObject::with([
'rooms' => function($q) {
$q->has('reservations');
},
'rooms.reservations.user'
])
->has('rooms.reservations')
->where('user_id', $request->user()->id)
->get();
}
public function getTouristReservations($request)
{
return TouristObject::with([
'rooms.reservations' => function($q) use($request) {
$q->where('user_id',$request->user()->id);
},
'rooms'=>function($q) use($request){
$q->whereHas('reservations',function($query) use($request){
$query->where('user_id',$request->user()->id);
});
},
'rooms.reservations.user'
])
->whereHas('rooms.reservations',function($q) use($request){
$q->where('user_id',$request->user()->id);
})
->get();
}
public function getReservationData($request)
{
return Reservation::with('user', 'room')
->where('room_id', $request->input('room_id'))
->where('day_in', '<=' ,$request->input('date'))
->where('day_out', '>=' , $request->input('date'))
->first();
}
}