199 lines
10 KiB
PHP
199 lines
10 KiB
PHP
<?php
|
|
|
|
/*
|
|
* Web Routes
|
|
*
|
|
* File ini berisi seluruh rute aplikasi berbasis Laravel untuk fitur login, logout, dashboard,
|
|
* serta manajemen data seperti barang, supplier, karyawan, presensi, gaji, transaksi, dan laporan.
|
|
*
|
|
* Struktur rute dibagi berdasarkan peran pengguna: Pimpinan dan Operator.
|
|
*
|
|
* Fitur:
|
|
*
|
|
* 1. Autentikasi:
|
|
* - Halaman login (GET '/')
|
|
* - Proses login (POST '/')
|
|
* - Logout (POST '/logout')
|
|
*
|
|
* 2. Pimpinan:
|
|
* - Dashboard pimpinan
|
|
* - Laporan data barang
|
|
* - Laporan data karyawan
|
|
* - Laporan data supplier
|
|
* - Laporan data transaksi
|
|
*
|
|
* 3. Operator:
|
|
* - Dashboard operator
|
|
* - CRUD data barang (tambah, edit, hapus, update stok, cek barang)
|
|
* - CRUD data supplier (tambah, edit, hapus)
|
|
* - CRUD data karyawan (tambah, edit, hapus, pembayaran gaji)
|
|
* - Presensi karyawan (pilih karyawan, input masuk/pulang, simpan ton ikan)
|
|
* - Manajemen gaji per kloter (lihat, detail, bayar, export, kloter selesai)
|
|
* - Manajemen transaksi (tambah, edit, hapus, export, ambil data barang)
|
|
* - Pencatatan uang makan harian
|
|
*
|
|
* Catatan:
|
|
* - Middleware autentikasi dan role dapat diaktifkan dengan membuka komentar pada bagian terkait.
|
|
* - Pastikan semua controller dan view yang disebutkan tersedia pada aplikasi.
|
|
*/
|
|
|
|
use Illuminate\Support\Facades\Route;
|
|
|
|
use App\Mail\TestMail;
|
|
use Illuminate\Support\Facades\Mail;
|
|
|
|
use App\Http\Controllers\Auth\AuthenticatedSessionController;
|
|
use App\Http\Controllers\Auth\RegisterController;
|
|
use App\Http\Controllers\Auth\ForgotPasswordController;
|
|
use App\Http\Controllers\Auth\ResetPasswordController;
|
|
use App\Http\Controllers\DashboardController;
|
|
use App\Http\Controllers\PengeluaranController;
|
|
use App\Http\Controllers\AbsenController;
|
|
use App\Http\Controllers\BarangController;
|
|
use App\Http\Controllers\SupplierController;
|
|
use App\Http\Controllers\BarangMasukController;
|
|
use App\Http\Controllers\BarangKeluarController;
|
|
use App\Http\Controllers\GajiController;
|
|
use App\Http\Controllers\PresensiController;
|
|
use App\Http\Controllers\KaryawanController;
|
|
use App\Http\Controllers\LaporanController;
|
|
use App\Http\Controllers\DataKeuanganController;
|
|
use App\Http\Controllers\TonIkanController;
|
|
use App\Http\Controllers\TransaksiController;
|
|
|
|
Route::get('/welcome', function () {
|
|
return view('welcome');
|
|
})->name('welcome');
|
|
|
|
Route::get('/tes-email', function () {
|
|
Mail::to('izzulhaqzaindimad@gmail.com')->send(new TestMail());
|
|
return 'Email dikirim!';
|
|
});
|
|
|
|
// rute untuk Auth
|
|
Route::match(['get', 'post'], '/', function (\Illuminate\Http\Request $request) {
|
|
if ($request->isMethod('post')) {
|
|
return app(AuthenticatedSessionController::class)->store($request);
|
|
}
|
|
return view('login'); // pastikan file ini ada di resources/views/auth/login.blade.php
|
|
})->name('login');
|
|
|
|
// Fitur Register (gabungkan GET dan POST dalam satu route menggunakan match)
|
|
Route::match(['get', 'post'], '/register', function (\Illuminate\Http\Request $request) {
|
|
if ($request->isMethod('post')) {
|
|
return app(RegisterController::class)->store($request);
|
|
}
|
|
return app(RegisterController::class)->create($request);
|
|
})->name('register');
|
|
|
|
Route::get('password/forgot', [ForgotPasswordController::class, 'showLinkRequestForm'])->name('password.request');
|
|
Route::post('password/email', [ForgotPasswordController::class, 'sendResetLinkEmail'])->name('password.email');
|
|
|
|
Route::get('password/reset/{token}', [ResetPasswordController::class, 'showResetForm'])->name('password.reset');
|
|
Route::post('password/reset', [ResetPasswordController::class, 'reset'])->name('password.update');
|
|
|
|
Route::post('/logout', [AuthenticatedSessionController::class, 'destroy'])->name('logout');
|
|
|
|
// Pimpinan
|
|
// Route::middleware(['auth', 'role:pimpinan'])->group(function () {
|
|
Route::get('/pimpinan/dashboard', [DashboardController::class, 'pimpinan'])->name('dashboard.pimpinan');
|
|
Route::post('/dashboard-pimpinan/data', [DashboardController::class, 'ajaxData'])->name('dashboard.pimpinan.data');
|
|
|
|
Route::get('/pimpinan/laporan-barang', [LaporanController::class, 'barang'])->name('laporan.barang');
|
|
Route::get('/pimpinan/laporan-karyawan', [LaporanController::class, 'karyawan'])->name('laporan.karyawan');
|
|
Route::get('/pimpinan/laporan-supplier', [LaporanController::class, 'supplier'])->name('laporan.supplier');
|
|
Route::get('/pimpinan/laporan-transaksi', [LaporanController::class, 'transaksi'])->name('laporan.transaksi');
|
|
|
|
|
|
// });
|
|
|
|
// Operator
|
|
// Route::middleware(['auth', 'role:operator'])->group(function () {
|
|
// Route untuk Dashboard
|
|
Route::get('/operator/dashboard', [DashboardController::class, 'operator'])->name('dashboard.operator');
|
|
|
|
// route untuk data barang
|
|
Route::get('/operator/barang', [BarangController::class, 'index'])->name('barang.index');
|
|
Route::get('/operator/barang/create', [BarangController::class, 'create'])->name('barang.create');
|
|
Route::post('/operator/barang', [BarangController::class, 'store'])->name('barang.store');
|
|
Route::get('/operator/barang/{id}/edit', [BarangController::class, 'edit'])->name('barang.edit');
|
|
Route::put('/operator/barang/{id}', [BarangController::class, 'update'])->name('barang.update');
|
|
Route::delete('/operator/barang/{id}', [BarangController::class, 'destroy'])->name('barang.destroy');
|
|
Route::patch('/operator/barang/{id}/update-qty', [BarangController::class, 'updateQty'])->name('barang.updateQty');
|
|
Route::get('/barang/check', [BarangController::class, 'check'])->name('barang.check');
|
|
|
|
|
|
// route untuk data supplier
|
|
Route::get('/operator/suplier', [SupplierController::class, 'index'])->name('supplier.index');
|
|
Route::get('/operator/suplier/create', [SupplierController::class, 'create'])->name('supplier.create');
|
|
Route::post('/operator/suplier', [SupplierController::class, 'store'])->name('supplier.store');
|
|
Route::get('/operator/suplier/{id}/edit', [SupplierController::class, 'edit'])->name('supplier.edit');
|
|
Route::put('/operator/suplier/{id}', [SupplierController::class, 'update'])->name('supplier.update');
|
|
Route::delete('/operator/suplier/{id}', [SupplierController::class, 'destroy'])->name('supplier.destroy');
|
|
|
|
// route untuk data karyawan
|
|
Route::get('/operator/karyawan', [KaryawanController::class, 'index'])->name('karyawan.index');
|
|
Route::get('/operator/karyawan/create', [KaryawanController::class, 'create'])->name('karyawan.create');
|
|
Route::post('/operator/karyawan', [KaryawanController::class, 'store'])->name('karyawan.store');
|
|
Route::get('/operator/karyawan/{id}/edit', [KaryawanController::class, 'edit'])->name('karyawan.edit');
|
|
Route::put('/operator/karyawan/{id}', [KaryawanController::class, 'update'])->name('karyawan.update');
|
|
Route::delete('/operator/karyawan/{id}', [KaryawanController::class, 'destroy'])->name('karyawan.destroy');
|
|
|
|
Route::post('/operator/karyawan/{id}/gaji-bayar', [KaryawanController::class, 'gajiLunas'])->name('karyawan.gaji.bayar');
|
|
|
|
// route untuk tindak presensi
|
|
Route::post('/presensi/pilih-karyawan', [PresensiController::class, 'pilihKaryawan'])->name('presensi.pilih-karyawan');
|
|
|
|
Route::get('/operator/presensi/{kloter_id}', [PresensiController::class, 'index'])->name('presensi.index');
|
|
Route::get('/operator/presensi/create', [PresensiController::class, 'create'])->name('presensi.create');
|
|
Route::post('/operator/presensi', [PresensiController::class, 'store'])->name('presensi.store');
|
|
|
|
|
|
Route::post('/operator/gaji/{kloter_id}', [PresensiController::class, 'store'])->name('presensi.gaji.store');
|
|
|
|
Route::post('/presensi/{id}/masuk', [PresensiController::class, 'inputMasuk'])->name('presensi.masuk');
|
|
Route::post('/presensi/{id}/pulang', [PresensiController::class, 'inputPulang'])->name('presensi.pulang');
|
|
|
|
Route::post('/presensi/update-jam-masuk', [PresensiController::class, 'updateJamMasukAjax'])->name('presensi.updateJamMasukAjax');
|
|
Route::post('/presensi/update-jam-Pulang', [PresensiController::class, 'updateJamPulangAjax'])->name('presensi.updateJamPulangAjax');
|
|
|
|
Route::post('/presensi/tonikan/store', [PresensiController::class, 'simpanTonIkan'])->name('presensi.tonikan.store');
|
|
// Route::post('/presensi/tonikan/store', [PresensiController::class, 'simpanTonIkan'])->name('presensi.tonikan.store');
|
|
|
|
// route untuk data gaji per kloter
|
|
Route::post('/operator/gaji/{id}/lunas', [GajiController::class, 'bayar'])->name('gaji.lunas');
|
|
|
|
Route::get('/operator/gaji', [GajiController::class, 'index'])->name('gaji.kloter');
|
|
Route::get('/operator/gaji/{id}', [GajiController::class, 'detail'])->name('gaji.kloter.detail');
|
|
|
|
Route::post('/gaji/kloter/{id}/selesai', [GajiController::class, 'kloterSelesai'])->name('gaji.kloter.selesai');
|
|
|
|
// route untuk transaksi
|
|
Route::get('/operator/transaksi', [TransaksiController::class, 'index'])->name('operator.transaksi.index');
|
|
Route::get('/operator/transaksi/create', [TransaksiController::class, 'create'])->name('operator.transaksi.create');
|
|
Route::post('/operator/transaksi', [TransaksiController::class, 'store'])->name('operator.transaksi.store');
|
|
Route::get('/operator/transaksi/{id}/edit', [TransaksiController::class, 'edit'])->name('operator.transaksi.edit');
|
|
Route::delete('/operator/transaksi/{id}', [TransaksiController::class, 'destroy'])->name('operator.transaksi.destroy');
|
|
Route::put('/operator/transaksi/{id}', [TransaksiController::class, 'update'])->name('operator.transaksi.update');
|
|
|
|
Route::get('/operator/get-barang', function (Request $request) { // Mengambil kategori dari request
|
|
$kategori = $request->input('kategori', 'pemasukan');
|
|
$tipe = $kategori === 'pengeluaran' ? 'pendukung' : 'produk';
|
|
|
|
$barangs = Barang::with($tipe)->whereHas($tipe)->get();
|
|
|
|
return response()->json($barangs);
|
|
});
|
|
|
|
Route::post('/dashboard/uang-makan', [DashboardController::class, 'tambahUangMakanHarian'])->name('dashboard.uang-makan');
|
|
|
|
// export
|
|
Route::get('/gaji/kloter/{id}/export', [GajiController::class, 'export'])->name('gaji.kloter.export');
|
|
Route::get('/gaji/{kloter}/unduh-slip', [GajiController::class, 'unduhSlipGaji'])->name('gaji.unduh');
|
|
|
|
Route::get('operator/transaksi/export', [TransaksiController::class, 'exportExcel'])->name('operator.transaksi.export');
|
|
Route::get('/laporan/transaksi/export-pdf', [TransaksiController::class, 'exportPDF'])->name('operator.transaksi.export_pdf');
|
|
|
|
// });
|
|
|