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 App\Models\ClassSession;
|
||||||
use Filament\Actions\Action;
|
use Filament\Actions\Action;
|
||||||
use Illuminate\Support\Str;
|
|
||||||
|
|
||||||
class ShareAssignmentAction extends Action
|
class ShareAssignmentAction extends Action
|
||||||
{
|
{
|
||||||
@ -23,14 +22,11 @@ protected function setUp(): void
|
|||||||
->link()
|
->link()
|
||||||
->action(function (array $arguments, $livewire) {
|
->action(function (array $arguments, $livewire) {
|
||||||
$course = $livewire->course;
|
$course = $livewire->course;
|
||||||
if (empty($course->sharing_token)) {
|
|
||||||
$course->update(['sharing_token' => Str::random(32)]);
|
|
||||||
}
|
|
||||||
|
|
||||||
$session = ClassSession::find($arguments['session'] ?? null);
|
$session = ClassSession::find($arguments['session'] ?? null);
|
||||||
|
|
||||||
$url = route('share.assignment', [
|
$url = route('share.assignment', [
|
||||||
'token' => $course->sharing_token,
|
'course' => $course->id,
|
||||||
'session_id' => $session ? $session->id : null,
|
'session_id' => $session ? $session->id : null,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|||||||
@ -4,7 +4,6 @@
|
|||||||
|
|
||||||
use App\Models\ClassSession;
|
use App\Models\ClassSession;
|
||||||
use Filament\Actions\Action;
|
use Filament\Actions\Action;
|
||||||
use Illuminate\Support\Str;
|
|
||||||
|
|
||||||
class ShareAttendanceAction extends Action
|
class ShareAttendanceAction extends Action
|
||||||
{
|
{
|
||||||
@ -23,14 +22,11 @@ protected function setUp(): void
|
|||||||
->link()
|
->link()
|
||||||
->action(function (array $arguments, $livewire) {
|
->action(function (array $arguments, $livewire) {
|
||||||
$course = $livewire->course;
|
$course = $livewire->course;
|
||||||
if (empty($course->sharing_token)) {
|
|
||||||
$course->update(['sharing_token' => Str::random(32)]);
|
|
||||||
}
|
|
||||||
|
|
||||||
$session = ClassSession::find($arguments['session'] ?? null);
|
$session = ClassSession::find($arguments['session'] ?? null);
|
||||||
$date = $session ? $session->date->toDateString() : 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}";
|
$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
|
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)
|
// Retrieve available assignments for the dropdown (from the whole course)
|
||||||
$availableAssignments = Assignment::where('course_id', $course->id)
|
$availableAssignments = Assignment::where('course_id', $course->id)
|
||||||
|
|||||||
@ -13,9 +13,8 @@
|
|||||||
|
|
||||||
class ShareAttendanceController extends Controller
|
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) {
|
$latestAttendance = Attendance::whereHas('courseSchedule', function ($query) use ($course) {
|
||||||
$query->where('course_id', $course->id);
|
$query->where('course_id', $course->id);
|
||||||
|
|||||||
@ -14,13 +14,6 @@ class Course extends Model
|
|||||||
|
|
||||||
protected $guarded = ['id'];
|
protected $guarded = ['id'];
|
||||||
|
|
||||||
protected static function booted()
|
|
||||||
{
|
|
||||||
static::creating(function ($course) {
|
|
||||||
$course->sharing_token = \Illuminate\Support\Str::random(32);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public function assignments(): HasMany
|
public function assignments(): HasMany
|
||||||
{
|
{
|
||||||
return $this->hasMany(Assignment::class);
|
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');
|
return view('welcome');
|
||||||
});
|
});
|
||||||
|
|
||||||
Route::get('/share/presensi/{token}', [ShareAttendanceController::class, 'show'])->name('share.attendance');
|
Route::get('/share/presensi/{course}', [ShareAttendanceController::class, 'show'])->name('share.attendance');
|
||||||
Route::get('/share/tugas/{token}', [ShareAssignmentController::class, 'show'])->name('share.assignment');
|
Route::get('/share/tugas/{course}', [ShareAssignmentController::class, 'show'])->name('share.assignment');
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user