update project
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
use App\Http\Controllers\Api\Integration\SchoolWorkflowController;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
Route::post('/schools', [SchoolWorkflowController::class, 'storeSchool']);
|
||||
|
||||
Route::middleware(['auth', 'school.access'])->group(function (): void {
|
||||
Route::get('/schools/{school}', [SchoolWorkflowController::class, 'showSchool']);
|
||||
|
||||
Route::post('/schools/{school}/students', [SchoolWorkflowController::class, 'storeStudent']);
|
||||
Route::get('/schools/{school}/students/{student}', [SchoolWorkflowController::class, 'showStudent']);
|
||||
|
||||
Route::post('/schools/{school}/attendance/scans', [SchoolWorkflowController::class, 'storeAttendanceScan']);
|
||||
|
||||
Route::post('/schools/{school}/communications/preview', [SchoolWorkflowController::class, 'previewCommunication']);
|
||||
Route::post('/schools/{school}/communications/send', [SchoolWorkflowController::class, 'sendCommunication']);
|
||||
|
||||
Route::post('/schools/{school}/finance/payment-files', [SchoolWorkflowController::class, 'storePaymentFile']);
|
||||
|
||||
Route::get('/schools/{school}/reports/daily', [SchoolWorkflowController::class, 'dailyReport']);
|
||||
});
|
||||
|
||||
Route::get('/health', function () {
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'message' => 'Laravel school API is running.',
|
||||
]);
|
||||
});
|
||||
|
||||
Route::prefix('v1')->group(function () {
|
||||
require __DIR__.'/finance_phase3.php';
|
||||
require __DIR__.'/attendance_phase4.php';
|
||||
require __DIR__.'/student_lifecycle_phase5.php';
|
||||
require __DIR__.'/communication_phase6.php';
|
||||
require __DIR__.'/reporting_phase7.php';
|
||||
require __DIR__.'/api_phase8.php';
|
||||
});
|
||||
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
use App\Http\Controllers\Api\V2\Attendance\ScanController;
|
||||
use App\Http\Controllers\Api\V2\Communication\BulkSendController;
|
||||
use App\Http\Controllers\Api\V2\Communication\RecipientPreviewController;
|
||||
use App\Http\Controllers\Api\V2\Finance\PaymentController;
|
||||
use App\Http\Controllers\Api\V2\Finance\PaymentFileController;
|
||||
use App\Http\Controllers\Api\V2\IslamicSundaySchool\QuranProgressController;
|
||||
use App\Http\Controllers\Api\V2\Reporting\ReportController;
|
||||
use App\Http\Controllers\Api\V2\Reporting\ReportExportController;
|
||||
use App\Http\Controllers\Api\V2\Students\StudentController;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
Route::middleware(['auth:api', 'school.context'])->prefix('api/v2')->name('api.v2.')->group(function (): void {
|
||||
Route::apiResource('students', StudentController::class)->only(['index', 'store', 'show', 'update']);
|
||||
Route::post('students/{student}/status-transitions', [StudentController::class, 'transition'])->name('students.status-transitions.store');
|
||||
|
||||
Route::post('finance/payments', [PaymentController::class, 'store'])->name('finance.payments.store');
|
||||
Route::patch('finance/payments/{payment}', [PaymentController::class, 'update'])->name('finance.payments.update');
|
||||
Route::post('finance/payments/{payment}/reverse', [PaymentController::class, 'reverse'])->name('finance.payments.reverse');
|
||||
Route::get('finance/payments/{payment}/file', [PaymentFileController::class, 'show'])->name('finance.payments.file');
|
||||
|
||||
Route::post('attendance/scans', [ScanController::class, 'store'])->name('attendance.scans.store');
|
||||
|
||||
Route::post('communication/recipient-previews', [RecipientPreviewController::class, 'store'])->name('communication.recipient-previews.store');
|
||||
Route::post('communication/bulk-sends', [BulkSendController::class, 'store'])->name('communication.bulk-sends.store');
|
||||
|
||||
Route::get('reporting/reports', [ReportController::class, 'index'])->name('reporting.reports.index');
|
||||
Route::post('reporting/reports/run', [ReportController::class, 'run'])->name('reporting.reports.run');
|
||||
Route::post('reporting/exports', [ReportExportController::class, 'store'])->name('reporting.exports.store');
|
||||
|
||||
Route::middleware(['ensure.domain.profile:islamic_sunday_school'])
|
||||
->prefix('islamic-sunday-school')
|
||||
->name('islamic-sunday-school.')
|
||||
->group(function (): void {
|
||||
Route::get('quran-progress', [QuranProgressController::class, 'index'])->name('quran-progress.index');
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use App\Http\Controllers\Attendance\ScannerController;
|
||||
use App\Http\Controllers\Attendance\StaffAttendanceController;
|
||||
use App\Http\Controllers\Attendance\StudentAttendanceController;
|
||||
use App\Http\Middleware\ResolveSchoolContext;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
Route::middleware(['auth:api', ResolveSchoolContext::class])->prefix('api/attendance')->group(function (): void {
|
||||
Route::post('scan', ScannerController::class)->name('attendance.scan.process');
|
||||
Route::post('students', [StudentAttendanceController::class, 'store'])->name('attendance.students.record');
|
||||
Route::post('staff', [StaffAttendanceController::class, 'store'])->name('attendance.staff.record');
|
||||
});
|
||||
@@ -0,0 +1,3 @@
|
||||
<?php
|
||||
use Illuminate\Support\Facades\Route; use App\Http\Middleware\ResolveSchoolContext; use App\Http\Controllers\Communication\{RecipientPreviewController,BulkMessageController,MessageTemplateController};
|
||||
Route::middleware(['auth:api', ResolveSchoolContext::class])->prefix('api/communication')->group(function (): void { Route::post('/recipient-previews', [RecipientPreviewController::class, 'store']); Route::post('/bulk-send', [BulkMessageController::class, 'send']); Route::post('/templates', [MessageTemplateController::class, 'store']); });
|
||||
@@ -0,0 +1,9 @@
|
||||
<?php
|
||||
|
||||
use App\Http\Controllers\Finance\PaymentFileController;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
Route::middleware(['auth:api', 'school.context'])->prefix('api/finance')->group(function (): void {
|
||||
Route::get('payments/{payment}/file', [PaymentFileController::class, 'show'])->whereNumber('payment')->name('finance.payments.file.show');
|
||||
// Deprecated compatibility marker: do not enable filename-only finance downloads.
|
||||
});
|
||||
@@ -0,0 +1,13 @@
|
||||
<?php
|
||||
|
||||
use App\Http\Controllers\Reporting\ReportController;
|
||||
use App\Http\Controllers\Reporting\ReportExportController;
|
||||
use App\Http\Controllers\Reporting\ScheduledReportController;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
Route::middleware(['auth:api', 'school.context'])->prefix('api/reports')->group(function (): void {
|
||||
Route::get('/', [ReportController::class, 'index']);
|
||||
Route::post('/run', [ReportController::class, 'run']);
|
||||
Route::post('/export', [ReportExportController::class, 'export']);
|
||||
Route::post('/schedule', [ScheduledReportController::class, 'store']);
|
||||
});
|
||||
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
use App\Domain\SchoolCore\Payments\PaymentFileController;
|
||||
use App\Domain\SchoolCore\Students\StudentReadController;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
Route::middleware(['auth:api', 'school.context'])->group(function (): void {
|
||||
Route::get('/students', [StudentReadController::class, 'index']);
|
||||
Route::get('/students/{student}', [StudentReadController::class, 'show']);
|
||||
Route::get('/payments/{payment}/files/{file}', [PaymentFileController::class, 'show']);
|
||||
});
|
||||
@@ -0,0 +1,3 @@
|
||||
<?php
|
||||
use App\Http\Controllers\Students\AssignmentController; use App\Http\Controllers\Students\EnrollmentController; use App\Http\Controllers\Students\GuardianController; use App\Http\Controllers\Students\IslamicSundaySchoolStudentProfileController; use App\Http\Controllers\Students\PromotionController; use App\Http\Controllers\Students\StudentLifecycleController; use Illuminate\Support\Facades\Route;
|
||||
Route::middleware(['auth:api','school.context'])->prefix('api/students')->group(function(): void { Route::get('/',[StudentLifecycleController::class,'index']); Route::post('/',[StudentLifecycleController::class,'store']); Route::get('/{student}',[StudentLifecycleController::class,'show']); Route::patch('/{student}',[StudentLifecycleController::class,'update']); Route::post('/{student}/status',[StudentLifecycleController::class,'transition']); Route::post('/guardians',[GuardianController::class,'store']); Route::post('/guardians/link',[GuardianController::class,'link']); Route::delete('/{student}/guardians/{guardian}',[GuardianController::class,'unlink']); Route::post('/enrollments',[EnrollmentController::class,'store']); Route::post('/{student}/withdraw',[EnrollmentController::class,'withdraw']); Route::post('/assignments',[AssignmentController::class,'store']); Route::delete('/assignments/{assignment}',[AssignmentController::class,'destroy']); Route::get('/{student}/promotion',[PromotionController::class,'evaluate']); Route::post('/promotion',[PromotionController::class,'promote']); Route::post('/promotion/bulk',[PromotionController::class,'bulk']); Route::post('/islamic-sunday-school/profile',[IslamicSundaySchoolStudentProfileController::class,'store']); });
|
||||
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
Route::get('/', function () {
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'message' => 'Laravel school API is running.',
|
||||
]);
|
||||
});
|
||||
Reference in New Issue
Block a user