Skip to content

Commit

Permalink
refactor: CourseRegistration - enum, migration, requests and routes
Browse files Browse the repository at this point in the history
  • Loading branch information
frooooooo7 committed Jan 19, 2025
1 parent 9db9200 commit 85c81ec
Show file tree
Hide file tree
Showing 6 changed files with 23 additions and 23 deletions.
7 changes: 7 additions & 0 deletions app/Enums/RegistrationStatus.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,11 @@ public static function values(): array
{
return array_column(self::cases(), 'value');
}
public static function acceptedAndRejectedValues(): array
{
return [
self::ACCEPTED->value,
self::REJECTED->value,
];
}
}
5 changes: 3 additions & 2 deletions app/Http/Controllers/CourseRegistrationController.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
use App\Http\Requests\UpdateCourseRegistrationRequest;
use App\Http\Resources\CourseRegistrationCollection;
use App\Http\Resources\CourseRegistrationResource;
use App\Models\Course;
use App\Models\CourseRegistration;
use App\Services\CourseRegistrationService;

Expand All @@ -18,9 +19,9 @@ public function index(): CourseRegistrationCollection
return new CourseRegistrationCollection($this->courseRegistrationService->index());
}

public function store(StoreCourseRegistrationRequest $request): CourseRegistrationResource
public function store(StoreCourseRegistrationRequest $request, Course $course): CourseRegistrationResource
{
return new CourseRegistrationResource($this->courseRegistrationService->create($request->getCourseRegistration()));
return new CourseRegistrationResource($this->courseRegistrationService->create($request->getCourseRegistration($course)));
}

public function update(UpdateCourseRegistrationRequest $request, CourseRegistration $courseRegistration): CourseRegistrationResource
Expand Down
9 changes: 4 additions & 5 deletions app/Http/Requests/StoreCourseRegistrationRequest.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

namespace App\Http\Requests;

use App\Models\Course;
use App\ValueObjects\CreateCourseRegistration;
use Illuminate\Foundation\Http\FormRequest;

Expand All @@ -22,15 +23,13 @@ public function authorize(): bool
*/
public function rules(): array
{
return [
'course_id' => 'required|integer|exists:courses,id',
];
return[];
}

public function getCourseRegistration(): CreateCourseRegistration
public function getCourseRegistration(Course $course): CreateCourseRegistration
{
return new CreateCourseRegistration(
$this->get('course_id'),
$course->id,
auth()->id()
);
}
Expand Down
2 changes: 1 addition & 1 deletion app/Http/Requests/UpdateCourseRegistrationRequest.php
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public function rules(): array
return [
'status' => [
'required',
Rule::in(RegistrationStatus::values()),
Rule::in(RegistrationStatus::acceptedAndRejectedValues()),
],
];
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
use Illuminate\Validation\Rule;

return new class extends Migration
{
Expand All @@ -16,11 +17,8 @@ public function up(): void
$table->id();
$table->foreignId('course_id')->constrained();
$table->foreignId('user_id')->constrained();
$table->enum('status', [
RegistrationStatus::PENDING->value,
RegistrationStatus::ACCEPTED->value,
RegistrationStatus::REJECTED->value,
])->default(RegistrationStatus::PENDING->value);
$table->enum('status',
RegistrationStatus::values())->default(RegistrationStatus::PENDING->value);
$table->timestamps();
});
}
Expand Down
15 changes: 5 additions & 10 deletions routes/api.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,17 @@
Route::get('user/{user}', 'show');
Route::put('user/{user}', 'update');
});
});

Route::middleware('auth:sanctum')->group(function () {
Route::controller(CreditCardController::class)->group(function () {
Route::get('user/{user}/credit-card', 'show');
Route::put('user/{user}/credit-card', 'update');
});

// Course Registrations
Route::resource('courses.registrations', CourseRegistrationController::class)->shallow();
});


Route::get('/user', function (Request $request) {
return $request->user();
})->middleware('auth:sanctum');
Expand All @@ -35,11 +37,4 @@
Route::get('/google/redirect', [GoogleAuthController::class, 'redirectToGoogle']);
Route::get('/google/callback', [GoogleAuthController::class, 'handleGoogleCallback']);

// CourseRegistrations
Route::middleware('auth:sanctum')->group(function () {
Route::controller(CourseRegistrationController::class)->group(function () {
Route::get('course-registrations', 'index');
Route::post('course-registrations', 'store');
Route::put('course-registrations/{courseRegistration}', 'update');
});
});

0 comments on commit 85c81ec

Please sign in to comment.