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.216.199
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\CourseEnrollmentResource\Pages; use App\Filament\Resources\CourseEnrollmentResource\RelationManagers; 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\Support\Facades\Auth; class CourseEnrollmentResource extends Resource { protected static ?string $model = CourseEnrollment::class; protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack'; protected static ?string $navigationGroup = 'Learning Management'; protected static ?string $label = 'Subject Enrollments'; public static function form(Form $form): Form { return $form ->schema([ Forms\Components\Select::make('student_id') ->relationship('student', 'name', fn ($query) => $query->role('student')) ->native(false) ->preload() ->searchable() ->required() ->reactive() ->afterStateUpdated(function (callable $set, $state) { if ($state) { $student = \App\Models\User::find($state); $set('grade_id', $student->grade_id); // Auto-fill grade from student } }), Forms\Components\Select::make('course_id') ->relationship('course', 'name', function ($query) { $user = Auth::user(); if ($user->hasRole('teacher')) { $query->whereIn('id', $user->assignments->pluck('course_id')); } return $query; }) ->native(false) ->preload() ->searchable() ->required() ->reactive(), Forms\Components\TextInput::make('year') ->required() ->numeric() ->minValue(2000) ->maxValue(date('Y') + 1) ->reactive(), Forms\Components\TextInput::make('semester') ->required() ->reactive() ->rule(function ($get, $record) { return function ($attribute, $value, $fail) use ($get, $record) { $studentId = $get('student_id'); $courseId = $get('course_id'); $year = $get('year'); $gradeId = $get('grade_id'); if (!$studentId || !$courseId || !$year || !$value || !$gradeId) { return; } $query = CourseEnrollment::where('student_id', $studentId) ->where('course_id', $courseId) ->where('year', $year) ->where('semester', $value) ->where('grade_id', $gradeId); if ($record && $record->id) { $query->where('id', '!=', $record->id); } if ($query->exists()) { $gradeName = \App\Models\Grade::find($gradeId)->name; $fail("This student is already enrolled in this course for {$year}, Semester {$value}, {$gradeName}."); } }; }), Forms\Components\Select::make('grade_id') ->label('Grade') ->relationship('grade', 'name', function ($query) { $user = Auth::user(); if ($user->hasRole('teacher')) { $query->whereIn('id', $user->assignments->pluck('grade_id')); } return $query; }) ->required() ->searchable() ->preload() ->reactive() ->disabled(fn ($get) => $get('student_id') !== null) // Auto-filled from student ->dehydrated(true), ]); } public static function table(Table $table): Table { return $table ->query(function () { $user = Auth::user(); if ($user->hasRole('teacher')) { // Show only students enrolled in courses assigned to the teacher return CourseEnrollment::whereExists(function ($query) use ($user) { $query->selectRaw(1) ->from('course_assignments') ->whereColumn('course_assignments.course_id', 'course_enrollments.course_id') ->whereColumn('course_assignments.year', 'course_enrollments.year') ->whereColumn('course_assignments.semester', 'course_enrollments.semester') ->where('course_assignments.teacher_id', $user->id); }); } return CourseEnrollment::query(); // Admins see all enrollments }) ->columns([ Tables\Columns\TextColumn::make('student.name') ->sortable() ->searchable(), Tables\Columns\TextColumn::make('course.name') ->sortable() ->searchable(), Tables\Columns\TextColumn::make('year') ->sortable(), Tables\Columns\TextColumn::make('semester') ->sortable(), Tables\Columns\TextColumn::make('grade.name') ->label('Enrollment Grade') ->sortable() ->searchable(), Tables\Columns\TextColumn::make('assignment_grade') ->label('Assignment Grade') ->getStateUsing(function ($record) { $user = Auth::user(); if ($user->hasRole('teacher')) { $assignment = $user->assignments() ->where('course_id', $record->course_id) ->where('year', $record->year) ->where('semester', $record->semester) ->first(); return $assignment->grade->name ?? 'N/A'; } $assignment = \App\Models\CourseAssignment::where('course_id', $record->course_id) ->where('year', $record->year) ->where('semester', $record->semester) ->first(); return $assignment->grade->name ?? 'N/A'; }) ->sortable(query: function (Builder $query, string $direction) { $user = Auth::user(); if ($user->hasRole('teacher')) { $query->join('course_assignments', function ($join) use ($user) { $join->on('course_enrollments.course_id', '=', 'course_assignments.course_id') ->on('course_enrollments.year', '=', 'course_assignments.year') ->on('course_enrollments.semester', '=', 'course_assignments.semester') ->where('course_assignments.teacher_id', $user->id); }) ->join('grades', 'course_assignments.grade_id', '=', 'grades.id') ->orderBy('grades.name', $direction); } else { $query->leftJoin('course_assignments', function ($join) { $join->on('course_enrollments.course_id', '=', 'course_assignments.course_id') ->on('course_enrollments.year', '=', 'course_assignments.year') ->on('course_enrollments.semester', '=', 'course_assignments.semester'); }) ->leftJoin('grades', 'course_assignments.grade_id', '=', 'grades.id') ->orderBy('grades.name', $direction); } }) ->searchable(), ]) ->filters([ Tables\Filters\SelectFilter::make('student') ->relationship('student', 'name') ->label('Filter by Student'), Tables\Filters\SelectFilter::make('course') ->relationship('course', 'name', function ($query) { $user = Auth::user(); if ($user->hasRole('teacher')) { $query->whereIn('id', $user->assignments->pluck('course_id')); } }) ->label('Filter by Course'), Tables\Filters\SelectFilter::make('grade') ->relationship('grade', 'name', function ($query) { $user = Auth::user(); if ($user->hasRole('teacher')) { $query->whereIn('id', $user->assignments->pluck('grade_id')); } }) ->label('Filter by Enrollment Grade'), ]) ->actions([ Tables\Actions\EditAction::make(), Tables\Actions\DeleteAction::make(), ]) ->bulkActions([ Tables\Actions\DeleteBulkAction::make(), ]) ->headerActions([ Tables\Actions\Action::make('massEnroll') ->label('Mass Enroll Students') ->icon('heroicon-o-plus-circle') ->form([ Forms\Components\Select::make('grade_id') ->label('Grade') ->relationship('grade', 'name', function ($query) { $user = Auth::user(); if ($user->hasRole('teacher')) { $query->whereIn('id', $user->assignments->pluck('grade_id')); } }) ->required() ->searchable() ->preload(), Forms\Components\Select::make('course_id') ->label('Course') ->relationship('course', 'name', function ($query) { $user = Auth::user(); if ($user->hasRole('teacher')) { $query->whereIn('id', $user->assignments->pluck('course_id')); } }) ->required() ->searchable() ->preload(), Forms\Components\Select::make('student_ids') ->label('Students') ->multiple() ->options(\App\Models\User::role('student')->pluck('name', 'id')) ->required() ->searchable() ->preload(), Forms\Components\TextInput::make('year') ->required() ->numeric() ->minValue(2000) ->maxValue(date('Y') + 1), Forms\Components\TextInput::make('semester') ->required(), ]) ->action(function (array $data) { $studentIds = $data['student_ids']; $courseId = $data['course_id']; $year = $data['year']; $semester = $data['semester']; $gradeId = $data['grade_id']; foreach ($studentIds as $studentId) { $exists = CourseEnrollment::where('student_id', $studentId) ->where('course_id', $courseId) ->where('year', $year) ->where('semester', $semester) ->where('grade_id', $gradeId) ->exists(); if (!$exists) { CourseEnrollment::create([ 'student_id' => $studentId, 'course_id' => $courseId, 'year' => $year, 'semester' => $semester, 'grade_id' => $gradeId, ]); } } }) ->requiresConfirmation() ->modalHeading('Mass Enroll Students') ->modalDescription('Select students to enroll into a course.'), ]) ->defaultSort('year', 'desc'); } public static function getRelations(): array { return []; } public static function getPages(): array { return [ 'index' => Pages\ListCourseEnrollments::route('/'), 'create' => Pages\CreateCourseEnrollment::route('/create'), 'edit' => Pages\EditCourseEnrollment::route('/{record}/edit'), ]; } public static function getNavigationBadge(): ?string { $user = Auth::user(); if ($user->hasRole('admin')) { return (string) CourseEnrollment::count(); } elseif ($user->hasRole('teacher')) { return (string) CourseEnrollment::whereExists(function ($query) use ($user) { $query->selectRaw(1) ->from('course_assignments') ->whereColumn('course_assignments.course_id', 'course_enrollments.course_id') ->whereColumn('course_assignments.year', 'course_enrollments.year') ->whereColumn('course_assignments.semester', 'course_enrollments.semester') ->where('course_assignments.teacher_id', $user->id); })->distinct('student_id')->count('student_id'); } return (string) 0; } public static function canViewAny(): bool { return Auth::user()->hasAnyRole(['admin', 'teacher']); } public static function canCreate(): bool { return Auth::user()->hasRole('admin'); } public static function canEdit($record): bool { return true; //Auth::user()->hasRole('admin'); } public static function canDelete($record): bool { return Auth::user()->hasRole('admin'); } }