Update Alert Profil Petani
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Web\Produktivitas;
|
||||
|
||||
use App\Enums\StatusDataPetani;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Pertanian\Petani;
|
||||
use App\Services\Produktivitas\KelengkapanPetani;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Validation\Rule;
|
||||
|
||||
/**
|
||||
* Enumerator penginput menandai data petani Lengkap, atau membatalkannya kembali ke Draf.
|
||||
* Perubahan ke Terverifikasi dilakukan koordinator (menu menyusul), bukan di sini.
|
||||
*/
|
||||
class PetaniStatusController extends Controller
|
||||
{
|
||||
public function update(Request $request, Petani $petani)
|
||||
{
|
||||
abort_unless($petani->bisaDitandaiOleh($request->user()), 403);
|
||||
|
||||
$validated = $request->validate([
|
||||
'status' => ['required', Rule::in([StatusDataPetani::LENGKAP->value, StatusDataPetani::DRAFT->value])],
|
||||
]);
|
||||
$tujuan = StatusDataPetani::from($validated['status']);
|
||||
|
||||
if ($petani->status === StatusDataPetani::TERVERIFIKASI) {
|
||||
return back()->with('status_petani_error', 'Data petani sudah terverifikasi. Hubungi koordinator untuk mengubahnya.');
|
||||
}
|
||||
|
||||
if ($tujuan === StatusDataPetani::LENGKAP) {
|
||||
if ($petani->status !== StatusDataPetani::DRAFT) {
|
||||
return back()->with('status_petani_error', 'Data petani sudah ditandai lengkap.');
|
||||
}
|
||||
|
||||
$wajibKosong = KelengkapanPetani::untuk($petani)->jumlahWajibKosong();
|
||||
if ($wajibKosong > 0) {
|
||||
return back()->with('status_petani_error', "Masih ada {$wajibKosong} isian wajib yang kosong.");
|
||||
}
|
||||
}
|
||||
|
||||
if ($tujuan === StatusDataPetani::DRAFT && $petani->status !== StatusDataPetani::LENGKAP) {
|
||||
return back()->with('status_petani_error', 'Data petani masih berstatus draf.');
|
||||
}
|
||||
|
||||
$petani->status = $tujuan;
|
||||
$petani->updated_by = $request->user()->id;
|
||||
$petani->save();
|
||||
|
||||
return back()->with('status_petani_success', $tujuan === StatusDataPetani::LENGKAP
|
||||
? 'Data petani berhasil ditandai lengkap.'
|
||||
: 'Tanda lengkap berhasil dibatalkan. Status kembali ke draf.');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user