Penambahan Stiker Harian
This commit is contained in:
@@ -14,7 +14,7 @@ class TransaksiParkirController extends Controller
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
return view ('operasional.trransaksi-parkir');
|
||||
return view ('operasional.transaksi-parkir');
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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,
|
||||
// ]);
|
||||
// }
|
||||
|
||||
128
app/Http/Controllers/Tools/StikerExtendedController.php
Normal file
128
app/Http/Controllers/Tools/StikerExtendedController.php
Normal file
@@ -0,0 +1,128 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Tools;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\TransaksiStiker;
|
||||
use App\Services\MakeStikerServices;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
||||
class StikerExtendedController extends Controller
|
||||
{
|
||||
|
||||
// protected function ;
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$jenisLangganan = DB::table('jenis_langganan')->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)
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
||||
@@ -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',
|
||||
|
||||
101
app/Services/MakeStikerServices.php
Normal file
101
app/Services/MakeStikerServices.php
Normal file
@@ -0,0 +1,101 @@
|
||||
<?php
|
||||
|
||||
namespace App\Services;
|
||||
|
||||
use App\Models\DetailTransaksiStiker;
|
||||
use App\Models\TransaksiStiker;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
||||
class MakeStikerServices
|
||||
{
|
||||
public function stikerExtend($sticker, Carbon $awal, Carbon $akhir)
|
||||
{
|
||||
Log::info(json_encode($sticker));
|
||||
return DB::transaction(function () use ($sticker) {
|
||||
|
||||
// LOCK index agar aman
|
||||
$index = DB::table('indexnum')
|
||||
->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;
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user