From 61e637f4700353a96e8a239696a150bc8976cf6c Mon Sep 17 00:00:00 2001
From: Andrej Jovanovski <andrejjovanovski17@gmail.com>
Date: Fri, 11 Oct 2024 13:23:43 +0200
Subject: [PATCH 1/2] fixed replies bug with authors

---
 app/Filament/Resources/CommentResource/Pages/ViewComment.php   | 2 ++
 .../RelationManagers/RepliesRelationManager.php                | 1 +
 .../2024_09_29_105411_create_user_feedback_table.php           | 3 +++
 3 files changed, 6 insertions(+)

diff --git a/app/Filament/Resources/CommentResource/Pages/ViewComment.php b/app/Filament/Resources/CommentResource/Pages/ViewComment.php
index 7867273..c2c46a1 100644
--- a/app/Filament/Resources/CommentResource/Pages/ViewComment.php
+++ b/app/Filament/Resources/CommentResource/Pages/ViewComment.php
@@ -16,4 +16,6 @@ class ViewComment extends ViewRecord
             Actions\EditAction::make(),
         ];
     }
+
+
 }
diff --git a/app/Filament/Resources/CommentResource/RelationManagers/RepliesRelationManager.php b/app/Filament/Resources/CommentResource/RelationManagers/RepliesRelationManager.php
index a61b1c5..60ea890 100644
--- a/app/Filament/Resources/CommentResource/RelationManagers/RepliesRelationManager.php
+++ b/app/Filament/Resources/CommentResource/RelationManagers/RepliesRelationManager.php
@@ -36,6 +36,7 @@ class RepliesRelationManager extends RelationManager
         return $table
             ->recordTitleAttribute('message')
             ->columns([
+                Tables\Columns\TextColumn::make('user.name'),
                 Tables\Columns\TextColumn::make('message'),
             ])
             ->filters([
diff --git a/database/migrations/2024_09_29_105411_create_user_feedback_table.php b/database/migrations/2024_09_29_105411_create_user_feedback_table.php
index b86c283..ef99d14 100644
--- a/database/migrations/2024_09_29_105411_create_user_feedback_table.php
+++ b/database/migrations/2024_09_29_105411_create_user_feedback_table.php
@@ -1,5 +1,6 @@
 <?php
 
+use App\Models\User;
 use Illuminate\Database\Migrations\Migration;
 use Illuminate\Database\Schema\Blueprint;
 use Illuminate\Support\Facades\Schema;
@@ -13,6 +14,8 @@ return new class extends Migration
     {
         Schema::create('user_feedback', function (Blueprint $table) {
             $table->id();
+            $table->foreignIdFor(User::class)->constrained();
+            $table->text('feedback');
             $table->timestamps();
         });
     }
-- 
GitLab


From 1a4e4688060728aadc039c60a8454e4235a45f4c Mon Sep 17 00:00:00 2001
From: Andrej Jovanovski <andrejjovanovski17@gmail.com>
Date: Fri, 11 Oct 2024 14:40:24 +0200
Subject: [PATCH 2/2] feat:user-feedback

---
 app/Filament/Resources/BadgeResource.php      |  1 -
 .../CommentRelationManager.php                |  1 +
 .../Resources/UserFeedbackResource.php        | 78 +++++++++++++++++++
 .../Pages/ListUserFeedback.php                | 19 +++++
 app/Models/User.php                           |  4 +
 app/Models/UserFeedback.php                   |  4 +
 6 files changed, 106 insertions(+), 1 deletion(-)
 create mode 100644 app/Filament/Resources/UserFeedbackResource.php
 create mode 100644 app/Filament/Resources/UserFeedbackResource/Pages/ListUserFeedback.php

diff --git a/app/Filament/Resources/BadgeResource.php b/app/Filament/Resources/BadgeResource.php
index 0a3a559..3b2ef6b 100644
--- a/app/Filament/Resources/BadgeResource.php
+++ b/app/Filament/Resources/BadgeResource.php
@@ -3,7 +3,6 @@
 namespace App\Filament\Resources;
 
 use App\Filament\Resources\BadgeResource\Pages;
-use App\Filament\Resources\BadgeResource\RelationManagers;
 use App\Models\Badge;
 use Filament\Actions\DeleteAction;
 use Filament\Actions\ViewAction;
diff --git a/app/Filament/Resources/BlogResource/RelationManagers/CommentRelationManager.php b/app/Filament/Resources/BlogResource/RelationManagers/CommentRelationManager.php
index 24cc81c..d3896b0 100644
--- a/app/Filament/Resources/BlogResource/RelationManagers/CommentRelationManager.php
+++ b/app/Filament/Resources/BlogResource/RelationManagers/CommentRelationManager.php
@@ -41,6 +41,7 @@ class CommentRelationManager extends RelationManager
         return $table
             ->recordTitleAttribute('comment')
             ->columns([
+                Tables\Columns\TextColumn::make('user.name'),
                 Tables\Columns\TextColumn::make('comment'),
             ])
             ->filters([
diff --git a/app/Filament/Resources/UserFeedbackResource.php b/app/Filament/Resources/UserFeedbackResource.php
new file mode 100644
index 0000000..b53bcd5
--- /dev/null
+++ b/app/Filament/Resources/UserFeedbackResource.php
@@ -0,0 +1,78 @@
+<?php
+
+namespace App\Filament\Resources;
+
+use App\Filament\Resources\UserFeedbackResource\Pages;
+use App\Models\UserFeedback;
+use Filament\Forms;
+use Filament\Forms\Form;
+use Filament\Resources\Resource;
+use Filament\Tables;
+use Filament\Tables\Table;
+use Illuminate\Database\Eloquent\Builder;
+use Illuminate\Database\Eloquent\SoftDeletingScope;
+
+class UserFeedbackResource extends Resource
+{
+    protected static ?string $model = UserFeedback::class;
+
+    protected static ?string $label = 'Feedback';
+
+    protected static ?string $navigationGroup = 'Users';
+
+    protected static ?string $navigationIcon = 'heroicon-o-inbox-arrow-down';
+
+    public static function form(Form $form): Form
+    {
+        return $form
+            ->schema([
+                Forms\Components\Select::make('user_id')
+                ->relationship('user', 'name')
+                ->preload()
+                ->required()
+                ->searchable(),
+                Forms\Components\TextInput::make('feedback')
+            ]);
+    }
+
+    public static function table(Table $table): Table
+    {
+        return $table
+            ->columns([
+                Tables\Columns\TextColumn::make('user.name'),
+                Tables\Columns\TextColumn::make('feedback')
+            ])
+            ->filters([
+                //
+            ])
+            ->actions([
+                Tables\Actions\ViewAction::make(),
+            ])
+            ->bulkActions([
+                Tables\Actions\BulkActionGroup::make([
+                    Tables\Actions\DeleteBulkAction::make(),
+                ]),
+            ]);
+    }
+
+    public static function getRelations(): array
+    {
+        return [
+            //
+        ];
+    }
+
+    public static function canCreate(): bool
+    {
+        return false;
+    }
+
+    public static function getPages(): array
+    {
+        return [
+            'index' => Pages\ListUserFeedback::route('/'),
+//            'create' => Pages\CreateUserFeedback::route('/create'),
+//            'edit' => Pages\EditUserFeedback::route('/{record}/edit'),
+        ];
+    }
+}
diff --git a/app/Filament/Resources/UserFeedbackResource/Pages/ListUserFeedback.php b/app/Filament/Resources/UserFeedbackResource/Pages/ListUserFeedback.php
new file mode 100644
index 0000000..a8d42d9
--- /dev/null
+++ b/app/Filament/Resources/UserFeedbackResource/Pages/ListUserFeedback.php
@@ -0,0 +1,19 @@
+<?php
+
+namespace App\Filament\Resources\UserFeedbackResource\Pages;
+
+use App\Filament\Resources\UserFeedbackResource;
+use Filament\Actions;
+use Filament\Resources\Pages\ListRecords;
+
+class ListUserFeedback extends ListRecords
+{
+    protected static string $resource = UserFeedbackResource::class;
+
+    protected function getHeaderActions(): array
+    {
+        return [
+            Actions\CreateAction::make(),
+        ];
+    }
+}
diff --git a/app/Models/User.php b/app/Models/User.php
index cbf5d7c..786d2f2 100644
--- a/app/Models/User.php
+++ b/app/Models/User.php
@@ -12,4 +12,8 @@ class User extends Model
     public function replies() {
         return $this->hasMany(Reply::class);
     }
+
+    public function feedback() {
+        return $this->hasMany(UserFeedback::class);
+    }
 }
diff --git a/app/Models/UserFeedback.php b/app/Models/UserFeedback.php
index 1014d42..1332aa3 100644
--- a/app/Models/UserFeedback.php
+++ b/app/Models/UserFeedback.php
@@ -8,4 +8,8 @@ use Illuminate\Database\Eloquent\Model;
 class UserFeedback extends Model
 {
     use HasFactory;
+
+    public function user() {
+        return $this->belongsTo(User::class);
+    }
 }
-- 
GitLab