init backend presensi

This commit is contained in:
mwpn
2026-03-05 14:37:36 +07:00
commit b4fda6b9c9
319 changed files with 27261 additions and 0 deletions

View File

@@ -0,0 +1,84 @@
# Module Loader Documentation
## Overview
ModuleLoader adalah sistem yang secara otomatis memuat route dari setiap modul di `app/Modules/*`. Setiap modul dapat memiliki file `Routes.php` yang akan otomatis dimuat saat aplikasi di-boot.
## Cara Kerja
1. **Automatic Discovery**: ModuleLoader secara otomatis memindai semua direktori di `app/Modules/*`
2. **Route Loading**: Jika sebuah modul memiliki file `Routes.php`, file tersebut akan otomatis dimuat
3. **Route Registration**: Route yang didefinisikan di file `Routes.php` modul akan terdaftar ke sistem routing CodeIgniter
## Struktur Modul
Setiap modul harus mengikuti struktur berikut:
```
app/Modules/
└── {ModuleName}/
├── Routes.php # File route untuk modul ini (opsional)
├── Controllers/
├── Models/
├── Services/
└── Entities/
```
## Cara Membuat Routes di Modul
Buat file `Routes.php` di root direktori modul Anda:
```php
<?php
/**
* {ModuleName} Module Routes
*
* @var RouteCollection $routes
*/
// Contoh route dengan group
$routes->group('api/module-name', ['namespace' => 'App\Modules\{ModuleName}\Controllers'], function($routes) {
$routes->get('/', 'ControllerName::index');
$routes->post('/', 'ControllerName::create');
$routes->get('(:num)', 'ControllerName::show/$1');
$routes->put('(:num)', 'ControllerName::update/$1');
$routes->delete('(:num)', 'ControllerName::delete/$1');
});
// Atau route langsung
$routes->get('api/module-name/endpoint', 'App\Modules\{ModuleName}\Controllers\ControllerName::method');
```
## Integrasi
ModuleLoader sudah terintegrasi di `app/Config/Routes.php`:
```php
use Config\ModuleLoader;
$moduleLoader = new ModuleLoader();
$moduleLoader->loadModuleRoutes($routes);
```
Route dari modul akan dimuat sebelum route utama aplikasi, sehingga route utama dapat override route modul jika diperlukan.
## API Methods
### `loadModuleRoutes(RouteCollection $routes): void`
Memuat semua route dari modul yang memiliki file `Routes.php`.
### `getAvailableModules(): array`
Mengembalikan array nama modul yang tersedia.
### `moduleExists(string $moduleName): bool`
Memeriksa apakah modul dengan nama tertentu ada.
### `getModulePath(string $moduleName): ?string`
Mengembalikan path lengkap ke modul, atau `null` jika tidak ditemukan.
## Catatan
- File `Routes.php` di modul harus menggunakan variabel `$routes` yang sudah tersedia
- Route dari modul dimuat dalam urutan alfabetis berdasarkan nama modul
- Jika ada konflik route, route yang dimuat terakhir akan mengambil prioritas