Linux sg77.dns-private.com 5.14.0-503.40.1.el9_5.x86_64 #1 SMP PREEMPT_DYNAMIC Mon May 5 06:06:04 EDT 2025 x86_64
LiteSpeed
Server IP : 135.181.230.13 & Your IP : 216.73.217.69
Domains :
Cant Read [ /etc/named.conf ]
User : pilasate
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
home /
pilasate /
schoolms /
app /
Filament /
Resources /
Delete
Unzip
Name
Size
Permission
Date
Action
AttendanceResource
[ DIR ]
drwxrwxrwx
2025-03-23 13:10
CourseAssignmentResource
[ DIR ]
drwxrwxrwx
2025-03-23 13:10
CourseEnrollmentResource
[ DIR ]
drwxrwxrwx
2025-03-23 13:10
GradeResource
[ DIR ]
drwxrwxrwx
2025-03-23 13:10
MarkResource
[ DIR ]
drwxrwxrwx
2025-03-23 13:10
MessageResource
[ DIR ]
drwxr-xr-x
2025-03-27 22:56
PromotionResource
[ DIR ]
drwxrwxrwx
2025-03-24 00:50
ReportResource
[ DIR ]
drwxrwxrwx
2025-03-24 10:11
StudentResource
[ DIR ]
drwxrwxrwx
2025-03-23 13:10
SubjectResource
[ DIR ]
drwxrwxrwx
2025-03-23 13:10
TeacherResource
[ DIR ]
drwxrwxrwx
2025-03-23 13:10
UserResource
[ DIR ]
drwxrwxrwx
2025-03-23 13:10
Widgets
[ DIR ]
drwxrwxrwx
2025-03-23 19:51
AttendanceResource.php
13.87
KB
-rw-rw-rw-
2025-03-24 07:12
CourseAssignmentResource.php
7.36
KB
-rw-rw-rw-
2025-03-27 22:46
CourseEnrollmentResource.php
15.35
KB
-rw-rw-rw-
2025-03-24 06:07
GradeResource.php
3.48
KB
-rw-rw-rw-
2025-03-24 06:33
MarkResource.php
17.63
KB
-rw-rw-rw-
2025-03-28 00:00
MessageResource.php
5.43
KB
-rw-r--r--
2025-03-28 00:04
PromotionResource.php
8.05
KB
-rw-rw-rw-
2025-03-24 03:04
StudentResource.php
5.58
KB
-rw-rw-rw-
2025-03-27 22:49
SubjectResource.php
2.81
KB
-rw-rw-rw-
2025-03-24 11:32
TeacherResource.php
3.92
KB
-rw-rw-rw-
2025-03-24 11:32
UserResource.php
4.91
KB
-rw-rw-rw-
2025-03-24 06:45
Save
Rename
<?php namespace App\Filament\Resources; use App\Filament\Resources\StudentResource\Pages; use App\Filament\Resources\StudentResource\RelationManagers; use App\Models\User; use App\Models\CourseEnrollment; 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; use Illuminate\Support\Facades\Auth; class StudentResource extends Resource { protected static ?string $model = User::class; protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack'; protected static ?string $navigationGroup = 'User Management'; protected static ?string $label = 'Students'; public static function form(Form $form): Form { return $form ->schema([ Forms\Components\TextInput::make('name') ->placeholder('Full Name') ->required(), Forms\Components\TextInput::make('email') ->email() ->required(), Forms\Components\TextInput::make('password') ->password() ->placeholder('Password') ->required(fn ($operation) => $operation === 'create') // Only required on create ->dehydrated(fn ($state) => filled($state)), // Only save if filled Forms\Components\Select::make('roles') ->relationship('roles', 'name') ->getOptionLabelFromRecordUsing(fn ($record) => $record->name) ->default('student') ->hidden() // Keep hidden since this is a StudentResource ->required(), Forms\Components\Select::make('grade_id') ->label('Grade') ->relationship('grade', 'name') ->required() ->searchable() ->preload() ->options(\App\Models\Grade::pluck('name', 'id')->all()) ->placeholder('Select a grade'), ]) ->columns(3); } public static function table(Table $table): Table { return $table ->query(User::whereHas('roles', fn ($query) => $query->where('name', 'student'))) ->columns([ Tables\Columns\TextColumn::make('name') ->sortable() ->searchable(), Tables\Columns\TextColumn::make('email') ->sortable() ->searchable(), Tables\Columns\TextColumn::make('grade.name') ->label('Grade') ->sortable() ->searchable(), Tables\Columns\TextColumn::make('roles.name') ->label('Role') ->default('student'), // Since this is StudentResource, it’s always 'student' ]) ->filters([ Tables\Filters\SelectFilter::make('grade') ->relationship('grade', 'name') ->label('Filter by Grade') ->preload(), ]) ->actions([ Tables\Actions\EditAction::make(), Tables\Actions\DeleteAction::make(), ]) ->bulkActions([ Tables\Actions\BulkActionGroup::make([ Tables\Actions\DeleteBulkAction::make(), ]), ]); } public static function getRelations(): array { return [ // Add relation managers if needed, e.g., RelationManagers\EnrollmentsRelationManager::class ]; } public static function getPages(): array { return [ 'create' => Pages\CreateStudent::route('/create'), 'index' => Pages\ListStudents::route('/'), 'edit' => Pages\EditStudent::route('/{record}/edit'), ]; } public static function getNavigationBadge(): ?string { $user = Auth::user(); if ($user->hasRole('admin')) { // Total students (users with 'student' role) return (string) User::role('student')->count(); } elseif ($user->hasRole('teacher')) { // Total unique students under this teacher's assigned courses return (string) CourseEnrollment::whereIn('course_id', $user->assignments->pluck('course_id')) ->distinct('student_id') ->count('student_id'); } // Default to 0 for other roles return (string) 0; } public static function canViewAny(): bool { return Auth::user()->hasRole(['admin', 'teacher']); // Restrict to admins and teachers } public static function canCreate(): bool { // Allow both teachers and admins to create students return Auth::user()->hasAnyRole(['teacher', 'admin']); } public static function canEdit($record): bool { $user = Auth::user(); // Allow admins to edit any record // Allow teachers to edit only their own records return $user->hasRole('admin') || ($user->hasRole('teacher') && $record->teacher_id === $user->id); } public static function canDelete($record): bool { return Auth::user()->hasRole('admin'); // Only admins can delete students } }