feat: add flight details page and comment system for users and guests
This commit is contained in:
@@ -6,4 +6,14 @@ enum FlightTripType: int
|
||||
{
|
||||
case ONEWAY = 0;
|
||||
case ROUNDTRIP = 1;
|
||||
|
||||
|
||||
public function label(): string
|
||||
{
|
||||
return match($this) {
|
||||
self::ONEWAY => 'یک طرفه',
|
||||
self::ROUNDTRIP => 'رفت و برگشت',
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
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;
|
||||
|
||||
@@ -29,8 +31,29 @@ class FlightController extends Controller
|
||||
public function show(Flight $flight)
|
||||
{
|
||||
$title = 'جزئیات پرواز';
|
||||
$flight = Flight::findOrFail($flight);
|
||||
|
||||
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', 'ثبت نظر با خطا مواجه شد.');
|
||||
dd($e->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Requests\Flight;
|
||||
|
||||
use Illuminate\Contracts\Validation\ValidationRule;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
class FlightCommentStoreRequest extends FormRequest
|
||||
{
|
||||
/**
|
||||
* Determine if the user is authorized to make this request.
|
||||
*/
|
||||
public function authorize(): bool
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
*
|
||||
* @return array<string, ValidationRule|array<mixed>|string>
|
||||
*/
|
||||
public function rules(): array
|
||||
{
|
||||
$isGuest = ! auth()->check();
|
||||
|
||||
return [
|
||||
'guest_name' => [
|
||||
$isGuest ? 'required' : 'nullable',
|
||||
'string',
|
||||
'max:255',
|
||||
],
|
||||
|
||||
'guest_email' => [
|
||||
$isGuest ? 'required' : 'nullable',
|
||||
'email',
|
||||
'max:255',
|
||||
],
|
||||
|
||||
'content' => [
|
||||
'required',
|
||||
'string',
|
||||
'min:5',
|
||||
'max:2000',
|
||||
],
|
||||
|
||||
'parent_id' => [
|
||||
'nullable',
|
||||
'integer',
|
||||
'exists:comments,id',
|
||||
],
|
||||
];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user