fix(master-data-land): create curd master data land officer
This commit is contained in:
parent
9f32685fff
commit
6187448356
|
@ -0,0 +1,213 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use App\Models\Land;
|
||||||
|
use App\Models\LandDetails;
|
||||||
|
use App\Models\Province;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Support\Facades\Auth;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
use Illuminate\Support\Facades\Validator;
|
||||||
|
|
||||||
|
class LandControllerOfficer extends Controller
|
||||||
|
{
|
||||||
|
public function index()
|
||||||
|
{
|
||||||
|
$lands = Land::with('province', 'regency', 'user')->where('user_id', auth()->id())->orderBy('created_at', 'desc')->get();
|
||||||
|
return view('master-data.lahan.index', compact('lands'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function create()
|
||||||
|
{
|
||||||
|
$provinces = Province::all();
|
||||||
|
return view('master-data.lahan.create', compact('provinces'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function store(Request $request)
|
||||||
|
{
|
||||||
|
$customMessage = [
|
||||||
|
'owner.required' => 'Nama pemilik wajib diisi',
|
||||||
|
'owner.max' => 'Nama pemilik maksimal 25 karakter',
|
||||||
|
'owner.string' => 'Nama pemilik harus berupa string',
|
||||||
|
|
||||||
|
'province_id.required' => 'Provinsi wajib diisi',
|
||||||
|
'province_id.exists' => 'Provinsi tidak ditemukan',
|
||||||
|
|
||||||
|
'regency_id.required' => 'Kota wajib diisi',
|
||||||
|
'regency_id.exists' => 'Kota tidak ditemukan',
|
||||||
|
|
||||||
|
'district_id.required' => 'Kecamatan wajib diisi',
|
||||||
|
'district_id.exists' => 'Kecamatan tidak ditemukan',
|
||||||
|
|
||||||
|
'address.required' => 'Alamat wajib diisi',
|
||||||
|
'address.max' => 'Alamat maksimal 100 karakter',
|
||||||
|
'address.string' => 'Alamat harus berupa string',
|
||||||
|
|
||||||
|
'lat.required' => 'Latitude wajib diisi',
|
||||||
|
'lat.numeric' => 'Latitude harus berupa angka',
|
||||||
|
|
||||||
|
'lng.required' => 'Longitude wajib diisi',
|
||||||
|
'lng.numeric' => 'Longitude harus berupa angka',
|
||||||
|
|
||||||
|
'polygon.required' => 'Petak lahan wajib digambar',
|
||||||
|
];
|
||||||
|
|
||||||
|
$validator = Validator::make($request->all(), [
|
||||||
|
'owner' => 'required|string|max:25',
|
||||||
|
'province_id' => 'required|exists:provinces,id',
|
||||||
|
'regency_id' => 'required|exists:regencies,id',
|
||||||
|
'district_id' => 'required|exists:districts,id',
|
||||||
|
'address' => 'required|string|max:100',
|
||||||
|
'lat' => 'required|numeric',
|
||||||
|
'lng' => 'required|numeric',
|
||||||
|
'polygon' => 'required',
|
||||||
|
], $customMessage);
|
||||||
|
|
||||||
|
$polygon = json_decode($request->polygon, true);
|
||||||
|
|
||||||
|
if ($validator->fails()) {
|
||||||
|
toast($validator->messages()->all()[0], 'error')->position('top')->autoclose(3000);
|
||||||
|
return redirect()->back()->withInput();
|
||||||
|
}
|
||||||
|
|
||||||
|
DB::beginTransaction();
|
||||||
|
try {
|
||||||
|
$land = new Land();
|
||||||
|
$land->user_id = Auth::user()->id;
|
||||||
|
$land->owner = $request->owner;
|
||||||
|
$land->province_code = $request->province_id;
|
||||||
|
$land->regency_code = $request->regency_id;
|
||||||
|
$land->district_code = $request->district_id;
|
||||||
|
$land->address = $request->address;
|
||||||
|
$land->latitude = $request->lat;
|
||||||
|
$land->longitude = $request->lng;
|
||||||
|
$land->save();
|
||||||
|
|
||||||
|
foreach ($polygon as $point) {
|
||||||
|
$landDetails = new LandDetails();
|
||||||
|
$landDetails->land_id = $land->id;
|
||||||
|
$landDetails->lat = $point['lat'];
|
||||||
|
$landDetails->lng = $point['lng'];
|
||||||
|
$landDetails->save();
|
||||||
|
}
|
||||||
|
DB::commit();
|
||||||
|
toast('Data berhasil disimpan', 'success')->position('top-right')->autoclose(3000);
|
||||||
|
|
||||||
|
return redirect()->route('lahan.index');
|
||||||
|
} catch (\Throwable $th) {
|
||||||
|
DB::rollBack();
|
||||||
|
toast('Terjadi kesalahan', 'error')->position('top')->autoclose(3000);
|
||||||
|
return redirect()->back();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function edit($id)
|
||||||
|
{
|
||||||
|
$land = Land::with('detailLands')->findOrFail($id);
|
||||||
|
$provinces = Province::all();
|
||||||
|
$landDetails = $land->detailLands->map(function ($detail) {
|
||||||
|
return [
|
||||||
|
'lat' => $detail->lat,
|
||||||
|
'lng' => $detail->lng,
|
||||||
|
];
|
||||||
|
});
|
||||||
|
|
||||||
|
return view('master-data.lahan.edit', compact('id', 'provinces', 'land', 'landDetails'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function update(Request $request, $id)
|
||||||
|
{
|
||||||
|
|
||||||
|
$customMessage = [
|
||||||
|
'owner.required' => 'Nama pemilik wajib diisi',
|
||||||
|
'owner.max' => 'Nama pemilik maksimal 25 karakter',
|
||||||
|
'owner.string' => 'Nama pemilik harus berupa string',
|
||||||
|
|
||||||
|
'province_id.required' => 'Provinsi wajib diisi',
|
||||||
|
'province_id.exists' => 'Provinsi tidak ditemukan',
|
||||||
|
|
||||||
|
'regency_id.required' => 'Kota wajib diisi',
|
||||||
|
'regency_id.exists' => 'Kota tidak ditemukan',
|
||||||
|
|
||||||
|
'district_id.required' => 'Kecamatan wajib diisi',
|
||||||
|
'district_id.exists' => 'Kecamatan tidak ditemukan',
|
||||||
|
|
||||||
|
'address.required' => 'Alamat wajib diisi',
|
||||||
|
'address.max' => 'Alamat maksimal 100 karakter',
|
||||||
|
'address.string' => 'Alamat harus berupa string',
|
||||||
|
|
||||||
|
'lat.required' => 'Latitude wajib diisi',
|
||||||
|
'lat.numeric' => 'Latitude harus berupa angka',
|
||||||
|
|
||||||
|
'lng.required' => 'Longitude wajib diisi',
|
||||||
|
'lng.numeric' => 'Longitude harus berupa angka',
|
||||||
|
|
||||||
|
'polygon.required' => 'Petak lahan wajib digambar',
|
||||||
|
];
|
||||||
|
|
||||||
|
$validator = Validator::make($request->all(), [
|
||||||
|
'owner' => 'required|string|max:25',
|
||||||
|
'province_id' => 'required|exists:provinces,id',
|
||||||
|
'regency_id' => 'required|exists:regencies,id',
|
||||||
|
'district_id' => 'required|exists:districts,id',
|
||||||
|
'address' => 'required|string|max:100',
|
||||||
|
'lat' => 'required|numeric',
|
||||||
|
'lng' => 'required|numeric',
|
||||||
|
'polygon' => 'required',
|
||||||
|
], $customMessage);
|
||||||
|
|
||||||
|
$polygon = json_decode($request->polygon, true);
|
||||||
|
|
||||||
|
if ($validator->fails()) {
|
||||||
|
toast($validator->messages()->all()[0], 'error')->position('top')->autoclose(3000);
|
||||||
|
return redirect()->back()->withInput();
|
||||||
|
}
|
||||||
|
|
||||||
|
DB::beginTransaction();
|
||||||
|
try {
|
||||||
|
$land = Land::findOrFail($id);
|
||||||
|
$land->user_id = Auth::user()->id;
|
||||||
|
$land->owner = $request->owner;
|
||||||
|
$land->province_code = $request->province_id;
|
||||||
|
$land->regency_code = $request->regency_id;
|
||||||
|
$land->district_code = $request->district_id;
|
||||||
|
$land->address = $request->address;
|
||||||
|
$land->latitude = $request->lat;
|
||||||
|
$land->longitude = $request->lng;
|
||||||
|
$land->save();
|
||||||
|
|
||||||
|
LandDetails::where('land_id', $land->id)->delete();
|
||||||
|
|
||||||
|
foreach ($polygon as $point) {
|
||||||
|
$landDetails = new LandDetails();
|
||||||
|
$landDetails->land_id = $land->id;
|
||||||
|
$landDetails->lat = $point['lat'];
|
||||||
|
$landDetails->lng = $point['lng'];
|
||||||
|
$landDetails->save();
|
||||||
|
}
|
||||||
|
DB::commit();
|
||||||
|
toast('Data berhasil diubah', 'success')->position('top-right')->autoclose(3000);
|
||||||
|
|
||||||
|
return redirect()->route('lahan.index');
|
||||||
|
} catch (\Throwable $th) {
|
||||||
|
DB::rollBack();
|
||||||
|
dd($th->getMessage());
|
||||||
|
toast('Terjadi kesalahan', 'error')->position('top')->autoclose(3000);
|
||||||
|
return redirect()->back();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function destroy($id)
|
||||||
|
{
|
||||||
|
$land = Land::find($id);
|
||||||
|
try {
|
||||||
|
$land->delete();
|
||||||
|
toast('Data berhasil dihapus', 'success')->position('top-right')->autoclose(3000);
|
||||||
|
return redirect()->back();
|
||||||
|
} catch (\Throwable $th) {
|
||||||
|
toast('Terjadi kesalahan', 'error')->position('top')->autoclose(3000);
|
||||||
|
return redirect()->back();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -49,7 +49,9 @@ class="ri-add-line align-bottom me-1"></i>
|
||||||
<th class="sort" data-sort="no">No</th>
|
<th class="sort" data-sort="no">No</th>
|
||||||
<th class="sort" data-sort="owner">Pemilik</th>
|
<th class="sort" data-sort="owner">Pemilik</th>
|
||||||
<th class="sort" data-sort="address">Alamat</th>
|
<th class="sort" data-sort="address">Alamat</th>
|
||||||
|
@if (Auth::user()->role == 'admin')
|
||||||
<th class="sort" data-sort="user">Petugas</th>
|
<th class="sort" data-sort="user">Petugas</th>
|
||||||
|
@endif
|
||||||
<th class="sort" data-sort="action">Action</th>
|
<th class="sort" data-sort="action">Action</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
|
@ -67,7 +69,9 @@ class="fw-medium link-primary">#VZ2101</a></td>
|
||||||
{{ ucwords(strtolower($land->regency->name)) }}, Provinsi
|
{{ ucwords(strtolower($land->regency->name)) }}, Provinsi
|
||||||
{{ ucwords(strtolower($land->province->name)) }}</span>
|
{{ ucwords(strtolower($land->province->name)) }}</span>
|
||||||
</td>
|
</td>
|
||||||
|
@if (Auth::user()->role == 'admin')
|
||||||
<td class="user">{{ $land->user->username }}</td>
|
<td class="user">{{ $land->user->username }}</td>
|
||||||
|
@endif
|
||||||
<td>
|
<td>
|
||||||
<div class="d-flex gap-2 justify-content-center">
|
<div class="d-flex gap-2 justify-content-center">
|
||||||
<div class="edit">
|
<div class="edit">
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
use App\Http\Controllers\Auth\RegisteredUserController;
|
use App\Http\Controllers\Auth\RegisteredUserController;
|
||||||
use App\Http\Controllers\Auth\TwoStepVerifyController;
|
use App\Http\Controllers\Auth\TwoStepVerifyController;
|
||||||
use App\Http\Controllers\DashboardController;
|
use App\Http\Controllers\DashboardController;
|
||||||
|
use App\Http\Controllers\LandControllerOfficer;
|
||||||
use App\Http\Controllers\LocationController;
|
use App\Http\Controllers\LocationController;
|
||||||
use App\Http\Controllers\MasterData\IndicatorController;
|
use App\Http\Controllers\MasterData\IndicatorController;
|
||||||
use App\Http\Controllers\MasterData\LandController;
|
use App\Http\Controllers\MasterData\LandController;
|
||||||
|
@ -126,7 +127,7 @@
|
||||||
Route::get('/', 'officer')->name('index');
|
Route::get('/', 'officer')->name('index');
|
||||||
});
|
});
|
||||||
|
|
||||||
Route::prefix('data-lahan-petugas')->controller(LandController::class)->name('lahan.')->group(function () {
|
Route::prefix('data-lahan-petugas')->controller(LandControllerOfficer::class)->name('lahan.')->group(function () {
|
||||||
Route::get('/', 'index')->name('index');
|
Route::get('/', 'index')->name('index');
|
||||||
Route::get('/tambah', 'create')->name('create');
|
Route::get('/tambah', 'create')->name('create');
|
||||||
Route::post('/tambah', 'store')->name('store');
|
Route::post('/tambah', 'store')->name('store');
|
||||||
|
@ -134,5 +135,14 @@
|
||||||
Route::put('/edit/{id}', 'update')->name('update');
|
Route::put('/edit/{id}', 'update')->name('update');
|
||||||
Route::delete('/{id}', 'destroy')->name('destroy');
|
Route::delete('/{id}', 'destroy')->name('destroy');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Route::prefix('data-lahan-petugas')->controller(LandController::class)->name('lahan.')->group(function () {
|
||||||
|
// Route::get('/', 'index')->name('index');
|
||||||
|
// Route::get('/tambah', 'create')->name('create');
|
||||||
|
// Route::post('/tambah', 'store')->name('store');
|
||||||
|
// Route::get('/edit/{id}', 'edit')->name('edit');
|
||||||
|
// Route::put('/edit/{id}', 'update')->name('update');
|
||||||
|
// Route::delete('/{id}', 'destroy')->name('destroy');
|
||||||
|
// });
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue