refactor: remove sharing token logic from Course model and update sharing routes to use Course ID
This commit is contained in:
parent
0b8d4ef09b
commit
7c74dd63e6
@ -4,7 +4,6 @@
|
||||
|
||||
use App\Models\ClassSession;
|
||||
use Filament\Actions\Action;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
class ShareAssignmentAction extends Action
|
||||
{
|
||||
@ -23,14 +22,11 @@ protected function setUp(): void
|
||||
->link()
|
||||
->action(function (array $arguments, $livewire) {
|
||||
$course = $livewire->course;
|
||||
if (empty($course->sharing_token)) {
|
||||
$course->update(['sharing_token' => Str::random(32)]);
|
||||
}
|
||||
|
||||
$session = ClassSession::find($arguments['session'] ?? null);
|
||||
|
||||
$url = route('share.assignment', [
|
||||
'token' => $course->sharing_token,
|
||||
'course' => $course->id,
|
||||
'session_id' => $session ? $session->id : null,
|
||||
]);
|
||||
|
||||
|
||||
@ -4,7 +4,6 @@
|
||||
|
||||
use App\Models\ClassSession;
|
||||
use Filament\Actions\Action;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
class ShareAttendanceAction extends Action
|
||||
{
|
||||
@ -23,14 +22,11 @@ protected function setUp(): void
|
||||
->link()
|
||||
->action(function (array $arguments, $livewire) {
|
||||
$course = $livewire->course;
|
||||
if (empty($course->sharing_token)) {
|
||||
$course->update(['sharing_token' => Str::random(32)]);
|
||||
}
|
||||
|
||||
$session = ClassSession::find($arguments['session'] ?? null);
|
||||
$date = $session ? $session->date->toDateString() : null;
|
||||
|
||||
$url = route('share.attendance', ['token' => $course->sharing_token, 'date' => $date]);
|
||||
$url = route('share.attendance', ['course' => $course->id, 'date' => $date]);
|
||||
|
||||
$text = "*Info Kelas {$course->name}*\nSesi ke-".($session->session_number ?? '-').' ('.($session->date->translatedFormat('d M Y') ?? '').")\n\nSilakan cek detail/rekap kehadiran melalui tautan ini:\n\n{$url}";
|
||||
|
||||
|
||||
@ -12,9 +12,8 @@
|
||||
|
||||
class ShareAssignmentController extends Controller
|
||||
{
|
||||
public function show(Request $request, string $token): View
|
||||
public function show(Request $request, Course $course): View
|
||||
{
|
||||
$course = Course::where('sharing_token', $token)->firstOrFail();
|
||||
|
||||
// Retrieve available assignments for the dropdown (from the whole course)
|
||||
$availableAssignments = Assignment::where('course_id', $course->id)
|
||||
|
||||
@ -13,9 +13,8 @@
|
||||
|
||||
class ShareAttendanceController extends Controller
|
||||
{
|
||||
public function show(Request $request, string $token): View
|
||||
public function show(Request $request, Course $course): View
|
||||
{
|
||||
$course = Course::where('sharing_token', $token)->firstOrFail();
|
||||
|
||||
$latestAttendance = Attendance::whereHas('courseSchedule', function ($query) use ($course) {
|
||||
$query->where('course_id', $course->id);
|
||||
|
||||
@ -14,13 +14,6 @@ class Course extends Model
|
||||
|
||||
protected $guarded = ['id'];
|
||||
|
||||
protected static function booted()
|
||||
{
|
||||
static::creating(function ($course) {
|
||||
$course->sharing_token = \Illuminate\Support\Str::random(32);
|
||||
});
|
||||
}
|
||||
|
||||
public function assignments(): HasMany
|
||||
{
|
||||
return $this->hasMany(Assignment::class);
|
||||
|
||||
@ -1,35 +0,0 @@
|
||||
<?php
|
||||
|
||||
use App\Models\Course;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::table('courses', function (Blueprint $table) {
|
||||
$table->string('sharing_token', 64)->nullable()->unique()->after('semester');
|
||||
});
|
||||
|
||||
// Populate existing courses with a random token
|
||||
Course::all()->each(function ($course) {
|
||||
$course->update(['sharing_token' => Str::random(32)]);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::table('courses', function (Blueprint $table) {
|
||||
$table->dropColumn('sharing_token');
|
||||
});
|
||||
}
|
||||
};
|
||||
@ -8,5 +8,5 @@
|
||||
return view('welcome');
|
||||
});
|
||||
|
||||
Route::get('/share/presensi/{token}', [ShareAttendanceController::class, 'show'])->name('share.attendance');
|
||||
Route::get('/share/tugas/{token}', [ShareAssignmentController::class, 'show'])->name('share.assignment');
|
||||
Route::get('/share/presensi/{course}', [ShareAttendanceController::class, 'show'])->name('share.attendance');
|
||||
Route::get('/share/tugas/{course}', [ShareAssignmentController::class, 'show'])->name('share.assignment');
|
||||
|
||||
Loading…
Reference in New Issue
Block a user