From 79c91d83e54042ec82a18337ea6fa97cbd4d445c Mon Sep 17 00:00:00 2001 From: ahmadafriadi Date: Tue, 10 Mar 2026 14:05:41 +0700 Subject: [PATCH] Update Master --- .../Controllers/DesaKelurahanController.php | 10 - app/Http/Controllers/HomeController.php | 13 - .../Controllers/KabupatenKotaController.php | 35 - app/Http/Controllers/KecamatanController.php | 33 - app/Http/Controllers/ProvinsiController.php | 37 -- app/Http/Controllers/UserController.php | 37 -- app/Http/Controllers/UserRoleController.php | 23 - app/Http/Controllers/Web/AdatController.php | 146 +++++ .../Web/AkselerasiDashboardController.php | 3 +- .../Controllers/{ => Web}/AuthController.php | 16 +- .../Web/DesaKelurahanController.php | 155 +++++ .../Web/HilirisasiDashboardController.php | 3 +- app/Http/Controllers/Web/HomeController.php | 15 + .../Web/KabupatenKotaController.php | 153 +++++ .../Controllers/Web/KecamatanController.php | 153 +++++ .../Controllers/Web/KeluargaController.php | 134 ++++ .../Controllers/Web/KomoditasController.php | 81 +++ .../Web/KonektivitasDashboardController.php | 3 +- app/Http/Controllers/Web/LahanController.php | 82 +++ .../Controllers/Web/ProfileController.php | 209 ++++++ .../Controllers/Web/ProvinsiController.php | 133 ++++ .../Web/ResiliensiDashboardController.php | 3 +- .../Web/SummaryDashboardController.php | 9 +- .../Controllers/Web/TanamanController.php | 86 +++ app/Http/Controllers/Web/UserController.php | 96 +++ app/Models/Penduduk/Keluarga.php | 36 ++ app/Models/Penduduk/Profile.php | 10 + app/Models/Pertanian/Adat.php | 32 + .../{Komoditas => Pertanian}/Komoditas.php | 11 +- app/Models/Pertanian/Lahan.php | 45 ++ app/Models/Pertanian/Tanaman.php | 44 ++ app/Models/Profile.php | 23 +- app/Models/Wilayah/DesaKelurahan.php | 4 + app/Models/Wilayah/KabupatenKota.php | 7 + app/Models/Wilayah/Kecamatan.php | 10 +- app/Models/Wilayah/Provinsi.php | 9 + .../2026_02_20_131504_create_lahans_table.php | 2 +- resources/views/auth/layout.blade.php | 2 +- resources/views/auth/login.blade.php | 2 +- resources/views/auth/register.blade.php | 2 +- resources/views/layout/header.blade.php | 3 +- resources/views/layout/main.blade.php | 5 +- resources/views/layout/sidebar.blade.php | 57 +- resources/views/master/adat/add.blade.php | 53 ++ resources/views/master/adat/edit.blade.php | 54 ++ resources/views/master/adat/index.blade.php | 341 ++++++++++ resources/views/master/adat/view.blade.php | 40 ++ .../views/master/desakelurahan/add.blade.php | 55 ++ .../views/master/desakelurahan/edit.blade.php | 57 ++ .../master/desakelurahan/index.blade.php | 324 ++++++++++ .../views/master/desakelurahan/view.blade.php | 44 ++ .../views/master/kabupatenkota/add.blade.php | 56 ++ .../views/master/kabupatenkota/edit.blade.php | 55 ++ .../master/kabupatenkota/index.blade.php | 274 +++++++- .../views/master/kabupatenkota/view.blade.php | 34 + .../views/master/kecamatan/add.blade.php | 49 ++ .../views/master/kecamatan/edit.blade.php | 50 ++ .../views/master/kecamatan/index.blade.php | 333 +++++++++- .../views/master/kecamatan/view.blade.php | 40 ++ resources/views/master/keluarga/add.blade.php | 228 +++++++ .../views/master/keluarga/edit.blade.php | 252 ++++++++ .../views/master/keluarga/index.blade.php | 117 ++++ .../views/master/keluarga/view.blade.php | 92 +++ .../views/master/komoditas/add.blade.php | 19 + .../views/master/komoditas/edit.blade.php | 22 + .../views/master/komoditas/index.blade.php | 238 +++++++ .../views/master/komoditas/view.blade.php | 17 + resources/views/master/lahan/index.blade.php | 118 ++++ .../views/master/lahan/view.blade copy.php | 212 +++++++ resources/views/master/lahan/view.blade.php | 221 +++++++ resources/views/master/profile/add.blade.php | 267 ++++++++ resources/views/master/profile/edit.blade.php | 300 +++++++++ .../views/master/profile/index.blade.php | 108 ++++ resources/views/master/profile/view.blade.php | 145 +++++ resources/views/master/provinsi/add.blade.php | 66 ++ .../views/master/provinsi/edit.blade.php | 44 ++ .../views/master/provinsi/index.blade.php | 247 +++++++- .../views/master/provinsi/view.blade.php | 32 + resources/views/master/tanaman/add.blade.php | 237 +++++++ .../views/master/tanaman/index.blade.php | 83 +++ resources/views/master/tanaman/view.blade.php | 170 +++++ resources/views/master/users/add.blade.php | 43 ++ resources/views/master/users/edit.blade.php | 45 ++ resources/views/master/users/index.blade.php | 303 +++++++++ resources/views/master/users/view.blade.php | 30 + resources/views/users/role/index.blade.php | 597 ------------------ resources/views/users/user/add.blade.php | 56 -- routes/web.php | 105 ++- 88 files changed, 7289 insertions(+), 956 deletions(-) delete mode 100644 app/Http/Controllers/DesaKelurahanController.php delete mode 100644 app/Http/Controllers/HomeController.php delete mode 100644 app/Http/Controllers/KabupatenKotaController.php delete mode 100644 app/Http/Controllers/KecamatanController.php delete mode 100644 app/Http/Controllers/ProvinsiController.php delete mode 100644 app/Http/Controllers/UserController.php delete mode 100644 app/Http/Controllers/UserRoleController.php create mode 100644 app/Http/Controllers/Web/AdatController.php rename app/Http/Controllers/{ => Web}/AuthController.php (91%) create mode 100644 app/Http/Controllers/Web/DesaKelurahanController.php create mode 100644 app/Http/Controllers/Web/HomeController.php create mode 100644 app/Http/Controllers/Web/KabupatenKotaController.php create mode 100644 app/Http/Controllers/Web/KecamatanController.php create mode 100644 app/Http/Controllers/Web/KeluargaController.php create mode 100644 app/Http/Controllers/Web/KomoditasController.php create mode 100644 app/Http/Controllers/Web/LahanController.php create mode 100644 app/Http/Controllers/Web/ProfileController.php create mode 100644 app/Http/Controllers/Web/ProvinsiController.php create mode 100644 app/Http/Controllers/Web/TanamanController.php create mode 100644 app/Http/Controllers/Web/UserController.php create mode 100644 app/Models/Penduduk/Keluarga.php create mode 100644 app/Models/Penduduk/Profile.php create mode 100644 app/Models/Pertanian/Adat.php rename app/Models/{Komoditas => Pertanian}/Komoditas.php (58%) create mode 100644 app/Models/Pertanian/Lahan.php create mode 100644 app/Models/Pertanian/Tanaman.php create mode 100644 resources/views/master/adat/add.blade.php create mode 100644 resources/views/master/adat/edit.blade.php create mode 100644 resources/views/master/adat/index.blade.php create mode 100644 resources/views/master/adat/view.blade.php create mode 100644 resources/views/master/desakelurahan/add.blade.php create mode 100644 resources/views/master/desakelurahan/edit.blade.php create mode 100644 resources/views/master/desakelurahan/index.blade.php create mode 100644 resources/views/master/desakelurahan/view.blade.php create mode 100644 resources/views/master/kabupatenkota/add.blade.php create mode 100644 resources/views/master/kabupatenkota/edit.blade.php create mode 100644 resources/views/master/kabupatenkota/view.blade.php create mode 100644 resources/views/master/kecamatan/add.blade.php create mode 100644 resources/views/master/kecamatan/edit.blade.php create mode 100644 resources/views/master/kecamatan/view.blade.php create mode 100644 resources/views/master/keluarga/add.blade.php create mode 100644 resources/views/master/keluarga/edit.blade.php create mode 100644 resources/views/master/keluarga/index.blade.php create mode 100644 resources/views/master/keluarga/view.blade.php create mode 100644 resources/views/master/komoditas/add.blade.php create mode 100644 resources/views/master/komoditas/edit.blade.php create mode 100644 resources/views/master/komoditas/index.blade.php create mode 100644 resources/views/master/komoditas/view.blade.php create mode 100644 resources/views/master/lahan/index.blade.php create mode 100644 resources/views/master/lahan/view.blade copy.php create mode 100644 resources/views/master/lahan/view.blade.php create mode 100644 resources/views/master/profile/add.blade.php create mode 100644 resources/views/master/profile/edit.blade.php create mode 100644 resources/views/master/profile/index.blade.php create mode 100644 resources/views/master/profile/view.blade.php create mode 100644 resources/views/master/provinsi/add.blade.php create mode 100644 resources/views/master/provinsi/edit.blade.php create mode 100644 resources/views/master/provinsi/view.blade.php create mode 100644 resources/views/master/tanaman/add.blade.php create mode 100644 resources/views/master/tanaman/index.blade.php create mode 100644 resources/views/master/tanaman/view.blade.php create mode 100644 resources/views/master/users/add.blade.php create mode 100644 resources/views/master/users/edit.blade.php create mode 100644 resources/views/master/users/index.blade.php create mode 100644 resources/views/master/users/view.blade.php delete mode 100644 resources/views/users/role/index.blade.php delete mode 100644 resources/views/users/user/add.blade.php diff --git a/app/Http/Controllers/DesaKelurahanController.php b/app/Http/Controllers/DesaKelurahanController.php deleted file mode 100644 index 3cae657..0000000 --- a/app/Http/Controllers/DesaKelurahanController.php +++ /dev/null @@ -1,10 +0,0 @@ -has('provinsi_id') && !empty($request->provinsi_id)) { - $kabupatenKotaQuery->where('provinsi_id', $request->provinsi_id); - } - - $kabupatenKota = $kabupatenKotaQuery->get()->map(function($item) { - return [ - 'id' => $item->id, - 'kode_kabupaten_kota' => $item->kode, - 'nama_kabupaten_kota' => $item->nama, - 'nama_provinsi' => $item->provinsi->nama ?? '-', - ]; - }); - - return response()->json(['data' => $kabupatenKota]); - } -} diff --git a/app/Http/Controllers/KecamatanController.php b/app/Http/Controllers/KecamatanController.php deleted file mode 100644 index c941902..0000000 --- a/app/Http/Controllers/KecamatanController.php +++ /dev/null @@ -1,33 +0,0 @@ -has('kabupaten_kota_id') && !empty($request->kabupaten_kota_id)) { - $kecamatanQuery->where('kabupaten_kota_id', $request->kabupaten_kota_id); - } - $kecamatan = $kecamatanQuery->get()->map(function($item) { - return [ - 'id' => $item->id, - 'kode_kecamatan' => $item->kode_kecamatan, - 'nama_kecamatan' => $item->nama_kecamatan, - 'nama_kabupaten_kota' => $item->kabupatenKota->nama_kabupaten_kota ?? '-', - 'nama_provinsi' => $item->kabupatenKota->provinsi->nama_provinsi ?? '-', - ]; - }); - return response()->json(['data' => $kecamatan]); - } -} \ No newline at end of file diff --git a/app/Http/Controllers/ProvinsiController.php b/app/Http/Controllers/ProvinsiController.php deleted file mode 100644 index b5491ba..0000000 --- a/app/Http/Controllers/ProvinsiController.php +++ /dev/null @@ -1,37 +0,0 @@ -get(); - return response()->json(['data' => $provinsi]); - } - - public function store(Request $request) - { - $request->validate([ - 'kode' => 'required|unique:provinsi,kode', - 'nama' => 'required|unique:provinsi,nama', - 'iso' => 'required|unique:provinsi,iso', - ]); - - $provinsi = new Provinsi(); - $provinsi->kode = $request->kode; - $provinsi->nama = $request->nama; - $provinsi->iso = $request->iso; - $provinsi->save(); - - return response()->json(['message' => 'Provinsi berhasil ditambahkan']); - } -} diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php deleted file mode 100644 index bd487bc..0000000 --- a/app/Http/Controllers/UserController.php +++ /dev/null @@ -1,37 +0,0 @@ -count(); - return view('users.user.index', compact('users', 'totalUsers')); - } - - public function getUsers() - { - $users = User::select(['id', 'name', 'email', 'email_verified_at', 'created_at'])->get(); - return response()->json(['data' => $users]); - } - - public function show($id) - { - $user = User::findOrFail($id); - return view('users.user.show', compact('user')); - } - - public function destroy($id) - { - $user = User::findOrFail($id); - $user->delete(); - - return redirect()->route('users.user.index')->with('success', 'User deleted successfully.'); - } -} diff --git a/app/Http/Controllers/UserRoleController.php b/app/Http/Controllers/UserRoleController.php deleted file mode 100644 index d285428..0000000 --- a/app/Http/Controllers/UserRoleController.php +++ /dev/null @@ -1,23 +0,0 @@ -query('per_page', 10); + $search = $request->query('search', ''); + + $provinsi = Provinsi::orderBy('kode', 'asc')->get(); + + $adat = Adat::with('desakelurahan') + ->where('nama', 'like', "%$search%") + ->orWhereHas('desakelurahan', function($query) use ($search) { + $query->where('nama', 'like', "%$search%"); + }) + ->orderBy('nama', 'asc') + ->paginate($perPage); + + return view('master.adat.index', compact('title', 'adat', 'provinsi')); + } + + public function adatByDesa($adat_id) + { + $adat = Adat::where('desa_kelurahan_id', $desa_id) + ->orderBy('nama', 'asc') + ->get(); + + return response()->json($adat); + } + + public function store(Request $request) + { + $validator = Validator::make($request->all(), [ + 'nama' => ['required'], + 'desa_kelurahan_id' => ['required', 'exists:master_desa_kelurahan,id'] + ]); + + if ($validator->fails()) { + return response()->json([ + 'status' => 'error', + 'message' => 'Terdapat kesalahan pada input Anda.', + 'errors' => $validator->errors() + ], 422); + } + + Adat::create([ + 'nama' => $request->nama, + 'desa_kelurahan_id' => $request->desa_kelurahan_id, + 'created_by' => auth()->id(), + 'updated_by' => auth()->id(), + ]); + + return response()->json([ + 'status' => 'success', + 'message' => 'Adat berhasil ditambahkan.' + ]); + } + + public function show($id) + { + $adat = Adat::with(['desakelurahan.kecamatan.kabupatenkota.provinsi'])->find($id); + + if (!$adat) { + return response()->json([ + 'status' => 'error', + 'message' => 'Data tidak ditemukan' + ], 404); + } + + return response()->json([ + 'status' => 'success', + 'data' => [ + 'id' => $adat->id, + 'nama' => $adat->nama, + 'desa_kelurahan_id' => $adat->desa_kelurahan_id, + 'nama_desa_kelurahan' => $adat->desakelurahan->nama, + 'kecamatan_id' => $adat->desakelurahan->kecamatan_id, + 'nama_kecamatan' => $adat->desakelurahan->kecamatan->nama, + 'kabupaten_kota_id' => $adat->desakelurahan->kecamatan->kabupaten_kota_id, + 'nama_kabupaten_kota' => $adat->desakelurahan->kecamatan->kabupatenkota->nama, + 'provinsi_id' => $adat->desakelurahan->kecamatan->kabupatenkota->provinsi_id, + 'nama_provinsi' => $adat->desakelurahan->kecamatan->kabupatenkota->provinsi->nama + ] + ]); + } + + public function update(Request $request, $id) + { + $validator = Validator::make($request->all(), [ + 'nama' => ['required'], + 'desa_kelurahan_id' => ['required', 'exists:master_desa_kelurahan,id'] + ]); + + if ($validator->fails()) { + return response()->json([ + 'status' => 'error', + 'message' => 'Terdapat kesalahan pada input Anda.', + 'errors' => $validator->errors() + ], 422); + } + + $adat = Adat::find($id); + + if (!$adat) { + return response()->json(['status' => 'error', 'message' => 'Data tidak ditemukan'], 404); + } + + $adat->update([ + 'nama' => $request->nama, + 'desa_kelurahann_id' => $request->desa_kelurahan_id, + 'updated_by' => auth()->id(), + ]); + + return response()->json(['status' => 'success', 'message' => 'Data berhasil diperbarui!']); + } + + public function destroy($id) + { + $adat = Adat::find($id); + if (!$adat) { + return response()->json([ + 'status' => 'error', + 'message' => 'Data tidak ditemukan.' + ], 404); + } + + $adat->deleted_by = auth()->user()->id; + $adat->save(); + $adat->delete(); + + return response()->json([ + 'status' => 'success', + 'message' => 'Data adat berhasil dihapus.' + ]); + } +} diff --git a/app/Http/Controllers/Web/AkselerasiDashboardController.php b/app/Http/Controllers/Web/AkselerasiDashboardController.php index 8533ae2..dce1396 100644 --- a/app/Http/Controllers/Web/AkselerasiDashboardController.php +++ b/app/Http/Controllers/Web/AkselerasiDashboardController.php @@ -13,6 +13,7 @@ class AkselerasiDashboardController extends Controller if (!Gate::allows('super_admin') && !Gate::allows('admin')) { abort(403); } - return view('dashboard.akselerasi'); + $title = 'Akselerasi Dashboard'; + return view('dashboard.akselerasi', compact('title')); } } diff --git a/app/Http/Controllers/AuthController.php b/app/Http/Controllers/Web/AuthController.php similarity index 91% rename from app/Http/Controllers/AuthController.php rename to app/Http/Controllers/Web/AuthController.php index ce17387..300e843 100644 --- a/app/Http/Controllers/AuthController.php +++ b/app/Http/Controllers/Web/AuthController.php @@ -1,25 +1,27 @@ query('per_page', 10); + $search = $request->query('search', ''); + + $provinsi = Provinsi::orderBy('kode', 'asc')->get(); + + $desakelurahan = DesaKelurahan::with('kecamatan') + ->where('nama', 'like', "%$search%") + ->orWhere('kode', 'like', "%$search%") + ->orWhereHas('kecamatan', function($query) use ($search) { + $query->where('nama', 'like', "%$search%"); + }) + ->orderBy('kode', 'asc') + ->paginate($perPage); + + return view('master.desakelurahan.index', compact('title', 'desakelurahan', 'provinsi')); + } + + public function getByKecamatan($kecamatan_id) + { + $desa = DesaKelurahan::where('kecamatan_id', $kecamatan_id) + ->orderBy('nama', 'asc') + ->get(); + + return response()->json($desa); + } + + public function store(Request $request) + { + $validator = Validator::make($request->all(), [ + 'kode' => ['required', 'max:10', 'min:10', 'unique:master_desa_kelurahan,kode'], + 'nama' => ['required'], + 'path' => ['nullable'], + 'kecamatan_id' => ['required', 'exists:master_kecamatan,id'] + ]); + + if ($validator->fails()) { + return response()->json([ + 'status' => 'error', + 'message' => 'Terdapat kesalahan pada input Anda.', + 'errors' => $validator->errors() + ], 422); + } + + DesaKelurahan::create([ + 'kode' => $request->kode, + 'nama' => $request->nama, + 'path' => $request->path, + 'kecamatan_id' => $request->kecamatan_id, + 'created_by' => auth()->id(), + 'updated_by' => auth()->id(), + ]); + + return response()->json([ + 'status' => 'success', + 'message' => 'Desa/Kelurahan berhasil ditambahkan.' + ]); + } + + public function view($id) + { + $desakelurahan = DesaKelurahan::with(['kecamatan.kabupatenkota.provinsi'])->find($id); + + if (!$desakelurahan) { + return response()->json([ + 'status' => 'error', + 'message' => 'Data tidak ditemukan' + ], 404); + } + + return response()->json([ + 'status' => 'success', + 'data' => [ + 'id' => $desakelurahan->id, + 'kode' => $desakelurahan->kode, + 'nama' => $desakelurahan->nama, + 'path' => $desakelurahan->path, + 'kecamatan_id' => $desakelurahan->kecamatan_id, + 'nama_kecamatan' => $desakelurahan->kecamatan->nama, + 'kabupaten_kota_id' => $desakelurahan->kecamatan->kabupaten_kota_id, + 'nama_kabupaten_kota' => $desakelurahan->kecamatan->kabupatenkota->nama, + 'provinsi_id' => $desakelurahan->kecamatan->kabupatenkota->provinsi_id, + 'nama_provinsi' => $desakelurahan->kecamatan->kabupatenkota->provinsi->nama, + ] + ]); + } + + public function update(Request $request, $id) + { + $validator = Validator::make($request->all(), [ + 'kode' => ['required', 'max:10', 'min:10', "unique:master_desa_kelurahan,kode,$id"], + 'nama' => ['required'], + 'path' => ['nullable'], + 'kecamatan_id' => ['required', 'exists:master_kecamatan,id'] + ]); + + if ($validator->fails()) { + return response()->json([ + 'status' => 'error', + 'message' => 'Terdapat kesalahan pada input Anda.', + 'errors' => $validator->errors() + ], 422); + } + + $desakelurahan = DesaKelurahan::find($id); + + if (!$desakelurahan) { + return response()->json(['status' => 'error', 'message' => 'Data tidak ditemukan'], 404); + } + + $desakelurahan->update([ + 'kode' => $request->kode, + 'nama' => $request->nama, + 'path' => $request->path, + 'kecamatan_id' => $request->kecamatan_id, + 'updated_by' => auth()->id(), + ]); + + return response()->json(['status' => 'success', 'message' => 'Data berhasil diperbarui!']); + } + + public function destroy($id) + { + $desakelurahan = DesaKelurahan::find($id); + if (!$desakelurahan) { + return response()->json([ + 'status' => 'error', + 'message' => 'Data tidak ditemukan.' + ], 404); + } + + $desakelurahan->deleted_by = auth()->user()->id; + $desakelurahan->save(); + $desakelurahan->delete(); + + return response()->json([ + 'status' => 'success', + 'message' => 'Data desa/kelurahan berhasil dihapus.' + ]); + } +} diff --git a/app/Http/Controllers/Web/HilirisasiDashboardController.php b/app/Http/Controllers/Web/HilirisasiDashboardController.php index 5215c46..b082a3d 100644 --- a/app/Http/Controllers/Web/HilirisasiDashboardController.php +++ b/app/Http/Controllers/Web/HilirisasiDashboardController.php @@ -13,6 +13,7 @@ class HilirisasiDashboardController extends Controller if (!Gate::allows('super_admin') && !Gate::allows('admin')) { abort(403); } - return view('dashboard.hilirisasi'); + $title = 'Hilirisasi Dashboard'; + return view('dashboard.hilirisasi', compact('title')); } } diff --git a/app/Http/Controllers/Web/HomeController.php b/app/Http/Controllers/Web/HomeController.php new file mode 100644 index 0000000..7ce2683 --- /dev/null +++ b/app/Http/Controllers/Web/HomeController.php @@ -0,0 +1,15 @@ +query('per_page', 10); + $search = $request->query('search', ''); + + $provinsi = Provinsi::all(); + + $kabupatenkota = KabupatenKota::with('provinsi') + ->where('nama', 'like', "%$search%") + ->orWhere('kode', 'like', "%$search%") + ->orWhereHas('provinsi', function($query) use ($search) { + $query->where('nama', 'like', "%$search%"); + }) + ->orderBy('kode', 'asc') + ->paginate($perPage); + + return view('master.kabupatenkota.index', compact('title', 'kabupatenkota', 'provinsi')); + } + + public function getByProvinsi($provinsi_id) + { + $kabupaten = KabupatenKota::where('provinsi_id', $provinsi_id) + ->orderBy('nama', 'asc') + ->get(); + + return response()->json($kabupaten); + } + + public function store(Request $request) + { + $validator = Validator::make($request->all(), [ + 'kode' => ['required', 'max:4', 'min:4', 'unique:master_kabupaten_kota,kode'], + 'nama' => ['required'], + 'path' => ['nullable'], + 'provinsi_id' => ['required', 'exists:master_provinsi,id'] + ]); + + if ($validator->fails()) { + return response()->json([ + 'status' => 'error', + 'message' => 'Terdapat kesalahan pada input Anda.', + 'errors' => $validator->errors() + ], 422); + } + + KabupatenKota::create([ + 'kode' => $request->kode, + 'nama' => $request->nama, + 'path' => $request->path, + 'provinsi_id' => $request->provinsi_id, + 'created_by' => auth()->id(), + 'updated_by' => auth()->id(), + ]); + + return response()->json([ + 'status' => 'success', + 'message' => 'Kabupaten/Kota berhasil ditambahkan.' + ]); + } + + public function view($id) + { + $kabupatenKota = KabupatenKota::with('provinsi:id,nama') + ->find($id); + + if (!$kabupatenKota) { + return response()->json([ + 'status' => 'error', + 'message' => 'Data tidak ditemukan' + ], 404); + } + + return response()->json([ + 'status' => 'success', + 'data' => [ + 'id' => $kabupatenKota->id, + 'kode' => $kabupatenKota->kode, + 'nama' => $kabupatenKota->nama, + 'path' => $kabupatenKota->path, + 'provinsi_id' => $kabupatenKota->provinsi_id, + 'nama_provinsi' => $kabupatenKota->provinsi->nama + ] + ]); + } + + public function update(Request $request, $id) + { + $validator = Validator::make($request->all(), [ + 'kode' => ['required', 'max:4', 'min:4', "unique:master_kabupaten_kota,kode,$id"], + 'nama' => ['required'], + 'path' => ['nullable'], + 'provinsi_id' => ['required', 'exists:master_provinsi,id'] + ]); + + if ($validator->fails()) { + return response()->json([ + 'status' => 'error', + 'message' => 'Validasi gagal', + 'errors' => $validator->errors() + ], 422); + } + + $kabupatenKota = KabupatenKota::find($id); + + if (!$kabupatenKota) { + return response()->json(['status' => 'error', 'message' => 'Data tidak ditemukan'], 404); + } + + $kabupatenKota->update([ + 'kode' => $request->kode, + 'nama' => $request->nama, + 'path' => $request->path, + 'provinsi_id' => $request->provinsi_id, + 'updated_by' => auth()->id(), + ]); + + return response()->json(['status' => 'success', 'message' => 'Data berhasil diperbarui!']); + } + + public function destroy($id) + { + $kabupatenKota = KabupatenKota::find($id); + if (!$kabupatenKota) { + return response()->json([ + 'status' => 'error', + 'message' => 'Data tidak ditemukan.' + ], 404); + } + + $kabupatenKota->deleted_by = auth()->user()->id; + $kabupatenKota->save(); + $kabupatenKota->delete(); + + return response()->json([ + 'status' => 'success', + 'message' => 'Data kabupaten/kota berhasil dihapus.' + ]); + } +} diff --git a/app/Http/Controllers/Web/KecamatanController.php b/app/Http/Controllers/Web/KecamatanController.php new file mode 100644 index 0000000..9fb15f2 --- /dev/null +++ b/app/Http/Controllers/Web/KecamatanController.php @@ -0,0 +1,153 @@ +query('per_page', 10); + $search = $request->query('search', ''); + + $provinsi = Provinsi::all(); + + $kecamatan = Kecamatan::with('kabupatenkota') + ->where('nama', 'like', "%$search%") + ->orWhere('kode', 'like', "%$search%") + ->orWhereHas('kabupatenkota', function($query) use ($search) { + $query->where('nama', 'like', "%$search%"); + }) + ->orderBy('kode', 'asc') + ->paginate($perPage); + + return view('master.kecamatan.index', compact('title', 'kecamatan', 'provinsi')); + } + + public function getByKabupaten($kabupaten_id) + { + $kecamatan = Kecamatan::where('kabupaten_kota_id', $kabupaten_id) + ->orderBy('nama', 'asc') + ->get(); + + return response()->json($kecamatan); + } + + public function store(Request $request) + { + $validator = Validator::make($request->all(), [ + 'kode' => ['required', 'max:6', 'min:6', 'unique:master_kecamatan,kode'], + 'nama' => ['required'], + 'path' => ['nullable'], + 'kabupaten_kota_id' => ['required', 'exists:master_kabupaten_kota,id'] + ]); + + if ($validator->fails()) { + return response()->json([ + 'status' => 'error', + 'message' => 'Terdapat kesalahan pada input Anda.', + 'errors' => $validator->errors() + ], 422); + } + + Kecamatan::create([ + 'kode' => $request->kode, + 'nama' => $request->nama, + 'path' => $request->path, + 'kabupaten_kota_id' => $request->kabupaten_kota_id, + 'created_by' => auth()->id(), + 'updated_by' => auth()->id(), + ]); + + return response()->json([ + 'status' => 'success', + 'message' => 'Kecamatan berhasil ditambahkan.' + ]); + } + + public function view($id) + { + $kecamatan = Kecamatan::with(['kabupatenkota.provinsi'])->find($id); + + if (!$kecamatan) { + return response()->json([ + 'status' => 'error', + 'message' => 'Data tidak ditemukan' + ], 404); + } + + return response()->json([ + 'status' => 'success', + 'data' => [ + 'id' => $kecamatan->id, + 'kode' => $kecamatan->kode, + 'nama' => $kecamatan->nama, + 'path' => $kecamatan->path, + 'kabupaten_kota_id' => $kecamatan->kabupaten_kota_id, + 'nama_kabupaten_kota' => $kecamatan->kabupatenkota->nama, + 'provinsi_id' => $kecamatan->kabupatenkota->provinsi_id, + 'nama_provinsi' => $kecamatan->kabupatenkota->provinsi->nama + ] + ]); + } + + public function update(Request $request, $id) + { + $validator = Validator::make($request->all(), [ + 'kode' => ['required', 'max:6', 'min:6', "unique:master_kecamatan,kode,$id"], + 'nama' => ['required'], + 'path' => ['nullable'], + 'kabupaten_kota_id' => ['required', 'exists:master_kabupaten_kota,id'] + ]); + + if ($validator->fails()) { + return response()->json([ + 'status' => 'error', + 'message' => 'Terdapat kesalahan pada input Anda.', + 'errors' => $validator->errors() + ], 422); + } + + $kecamatan = Kecamatan::find($id); + + if (!$kecamatan) { + return response()->json(['status' => 'error', 'message' => 'Data tidak ditemukan'], 404); + } + + $kecamatan->update([ + 'kode' => $request->kode, + 'nama' => $request->nama, + 'path' => $request->path, + 'kabupaten_kota_id' => $request->kabupaten_kota_id, + 'updated_by' => auth()->id(), + ]); + + return response()->json(['status' => 'success', 'message' => 'Data berhasil diperbarui!']); + } + + public function destroy($id) + { + $kecamatan = Kecamatan::find($id); + if (!$kecamatan) { + return response()->json([ + 'status' => 'error', + 'message' => 'Data tidak ditemukan.' + ], 404); + } + + $kecamatan->deleted_by = auth()->user()->id; + $kecamatan->save(); + $kecamatan->delete(); + + return response()->json([ + 'status' => 'success', + 'message' => 'Data kecamatan berhasil dihapus.' + ]); + } +} diff --git a/app/Http/Controllers/Web/KeluargaController.php b/app/Http/Controllers/Web/KeluargaController.php new file mode 100644 index 0000000..a442f78 --- /dev/null +++ b/app/Http/Controllers/Web/KeluargaController.php @@ -0,0 +1,134 @@ +orderBy('created_at', 'desc'); + + if ($request->search) { + $query->where('kk', 'like', '%' . $request->search . '%'); + } + + $keluarga = $query->paginate($request->per_page ?? 10); + return view('master.keluarga.index', compact('keluarga')); + } + + public function create() + { + $provinsi = Provinsi::orderBy('nama', 'asc')->get(); + return view('master.keluarga.add', compact('provinsi')); + } + + public function store(Request $request) + { + $validator = Validator::make($request->all(), [ + 'kk' => ['required', 'string', 'min:16', 'max:16'], + 'desa_kelurahan_id' => ['required'], + 'adat_id' => ['nullable'], + 'file_kk' => ['nullable', 'file', 'mimes:jpeg,jpg,png,pdf', 'max:2048'], + ]); + + if ($validator->fails()) { + return response()->json(['status' => 'error', 'errors' => $validator->errors()], 422); + } + + $pathKk = null; + $fileNameKk = null; + + if ($request->hasFile('file_kk')) { + $file = $request->file('file_kk'); + $fileNameKk = $file->getClientOriginalName(); + $pathKk = $file->store('uploads/keluarga', 'public'); + } + + Keluarga::create([ + 'kk' => $request->kk, + 'desa_kelurahan_id' => $request->desa_kelurahan_id, + 'adat_id' => $request->adat_id, + 'path_kk' => $pathKk, + 'file_kk' => $fileNameKk, + 'created_by' => auth()->id(), + 'updated_by' => auth()->id(), + ]); + + return response()->json(['status' => 'success', 'message' => 'Data Keluarga berhasil ditambahkan.']); + } + + public function show($id) + { + $keluarga = Keluarga::with(['desakelurahan.kecamatan.kabupatenkota.provinsi', 'adat'])->findOrFail($id); + return view('master.keluarga.view', compact('keluarga')); + } + + public function edit($id) + { + $keluarga = Keluarga::with(['desakelurahan.kecamatan.kabupatenkota.provinsi', 'adat'])->findOrFail($id); + $provinsi = Provinsi::orderBy('nama', 'asc')->get(); + return view('master.keluarga.edit', compact('keluarga', 'provinsi')); + } + + public function update(Request $request, $id) + { + $validator = Validator::make($request->all(), [ + 'kk' => ['required', 'string', 'min:16', 'max:16'], + 'desa_kelurahan_id' => ['required'], + 'adat_id' => ['nullable'], + 'file_kk' => ['nullable', 'file', 'mimes:jpeg,jpg,png,pdf', 'max:2048'], + ]); + + if ($validator->fails()) { + return response()->json(['status' => 'error', 'errors' => $validator->errors()], 422); + } + + $keluarga = Keluarga::findOrFail($id); + + $pathKk = $keluarga->path_kk; + $fileNameKk = $keluarga->file_kk; + + if ($request->hasFile('file_kk')) { + + if ($keluarga->path_kk && Storage::disk('public')->exists($keluarga->path_kk)) { + Storage::disk('public')->delete($keluarga->path_kk); + } + + $file = $request->file('file_kk'); + $fileNameKk = $file->getClientOriginalName(); + $pathKk = $file->store('uploads/keluarga', 'public'); + } + + $keluarga->update([ + 'kk' => $request->kk, + 'desa_kelurahan_id' => $request->desa_kelurahan_id, + 'adat_id' => $request->adat_id, + 'path_kk' => $pathKk, + 'file_kk' => $fileNameKk, + 'updated_by' => auth()->id(), + ]); + + return response()->json(['status' => 'success', 'message' => 'Data Keluarga berhasil diupdate.']); + } + + public function destroy($id) + { + $keluarga = Keluarga::findOrFail($id); + + // if ($keluarga->path_kk && Storage::disk('public')->exists($keluarga->path_kk)) { + // Storage::disk('public')->delete($keluarga->path_kk); + // } + + $keluarga->update(['deleted_by' => auth()->id()]); + $keluarga->delete(); + + return response()->json(['status' => 'success', 'message' => 'Data Keluarga berhasil dihapus.']); + } +} \ No newline at end of file diff --git a/app/Http/Controllers/Web/KomoditasController.php b/app/Http/Controllers/Web/KomoditasController.php new file mode 100644 index 0000000..c8c7eae --- /dev/null +++ b/app/Http/Controllers/Web/KomoditasController.php @@ -0,0 +1,81 @@ +search) { + $query->where('nama', 'like', '%' . $request->search . '%'); + } + + $komoditas = $query->paginate($request->per_page ?? 10); + return view('master.komoditas.index', compact('komoditas')); + } + + public function store(Request $request) + { + $validator = Validator::make($request->all(), [ + 'nama' => ['required', 'string', 'max:255', 'unique:master_komoditas,nama'], // Tambah unique biar nggak ada data kembar + ], [ + 'nama.unique' => 'Nama komoditas ini sudah ada di database.' + ]); + + if ($validator->fails()) { + return response()->json(['status' => 'error', 'errors' => $validator->errors()], 422); + } + + Komoditas::create([ + 'nama' => $request->nama, + 'created_by' => auth()->id(), + 'updated_by' => auth()->id(), + ]); + + return response()->json(['status' => 'success', 'message' => 'Komoditas berhasil ditambahkan.']); + } + + public function show($id) + { + $komoditas = Komoditas::findOrFail($id); + return response()->json(['status' => 'success', 'data' => $komoditas]); + } + + public function update(Request $request, $id) + { + $validator = Validator::make($request->all(), [ + 'nama' => ['required', 'string', 'max:255', 'unique:master_komoditas,nama,' . $id], + ], [ + 'nama.unique' => 'Nama komoditas ini sudah digunakan.' + ]); + + if ($validator->fails()) { + return response()->json(['status' => 'error', 'errors' => $validator->errors()], 422); + } + + $komoditas = Komoditas::findOrFail($id); + $komoditas->update([ + 'nama' => $request->nama, + 'updated_by' => auth()->id(), + ]); + + return response()->json(['status' => 'success', 'message' => 'Komoditas berhasil diupdate.']); + } + + public function destroy($id) + { + $komoditas = Komoditas::findOrFail($id); + + $komoditas->update(['deleted_by' => auth()->id()]); + $komoditas->delete(); + + return response()->json(['status' => 'success', 'message' => 'Komoditas berhasil dihapus.']); + } +} diff --git a/app/Http/Controllers/Web/KonektivitasDashboardController.php b/app/Http/Controllers/Web/KonektivitasDashboardController.php index 7a49613..4c52b45 100644 --- a/app/Http/Controllers/Web/KonektivitasDashboardController.php +++ b/app/Http/Controllers/Web/KonektivitasDashboardController.php @@ -13,6 +13,7 @@ class KonektivitasDashboardController extends Controller if (!Gate::allows('super_admin') && !Gate::allows('admin')) { abort(403); } - return view('dashboard.konektivitas'); + $title = 'Konektivitas Dashboard'; + return view('dashboard.konektivitas', compact('title')); } } diff --git a/app/Http/Controllers/Web/LahanController.php b/app/Http/Controllers/Web/LahanController.php new file mode 100644 index 0000000..0e3769b --- /dev/null +++ b/app/Http/Controllers/Web/LahanController.php @@ -0,0 +1,82 @@ +orderBy('created_at', 'desc'); + + if ($request->search) { + $query->where('nama', 'like', '%' . $request->search . '%') + ->orWhereHas('profile', function($q) use ($request) { + $q->where('nama', 'like', '%' . $request->search . '%'); + }); + } + + $lahan = $query->paginate($request->per_page ?? 10); + return view('master.lahan.index', compact('lahan')); + } + + public function create() + { + $provinsi = Provinsi::orderBy('nama', 'asc')->get(); + $profiles = Profile::orderBy('nama', 'asc')->get(); + return view('master.lahan.add', compact('provinsi', 'profiles')); + } + + public function store(Request $request) + { + $validator = Validator::make($request->all(), [ + 'nama' => ['required', 'string', 'max:255'], + 'status_kepemilikan' => ['required', 'string', 'max:255'], + 'profile_id' => ['required'], + 'keluarga_pengelola_id' => ['nullable'], + 'adat_pemilik_id' => ['nullable'], + 'desa_kelurahan_id' => ['nullable'], + 'luas_lahan' => ['nullable', 'numeric'], + 'path' => ['nullable', 'string'], + ]); + + if ($validator->fails()) { + return response()->json(['status' => 'error', 'errors' => $validator->errors()], 422); + } + + if ($request->filled('path')) { + json_decode($request->path); + if (json_last_error() !== JSON_ERROR_NONE) { + return response()->json(['status' => 'error', 'message' => 'Format koordinat (path) bukan JSON array yang valid.'], 422); + } + } + + Lahan::create([ + 'nama' => $request->nama, + 'status_kepemilikan' => $request->status_kepemilikan, + 'profile_id' => $request->profile_id, + 'desa_kelurahan_id' => $request->desa_kelurahan_id, + 'luas_lahan' => $request->luas_lahan, + 'path' => $request->path, + 'created_by' => auth()->id(), + 'updated_by' => auth()->id(), + ]); + + return response()->json(['status' => 'success', 'message' => 'Lahan berhasil ditambahkan.']); + } + + public function show($id) + { + $lahan = Lahan::with(['profile', 'desakelurahan.kecamatan.kabupatenkota.provinsi', 'tanaman.komoditas'])->findOrFail($id); + + return view('master.lahan.view', compact('lahan')); + } +} + diff --git a/app/Http/Controllers/Web/ProfileController.php b/app/Http/Controllers/Web/ProfileController.php new file mode 100644 index 0000000..f8cc527 --- /dev/null +++ b/app/Http/Controllers/Web/ProfileController.php @@ -0,0 +1,209 @@ +get(); + + // Query untuk tabel dengan fitur search dan pagination + $query = Profile::with('desakelurahan')->orderBy('created_at', 'desc'); + + if ($request->search) { + $query->where('nama', 'like', '%' . $request->search . '%') + ->orWhere('email', 'like', '%' . $request->search . '%'); + } + + $profiles = $query->paginate($request->per_page ?? 10); + + return view('master.profile.index', compact('profiles', 'provinsi')); + } + + public function create() + { + $provinsi = Provinsi::orderBy('nama', 'asc')->get(); + return view('master.profile.add', compact('provinsi')); + } + public function store(Request $request) + { + $validator = Validator::make($request->all(), [ + 'nama' => ['required', 'string', 'max:255'], + 'email' => ['required', 'email', 'max:255'], + 'telepon' => ['required', 'max:13'], + 'desa_kelurahan_id' => ['required'], + 'ktp' => ['nullable', 'min:16', 'max:16'], + 'file_ktp' => ['nullable', 'file', 'mimes:jpeg,jpg,png,pdf', 'max:2048'], + 'kk' => ['nullable', 'min:16', 'max:16'], + 'file_kk' => ['nullable', 'file', 'mimes:jpeg,jpg,png,pdf', 'max:2048'], + ]); + + if ($validator->fails()) { + return response()->json([ + 'status' => 'error', + 'errors' => $validator->errors() + ], 422); + } + + $user = User::where('email', $request->email)->first(); + + if (!$user) { + return response()->json([ + 'status' => 'error', + 'message' => 'User dengan email tersebut tidak ditemukan' + ], 404); + } + + $userid = $user->id; + $userrole = $user->role; + + $pathktp = null; + $pathkk = null; + + if ($request->hasFile('file_ktp')) { + $pathktp = $request->file('file_ktp')->store('uploads/users/ktp', 'public'); + } + + if ($request->hasFile('file_kk')) { + $pathkk = $request->file('file_kk')->store('uploads/users/kk', 'public'); + } + + Profile::create([ + 'user_id' => $userid, + 'role' => $userrole, + 'nama' => $request->nama, + 'email' => $request->email, + 'telepon' => $request->telepon, + 'alamat' => $request->alamat, + 'kk' => $request->kk, + 'ktp' => $request->ktp, + 'desa_kelurahan_id' => $request->desa_kelurahan_id, + 'path_kk' => $pathkk, + 'path_ktp' => $pathktp, + 'keluarga_id' => $request->keluarga_id, + 'created_by' => auth()->id(), + 'updated_by' => auth()->id(), + ]); + + return response()->json([ + 'status' => 'success', + 'message' => 'Profile berhasil ditambahkan.' + ]); + } + + public function show($id) + { + $profile = Profile::with('desakelurahan.kecamatan.kabupatenkota.provinsi')->findOrFail($id); + return view('master.profile.view', compact('profile')); + } + + public function edit($id) + { + $profile = Profile::with('desakelurahan.kecamatan.kabupatenkota.provinsi')->findOrFail($id); + $provinsi = Provinsi::orderBy('nama', 'asc')->get(); + return view('master.profile.edit', compact('profile', 'provinsi')); + } + + public function update(Request $request, $id) + { + $validator = Validator::make($request->all(), [ + 'nama' => ['required', 'string', 'max:255'], + 'email' => ['required', 'email', 'max:255'], + 'telepon' => ['required', 'max:13'], + 'desa_kelurahan_id' => ['required'], + 'ktp' => ['nullable', 'min:16', 'max:16'], + 'file_ktp' => ['nullable', 'file', 'mimes:jpeg,jpg,png,pdf', 'max:2048'], + 'kk' => ['nullable', 'min:16', 'max:16'], + 'file_kk' => ['nullable', 'file', 'mimes:jpeg,jpg,png,pdf', 'max:2048'], + ]); + + if ($validator->fails()) { + return response()->json([ + 'status' => 'error', + 'errors' => $validator->errors() + ], 422); + } + + $profile = Profile::findOrFail($id); + + $user = User::where('email', $request->email)->first(); + + if (!$user) { + return response()->json([ + 'status' => 'error', + 'message' => 'User dengan email tersebut tidak ditemukan' + ], 404); + } + + $pathktp = $profile->path_ktp; + $pathkk = $profile->path_kk; + + if ($request->hasFile('file_ktp')) { + if ($profile->path_ktp && \Storage::disk('public')->exists($profile->path_ktp)) { + \Storage::disk('public')->delete($profile->path_ktp); + } + $pathktp = $request->file('file_ktp')->store('uploads/users/ktp', 'public'); + } + + if ($request->hasFile('file_kk')) { + if ($profile->path_kk && \Storage::disk('public')->exists($profile->path_kk)) { + \Storage::disk('public')->delete($profile->path_kk); + } + $pathkk = $request->file('file_kk')->store('uploads/users/kk', 'public'); + } + + $profile->update([ + 'user_id' => $user->id, + 'role' => $user->role, + 'nama' => $request->nama, + 'email' => $request->email, + 'telepon' => $request->telepon, + 'alamat' => $request->alamat, + 'kk' => $request->kk, + 'ktp' => $request->ktp, + 'desa_kelurahan_id' => $request->desa_kelurahan_id, + 'path_kk' => $pathkk, + 'path_ktp' => $pathktp, + 'keluarga_id' => $request->keluarga_id, // Pastikan input ini dikirim dari form, kalau tidak hapus saja + 'updated_by' => auth()->id(), + ]); + + return response()->json([ + 'status' => 'success', + 'message' => 'Profile berhasil diupdate.' + ]); + } + + /** + * Menghapus data profile (serta file fisiknya) + */ + public function destroy($id) + { + $profile = Profile::findOrFail($id); + + // if ($profile->path_ktp && Storage::disk('public')->exists($profile->path_ktp)) { + // Storage::disk('public')->delete($profile->path_ktp); + // } + // if ($profile->path_kk && Storage::disk('public')->exists($profile->path_kk)) { + // Storage::disk('public')->delete($profile->path_kk); + // } + $profile->deleted_by = auth()->user()->id; + $profile->save(); + $profile->delete(); + + return response()->json([ + 'status' => 'success', + 'message' => 'Data dan dokumen berhasil dihapus' + ]); + } +} diff --git a/app/Http/Controllers/Web/ProvinsiController.php b/app/Http/Controllers/Web/ProvinsiController.php new file mode 100644 index 0000000..34f4e77 --- /dev/null +++ b/app/Http/Controllers/Web/ProvinsiController.php @@ -0,0 +1,133 @@ +query('per_page', 10); + $search = $request->query('search', ''); + + $provinsi = Provinsi::where('nama', 'like', "%$search%") + ->orWhere('kode', 'like', "%$search%") + ->orWhere('iso', 'like', "%$search%") + ->paginate($perPage); + + return view('master.provinsi.index', compact('title', 'provinsi')); + } + + public function getProvinsi() + { + $provinsi = Provinsi::select(['id', 'kode', 'nama', 'iso'])->get(); + return response()->json(['data' => $provinsi]); + } + + public function store(Request $request) + { + $validator = Validator::make($request->all(), [ + 'kode' => ['required', Rule::unique(Provinsi::class, 'kode')], + 'nama' => ['required', Rule::unique(Provinsi::class, 'nama')], + 'path' => ['nullable'], + 'iso' => ['required', Rule::unique(Provinsi::class, 'iso')], + ]); + + if ($validator->fails()) { + return response()->json([ + 'status' => 'error', + 'message' => $validator->errors()->first() + ], 422); + } + + Provinsi::create([ + 'kode' => $request->kode, + 'nama' => $request->nama, + 'path' => $request->path, + 'iso' => $request->iso, + 'created_by' => auth()->id(), + 'updated_by' => auth()->id(), + ]); + + return response()->json([ + 'status' => 'success', + 'message' => 'Provinsi berhasil ditambahkan.' + ]); + } + + public function view($id) + { + $provinsi = Provinsi::find($id); + + if (!$provinsi) { + return response()->json([ + 'status' => 'error', + 'message' => 'Data provinsi tidak ditemukan.' + ], 404); + } + + return response()->json([ + 'status' => 'success', + 'data' => $provinsi + ]); + } + + public function update(Request $request, $id) + { + $validator = Validator::make($request->all(), [ + 'kode' => 'required|max:2', + 'nama' => 'required', + 'iso' => 'required' + ]); + + if ($validator->fails()) { + return response()->json([ + 'status' => 'error', + 'message' => $validator->errors()->first() + ], 422); + } + + $provinsi = Provinsi::find($id); + + if (!$provinsi) { + return response()->json(['status' => 'error', 'message' => 'Data tidak ditemukan'], 404); + } + + $provinsi->update([ + 'kode' => $request->kode, + 'nama' => $request->nama, + 'path' => $request->path, + 'iso' => $request->iso, + 'updated_by' => auth()->id(), + ]); + + return response()->json(['status' => 'success', 'message' => 'Data berhasil diperbarui!']); + } + + public function destroy($id) + { + $provinsi = Provinsi::find($id); + if (!$provinsi) { + return response()->json([ + 'status' => 'error', + 'message' => 'Data tidak ditemukan.' + ], 404); + } + + $provinsi->deleted_by = auth()->user()->id; + $provinsi->save(); + $provinsi->delete(); + + return response()->json([ + 'status' => 'success', + 'message' => 'Data provinsi berhasil dihapus.' + ]); + } +} \ No newline at end of file diff --git a/app/Http/Controllers/Web/ResiliensiDashboardController.php b/app/Http/Controllers/Web/ResiliensiDashboardController.php index 8495cbd..f4f97dc 100644 --- a/app/Http/Controllers/Web/ResiliensiDashboardController.php +++ b/app/Http/Controllers/Web/ResiliensiDashboardController.php @@ -13,6 +13,7 @@ class ResiliensiDashboardController extends Controller if (!Gate::allows('super_admin') && !Gate::allows('admin')) { abort(403); } - return view('dashboard.resiliensi'); + $title = 'Resiliensi Dashboard'; + return view('dashboard.resiliensi', compact('title')); } } diff --git a/app/Http/Controllers/Web/SummaryDashboardController.php b/app/Http/Controllers/Web/SummaryDashboardController.php index 621b814..bbf2195 100644 --- a/app/Http/Controllers/Web/SummaryDashboardController.php +++ b/app/Http/Controllers/Web/SummaryDashboardController.php @@ -10,9 +10,10 @@ class SummaryDashboardController extends Controller { public function index() { - // if (!Gate::allows('super_admin') && !Gate::allows('admin')) { - // abort(403); - // } - return view('dashboard.summary'); + if (!Gate::allows('super_admin') && !Gate::allows('admin')) { + abort(403); + } + $title = 'Summary Dashboard'; + return view('dashboard.summary', compact('title')); } } diff --git a/app/Http/Controllers/Web/TanamanController.php b/app/Http/Controllers/Web/TanamanController.php new file mode 100644 index 0000000..06bca70 --- /dev/null +++ b/app/Http/Controllers/Web/TanamanController.php @@ -0,0 +1,86 @@ +orderBy('created_at', 'desc'); + + if ($request->search) { + $query->where('nama', 'like', '%' . $request->search . '%') + ->orWhereHas('lahan', function($q) use ($request) { + $q->where('nama', 'like', '%' . $request->search . '%'); + }); + } + + $tanaman = $query->paginate($request->per_page ?? 10); + return view('master.tanaman.index', compact('tanaman')); + } + + public function create() + { + $komoditas = Komoditas::orderBy('nama', 'asc')->get(); + $profiles = Profile::orderBy('nama', 'asc')->get(); + $lahan = Lahan::orderBy('nama', 'asc')->get(); + + return view('master.tanaman.add', compact('komoditas', 'profiles', 'lahan')); + } + + public function getLahan($id) + { + $lahan = Lahan::findOrFail($id); + return response()->json([ + 'status' => 'success', + 'path' => $lahan->path + ]); + } + + public function store(Request $request) + { + $validator = Validator::make($request->all(), [ + 'nama' => ['required', 'string', 'max:255'], + 'komoditas_id' => ['required'], + 'profile_id' => ['required'], + 'lahan_id' => ['required'], + 'kondisi_tanaman' => ['required', 'in:sehat,sakit,mati'], + 'latitude' => ['required', 'numeric'], + 'longitude' => ['required', 'numeric'], + ], [ + 'latitude.required' => 'Titik koordinat wajib diisi. Silakan klik area pada peta.' + ]); + + if ($validator->fails()) { + return response()->json(['status' => 'error', 'errors' => $validator->errors()], 422); + } + + Tanaman::create([ + 'nama' => $request->nama, + 'komoditas_id' => $request->komoditas_id, + 'profile_id' => $request->profile_id, + 'lahan_id' => $request->lahan_id, + 'kondisi_tanaman' => $request->kondisi_tanaman, + 'latitude' => $request->latitude, + 'longitude' => $request->longitude, + 'created_by' => auth()->id(), + 'updated_by' => auth()->id(), + ]); + + return response()->json(['status' => 'success', 'message' => 'Data Tanaman berhasil ditambahkan.']); + } + + public function show($id) + { + $tanaman = Tanaman::with(['komoditas', 'lahan', 'profile'])->findOrFail($id); + return view('master.tanaman.view', compact('tanaman')); + } +} \ No newline at end of file diff --git a/app/Http/Controllers/Web/UserController.php b/app/Http/Controllers/Web/UserController.php new file mode 100644 index 0000000..672510b --- /dev/null +++ b/app/Http/Controllers/Web/UserController.php @@ -0,0 +1,96 @@ +search) { + $query->where('name', 'like', '%' . $request->search . '%') + ->orWhere('email', 'like', '%' . $request->search . '%'); + } + + $users = $query->paginate($request->per_page ?? 10); + + return view('master.users.index', compact('users')); + } + + public function store(Request $request) + { + $validator = Validator::make($request->all(), [ + 'name' => 'required|string|max:255', + 'email' => 'required|email|unique:users,email|max:255', + 'password' => 'required|min:6', + 'role' => 'required|string|max:255', + ]); + + if ($validator->fails()) { + return response()->json(['status' => 'error', 'errors' => $validator->errors()], 422); + } + + User::create([ + 'name' => $request->name, + 'email' => $request->email, + 'password' => Hash::make($request->password), // Enkripsi password + 'role' => $request->role, + ]); + + return response()->json(['status' => 'success', 'message' => 'User berhasil ditambahkan']); + } + + public function show($id) + { + try { + $user = User::findOrFail($id); + return response()->json(['status' => 'success', 'data' => $user]); + } catch (\Exception $e) { + return response()->json(['status' => 'error', 'message' => 'User tidak ditemukan'], 404); + } + } + + public function update(Request $request, $id) + { + $user = User::findOrFail($id); + + $validator = Validator::make($request->all(), [ + 'name' => 'required|string|max:255', + 'email' => 'required|email|max:255|unique:users,email,' . $id, // Pengecualian email unik untuk ID ini + 'role' => 'required|string|max:255', + 'password' => 'nullable|min:6', + ]); + + if ($validator->fails()) { + return response()->json(['status' => 'error', 'errors' => $validator->errors()], 422); + } + + $user->name = $request->name; + $user->email = $request->email; + $user->role = $request->role; + + // Update password HANYA JIKA diisi + if ($request->filled('password')) { + $user->password = Hash::make($request->password); + } + + $user->save(); + + return response()->json(['status' => 'success', 'message' => 'User berhasil diupdate']); + } + + public function destroy($id) + { + $user = User::findOrFail($id); + $user->delete(); + + return response()->json(['status' => 'success', 'message' => 'User berhasil dihapus']); + } +} diff --git a/app/Models/Penduduk/Keluarga.php b/app/Models/Penduduk/Keluarga.php new file mode 100644 index 0000000..5bf8527 --- /dev/null +++ b/app/Models/Penduduk/Keluarga.php @@ -0,0 +1,36 @@ +belongsTo(DesaKelurahan::class, 'desa_kelurahan_id'); + } + + public function adat() + { + return $this->belongsTo(Adat::class, 'adat_id'); + } +} diff --git a/app/Models/Penduduk/Profile.php b/app/Models/Penduduk/Profile.php new file mode 100644 index 0000000..b09d2d4 --- /dev/null +++ b/app/Models/Penduduk/Profile.php @@ -0,0 +1,10 @@ +belongsTo(DesaKelurahan::class, 'desa_kelurahan_id'); + } + + public function lahan() + { + return $this->hasMany(Lahan::class, 'adat_pemilik_id'); + } +} diff --git a/app/Models/Komoditas/Komoditas.php b/app/Models/Pertanian/Komoditas.php similarity index 58% rename from app/Models/Komoditas/Komoditas.php rename to app/Models/Pertanian/Komoditas.php index 631aa25..e046249 100644 --- a/app/Models/Komoditas/Komoditas.php +++ b/app/Models/Pertanian/Komoditas.php @@ -1,17 +1,20 @@ belongsTo(Profile::class, 'profile_id'); + } + + public function desakelurahan() + { + return $this->belongsTo(DesaKelurahan::class, 'desa_kelurahan_id'); + } + + public function tanaman() + { + return $this->hasMany(Tanaman::class, 'lahan_id'); + } +} diff --git a/app/Models/Pertanian/Tanaman.php b/app/Models/Pertanian/Tanaman.php new file mode 100644 index 0000000..8106923 --- /dev/null +++ b/app/Models/Pertanian/Tanaman.php @@ -0,0 +1,44 @@ +belongsTo(Komoditas::class, 'komoditas_id'); + } + + public function profile() + { + return $this->belongsTo(Profile::class, 'profile_id'); + } + + public function lahan() + { + return $this->belongsTo(Lahan::class, 'lahan_id'); + } +} diff --git a/app/Models/Profile.php b/app/Models/Profile.php index 589eae1..0b36641 100644 --- a/app/Models/Profile.php +++ b/app/Models/Profile.php @@ -4,7 +4,8 @@ namespace App\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; - +use App\Models\Wilayah\User; +use App\Models\Wilayah\DesaKelurahan; class Profile extends Model { use SoftDeletes; @@ -18,5 +19,25 @@ class Profile extends Model 'alamat', 'kk', 'ktp', + + 'desa_kelurahan_id', + 'path_kk', + 'file_kk', + 'path_ktp', + 'file_ktp', + 'keluarga_id', + 'created_by', + 'updated_by', + 'deleted_by' ]; + + public function desakelurahan() + { + return $this->belongsTo(DesaKelurahan::class, 'desa_kelurahan_id'); + } + + public function user() + { + return $this->belongsTo(User::class, 'user_id'); + } } diff --git a/app/Models/Wilayah/DesaKelurahan.php b/app/Models/Wilayah/DesaKelurahan.php index f7af1f3..2885f9f 100644 --- a/app/Models/Wilayah/DesaKelurahan.php +++ b/app/Models/Wilayah/DesaKelurahan.php @@ -4,6 +4,7 @@ namespace App\Models\wilayah; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; +use App\Models\Wilayah\Kecamatan; class DesaKelurahan extends Model { @@ -17,4 +18,7 @@ class DesaKelurahan extends Model 'path', 'kecamatan_id', ]; + public function kecamatan() { + return $this->belongsTo(Kecamatan::class, 'kecamatan_id'); + } } diff --git a/app/Models/Wilayah/KabupatenKota.php b/app/Models/Wilayah/KabupatenKota.php index bb0a2cc..4a45103 100644 --- a/app/Models/Wilayah/KabupatenKota.php +++ b/app/Models/Wilayah/KabupatenKota.php @@ -4,6 +4,8 @@ namespace App\Models\Wilayah; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; +use App\Models\Wilayah\Provinsi; +use App\Models\Wilayah\Kecamatan; class KabupatenKota extends Model { @@ -22,4 +24,9 @@ class KabupatenKota extends Model { return $this->belongsTo(Provinsi::class, 'provinsi_id'); } + + public function kecamatan() + { + return $this->hasMany(Kecamatan::class, 'kabupaten_kota_id'); + } } diff --git a/app/Models/Wilayah/Kecamatan.php b/app/Models/Wilayah/Kecamatan.php index aee32a6..4631efc 100644 --- a/app/Models/Wilayah/Kecamatan.php +++ b/app/Models/Wilayah/Kecamatan.php @@ -4,6 +4,8 @@ namespace App\Models\Wilayah; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; +use App\Models\Wilayah\KabupatenKota; +use App\Models\Wilayah\DesaKelurahan; class Kecamatan extends Model { @@ -18,8 +20,12 @@ class Kecamatan extends Model 'kabupaten_kota_id', ]; - public function kabupatenKota() - { + public function kabupatenkota() { return $this->belongsTo(KabupatenKota::class, 'kabupaten_kota_id'); } + + public function desakelurahan() + { + return $this->hasMany(DesaKelurahan::class, 'kecamatan_id'); + } } diff --git a/app/Models/Wilayah/Provinsi.php b/app/Models/Wilayah/Provinsi.php index 5f6ea91..81c65bc 100644 --- a/app/Models/Wilayah/Provinsi.php +++ b/app/Models/Wilayah/Provinsi.php @@ -4,6 +4,7 @@ namespace App\Models\Wilayah; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; +use App\Models\Wilayah\KabupatenKota; class Provinsi extends Model { @@ -16,5 +17,13 @@ class Provinsi extends Model 'nama', 'path', 'iso', + 'created_by', + 'updated_by', + 'deleted_by', ]; + + public function kabupatenKota() + { + return $this->hasMany(KabupatenKota::class, 'provinsi_id'); + } } diff --git a/database/migrations/2026_02_20_131504_create_lahans_table.php b/database/migrations/2026_02_20_131504_create_lahans_table.php index 8780a83..9582ec3 100644 --- a/database/migrations/2026_02_20_131504_create_lahans_table.php +++ b/database/migrations/2026_02_20_131504_create_lahans_table.php @@ -23,7 +23,7 @@ return new class extends Migration $table->foreignId('desa_kelurahan_id')->nullable()->constrained('master_desa_kelurahan'); $table->text('path')->nullable(); - $table->integer('luas_lahan')->nullable(); + $table->float('luas_lahan', 8)->nullable(); $table->foreignId('created_by')->nullable()->constrained('users')->onDelete('set null'); $table->foreignId('updated_by')->nullable()->constrained('users')->onDelete('set null'); diff --git a/resources/views/auth/layout.blade.php b/resources/views/auth/layout.blade.php index a08401c..9475763 100644 --- a/resources/views/auth/layout.blade.php +++ b/resources/views/auth/layout.blade.php @@ -14,7 +14,7 @@ name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0" /> - Demo: Register Basic - Pages | Vuexy - Bootstrap Dashboard PRO + Agomonev | {{ $title ?? 'Auth' }} diff --git a/resources/views/auth/login.blade.php b/resources/views/auth/login.blade.php index bdeeedb..291f84f 100644 --- a/resources/views/auth/login.blade.php +++ b/resources/views/auth/login.blade.php @@ -77,7 +77,7 @@

New on our platform? - + Create an account

diff --git a/resources/views/auth/register.blade.php b/resources/views/auth/register.blade.php index 16f2943..11c636b 100644 --- a/resources/views/auth/register.blade.php +++ b/resources/views/auth/register.blade.php @@ -69,7 +69,7 @@

Already have an account? - + Sign in instead

diff --git a/resources/views/layout/header.blade.php b/resources/views/layout/header.blade.php index f2fba3a..f848b9d 100644 --- a/resources/views/layout/header.blade.php +++ b/resources/views/layout/header.blade.php @@ -10,11 +10,12 @@ data-template="vertical-menu-template"> + - Admin | Database Petani + Admin | {{ $title ?? 'Database Petani' }} diff --git a/resources/views/layout/main.blade.php b/resources/views/layout/main.blade.php index d3f620f..11790ed 100644 --- a/resources/views/layout/main.blade.php +++ b/resources/views/layout/main.blade.php @@ -42,7 +42,6 @@ - @@ -79,6 +78,10 @@ + + + + +@endpush \ No newline at end of file diff --git a/resources/views/master/adat/view.blade.php b/resources/views/master/adat/view.blade.php new file mode 100644 index 0000000..24d8b9b --- /dev/null +++ b/resources/views/master/adat/view.blade.php @@ -0,0 +1,40 @@ +
+
+
Detail Adat
+ +
+ +
+
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+
+
+
\ No newline at end of file diff --git a/resources/views/master/desakelurahan/add.blade.php b/resources/views/master/desakelurahan/add.blade.php new file mode 100644 index 0000000..fa849d1 --- /dev/null +++ b/resources/views/master/desakelurahan/add.blade.php @@ -0,0 +1,55 @@ +
+
+
Tambah Desa/Kelurahan
+ +
+ +
+
+ @csrf +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+
\ No newline at end of file diff --git a/resources/views/master/desakelurahan/edit.blade.php b/resources/views/master/desakelurahan/edit.blade.php new file mode 100644 index 0000000..a0e92c5 --- /dev/null +++ b/resources/views/master/desakelurahan/edit.blade.php @@ -0,0 +1,57 @@ +
+
+
Edit Desa/Kelurahan
+ +
+ +
+
+ @csrf + + +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+
\ No newline at end of file diff --git a/resources/views/master/desakelurahan/index.blade.php b/resources/views/master/desakelurahan/index.blade.php new file mode 100644 index 0000000..c0ec6e2 --- /dev/null +++ b/resources/views/master/desakelurahan/index.blade.php @@ -0,0 +1,324 @@ +@extends('layout.main') + +@section('content') +
+
+
+
Data Desa/Kelurahan
+
+ +
+
+
+
+ + + +
+
+
+
+ + +
+ +
+
+
+ +
+ + + + + + + + + + + + @forelse($desakelurahan as $index => $desa) + + + + + + + + @empty + + + + @endforelse + +
NoKode Desa/KelNama Desa/KelurahanKecamatanActions
{{ $desakelurahan->firstItem() + $index }}{{ $desa->kode }} + @php + $words = explode(' ', $desa->nama); + $initials = substr(implode('', array_map(fn($w) => strtoupper($w[0] ?? ''), $words)), 0, 2); + $states = ['success', 'danger', 'warning', 'info', 'primary', 'secondary']; + $state = $states[array_rand($states)]; + @endphp +
+
+
+ {{ $initials }} +
+
+ {{ $desa->nama }} +
+
+ {{ $desa->kecamatan->nama ?? '-' }} + +
+ + + +
+
Tidak ada data ditemukan.
+
+ + +
+ + @include('master.desakelurahan.add') + @include('master.desakelurahan.view') + @include('master.desakelurahan.edit') +
+@endsection + +@push('scripts') + +@endpush \ No newline at end of file diff --git a/resources/views/master/desakelurahan/view.blade.php b/resources/views/master/desakelurahan/view.blade.php new file mode 100644 index 0000000..5dc430c --- /dev/null +++ b/resources/views/master/desakelurahan/view.blade.php @@ -0,0 +1,44 @@ +
+
+
Detail Desa/Kelurahan
+ +
+ +
+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+
+
+
\ No newline at end of file diff --git a/resources/views/master/kabupatenkota/add.blade.php b/resources/views/master/kabupatenkota/add.blade.php new file mode 100644 index 0000000..1feb318 --- /dev/null +++ b/resources/views/master/kabupatenkota/add.blade.php @@ -0,0 +1,56 @@ +
+
+
Tambah Kabupaten/Kota
+ +
+ +
+
+ @csrf + +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+
\ No newline at end of file diff --git a/resources/views/master/kabupatenkota/edit.blade.php b/resources/views/master/kabupatenkota/edit.blade.php new file mode 100644 index 0000000..7eac0cc --- /dev/null +++ b/resources/views/master/kabupatenkota/edit.blade.php @@ -0,0 +1,55 @@ +
+
+
Edit Kabupaten/Kota
+ +
+ +
+
+ @csrf + + +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+
\ No newline at end of file diff --git a/resources/views/master/kabupatenkota/index.blade.php b/resources/views/master/kabupatenkota/index.blade.php index e8e8d14..5e041be 100644 --- a/resources/views/master/kabupatenkota/index.blade.php +++ b/resources/views/master/kabupatenkota/index.blade.php @@ -1,33 +1,263 @@ @extends('layout.main') + @section('content')
-
-
Filters
-
-
-
-
+
+
+
+
+ + + +
+
+
+
+ + +
+ +
+
+
+ +
+ + + + + + + + + + + + @forelse($kabupatenkota as $index => $kab) + + + + + + + + @empty + + + + @endforelse + +
NoKode Kab/KotaNama Kabupaten/KotaProvinsiActions
{{ $kabupatenkota->firstItem() + $index }}{{ $kab->kode }} + @php + $words = explode(' ', $kab->nama); + $initials = substr(implode('', array_map(fn($w) => strtoupper($w[0] ?? ''), $words)), 0, 2); + $states = ['success', 'danger', 'warning', 'info', 'primary', 'secondary']; + $state = $states[array_rand($states)]; + @endphp +
+
+
+ {{ $initials }} +
+
+ {{ $kab->nama }} +
+
+ {{ $kab->provinsi->nama ?? '-' }} + +
+ + + +
+
Tidak ada data ditemukan.
+
+ +
-
- - - - - - - - - - -
IDKode Kabupaten KotaNama Kabupaten KotaNama ProvinsiActions
-
- @include('users.user.add') + @include('master.kabupatenkota.add') + @include('master.kabupatenkota.view') + @include('master.kabupatenkota.edit')
@endsection @push('scripts') - - + @endpush \ No newline at end of file diff --git a/resources/views/master/kabupatenkota/view.blade.php b/resources/views/master/kabupatenkota/view.blade.php new file mode 100644 index 0000000..47f338f --- /dev/null +++ b/resources/views/master/kabupatenkota/view.blade.php @@ -0,0 +1,34 @@ +
+
+
Detail Kabupaten/Kota
+ +
+ +
+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+
+
+
\ No newline at end of file diff --git a/resources/views/master/kecamatan/add.blade.php b/resources/views/master/kecamatan/add.blade.php new file mode 100644 index 0000000..073bffa --- /dev/null +++ b/resources/views/master/kecamatan/add.blade.php @@ -0,0 +1,49 @@ +
+
+
Tambah Kecamatan
+ +
+ +
+
+ @csrf + +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+
\ No newline at end of file diff --git a/resources/views/master/kecamatan/edit.blade.php b/resources/views/master/kecamatan/edit.blade.php new file mode 100644 index 0000000..6292dec --- /dev/null +++ b/resources/views/master/kecamatan/edit.blade.php @@ -0,0 +1,50 @@ +
+
+
Edit Kecamatan
+ +
+ +
+
+ @csrf + + +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+
\ No newline at end of file diff --git a/resources/views/master/kecamatan/index.blade.php b/resources/views/master/kecamatan/index.blade.php index f04bb8b..9015b52 100644 --- a/resources/views/master/kecamatan/index.blade.php +++ b/resources/views/master/kecamatan/index.blade.php @@ -1,34 +1,321 @@ @extends('layout.main') + @section('content')
-
-
Filters
-
-
-
-
+
+
Data Kecamatan
+
+ +
+
+
+
+ + + +
+
+
+
+ + +
+ +
+
+
+ +
+ + + + + + + + + + + + @forelse($kecamatan as $index => $kec) + + + + + + + + @empty + + + + @endforelse + +
NoKode KecamatanNama KecamatanKabupaten/KotaActions
{{ $kecamatan->firstItem() + $index }}{{ $kec->kode }} + @php + $words = explode(' ', $kec->nama); + $initials = substr(implode('', array_map(fn($w) => strtoupper($w[0] ?? ''), $words)), 0, 2); + $states = ['success', 'danger', 'warning', 'info', 'primary', 'secondary']; + $state = $states[array_rand($states)]; + @endphp +
+
+
+ {{ $initials }} +
+
+ {{ $kec->nama }} +
+
+ {{ $kec->kabupatenkota->nama ?? '-' }} + +
+ + + +
+
Tidak ada data ditemukan.
+
+ +
-
- - - - - - - - - - - -
IDKode KecamatanNama KecamatanNama Kabupaten KotaNama ProvinsiActions
-
- @include('users.user.add') + + @include('master.kecamatan.add') + @include('master.kecamatan.view') + @include('master.kecamatan.edit')
@endsection @push('scripts') - - + @endpush \ No newline at end of file diff --git a/resources/views/master/kecamatan/view.blade.php b/resources/views/master/kecamatan/view.blade.php new file mode 100644 index 0000000..664f911 --- /dev/null +++ b/resources/views/master/kecamatan/view.blade.php @@ -0,0 +1,40 @@ +
+
+
Detail Kecamatan
+ +
+ +
+
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+
+
+
\ No newline at end of file diff --git a/resources/views/master/keluarga/add.blade.php b/resources/views/master/keluarga/add.blade.php new file mode 100644 index 0000000..21d0a89 --- /dev/null +++ b/resources/views/master/keluarga/add.blade.php @@ -0,0 +1,228 @@ +@extends('layout.main') + +@section('content') +
+
+
+
Tambah Data Keluarga
+
+ +
+
+ @csrf + +
Informasi Kartu Keluarga
+ +
+
+ + +
+
+ +
+
Wilayah & Adat
+ +
+
+ + +
+
+ + +
+
+ +
+
+ + +
+
+ + +
+
+ +
+
+ + + Data adat otomatis difilter berdasarkan Desa/Kelurahan yang dipilih. +
+
+ +
+
Dokumen
+ +
+
+ + + +
+ Preview KK +
Dokumen PDF Terpilih
+
+
+
+ +
+ Kembali + +
+
+
+
+
+@endsection + +@push('scripts') + +@endpush \ No newline at end of file diff --git a/resources/views/master/keluarga/edit.blade.php b/resources/views/master/keluarga/edit.blade.php new file mode 100644 index 0000000..b6e4e8a --- /dev/null +++ b/resources/views/master/keluarga/edit.blade.php @@ -0,0 +1,252 @@ +@extends('layout.main') + +@section('content') +
+
+
+
Edit Data Keluarga
+
+ +
+
+ @csrf + + +
Informasi Kartu Keluarga
+ +
+
+ + +
+
+ +
+
Wilayah & Adat
+ +
+
+ + +
+
+ + +
+
+ +
+
+ + +
+
+ + +
+
+ +
+
+ + +
+
+ +
+
Dokumen
+ *Biarkan field upload kosong jika tidak ingin mengubah dokumen lama. + +
+
+ + + + @php + $hasKk = !empty($keluarga->path_kk); + $isKkPdf = $hasKk && strtolower(pathinfo($keluarga->path_kk, PATHINFO_EXTENSION)) === 'pdf'; + @endphp + +
+ Preview KK +
Dokumen PDF (Tersimpan)
+
+
+
+ +
+ Batal + +
+
+
+
+
+@endsection + +@push('scripts') + +@endpush \ No newline at end of file diff --git a/resources/views/master/keluarga/index.blade.php b/resources/views/master/keluarga/index.blade.php new file mode 100644 index 0000000..faff564 --- /dev/null +++ b/resources/views/master/keluarga/index.blade.php @@ -0,0 +1,117 @@ +@extends('layout.main') + +@section('content') +
+
+
+
Data Master Keluarga
+
+ +
+
+
+
+ + + +
+
+
+
+ + +
+ + Tambah Data + +
+
+
+ +
+ + + + + + + + + + + + + @forelse($keluarga as $index => $item) + + + + + + + + + @empty + + @endforelse + +
NoNo. KKDesa/KelurahanAdatFile KKActions
{{ $keluarga->firstItem() + $index }}{{ $item->kk }}{{ $item->desakelurahan->nama ?? '-' }}{{ $item->adat->nama ?? '-' }} + @if($item->path_kk) + Ada + @else + Tidak Ada + @endif + +
+ + + +
+
Tidak ada data ditemukan.
+
+ +
+
+@endsection + +@push('scripts') + +@endpush \ No newline at end of file diff --git a/resources/views/master/keluarga/view.blade.php b/resources/views/master/keluarga/view.blade.php new file mode 100644 index 0000000..ee18ae1 --- /dev/null +++ b/resources/views/master/keluarga/view.blade.php @@ -0,0 +1,92 @@ +@extends('layout.main') + +@section('content') +
+
+
+
Detail Data Keluarga
+ + Kembali + +
+ +
+
+ +
+
+
Informasi KK
+
+ + +
+ +
+
Lokasi Wilayah & Adat
+ +
+
+ + +
+
+ + +
+
+ +
+
+ + +
+
+ + +
+
+ +
+ + +
+
+ +
+
Dokumen Fisik
+ + @if($keluarga->path_kk) + @php + $isPdf = strtolower(pathinfo($keluarga->path_kk, PATHINFO_EXTENSION)) === 'pdf'; + @endphp + + @if($isPdf) +
+ +

{{ $keluarga->file_kk }}

+ + Buka PDF + +
+ @else +
+ + File KK + +
+ *Klik gambar untuk melihat resolusi penuh + @endif + @else +
+ +

Belum ada dokumen KK yang diunggah.

+
+ @endif +
+
+ +
+
+
+
+@endsection \ No newline at end of file diff --git a/resources/views/master/komoditas/add.blade.php b/resources/views/master/komoditas/add.blade.php new file mode 100644 index 0000000..ac0b7a1 --- /dev/null +++ b/resources/views/master/komoditas/add.blade.php @@ -0,0 +1,19 @@ +
+
+
Tambah Komoditas
+ +
+
+
+ @csrf +
+ + +
+
+ + +
+
+
+
\ No newline at end of file diff --git a/resources/views/master/komoditas/edit.blade.php b/resources/views/master/komoditas/edit.blade.php new file mode 100644 index 0000000..33a95a2 --- /dev/null +++ b/resources/views/master/komoditas/edit.blade.php @@ -0,0 +1,22 @@ +
+
+
Edit Komoditas
+ +
+
+
+ @csrf + + + +
+ + +
+
+ + +
+
+
+
\ No newline at end of file diff --git a/resources/views/master/komoditas/index.blade.php b/resources/views/master/komoditas/index.blade.php new file mode 100644 index 0000000..01db5fd --- /dev/null +++ b/resources/views/master/komoditas/index.blade.php @@ -0,0 +1,238 @@ +@extends('layout.main') + +@section('content') +
+
+
+
Data Master Komoditas
+
+ +
+
+
+
+ + + +
+
+
+
+ + +
+ +
+
+
+ +
+ + + + + + + + + + @forelse($komoditas as $index => $item) + + + + + + @empty + + + + @endforelse + +
NoNama KomoditasActions
{{ $komoditas->firstItem() + $index }}{{ $item->nama }} +
+ + + +
+
Tidak ada data komoditas ditemukan.
+
+ + +
+ + @include('master.komoditas.add') + @include('master.komoditas.edit') + @include('master.komoditas.view') +
+@endsection + +@push('scripts') + +@endpush \ No newline at end of file diff --git a/resources/views/master/komoditas/view.blade.php b/resources/views/master/komoditas/view.blade.php new file mode 100644 index 0000000..e84dc21 --- /dev/null +++ b/resources/views/master/komoditas/view.blade.php @@ -0,0 +1,17 @@ +
+
+
Detail Komoditas
+ +
+
+
+
+ + +
+
+ +
+
+
+
\ No newline at end of file diff --git a/resources/views/master/lahan/index.blade.php b/resources/views/master/lahan/index.blade.php new file mode 100644 index 0000000..bb8b3f2 --- /dev/null +++ b/resources/views/master/lahan/index.blade.php @@ -0,0 +1,118 @@ +@extends('layout.main') + +@section('content') +
+
+
+
Data Map Lahan
+
+ +
+
+
+
+ + + +
+
+
+
+ + +
+ +
+
+
+ +
+ + + + + + + + + + + + + + @forelse($lahan as $index => $item) + + + + + + + + + + @empty + + @endforelse + +
NoNama LahanPemilikStatusLuas (Ha/m2)GeoJSONActions
{{ $lahan->firstItem() + $index }}{{ $item->nama }}{{ $item->profile->nama ?? '-' }}{{ $item->status_kepemilikan }}{{ $item->luas_lahan ?? '-' }} + @if($item->path) + Ada + @else + Tidak Ada + @endif + +
+ + +
+
Tidak ada data lahan ditemukan.
+
+ +
+
+@endsection + +@push('scripts') + +@endpush \ No newline at end of file diff --git a/resources/views/master/lahan/view.blade copy.php b/resources/views/master/lahan/view.blade copy.php new file mode 100644 index 0000000..6a99ae2 --- /dev/null +++ b/resources/views/master/lahan/view.blade copy.php @@ -0,0 +1,212 @@ +@extends('layout.main') + +@push('style') + + + +@endpush + +@section('content') +
+
+
+
Detail Map Lahan
+ + Kembali + +
+ +
+
+ +
+
+
Info Lahan
+ +
+ + +
+ +
+ + +
+ +
+
+ + +
+
+ + +
+
+ +
+
Lokasi Wilayah
+ +
+
+ + +
+
+ + +
+
+ +
+
+ + +
+
+ + +
+
+ + @if($lahan->status_kepemilikan === 'Tanah Adat') +
+ + +
+ @endif + +
+ +
+
+
Visualisasi Peta Lahan
+ +
+ + +
+
+ +
+
+ Memuat Peta... +
+
+ +
+ + +
+
+
+ +
+
+
+
+ + +@endsection + +@push('scripts') + +@endpush \ No newline at end of file diff --git a/resources/views/master/lahan/view.blade.php b/resources/views/master/lahan/view.blade.php new file mode 100644 index 0000000..435ae6c --- /dev/null +++ b/resources/views/master/lahan/view.blade.php @@ -0,0 +1,221 @@ +@extends('layout.main') + +@push('style') + + + +@endpush + +@section('content') +
+
+
+
Detail Map Lahan
+ + Kembali + +
+ +
+
+ +
+
+
Info Lahan
+ +
+ + +
+ +
+ + +
+ +
+
+ + +
+
+ + +
+
+ +
+
Lokasi Wilayah
+ +
+
+ + +
+
+ + +
+
+ +
+
+ + +
+
+ + +
+
+ + @if($lahan->status_kepemilikan === 'Tanah Adat') +
+ + +
+ @endif + +
+ +
+
+
Visualisasi Peta Lahan
+ +
+ + +
+
+ +
+
+ Memuat Peta... +
+
+ +
+ + +
+
+
+ +
+
+
+
+ + +@endsection + +@push('scripts') + +@endpush \ No newline at end of file diff --git a/resources/views/master/profile/add.blade.php b/resources/views/master/profile/add.blade.php new file mode 100644 index 0000000..243d56c --- /dev/null +++ b/resources/views/master/profile/add.blade.php @@ -0,0 +1,267 @@ +@extends('layout.main') + +@section('content') +
+
+
+
Tambah Profile Baru
+
+ +
+
+ @csrf + +
Informasi Akun
+
+
+ + +
+
+ + +
+
+ +
+
+ + +
+
+ +
+
Lokasi & Alamat
+ +
+
+ + +
+
+ + +
+
+ +
+
+ + +
+
+ + +
+
+ +
+ + +
+ +
+
Dokumen Pribadi
+ *Biarkan field upload kosong jika tidak ingin mengubah dokumen lama. + +
+
+ + +
+
+ + +
+
+ +
+
+ + +
+ Preview KTP +
Dokumen PDF Terpilih
+
+
+ +
+ + +
+ Preview KK +
Dokumen PDF Terpilih
+
+
+
+ +
+ Kembali + +
+
+
+
+
+@endsection + +@push('scripts') + +@endpush \ No newline at end of file diff --git a/resources/views/master/profile/edit.blade.php b/resources/views/master/profile/edit.blade.php new file mode 100644 index 0000000..09eae9a --- /dev/null +++ b/resources/views/master/profile/edit.blade.php @@ -0,0 +1,300 @@ +@extends('layout.main') + +@section('content') +
+
+
+
Edit Profile
+
+ +
+
+ @csrf + + + +
Informasi Akun
+
+
+ + +
+
+ + +
+
+ +
+
+ + +
+
+ +
+
Lokasi & Alamat
+ +
+
+ + +
+ +
+ + +
+
+ +
+
+ + +
+ +
+ + +
+
+ +
+ + +
+ +
+
Dokumen Pribadi
+ *Biarkan field upload kosong jika tidak ingin mengubah dokumen lama. + +
+
+ + +
+
+ + +
+
+ +
+
+ + + + @php + $hasKtp = !empty($profile->path_ktp); + $isKtpPdf = $hasKtp && strtolower(pathinfo($profile->path_ktp, PATHINFO_EXTENSION)) === 'pdf'; + @endphp + +
+ Preview KTP +
Dokumen PDF (Tersimpan)
+
+
+ +
+ + + + @php + $hasKk = !empty($profile->path_kk); + $isKkPdf = $hasKk && strtolower(pathinfo($profile->path_kk, PATHINFO_EXTENSION)) === 'pdf'; + @endphp + +
+ Preview KK +
Dokumen PDF (Tersimpan)
+
+
+
+ +
+ Batal + +
+
+
+
+
+@endsection + +@push('scripts') + +@endpush \ No newline at end of file diff --git a/resources/views/master/profile/index.blade.php b/resources/views/master/profile/index.blade.php new file mode 100644 index 0000000..2dd5b31 --- /dev/null +++ b/resources/views/master/profile/index.blade.php @@ -0,0 +1,108 @@ +@extends('layout.main') + +@section('content') +
+
+
+
Data Profile
+
+ +
+
+
+
+ + + +
+
+
+
+ + +
+ + Tambah + +
+
+
+ +
+ + + + + + + + @forelse($profiles as $index => $item) + + + + + + + + + @empty + + @endforelse + +
NoUser InfoRoleDesa/KelurahanTeleponActions
{{ $profiles->firstItem() + $index }} + {{ $item->nama }}
+ {{ $item->email }} +
{{ $item->role ?? 'User' }}{{ $item->desakelurahan->nama ?? '-' }}{{ $item->telepon ?? '-' }} +
+ + + +
+
Tidak ada data ditemukan.
+
+ +
+
+@endsection + +@push('scripts') + +@endpush \ No newline at end of file diff --git a/resources/views/master/profile/view.blade.php b/resources/views/master/profile/view.blade.php new file mode 100644 index 0000000..d903bc9 --- /dev/null +++ b/resources/views/master/profile/view.blade.php @@ -0,0 +1,145 @@ +@extends('layout.main') + +@section('content') +
+
+
+
Detail Profile
+ + Kembali + +
+ +
+
+ +
Informasi Akun
+
+
+ + +
+
+ + +
+
+ +
+
+ + +
+
+ + +
+
+ +
+
Lokasi & Alamat
+ +
+
+ + +
+
+ + +
+
+ +
+
+ + +
+
+ + +
+
+ +
+ + +
+ +
+
Dokumen Pribadi
+ +
+
+ + +
+
+ + +
+
+ +
+
+ + @if($profile->path_ktp) + @php + $isKtpPdf = strtolower(pathinfo($profile->path_ktp, PATHINFO_EXTENSION)) === 'pdf'; + @endphp + + @if($isKtpPdf) +
+ +

Dokumen PDF Terlampir

+ + Lihat / Unduh + +
+ @else + + File KTP + + *Klik gambar untuk memperbesar. + @endif + @else +
+ Tidak ada file KTP yang diunggah. +
+ @endif +
+ +
+ + @if($profile->path_kk) + @php + $isKkPdf = strtolower(pathinfo($profile->path_kk, PATHINFO_EXTENSION)) === 'pdf'; + @endphp + + @if($isKkPdf) +
+ +

Dokumen PDF Terlampir

+ + Lihat / Unduh + +
+ @else + + File KK + + *Klik gambar untuk memperbesar. + @endif + @else +
+ Tidak ada file KK yang diunggah. +
+ @endif +
+
+ +
+
+
+
+@endsection \ No newline at end of file diff --git a/resources/views/master/provinsi/add.blade.php b/resources/views/master/provinsi/add.blade.php new file mode 100644 index 0000000..f340345 --- /dev/null +++ b/resources/views/master/provinsi/add.blade.php @@ -0,0 +1,66 @@ +
+
+
Add Provinsi
+ +
+
+
+ @csrf + +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ + + +
+
+
\ No newline at end of file diff --git a/resources/views/master/provinsi/edit.blade.php b/resources/views/master/provinsi/edit.blade.php new file mode 100644 index 0000000..2441c33 --- /dev/null +++ b/resources/views/master/provinsi/edit.blade.php @@ -0,0 +1,44 @@ +
+
+
Edit Provinsi
+ +
+ +
+
+ @csrf + + +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ + + +
+
+
\ No newline at end of file diff --git a/resources/views/master/provinsi/index.blade.php b/resources/views/master/provinsi/index.blade.php index 4c54ab6..67407df 100644 --- a/resources/views/master/provinsi/index.blade.php +++ b/resources/views/master/provinsi/index.blade.php @@ -1,32 +1,237 @@ @extends('layout.main') + @section('content')
-
-
Filters
-
-
-
-
+
+
+
+
+ + + +
+
+
+
+ + +
+ +
+
+
+ +
+ + + + + + + + + + + @forelse($provinsi as $index => $prov) + + + + + + + @empty + + + + @endforelse + +
NoKode ProvinsiNama ProvinsiActions
{{ $provinsi->firstItem() + $index }}{{ $prov->kode }} + @php + $words = explode(' ', $prov->nama); + $initials = substr(implode('', array_map(fn($w) => strtoupper($w[0]), $words)), 0, 2); + $states = ['success', 'danger', 'warning', 'info', 'primary', 'secondary']; + $state = $states[array_rand($states)]; + @endphp +
+
+
+ {{ $initials }} +
+
+
+ {{ $prov->nama }} + {{ $prov->iso ?? '' }} +
+
+
+
+ + + +
+
Tidak ada data ditemukan.
+
+ +
-
- - - - - - - - - -
IDKode ProvinsiNama ProvinsiActions
-
- @include('users.user.add') + @include('master.provinsi.add') + @include('master.provinsi.view') + @include('master.provinsi.edit')
@endsection @push('scripts') - - + @endpush \ No newline at end of file diff --git a/resources/views/master/provinsi/view.blade.php b/resources/views/master/provinsi/view.blade.php new file mode 100644 index 0000000..520ac1d --- /dev/null +++ b/resources/views/master/provinsi/view.blade.php @@ -0,0 +1,32 @@ +
+
+
Detail Provinsi
+ +
+ +
+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ + +
+
+
\ No newline at end of file diff --git a/resources/views/master/tanaman/add.blade.php b/resources/views/master/tanaman/add.blade.php new file mode 100644 index 0000000..e57daa4 --- /dev/null +++ b/resources/views/master/tanaman/add.blade.php @@ -0,0 +1,237 @@ +@extends('layout.main') + +@section('content') + + +
+
+
+
Tambah Map Tanaman
+
+ +
+
+ @csrf + +
+
+
Data Tanaman
+ +
+ + +
+ +
+ + +
+ +
+
+ + +
+
+ + +
+
+ +
+
Tentukan Titik Koordinat
+ +
+ + + Pilih lahan untuk memunculkan poligon di peta. +
+ +
+
+ +
+
+ + +
+
+ + +
+
+ +
+ Batal + +
+
+ +
+
+
+
+

Silakan pilih Lahan terlebih dahulu
+
+
+
+ +
+
+
+
+
+ + +@endsection + +@push('scripts') + +@endpush \ No newline at end of file diff --git a/resources/views/master/tanaman/index.blade.php b/resources/views/master/tanaman/index.blade.php new file mode 100644 index 0000000..db03db4 --- /dev/null +++ b/resources/views/master/tanaman/index.blade.php @@ -0,0 +1,83 @@ +@extends('layout.main') + +@section('content') +
+
+
+
Data Map Tanaman
+
+ +
+
+
+
+ + + +
+
+ +
+
+ +
+ + + + + + + + + + + + + + @forelse($tanaman as $index => $item) + + + + + + + + + + @empty + + @endforelse + +
NoNama TanamanKomoditasLahanKondisiKoordinatActions
{{ $tanaman->firstItem() + $index }}{{ $item->nama }}{{ $item->komoditas->nama ?? '-' }}{{ $item->lahan->nama ?? '-' }} + @if($item->kondisi_tanaman == 'sehat') + Sehat + @elseif($item->kondisi_tanaman == 'sakit') + Sakit + @else + Mati + @endif + {{ $item->latitude }},
{{ $item->longitude }}
+
+ + + +
+
Tidak ada data tanaman ditemukan.
+
+ +
+
+@endsection \ No newline at end of file diff --git a/resources/views/master/tanaman/view.blade.php b/resources/views/master/tanaman/view.blade.php new file mode 100644 index 0000000..46a3c57 --- /dev/null +++ b/resources/views/master/tanaman/view.blade.php @@ -0,0 +1,170 @@ +@extends('layout.main') + +@push('style') + + + +@endpush + +@section('content') +
+
+
+
Detail Map Tanaman
+ + Kembali + +
+ +
+
+
+
Identitas Tanaman
+ +
+ + +
+ +
+ + +
+ +
+
+ +
+ + +
+
+
+ +
+ @if($tanaman->kondisi_tanaman == 'sehat') + Sehat + @elseif($tanaman->kondisi_tanaman == 'sakit') + Sakit + @else + Mati + @endif +
+
+
+ +
+
Informasi Spasial (Lokasi)
+ +
+ + +
+ +
+
+ + +
+
+ + +
+
+
+ +
+
Visualisasi Titik Tanam
+
+
+
+ *Klik pada titik tanaman di peta untuk melihat informasi kondisi. +
+
+
+
+
+ + +@endsection + +@push('scripts') + +@endpush \ No newline at end of file diff --git a/resources/views/master/users/add.blade.php b/resources/views/master/users/add.blade.php new file mode 100644 index 0000000..87693e0 --- /dev/null +++ b/resources/views/master/users/add.blade.php @@ -0,0 +1,43 @@ +
+
+
Tambah User
+ +
+ +
+
+ @csrf + +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+
\ No newline at end of file diff --git a/resources/views/master/users/edit.blade.php b/resources/views/master/users/edit.blade.php new file mode 100644 index 0000000..5fc6e94 --- /dev/null +++ b/resources/views/master/users/edit.blade.php @@ -0,0 +1,45 @@ +
+
+
Edit User
+ +
+ +
+
+ @csrf + + +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+
\ No newline at end of file diff --git a/resources/views/master/users/index.blade.php b/resources/views/master/users/index.blade.php new file mode 100644 index 0000000..55bc18b --- /dev/null +++ b/resources/views/master/users/index.blade.php @@ -0,0 +1,303 @@ +@extends('layout.main') + +@section('content') +
+
+
+
Data Users
+
+ +
+
+
+
+ + + +
+
+
+
+ + +
+ +
+
+
+ +
+ + + + + + + + + + + @forelse($users as $index => $item) + + + + + + + @empty + + + + @endforelse + +
NoUserRoleActions
{{ $users->firstItem() + $index }} + @php + $words = explode(' ', $item->name); + $initials = substr(implode('', array_map(fn($w) => strtoupper($w[0] ?? ''), $words)), 0, 2); + $states = ['success', 'danger', 'warning', 'info', 'primary', 'secondary']; + $state = $states[array_rand($states)]; + @endphp +
+
+
+ {{ $initials }} +
+
+
+ {{ $item->name }} + {{ $item->email }} +
+
+
{{ $item->role }} +
+ + + +
+
Tidak ada data ditemukan.
+
+ + +
+ + @include('master.users.add') + @include('master.users.view') + @include('master.users.edit') +
+@endsection + +@push('scripts') + +@endpush \ No newline at end of file diff --git a/resources/views/master/users/view.blade.php b/resources/views/master/users/view.blade.php new file mode 100644 index 0000000..cd41676 --- /dev/null +++ b/resources/views/master/users/view.blade.php @@ -0,0 +1,30 @@ +
+
+
Detail User
+ +
+ +
+
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+
+
+
\ No newline at end of file diff --git a/resources/views/users/role/index.blade.php b/resources/views/users/role/index.blade.php deleted file mode 100644 index 4f16774..0000000 --- a/resources/views/users/role/index.blade.php +++ /dev/null @@ -1,597 +0,0 @@ -@extends('layout.main') -@section('content') -
-

Roles List

- -

- A role provided access to predefined menus and features so that depending on
- assigned role an administrator can have access to what user needs. -

- -
-
-
-
-
-
Total 4 users
-
    -
  • - Avatar -
  • -
  • - Avatar -
  • -
  • - Avatar -
  • -
  • - Avatar -
  • -
-
-
-
-
Administrator
- Edit Role -
- -
-
-
-
-
-
-
-
-
Total 7 users
-
    -
  • - Avatar -
  • -
  • - Avatar -
  • -
  • - Avatar -
  • -
  • - +4 -
  • -
-
-
-
-
Manager
- Edit Role -
- -
-
-
-
-
-
-
-
-
Total 5 users
-
    -
  • - Avatar -
  • -
  • - Avatar -
  • -
  • - Avatar -
  • -
  • - +2 -
  • -
-
-
-
-
Users
- Edit Role -
- -
-
-
-
-
-
-
-
-
Total 3 users
-
    -
  • - Avatar -
  • -
  • - Avatar -
  • -
  • - Avatar -
  • -
  • - +3 -
  • -
-
-
-
-
Support
- Edit Role -
- -
-
-
-
-
-
-
-
-
Total 2 users
-
    -
  • - Avatar -
  • -
  • - Avatar -
  • -
  • - Avatar -
  • -
  • - +7 -
  • -
-
-
-
-
Restricted User
- Edit Role -
- -
-
-
-
-
-
-
-
-
- Image -
-
-
-
- -

- Add new role,
- if it doesn't exist. -

-
-
-
-
-
-
-

Total users with their roles

-

Find all of your company’s administrator accounts and their associate roles.

-
-
- -
-
- - - - - - - - - - - - - -
UserRolePlanBillingStatusActions
-
-
- -
-
- - - - - - - - -
-@endsection \ No newline at end of file diff --git a/resources/views/users/user/add.blade.php b/resources/views/users/user/add.blade.php deleted file mode 100644 index faa0909..0000000 --- a/resources/views/users/user/add.blade.php +++ /dev/null @@ -1,56 +0,0 @@ -
-
-
Add User
- -
-
-
- @csrf -
- - -
-
- - -
-
- -
- - - - -
-
- - -
-
-
-
\ No newline at end of file diff --git a/routes/web.php b/routes/web.php index bc5d34b..5f3b545 100644 --- a/routes/web.php +++ b/routes/web.php @@ -3,15 +3,12 @@ use Illuminate\Support\Facades\Route; //Auth -Route::get('/login', [App\Http\Controllers\AuthController::class, 'login'])->name('login'); -Route::get('/register', [App\Http\Controllers\AuthController::class, 'register'])->name('register'); -Route::post('/create-account', [App\Http\Controllers\AuthController::class, 'createAccount'])->name('auth.createAccount'); -Route::patch('/users/{user}/verify', [App\Http\Controllers\AuthController::class, 'verify'])->name('users.verify'); -Route::post('/authenticate', [App\Http\Controllers\AuthController::class, 'authenticate'])->name('auth.authenticate'); -Route::post('/logout', [App\Http\Controllers\AuthController::class, 'logout'])->name('logout'); -Route::get('/roles', [App\Http\Controllers\UserRoleController::class, 'index'])->name('roles.index'); -Route::post('/roles', [App\Http\Controllers\UserRoleController::class, 'store'])->name('roles.store'); -Route::delete('/roles/{role}', [App\Http\Controllers\UserRoleController::class, 'destroy'])->name('roles.destroy'); +Route::get('/login', [App\Http\Controllers\Web\AuthController::class, 'login'])->name('login'); +Route::get('/register', [App\Http\Controllers\Web\AuthController::class, 'register'])->name('register'); +Route::post('/create-account', [App\Http\Controllers\Web\AuthController::class, 'createAccount'])->name('auth.createAccount'); +Route::patch('/users/{user}/verify', [App\Http\Controllers\Web\AuthController::class, 'verify'])->name('users.verify'); +Route::post('/authenticate', [App\Http\Controllers\Web\AuthController::class, 'authenticate'])->name('auth.authenticate'); +Route::post('/logout', [App\Http\Controllers\Web\AuthController::class, 'logout'])->name('logout'); Route::middleware('auth') ->group(function () { @@ -24,23 +21,93 @@ Route::middleware('auth') Route::get('/akselerasi', [App\Http\Controllers\Web\AkselerasiDashboardController::class, 'index'])->name('dashboard.akselerasi'); // User - Route::get('/users', [App\Http\Controllers\UserController::class, 'index'])->name('users.index'); - Route::get('/api/users-list', [App\Http\Controllers\UserController::class, 'getUsers'])->name('api.users.list'); + Route::get('/users', [App\Http\Controllers\Web\UserController::class, 'index'])->name('users.index'); + Route::get('/api/users-list', [App\Http\Controllers\Web\UserController::class, 'getUsers'])->name('api.users.list'); // }); // Provinsi - Route::get('/provinsi', [App\Http\Controllers\ProvinsiController::class, 'index'])->name('provinsi.index'); - Route::get('/getprovinsi', [App\Http\Controllers\ProvinsiController::class, 'getProvinsi'])->name('provinsi.list'); + Route::get('/provinsi', [App\Http\Controllers\Web\ProvinsiController::class, 'index'])->name('provinsi.index'); + Route::post('/provinsi', [App\Http\Controllers\Web\ProvinsiController::class, 'store'])->name('provinsi.store'); + Route::get('/provinsi/{id}', [App\Http\Controllers\Web\ProvinsiController::class, 'view'])->name('provinsi.view'); + Route::put('/provinsi/{id}', [App\Http\Controllers\Web\ProvinsiController::class, 'update'])->name('provinsi.update'); + Route::delete('/provinsi/{id}', [App\Http\Controllers\Web\ProvinsiController::class, 'destroy'])->name('provinsi.destroy'); // Kabupaten - Route::get('/kabupatenkota', [App\Http\Controllers\KabupatenKotaController::class, 'index'])->name('kabupatenkota.index'); - Route::get('/getkabupatenkota', [App\Http\Controllers\KabupatenKotaController::class, 'getKabupatenKota'])->name('kabupatenkota.list'); + Route::get('/kabupatenkota', [App\Http\Controllers\Web\KabupatenKotaController::class, 'index'])->name('kabupatenkota.index'); + Route::get('/kabupatenkotabyprovinsi/{provinsi_id}', [App\Http\Controllers\Web\KabupatenKotaController::class, 'getByProvinsi'])->name('kabupatenkota.byprovinsi'); + Route::post('/kabupatenkota', [App\Http\Controllers\Web\KabupatenKotaController::class, 'store'])->name('kabupatenkota.store'); + Route::get('/kabupatenkota/{id}', [App\Http\Controllers\Web\KabupatenKotaController::class, 'view'])->name('kabupatenkota.view'); + Route::put('/kabupatenkota/{id}', [App\Http\Controllers\Web\KabupatenKotaController::class, 'update'])->name('kabupatenkota.update'); + Route::delete('/kabupatenkota/{id}', [App\Http\Controllers\Web\KabupatenKotaController::class, 'destroy'])->name('kabupatenkota.destroy'); // Kecamatan - Route::get('/kecamatan', [App\Http\Controllers\KecamatanController::class, 'index'])->name('kecamatan.index'); - Route::get('/getkecamatan', [App\Http\Controllers\KecamatanController::class, 'getKecamatan'])->name('kecamatan.list'); + Route::get('/kecamatan', [App\Http\Controllers\Web\KecamatanController::class, 'index'])->name('kecamatan.index'); + Route::get('/kecamatanbykabupatenkota/{kabupaten_id}', [App\Http\Controllers\Web\KecamatanController::class, 'getByKabupaten'])->name('kecamatan.bykabupatenkota'); + Route::post('/kecamatan', [App\Http\Controllers\Web\KecamatanController::class, 'store'])->name('kecamatan.store'); + Route::get('/kecamatan/{id}', [App\Http\Controllers\Web\KecamatanController::class, 'view'])->name('kecamatan.view'); + Route::put('/kecamatan/{id}', [App\Http\Controllers\Web\KecamatanController::class, 'update'])->name('kecamatan.update'); + Route::delete('/kecamatan/{id}', [App\Http\Controllers\Web\KecamatanController::class, 'destroy'])->name('kecamatan.destroy'); // Kelurahan - Route::get('/desakelurahan', [App\Http\Controllers\KelurahanController::class, 'index'])->name('desakelurahan.index'); - Route::get('/getdesakelurahan', [App\Http\Controllers\KelurahanController::class, 'getDesaKelurahan'])->name('desakelurahan.list'); + Route::get('/desakelurahan', [App\Http\Controllers\Web\DesaKelurahanController::class, 'index'])->name('desakelurahan.index'); + Route::get('/desakelurahanbykecamatan/{kecamatan_id}', [App\Http\Controllers\Web\DesaKelurahanController::class, 'getByKecamatan'])->name('desakelurahan.bykecamatan'); + Route::post('/desakelurahan', [App\Http\Controllers\Web\DesaKelurahanController::class, 'store'])->name('desakelurahan.store'); + Route::get('/desakelurahan/{id}', [App\Http\Controllers\Web\DesaKelurahanController::class, 'view'])->name('desakelurahan.view'); + Route::put('/desakelurahan/{id}', [App\Http\Controllers\Web\DesaKelurahanController::class, 'update'])->name('desakelurahan.update'); + Route::delete('/desakelurahan/{id}', [App\Http\Controllers\Web\DesaKelurahanController::class, 'destroy'])->name('desakelurahan.destroy'); + + // Adat + Route::get('/adat', [App\Http\Controllers\Web\AdatController::class, 'index'])->name('adat.index'); + Route::get('/adatbydesakelurahan/{adat_id}', [App\Http\Controllers\Web\KecamatanController::class, 'getByKabupaten'])->name('kecamatan.bykabupatenkota'); + Route::post('/adat', [App\Http\Controllers\Web\AdatController::class, 'store'])->name('adat.store'); + Route::get('/adat/{id}', [App\Http\Controllers\Web\AdatController::class, 'show'])->name('adat.view'); + Route::put('/adat/{id}', [App\Http\Controllers\Web\AdatController::class, 'update'])->name('adat.update'); + Route::delete('/adat/{id}', [App\Http\Controllers\Web\AdatController::class, 'destroy'])->name('adat.destroy'); + + // Users + Route::get('/users', [App\Http\Controllers\Web\UserController::class, 'index'])->name('users.index'); + Route::post('/users', [App\Http\Controllers\Web\UserController::class, 'store'])->name('users.store'); + Route::get('/users/{id}', [App\Http\Controllers\Web\UserController::class, 'show'])->name('users.view'); + Route::put('/users/{id}', [App\Http\Controllers\Web\UserController::class, 'update'])->name('users.update'); + Route::delete('/users/{id}', [App\Http\Controllers\Web\UserController::class, 'destroy'])->name('users.destroy'); + + // Profil + Route::get('/profile', [App\Http\Controllers\Web\ProfileController::class, 'index'])->name('profile.index'); + Route::get('/profile/add', [App\Http\Controllers\Web\ProfileController::class, 'create'])->name('profile.create'); + Route::post('/profile', [App\Http\Controllers\Web\ProfileController::class, 'store'])->name('profile.store'); + Route::get('/profile/{id}', [App\Http\Controllers\Web\ProfileController::class, 'show'])->name('profile.show'); + Route::get('/profile/edit/{id}', [App\Http\Controllers\Web\ProfileController::class, 'edit'])->name('profile.edit'); + Route::put('/profile/{id}', [App\Http\Controllers\Web\ProfileController::class, 'update'])->name('profile.update'); + Route::delete('/profile/{id}', [App\Http\Controllers\Web\ProfileController::class, 'destroy'])->name('profile.destroy'); + + Route::get('/lahan', [App\Http\Controllers\Web\LahanController::class, 'index'])->name('lahan.index'); + Route::get('/lahan/add', [App\Http\Controllers\Web\LahanController::class, 'create'])->name('lahan.create'); + Route::post('/lahan', [App\Http\Controllers\Web\LahanController::class, 'store'])->name('lahan.store'); + Route::get('/lahan/edit/{id}', [App\Http\Controllers\Web\LahanController::class, 'edit'])->name('lahan.edit'); + Route::put('/lahan/{id}', [App\Http\Controllers\Web\LahanController::class, 'update'])->name('lahan.update'); + Route::delete('/lahan/{id}', [App\Http\Controllers\Web\LahanController::class, 'destroy'])->name('lahan.destroy'); + Route::get('/lahan/{id}', [App\Http\Controllers\Web\LahanController::class, 'show'])->name('lahan.show'); + + Route::get('/komoditas', [App\Http\Controllers\Web\KomoditasController::class, 'index'])->name('komoditas.index'); + Route::post('/komoditas', [App\Http\Controllers\Web\KomoditasController::class, 'store'])->name('komoditas.store'); + Route::get('/komoditas/{id}', [App\Http\Controllers\Web\KomoditasController::class, 'show'])->name('komoditas.show'); + Route::put('/komoditas/{id}', [App\Http\Controllers\Web\KomoditasController::class, 'update'])->name('komoditas.update'); + Route::delete('/komoditas/{id}', [App\Http\Controllers\Web\KomoditasController::class, 'destroy'])->name('komoditas.destroy'); + + Route::get('/keluarga', [App\Http\Controllers\Web\KeluargaController::class, 'index'])->name('keluarga.index'); + Route::get('/keluarga/add', [App\Http\Controllers\Web\KeluargaController::class, 'create'])->name('keluarga.create'); + Route::post('/keluarga', [App\Http\Controllers\Web\KeluargaController::class, 'store'])->name('keluarga.store'); + Route::get('/keluarga/edit/{id}', [App\Http\Controllers\Web\KeluargaController::class, 'edit'])->name('keluarga.edit'); + Route::put('/keluarga/{id}', [App\Http\Controllers\Web\KeluargaController::class, 'update'])->name('keluarga.update'); + Route::delete('/keluarga/{id}', [App\Http\Controllers\Web\KeluargaController::class, 'destroy'])->name('keluarga.destroy'); + Route::get('/keluarga/{id}', [App\Http\Controllers\Web\KeluargaController::class, 'show'])->name('keluarga.show'); + + Route::get('/tanaman', [App\Http\Controllers\Web\TanamanController::class, 'index'])->name('tanaman.index'); + Route::get('/tanaman/add', [App\Http\Controllers\Web\TanamanController::class, 'create'])->name('tanaman.create'); + Route::post('/tanaman', [App\Http\Controllers\Web\TanamanController::class, 'store'])->name('tanaman.store'); + Route::get('/tanaman/get-lahan/{id}', [App\Http\Controllers\Web\TanamanController::class, 'getLahan'])->name('tanaman.get-lahan'); + Route::get('/tanaman/edit/{id}', [App\Http\Controllers\Web\TanamanController::class, 'edit'])->name('tanaman.edit'); + Route::put('/tanaman/{id}', [App\Http\Controllers\Web\TanamanController::class, 'update'])->name('tanaman.update'); + Route::delete('/tanaman/{id}', [App\Http\Controllers\Web\TanamanController::class, 'destroy'])->name('tanaman.destroy'); + Route::get('/tanaman/{id}', [App\Http\Controllers\Web\TanamanController::class, 'show'])->name('tanaman.show'); }); \ No newline at end of file