Filter periode member + harga otomatis + soft delete arsip + ganti alert ke Swal
This commit is contained in:
@@ -53,6 +53,18 @@ public function getMember(Request $request)
|
||||
$unitKerja = $request->input("departement");
|
||||
$vehicle = $request->input("vehicle");
|
||||
$isActive = $request->input("isActive");
|
||||
$tglAwal = $request->input("tgl_awal");
|
||||
$tglAkhir = $request->input("tgl_akhir");
|
||||
|
||||
if ($tglAwal && !preg_match('/^\d{4}-\d{2}-\d{2}$/', $tglAwal)) {
|
||||
return response()->json(['message' => 'Format periode awal tidak valid (YYYY-MM-DD).'], 422);
|
||||
}
|
||||
if ($tglAkhir && !preg_match('/^\d{4}-\d{2}-\d{2}$/', $tglAkhir)) {
|
||||
return response()->json(['message' => 'Format periode akhir tidak valid (YYYY-MM-DD).'], 422);
|
||||
}
|
||||
if ($tglAwal && $tglAkhir && $tglAkhir < $tglAwal) {
|
||||
return response()->json(['message' => 'Periode akhir tidak boleh sebelum periode awal.'], 422);
|
||||
}
|
||||
|
||||
if ($request->ajax()) {
|
||||
$dataStiker = DB::table("transaksi_stiker as ts")
|
||||
@@ -107,8 +119,31 @@ public function getMember(Request $request)
|
||||
}
|
||||
|
||||
if ($request->input("isActive") == "1") {
|
||||
// Langganan aktif: yang berlaku saat ini.
|
||||
$dataStiker->whereRaw("NOW() BETWEEN ts.awal AND ts.akhir");
|
||||
}
|
||||
|
||||
// Periode tanggal/terakhir-ubah: jalan bareng toggle aktif maupun mati.
|
||||
if ($tglAwal || $tglAkhir) {
|
||||
// Saring berdasarkan tanggal ATAU tgl_edited.
|
||||
$dataStiker->where(function ($w) use ($tglAwal, $tglAkhir) {
|
||||
$w->where(function ($x) use ($tglAwal, $tglAkhir) {
|
||||
if ($tglAwal) {
|
||||
$x->whereDate("ts.tanggal", ">=", $tglAwal);
|
||||
}
|
||||
if ($tglAkhir) {
|
||||
$x->whereDate("ts.tanggal", "<=", $tglAkhir);
|
||||
}
|
||||
})->orWhere(function ($x) use ($tglAwal, $tglAkhir) {
|
||||
if ($tglAwal) {
|
||||
$x->whereDate("ts.tgl_edited", ">=", $tglAwal);
|
||||
}
|
||||
if ($tglAkhir) {
|
||||
$x->whereDate("ts.tgl_edited", "<=", $tglAkhir);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
// Log::info($dataStiker->toSql());
|
||||
|
||||
$dataStiker = $dataStiker->get();
|
||||
@@ -422,8 +457,48 @@ public function update(Request $request, $id)
|
||||
* @param int $id
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
/**
|
||||
* Soft delete: arsipkan ke transaksi_stiker_res, lalu hapus baris asli
|
||||
* (header + detail kendaraan + kartu) dalam satu transaksi. Tanpa hard-delete
|
||||
* tanpa jejak — data tersimpan di tabel _res.
|
||||
*/
|
||||
public function destroy($id)
|
||||
{
|
||||
//
|
||||
return DB::transaction(function () use ($id) {
|
||||
$trx = DB::table("transaksi_stiker")->where("notrans", $id)->first();
|
||||
if (!$trx) {
|
||||
return response()->json(["success" => false, "message" => "Data tidak ditemukan."], 404);
|
||||
}
|
||||
|
||||
$detail = DB::table("detail_transaksi_stiker")->where("notrans", $id)->orderBy("nopol")->first();
|
||||
|
||||
DB::table("transaksi_stiker_res")->insert([
|
||||
"notrans" => $trx->notrans,
|
||||
"nama" => $trx->nama,
|
||||
"alamat" => $trx->alamat,
|
||||
"telepon" => $trx->telepon,
|
||||
"jenis_transaksi" => $trx->jenis_transaksi,
|
||||
"awal" => $trx->awal,
|
||||
"harga" => $trx->harga,
|
||||
"keterangan" => $trx->keterangan,
|
||||
"tanggal" => $trx->tanggal,
|
||||
"operator" => $trx->operator,
|
||||
"akhir" => $trx->akhir,
|
||||
"maks" => $trx->maks,
|
||||
"no_id" => $trx->no_id,
|
||||
"unit_kerja" => $trx->unit_kerja,
|
||||
"no_induk" => $trx->no_induk,
|
||||
"nopol" => $detail->nopol ?? null,
|
||||
"jenis_mobil" => $detail->jenis_mobil ?? null,
|
||||
"adm" => $detail->adm ?? null,
|
||||
"svr_date" => now(),
|
||||
]);
|
||||
|
||||
DB::table("detail_transaksi_stiker")->where("notrans", $id)->delete();
|
||||
DB::table("card_member")->where("notrans", $trx->no_id)->delete();
|
||||
DB::table("transaksi_stiker")->where("notrans", $id)->delete();
|
||||
|
||||
return response()->json(["success" => true, "message" => "Data diarsipkan ke transaksi_stiker_res."]);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user