feat:implement comments controllers and form request and add comment model

This commit is contained in:
2026-08-17 13:05:39 +03:30
parent 0763752e00
commit effa596cd0
3 changed files with 108 additions and 5 deletions
@@ -0,0 +1,46 @@
<?php
namespace App\Http\Controllers;
use App\Enums\CommentStatus;
use App\Http\Requests\CommentPostRequest;
use App\Models\Comment;
use App\Models\Flight;
use App\Models\Tour;
use Illuminate\Http\Request;
class CommentController extends Controller
{
public function flightStore(CommentPostRequest $request, Flight $flight)
{
$data = $request->validated();
Comment::create([
'flight_id' => $flight->id,
'user_id' => auth()->id(),
'guest_name' => auth()->guest() ? $data['guest_name'] : null,
'guest_email'=> auth()->guest() ? $data['guest_email'] : null,
'comment' => $data['comment'],
'status' => CommentStatus::PENDING,
]);
return back()->with('success', 'نظر شما ثبت شد.');
}
public function tourStore(CommentPostRequest $request, Tour $tour)
{
$data = $request->validated();
Comment::create([
'tour_id' => $tour->id,
'user_id' => auth()->id(),
'guest_name' => auth()->guest() ? $data['guest_name'] : null,
'guest_email' => auth()->guest() ? $data['guest_email'] : null,
'comment' => $data['comment'],
'status' => CommentStatus::PENDING,
]);
return back()->with('success', 'نظر شما ثبت شد.');
}
}
+55
View File
@@ -0,0 +1,55 @@
<?php
namespace App\Http\Requests;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest;
class CommentPostRequest 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 [
'rating' => [
'required',
'integer',
'between:1,5',
],
'comment' => [
'required',
'string',
'min:3',
'max:1000',
],
'guest_name' => [
$isGuest ? 'required' : 'nullable',
'string',
'max:191',
],
'guest_email' => [
$isGuest ? 'required' : 'nullable',
'email',
'max:191',
],
];
}
}
+7 -5
View File
@@ -6,12 +6,13 @@
namespace App\Models; namespace App\Models;
use App\Enums\CommentStatus;
use Carbon\Carbon; use Carbon\Carbon;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
/** /**
* Class Comment * Class Comment
* *
* @property int $id * @property int $id
* @property int $user_id * @property int $user_id
* @property int|null $flight_id * @property int|null $flight_id
@@ -21,7 +22,7 @@ use Illuminate\Database\Eloquent\Model;
* @property int $status * @property int $status
* @property Carbon $created_at * @property Carbon $created_at
* @property Carbon|null $updated_at * @property Carbon|null $updated_at
* *
* @property Flight|null $flight * @property Flight|null $flight
* @property Tour|null $tour * @property Tour|null $tour
* @property User $user * @property User $user
@@ -38,7 +39,7 @@ class Comment extends Model
'flight_id' => 'int', 'flight_id' => 'int',
'tour_id' => 'int', 'tour_id' => 'int',
'rating' => 'int', 'rating' => 'int',
'status' => 'int' 'status' => CommentStatus::class,
]; ];
protected $fillable = [ protected $fillable = [
@@ -46,8 +47,9 @@ class Comment extends Model
'flight_id', 'flight_id',
'tour_id', 'tour_id',
'comment', 'comment',
'rating', 'status',
'status' 'guest_name',
'guest_email',
]; ];
public function flight() public function flight()