<?php
namespace App\Http\Controllers;
use App\Models\ItemPaket;
use App\Models\Paket;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Throwable;
class PaketController extends Controller
{
public function index()
{
return response()->view('Paket.index');
}
public function getPaket(Request $request)
{
$search = $request->search;
$query = Paket::latest();
if ($search) {
$query->where('nama_paket', 'like', '%' . $search . '%');
}
$paket = $query->paginate(10);
$data = $paket->items();
$datas = [];
foreach ($data as $item) {
$datas[] = [
'id' => $item->id,
'nama_paket' => $item->nama_paket,
'durasi_paket' => $item->durasi_paket,
'satuan_durasi_paket' => $item->satuan_durasi_paket,
'kategori' => $item->kategori,
'jenis' => $item->jenis,
'keterangan' => $item->keterangan,
];
}
if ($paket->total() > 0) {
return response()->json([
'status' => 'success',
'paket' => $datas,
'message' => 'Profile berhasil diperbarui.',
'next_page_url' => $paket->nextPageUrl(),
], 200);
} else {
return response()->json([
'status' => 'error',
'paket' => [],
'errors' => 'Data tidak tersedia.',
], 422);
}
}
public function store(Request $request)
{
try {
$validator = Validator::make($request->all(), [
'nama_paket' => 'required',
'durasi_paket' => 'required',
'satuan_durasi_paket' => 'required',
'keterangan' => 'required',
'kategori' => 'required',
'jenis' => 'required',
], [
'nama_paket.required' => 'Nama Paket wajib diisi.',
'durasi_paket.required' => 'Durasi wajib diisi.',
'satuan_durasi_paket.required' => 'Satuan Durasi wajib diisi.',
'keterangan.required' => 'Keterangan wajib diisi.',
'kategori.required' => 'Kategori wajib diisi.',
'jenis.required' => 'Jenis wajib diisi.',
]);
if ($validator->fails()) {
return response()->json([
'status' => 'error',
'errors' => $validator->errors(),
], 422);
}
$data = [
'nama_paket' => $request->nama_paket,
'durasi_paket' => $request->durasi_paket,
'satuan_durasi_paket' => $request->satuan_durasi_paket,
'kategori' => $request->kategori,
'jenis' => $request->jenis,
'keterangan' => $request->keterangan,
];
Paket::create($data);
return response()->json([
'status' => 'success',
'message' => 'Data Paket Berhasil Ditambahkan!.',
], 200);
} catch (Throwable $th) {
return response()->json([
'status' => 'error',
'message' => $th->getMessage(),
], 422);
}
}
public function update(Request $request, String $id)
{
try {
$paket = Paket::find($id);
$validator = Validator::make($request->all(), [
'nama_paket' => 'required',
'durasi_paket' => 'required',
'satuan_durasi_paket' => 'required',
'kategori' => 'required',
'keterangan' => 'required',
'jenis' => 'required',
], [
'nama_paket.required' => 'Nama Paket wajib diisi.',
'durasi.required' => 'Durasi wajib diisi.',
'satuan_durasi_paket.required' => 'Satuan Durasi wajib diisi.',
'kategori.required' => 'Kategori wajib diisi.',
'jenis.required' => 'Jenis wajib diisi.',
]);
if ($validator->fails()) {
return response()->json([
'status' => 'error',
'errors' => $validator->errors(),
], 422);
}
$data = [
'nama_paket' => $request->nama_paket,
'durasi_paket' => $request->durasi_paket,
'satuan_durasi_paket' => $request->satuan_durasi_paket,
'kategori' => $request->kategori,
'jenis' => $request->jenis,
'keterangan' => $request->keterangan,
];
$paket->update($data);
return response()->json([
'status' => 'success',
'message' => 'Data Paket Berhasil Ditambahkan!.',
], 200);
} catch (Throwable $th) {
return response()->json([
'status' => 'error',
'message' => $th->getMessage(),
], 422);
}
}
public function destroy(String $id)
{
try {
$paket = Paket::find($id);
if (!$paket) {
return response()->json([
'status' => 'error',
'message' => 'Pengguna tidak ditemukan.',
], 404);
}
$paket->delete();
return response()->json([
'status' => 'success',
'message' => 'Data berhasil dihapus!',
], 200);
} catch (Throwable $th) {
return response()->json([
'status' => 'error',
'message' => 'Terjadi kesalahan: ' . $th->getMessage(),
], 500);
}
}
public function detailPaket(String $id)
{
$paket = Paket::find($id);
$itemPaket = ItemPaket::latest()->get();
$data['paket'] = $paket;
$data['itemPaket'] = $itemPaket;
return response()->view('DetailPaket.index', $data);
}
public function getTotal(String $id)
{
$paket = Paket::find($id);
$total = $paket->getTotal();
$formattedTotal = number_format($total, 0, ','); // Format angka menjadi ribuan dengan koma/desimal Indonesia
return response()->json([
'status' => 'success',
'total' => $formattedTotal
], 200);
}
}
Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]