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