diff --git a/.gitignore b/.gitignore index eb003b0..ff3078d 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,4 @@ npm-debug.log yarn-error.log /.idea /.vscode +/Data_lokasi diff --git a/app/Http/Controllers/Operasional/TransaksiParkirController.php b/app/Http/Controllers/Operasional/TransaksiParkirController.php index 0d48fba..1463c50 100644 --- a/app/Http/Controllers/Operasional/TransaksiParkirController.php +++ b/app/Http/Controllers/Operasional/TransaksiParkirController.php @@ -14,7 +14,7 @@ class TransaksiParkirController extends Controller */ public function index() { - return view ('operasional.trransaksi-parkir'); + return view ('operasional.transaksi-parkir'); } /** diff --git a/app/Http/Controllers/Report/LaporanStiker.php b/app/Http/Controllers/Report/LaporanStiker.php index cbe091c..40851f9 100644 --- a/app/Http/Controllers/Report/LaporanStiker.php +++ b/app/Http/Controllers/Report/LaporanStiker.php @@ -4,11 +4,123 @@ use App\Http\Controllers\Controller; use Illuminate\Http\Request; +use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Log; class LaporanStiker extends Controller { - public function laporanStikerHarian() + public function laporanStikerHarian() { - return view ('report.stiker.stiker-harian'); + return view('report.stiker.stiker-harian', [ + 'filterSelect' => [ + 'jenisLangganan' => DB::table('jenis_langganan')->get(), + 'jenisStiker' => DB::table('stasiunkerja')->get(), + ] + ]); + } + + public function dataStiker(Request $request) + { + // 🔐 Validasi dasar + $validated = $request->validate([ + 'tanggalAwal' => 'required|date', + 'tanggalAkhir' => 'required|date', + 'jenis_langganan' => 'array|nullable', + 'jenis_stiker' => 'array|nullable', + 'name' => 'string|nullable', + 'no_pol' => 'string|nullable', + ]); + + $query = DB::table('mergetransaksistikerdetail as a') + ->leftJoin('stasiunkerja as b', 'a.unit_kerja', '=', 'b.kode') + ->select('a.*', 'b.nama as jenis_langganan') + ->whereBetween('a.tgl_edited', [ + $validated['tanggalAwal'] . ' 00:00:00', + $validated['tanggalAkhir'] . ' 23:59:59' + ]) + + // 🔹 Conditional filters + ->when($request->name, fn ($q, $v) => + $q->where('a.nama', 'ILIKE', "%{$v}%") + ) + ->when($request->no_pol, fn ($q, $v) => + $q->where('a.nopol', 'ILIKE', "%{$v}%") + ) + ->when($request->jenis_langganan, fn ($q, $v) => + $q->whereIn('a.jenis_langganan', $v) + ) + ->when($request->jenis_stiker, fn ($q, $v) => + $q->whereIn('a.unit_kerja', $v) + ); + + // 🪵 Debug (aktifkan hanya saat local) + if (app()->isLocal()) { + Log::info('SQL Bindings', $query->getBindings()); + } + + return response()->json([ + 'success' => true, + 'data' => $query->get(), + ]); } } + + // public function laporanStikerHarian() + // { + // $jenisLangganan = DB::table('jenis_langganan')->get(); + // $jenisStiker = DB::table('stasiunkerja')->get(); + // $filterSelect = [ + // 'jenisLangganan' => $jenisLangganan, + // 'jenisStiker' => $jenisStiker + // ]; + + // return view ('report.stiker.stiker-harian', compact('filterSelect')); + // } + + // public function dataStiker (Request $request) + // { + // Log::info($request->jenis_langganan); + // $jenisLangganan = $request->jenis_langganan; + // $stasiunKerja = $request->jenis_stiker; + // $nama = $request->name; + // $nopol = $request->no_pol; + // $startDate = $request->tanggalAwal; + // $endDate = $request->tanggalAKhir; + // Log::info($startDate); + // Log::info($endDate); + // $query = DB::table('mergetransaksistikerdetail as a') + // ->leftJoin('stasiunkerja as b', 'a.unit_kerja', '=', 'b.kode') + // ->whereBetween('a.tgl_edited', [ + // $startDate . ' 00:00:00', + // $endDate . ' 23:59:59']) + // ->select( + // 'a.*', + // 'b.nama as jenis_langganan' + // ); + + // if (!empty($nama)) { + // $query->where('a.nama', 'LIKE', '%' . $nama . '%'); + // } + + // if (!empty($nopol)) { + // $query->where('a.nopol', 'LIKE', '%' . $nopol . '%'); + // } + + // if (!empty($jenisLangganan)) { + // $query->whereIn('a.jenis_langganan', $jenisLangganan); + // } + + // if (!empty($stasiunKerja)) { + // $query->whereIn('a.unit_kerja', $stasiunKerja); + // } + + // Log::info($query->getBindings()); + + // $data = $query->get(); + + + // return response()->json([ + // 'success' => true, + // 'data' => $data, + // ]); + // } diff --git a/app/Http/Controllers/Tools/StikerExtendedController.php b/app/Http/Controllers/Tools/StikerExtendedController.php new file mode 100644 index 0000000..9eaeaa9 --- /dev/null +++ b/app/Http/Controllers/Tools/StikerExtendedController.php @@ -0,0 +1,128 @@ +get(); + + // dd($jenisLangganan); + return view ('tools.stiker-extend', compact('jenisLangganan')); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\Http\Response + */ + public function create() + { + // + } + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + */ + public function store(Request $request, MakeStikerServices $makeStiker) + { + $request->validate([ + 'jenis_langganan' => 'required|array|min:1', + 'jenis_langganan.*' => 'string', + 'tanggal_mulai' => 'required|date', + 'tanggal_selesai' => 'required|date|after:tanggal_mulai', + ]); + + $tanggalMulai = Carbon::parse($request->tanggal_mulai); + $tanggalSelesai = Carbon::parse($request->tanggal_selesai); + $sticker = TransaksiStiker::select('notrans')->whereIn('jenis_langganan', $request->jenis_langganan)->get(); + // $sticker = DB::table('mergetransaksistikerdetail')->whereIn('jenis_langganan', $request->jenis_langganan)->get(); + foreach ($sticker as $row) { + // $makeStiker->stikerExtend($sticker); + $makeStiker->stikerExtend( + $row, + $tanggalMulai, + $tanggalSelesai + ); + } + + return response()->json([ + 'status' => true, + 'message' => 'Stiker berhasil diproses' + ]); + } + + /** + * Display the specified resource. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function show($id, Request $request) + { + Log::info($request->pilihannya); + $selected = $request->pilihannya; + $count = DB::table('transaksi_stiker') + ->whereIn('jenis_langganan', $selected) + ->get(); + + $jumlah = $count->count(); + + return response()->json([ + 'jumlah' => $jumlah + ]); + } + + /** + * Show the form for editing the specified resource. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function edit($id) + { + // + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param int $id + * @return \Illuminate\Http\Response + */ + public function update(Request $request, $id) + { + // + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function destroy($id) + { + // + } +} diff --git a/app/Models/TransaksiStiker.php b/app/Models/TransaksiStiker.php index f15b426..ef35540 100644 --- a/app/Models/TransaksiStiker.php +++ b/app/Models/TransaksiStiker.php @@ -10,6 +10,9 @@ class TransaksiStiker extends Model use HasFactory; protected $table = 'transaksi_stiker'; + const id = null; + const update_at = null; + const created_at = null; protected $fillable = [ 'notrans','nama','alamat','telepon','jenis_transaksi','awal ','harga','keterangan','tanggal','operator','akhir','maks','no_id ','unit_kerja','no_induk', diff --git a/app/Services/MakeStikerServices.php b/app/Services/MakeStikerServices.php new file mode 100644 index 0000000..05deb12 --- /dev/null +++ b/app/Services/MakeStikerServices.php @@ -0,0 +1,101 @@ +where('nama', 'sticker') + ->lockForUpdate() + ->first(); + + $nextIndex = str_pad($index->value + 1, 4, '0', STR_PAD_LEFT); + + // update index + DB::table('indexnum') + ->where('nama', 'sticker') + ->update(['value' => $nextIndex]); + + $notrans = sprintf( + '%s/STK/%s/%s', + $nextIndex, + Carbon::now()->format('m'), + Carbon::now()->format('Y') + ); + + $transStiker = TransaksiStiker::where('notrans', $sticker->notrans)->first(); + $detailTransStiker = DetailTransaksiStiker::where('notrans', $sticker->notrans)->first(); + Log::info(json_encode($transStiker)); + Log::info(json_encode($detailTransStiker)); + // HEADER + DB::table('transaksi_stiker')->insert([ + 'notrans' => $notrans, + 'nama' => $transStiker->nama, + 'alamat' => $transStiker->alamat, + 'telepon' => $transStiker->telepon, + 'jenis_transaksi' => $transStiker->jenis_transaksi, + 'harga' => $transStiker->harga, + 'keterangan' => $transStiker->keterangan, + 'tanggal' => Carbon::now(), + 'awal' => Carbon::now()->startOfMonth(), + 'akhir' => Carbon::now()->endOfMonth(), + 'maks' => $transStiker->maks, + 'no_id' => $transStiker->no_id, + 'unit_kerja' => $transStiker->unit_kerja, + 'no_induk' => $transStiker->no_induk, + 'area' => $transStiker->area, + 'jenis_stiker' => $transStiker->jenis_stiker, + 'unitno' => $transStiker->unitno, + 'exit_pass' => $transStiker->exit_pass, + 'hari_ke' => $transStiker->hari_ke, + 'jenis_langganan' => $transStiker->jenis_langganan, + 'no_kuitansi' => $transStiker->no_kuitansi, + 'tgl_edited' => Carbon::now(), + 'tipe_exit_pass' => $transStiker->tipe_exit_pass, + 'seq_code' => $transStiker->seq_code, + 'reserved' => $transStiker->reserved, + 'batasan_jam' => $transStiker->batasan_jam, + 'batasan_awal' => $transStiker->batasan_awal, + 'batasan_akhir' => $transStiker->batasan_akhir, + 'asuransi' => $transStiker->asuransi, + 'visitor' => $transStiker->visitor, + ]); + + // DETAIL + DB::table('detail_transaksi_stiker')->insert([ + 'notrans' => $notrans, + 'nopol' => $detailTransStiker->nopol, + 'jenis_mobil' => $detailTransStiker->jenis_mobil, + 'adm' => $detailTransStiker->adm, + 'kategori' => $detailTransStiker->kategori, + 'jenis_member' => $detailTransStiker->jenis_member, + 'akses' => $detailTransStiker->akses, + 'akses_out' => $detailTransStiker->akses_out, + 'status' => $detailTransStiker->status, + 'merk' => $detailTransStiker->merk, + 'tipe' => $detailTransStiker->tipe, + 'tahun' => $detailTransStiker->tahun, + 'warna' => $detailTransStiker->warna, + 'keterangan' => $detailTransStiker->keterangan, + ]); + + DB::table('indexnum') + ->where('nama', 'sticker') + ->update(['value' => $nextIndex]); + + return $notrans; + }); + } +} \ No newline at end of file diff --git a/public/css/style.css b/public/css/style.css index 2ba0795..0453bff 100755 --- a/public/css/style.css +++ b/public/css/style.css @@ -10697,7 +10697,7 @@ .tt-hint::-webkit-date-and-time-value { .form-control::placeholder, .typeahead::placeholder, .tt-query::placeholder, .tt-hint::placeholder { - color: #c9c8c8; + color: #444444; opacity: 1; } diff --git a/public/images/background/img-background.jpg b/public/images/background/img-background.jpg new file mode 120000 index 0000000..0089fd6 --- /dev/null +++ b/public/images/background/img-background.jpg @@ -0,0 +1 @@ +/opt/ltsp/i386/root/release/picture/login.jpg \ No newline at end of file diff --git a/resources/views/layouts/guest.blade.php b/resources/views/layouts/guest.blade.php index 2511861..6987137 100644 --- a/resources/views/layouts/guest.blade.php +++ b/resources/views/layouts/guest.blade.php @@ -5,7 +5,7 @@ - + diff --git a/resources/views/layouts/partial/horizontal-menu.blade.php b/resources/views/layouts/partial/horizontal-menu.blade.php index a5e8f12..2455dd5 100644 --- a/resources/views/layouts/partial/horizontal-menu.blade.php +++ b/resources/views/layouts/partial/horizontal-menu.blade.php @@ -8,20 +8,22 @@ - {{--