MIF_E31220412/app/Http/Controllers/OngkirKotaController.php

84 lines
2.6 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\OngkirKota;
use Illuminate\Http\Request;
class OngkirKotaController extends Controller
{
public function index()
{
$kotas = OngkirKota::orderBy('nama_kota')->get();
return view('admin.ongkir-kota.index', compact('kotas'));
}
public function create()
{
return view('admin.ongkir-kota.create');
}
public function store(Request $request)
{
$request->validate([
'kotas.*.nama_kota' => 'required|string|max:255|unique:ongkir_kota,nama_kota',
'kotas.*.biaya_ongkir' => 'required|numeric|min:0',
], [
'kotas.*.nama_kota.required' => 'Nama kota harus diisi',
'kotas.*.nama_kota.unique' => 'Nama kota sudah ada',
'kotas.*.biaya_ongkir.required' => 'Biaya ongkir harus diisi',
'kotas.*.biaya_ongkir.numeric' => 'Biaya ongkir harus berupa angka',
'kotas.*.biaya_ongkir.min' => 'Biaya ongkir minimal 0',
]);
try {
foreach ($request->kotas as $kota) {
OngkirKota::create([
'nama_kota' => $kota['nama_kota'],
'biaya_ongkir' => $kota['biaya_ongkir'],
'status' => true
]);
}
return redirect()->route('admin.ongkir-kota.index')
->with('success', 'Data ongkir kota berhasil ditambahkan');
} catch (\Exception $e) {
return back()->with('error', 'Terjadi kesalahan: ' . $e->getMessage())
->withInput();
}
}
public function edit($id)
{
$kota = OngkirKota::findOrFail($id);
return view('admin.ongkir-kota.edit', compact('kota'));
}
public function update(Request $request, $id)
{
$kota = OngkirKota::findOrFail($id);
$request->validate([
'nama_kota' => 'required|string|max:255|unique:ongkir_kota,nama_kota,' . $id,
'biaya_ongkir' => 'required|numeric|min:0',
]);
$kota->update([
'nama_kota' => $request->nama_kota,
'biaya_ongkir' => $request->biaya_ongkir,
'status' => $request->has('status')
]);
return redirect()->route('admin.ongkir-kota.index')
->with('success', 'Data ongkir kota berhasil diperbarui');
}
public function destroy($id)
{
$kota = OngkirKota::findOrFail($id);
$kota->delete();
return redirect()->route('admin.ongkir-kota.index')
->with('success', 'Data ongkir kota berhasil dihapus');
}
}