diff --git a/app/Http/Controllers/CommentController.php b/app/Http/Controllers/CommentController.php new file mode 100644 index 0000000..eae99cb --- /dev/null +++ b/app/Http/Controllers/CommentController.php @@ -0,0 +1,46 @@ +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', 'نظر شما ثبت شد.'); + } +} + diff --git a/app/Http/Requests/CommentPostRequest.php b/app/Http/Requests/CommentPostRequest.php new file mode 100644 index 0000000..8b6ac44 --- /dev/null +++ b/app/Http/Requests/CommentPostRequest.php @@ -0,0 +1,55 @@ +|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', + ], + ]; + } + +} diff --git a/app/Models/Comment.php b/app/Models/Comment.php index 4349f86..9d426a2 100644 --- a/app/Models/Comment.php +++ b/app/Models/Comment.php @@ -6,12 +6,13 @@ namespace App\Models; +use App\Enums\CommentStatus; use Carbon\Carbon; use Illuminate\Database\Eloquent\Model; /** * Class Comment - * + * * @property int $id * @property int $user_id * @property int|null $flight_id @@ -21,7 +22,7 @@ use Illuminate\Database\Eloquent\Model; * @property int $status * @property Carbon $created_at * @property Carbon|null $updated_at - * + * * @property Flight|null $flight * @property Tour|null $tour * @property User $user @@ -38,7 +39,7 @@ class Comment extends Model 'flight_id' => 'int', 'tour_id' => 'int', 'rating' => 'int', - 'status' => 'int' + 'status' => CommentStatus::class, ]; protected $fillable = [ @@ -46,8 +47,9 @@ class Comment extends Model 'flight_id', 'tour_id', 'comment', - 'rating', - 'status' + 'status', + 'guest_name', + 'guest_email', ]; public function flight()