60 lines
1.8 KiB
PHP
60 lines
1.8 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Enums\FlightStatus;
|
|
use App\Http\Requests\Flight\FlightCommentStoreRequest;
|
|
use App\Models\Comment;
|
|
use App\Models\Flight;
|
|
use Illuminate\Http\Request;
|
|
|
|
class FlightController extends Controller
|
|
{
|
|
public function index(Request $request)
|
|
{
|
|
|
|
$sort = $request->query('sort', 'default');
|
|
$title = 'پروازها';
|
|
|
|
$flights = Flight::with(['airline', 'origin_airport.city', 'airport.city'])
|
|
->where('status', FlightStatus::AVAILABLE)
|
|
->filterFrom($request->input('from-destination'))
|
|
->filterTo($request->input('to-destination'))
|
|
->filterDepartureDate($request->input('journey-date'))
|
|
->applySort($sort)
|
|
->paginate(4)
|
|
->withQueryString();
|
|
|
|
return view('flights.index', compact('title', 'flights', 'sort'));
|
|
}
|
|
|
|
public function show(Flight $flight)
|
|
{
|
|
$title = 'جزئیات پرواز';
|
|
return view('flights.show' , compact('title' , 'flight'));
|
|
}
|
|
|
|
public function commentStore(FlightCommentStoreRequest $request, Flight $flight)
|
|
{
|
|
|
|
try {
|
|
Comment::create([
|
|
'flight_id' => $flight->id,
|
|
'user_id' => auth()->id(),
|
|
'parent_id' => $request->parent_id,
|
|
'guest_name' => auth()->check() ? null : $request->guest_name,
|
|
'guest_email' => auth()->check() ? null : $request->guest_email,
|
|
'content' => $request->content,
|
|
'status' => 0,
|
|
]);
|
|
|
|
return back()->with('success', 'نظر شما با موفقیت ثبت شد.');
|
|
} catch (\Exception $e) {
|
|
return back()
|
|
->withInput()
|
|
->with('error', 'ثبت نظر با خطا مواجه شد.');
|
|
|
|
}
|
|
}
|
|
}
|