initial commit
This commit is contained in:
+60
-35
@@ -6,101 +6,127 @@ use App\Http\Controllers\{
|
||||
InventoryController, TreatmentController, UserController,
|
||||
MedicalDashboardController, SettingController, MedicineController,
|
||||
CategoryController, FoodController, ReportController, SupplyController,
|
||||
MattingReportController, RoleController
|
||||
MattingReportController, RoleController, MedicalRecordController, CatRegistrationController
|
||||
};
|
||||
use App\Http\Controllers\Breeding\MattingController;
|
||||
use Laragear\WebAuthn\Http\Routes as WebAuthnRoutes;
|
||||
|
||||
// --- GUEST / PUBLIC ---
|
||||
WebAuthnRoutes::register();
|
||||
Route::get('/', fn() => redirect()->route('login'));
|
||||
|
||||
// --- AUTHENTICATED ROUTES ---
|
||||
Route::middleware(['auth', 'verified'])->group(function () {
|
||||
|
||||
// --- DASHBOARD & INSIGHTS ---
|
||||
// --- 1. DASHBOARD & INSIGHTS ---
|
||||
Route::get('/dashboard', [DashboardController::class, 'index'])->name('dashboard');
|
||||
Route::get('/medical/insights', [MedicalDashboardController::class, 'index'])->name('medical.dashboard');
|
||||
|
||||
// --- OPERASIONAL: CATS & MEDICAL ---
|
||||
// --- 2. CATS MANAGEMENT (Core Module) ---
|
||||
Route::prefix('cats')->name('cats.')->group(function () {
|
||||
// Bulk Weight Updates
|
||||
Route::get('/bulk-weight', [CatController::class, 'bulkWeightPage'])->name('bulk-weight');
|
||||
Route::get('/weight-template', [CatController::class, 'downloadWeightTemplate'])->name('weight-template');
|
||||
Route::post('/bulk-weight', [CatController::class, 'uploadWeight'])->name('bulk-weight.post');
|
||||
|
||||
// Registrasi & Pedigree Multi-Asosiasi
|
||||
Route::get('/{cat}/pedigree', [CatRegistrationController::class, 'index'])->name('pedigree');
|
||||
Route::post('/{cat}/registrations', [CatRegistrationController::class, 'store'])->name('registrations.store');
|
||||
Route::put('/{cat}/registrations/{registration}', [CatRegistrationController::class, 'update'])->name('registrations.update');
|
||||
Route::delete('/{cat}/registrations/{registration}', [CatRegistrationController::class, 'destroy'])->name('registrations.destroy');
|
||||
Route::post('/{cat}/registrations/{registration}/documents', [CatRegistrationController::class, 'storeDocument'])->name('registrations.documents.store');
|
||||
Route::delete('/{cat}/registrations/{registration}/documents/{document}', [CatRegistrationController::class, 'destroyDocument'])->name('registrations.documents.destroy');
|
||||
|
||||
// Alias lama dipertahankan agar bookmark/view lama tidak gagal.
|
||||
Route::post('/{cat}/upload-pedigree', [CatController::class, 'uploadPedigree'])->name('upload-pedigree');
|
||||
|
||||
// Reports & PDF
|
||||
Route::get('/{cat}/pdf', [CatController::class, 'downloadPdf'])->name('pdf');
|
||||
Route::get('/{cat}/medical-report', [CatController::class, 'downloadReport'])->name('medical-report');
|
||||
});
|
||||
Route::resource('cats', CatController::class);
|
||||
Route::get('/cats/{cat}/pdf', [CatController::class, 'downloadPdf'])->name('cats.pdf'); // Rute PDF Existing
|
||||
|
||||
// --- 3. MEDICAL & TREATMENTS (Operasional) ---
|
||||
// Medical Records (Individual & Bulk)
|
||||
Route::prefix('medical-records')->name('medical-records.')->group(function () {
|
||||
Route::get('/create/{cat}', [MedicalRecordController::class, 'create'])->name('create'); // Perbaikan parameter
|
||||
Route::post('/store', [MedicalRecordController::class, 'store'])->name('store');
|
||||
Route::get('/bulk', [MedicalRecordController::class, 'bulkCreate'])->name('bulk.create');
|
||||
Route::post('/bulk', [MedicalRecordController::class, 'bulkStore'])->name('bulk.store');
|
||||
});
|
||||
|
||||
// Treatment Log (Rekam Medis Klinis)
|
||||
Route::resource('treatments', TreatmentController::class);
|
||||
Route::resource('matting', MattingController::class);
|
||||
|
||||
// API Helpers (Data fetching untuk keperluan form dinamis - TETAP ADA)
|
||||
// Complete treatment - back to healthy
|
||||
Route::patch('/cats/{cat}/complete-treatment', [App\Http\Controllers\CatController::class, 'completeTreatment'])
|
||||
->name('cats.complete-treatment');
|
||||
|
||||
// API Helpers
|
||||
Route::get('/api/cats/{id}', [MattingController::class, 'getCatData'])->name('api.cat.details');
|
||||
|
||||
// --- MASTER CATEGORIES ---
|
||||
// Rute Sinkronisasi Kategori (Existing)
|
||||
// --- 4. MASTER DATA ---
|
||||
Route::post('/categories/recategorize', [CategoryController::class, 'recategorizeAll'])->name('categories.recategorize');
|
||||
Route::resource('categories', CategoryController::class);
|
||||
|
||||
// --- LOGISTIK & INVENTORI (MODUL LENGKAP) ---
|
||||
// --- 5. LOGISTIK & INVENTORI ---
|
||||
Route::prefix('inventory')->name('inventory.')->group(function () {
|
||||
|
||||
// Medicines (Template & Batch Upload Tetap Ada)
|
||||
// Medicines
|
||||
Route::prefix('medicines')->name('medicines.')->group(function() {
|
||||
Route::get('/template', [MedicineController::class, 'downloadTemplate'])->name('template');
|
||||
Route::post('/batch', [MedicineController::class, 'batchUpload'])->name('batch');
|
||||
});
|
||||
Route::resource('medicines', MedicineController::class);
|
||||
|
||||
// Foods (Template & Batch Upload Tetap Ada)
|
||||
// Foods
|
||||
Route::prefix('foods')->name('foods.')->group(function() {
|
||||
Route::get('/template', [FoodController::class, 'downloadTemplate'])->name('template');
|
||||
Route::post('/batch', [FoodController::class, 'batchUpload'])->name('batch');
|
||||
});
|
||||
Route::resource('foods', FoodController::class);
|
||||
|
||||
// Supplies (Template & Batch Upload Tetap Ada)
|
||||
// Supplies
|
||||
Route::prefix('supplies')->name('supplies.')->group(function() {
|
||||
Route::get('/template', [SupplyController::class, 'downloadTemplate'])->name('template');
|
||||
Route::post('/batch', [SupplyController::class, 'batchUpload'])->name('batch');
|
||||
});
|
||||
Route::resource('supplies', SupplyController::class);
|
||||
|
||||
// Utility: Update stok cepat (Patch Route Existing)
|
||||
// Utility
|
||||
Route::patch('/update-stock/{type}/{id}', [InventoryController::class, 'updateStock'])->name('update-stock');
|
||||
});
|
||||
|
||||
// --- USER PROFILE ---
|
||||
// --- 6. USER PROFILE ---
|
||||
Route::controller(ProfileController::class)->name('profile.')->group(function () {
|
||||
Route::get('/profile', 'edit')->name('edit');
|
||||
Route::patch('/profile', 'update')->name('update');
|
||||
Route::delete('/profile', 'destroy')->name('destroy');
|
||||
});
|
||||
|
||||
/**
|
||||
* PERBAIKAN: ADMINISTRATOR & INTELLIGENCE CENTER
|
||||
* Dipindahkan keluar dari middleware 'admin' agar akses bisa diatur via Role Management.
|
||||
* Prefix 'admin' dan Name 'admin.' tetap dipertahankan agar link sidebar tidak rusak.
|
||||
*/
|
||||
// --- 7. ADMINISTRATOR & PELAPORAN ---
|
||||
Route::prefix('admin')->name('admin.')->group(function () {
|
||||
|
||||
// 1. ROLE & PERMISSION MANAGEMENT (Pindah ke matriks izin)
|
||||
Route::prefix('roles')->name('roles.')->group(function() {
|
||||
Route::get('/', [RoleController::class, 'index'])->name('index');
|
||||
Route::get('/create', [RoleController::class, 'create'])->name('create');
|
||||
Route::post('/store', [RoleController::class, 'store'])->name('store');
|
||||
Route::get('/{id}/edit', [RoleController::class, 'edit'])->name('edit');
|
||||
Route::post('/{id}/update', [RoleController::class, 'update'])->name('update');
|
||||
|
||||
Route::delete('/{role}/destroy', [RoleController::class, 'destroy'])->name('destroy');
|
||||
});
|
||||
// Roles & Permissions
|
||||
Route::resource('roles', RoleController::class)->except(['show']);
|
||||
|
||||
// 2. USER MANAGEMENT & LOGS (Audit Trail Lengkap)
|
||||
// User Management
|
||||
Route::resource('users', UserController::class);
|
||||
|
||||
// Audit Trail (Activity Logs)
|
||||
Route::prefix('logs')->name('logs.')->group(function() {
|
||||
Route::get('/', [UserController::class, 'activityLogs'])->name('index');
|
||||
Route::get('/export', [UserController::class, 'exportLogs'])->name('export'); // Export Excel Audit Trail
|
||||
Route::delete('/clear', [UserController::class, 'clearLogs'])->name('clear'); // Bersihkan Log
|
||||
Route::get('/export', [UserController::class, 'exportLogs'])->name('export');
|
||||
Route::delete('/clear', [UserController::class, 'clearLogs'])->name('clear');
|
||||
});
|
||||
|
||||
// 3. INTELLIGENCE & REPORTS (Pusat Laporan)
|
||||
// Laporan
|
||||
Route::prefix('reports')->name('reports.')->group(function() {
|
||||
Route::get('/', [ReportController::class, 'index'])->name('index');
|
||||
Route::get('/export/{module}/{format}', [ReportController::class, 'export'])->name('export');
|
||||
|
||||
// Matting Report: Read-Only Archive (Histori Breeding)
|
||||
// Matting Archive
|
||||
Route::prefix('matting')->name('matting.')->group(function() {
|
||||
Route::get('/', [MattingReportController::class, 'index'])->name('index');
|
||||
Route::get('/{id}', [MattingReportController::class, 'show'])->name('show');
|
||||
@@ -108,12 +134,11 @@ Route::middleware(['auth', 'verified'])->group(function () {
|
||||
});
|
||||
});
|
||||
|
||||
// 4. GENERAL SYSTEM SETTINGS
|
||||
// System Settings
|
||||
Route::prefix('settings')->name('settings.')->group(function() {
|
||||
Route::get('/', [SettingController::class, 'index'])->name('index');
|
||||
Route::post('/update', [SettingController::class, 'update'])->name('update');
|
||||
});
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user