Compare commits
2
Commits
a1d9b34d93
...
3df381a66c
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3df381a66c | ||
|
|
6fac76127d |
@@ -7,7 +7,7 @@ use Illuminate\Http\Request;
|
|||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
use Illuminate\Support\Facades\Auth;
|
use Illuminate\Support\Facades\Auth;
|
||||||
use Illuminate\Support\Facades\Hash;
|
use Illuminate\Support\Facades\Hash;
|
||||||
use Illuminate\Support\Facades\Validator;
|
use Illuminate\Support\Str;
|
||||||
use Illuminate\Validation\ValidationException;
|
use Illuminate\Validation\ValidationException;
|
||||||
|
|
||||||
class AuthController extends Controller
|
class AuthController extends Controller
|
||||||
@@ -26,23 +26,22 @@ class AuthController extends Controller
|
|||||||
|
|
||||||
public function createAccount(Request $request)
|
public function createAccount(Request $request)
|
||||||
{
|
{
|
||||||
$validator = Validator::make($request->all(), [
|
$credentials = $request->validate([
|
||||||
'name' => 'required|string|max:255',
|
'username' => 'required|string|max:255|unique:users,username',
|
||||||
'email' => 'required|string|email|max:255|unique:users',
|
'email' => 'required|string|email|max:255|unique:users,email',
|
||||||
'password' => 'required|string|min:8|confirmed',
|
'password' => 'required|string|min:8|confirmed',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
User::create([
|
User::create([
|
||||||
'name' => $request->name,
|
'uid' => (string) Str::uuid(),
|
||||||
'email' => $request->email,
|
'name' => $credentials['username'],
|
||||||
'password' => Hash::make($request->password),
|
'username' => $credentials['username'],
|
||||||
|
'email' => $credentials['email'],
|
||||||
|
'password' => Hash::make($credentials['password']),
|
||||||
'email_verified_at' => null,
|
'email_verified_at' => null,
|
||||||
'created_by' => null,
|
|
||||||
'updated_by' => null,
|
|
||||||
'deleted_by' => null,
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
return redirect()->route('auth.login')->with('success', 'Account created successfully. Please login.');
|
return redirect()->route('login')->with('success', 'Account created successfully. Please login.');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function verify(User $user)
|
public function verify(User $user)
|
||||||
|
|||||||
@@ -6,7 +6,9 @@ use Illuminate\Database\Eloquent\Model;
|
|||||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||||
|
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||||
use Illuminate\Database\Eloquent\Relations\HasOne;
|
use Illuminate\Database\Eloquent\Relations\HasOne;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
|
|
||||||
use App\Models\Wilayah\DesaKelurahan;
|
use App\Models\Wilayah\DesaKelurahan;
|
||||||
@@ -80,4 +82,194 @@ class Petani extends Model
|
|||||||
{
|
{
|
||||||
return $this->hasOne(PraktikBudidaya::class, 'petani_id');
|
return $this->hasOne(PraktikBudidaya::class, 'petani_id');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function praktikBudidaya(): HasOne
|
||||||
|
{
|
||||||
|
return $this->hasOne(PraktikBudidaya::class, 'petani_id')->latestOfMany();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function lahans(): HasMany
|
||||||
|
{
|
||||||
|
return $this->hasMany(Lahan::class, 'petani_id');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function sosialEkonomi(): HasOne
|
||||||
|
{
|
||||||
|
return $this->hasOne(SosialEkonomi::class, 'petani_id');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function aksesPasar(): HasOne
|
||||||
|
{
|
||||||
|
return $this->hasOne(AksesPasar::class, 'petani_id');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function skorLahanTanaman(): ?float
|
||||||
|
{
|
||||||
|
if (!Schema::hasTable('map_lahan')) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
$lahan = $this->lahans()->get();
|
||||||
|
|
||||||
|
if ($lahan->isEmpty()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
$nilaiKondisi = $lahan
|
||||||
|
->map(fn ($item) => match ($this->enumValue($item->kondisi_tanaman)) {
|
||||||
|
'baik' => 5,
|
||||||
|
'sedang' => 3,
|
||||||
|
'buruk' => 1,
|
||||||
|
'mati' => 0,
|
||||||
|
default => null,
|
||||||
|
})
|
||||||
|
->filter(fn ($value) => !is_null($value));
|
||||||
|
|
||||||
|
if ($nilaiKondisi->isEmpty()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return round($nilaiKondisi->avg() * 0.1, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function skorPraktikBudidaya(): ?float
|
||||||
|
{
|
||||||
|
if (!Schema::hasTable('praktik_budidaya')) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
$praktikBudidaya = $this->praktikBudidaya()->first();
|
||||||
|
|
||||||
|
if (!$praktikBudidaya) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
$nilai = collect([
|
||||||
|
$praktikBudidaya->frekuensi_pemangkasan_utama,
|
||||||
|
$praktikBudidaya->pemberian_pupuk,
|
||||||
|
$praktikBudidaya->metode_penanganan_opt,
|
||||||
|
$praktikBudidaya->frekuensi_sanitasi_lahan,
|
||||||
|
$praktikBudidaya->penanganan_gulma,
|
||||||
|
$praktikBudidaya->kondisi_pengelolaan_air,
|
||||||
|
$praktikBudidaya->nilai_konservasi_tanah,
|
||||||
|
])->filter(fn ($value) => !is_null($value) && $value !== '');
|
||||||
|
|
||||||
|
if ($nilai->isEmpty()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return round($nilai->sum(fn ($value) => (int) $value) * 0.1, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function skorPendidikan(): ?float
|
||||||
|
{
|
||||||
|
if (!$this->pendidikan_terakhir) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
$nilai = match ($this->enumValue($this->pendidikan_terakhir)) {
|
||||||
|
Pendidikan::TIDAK_SEKOLAH->value => 1,
|
||||||
|
Pendidikan::SD->value => 2,
|
||||||
|
Pendidikan::SMP->value => 3,
|
||||||
|
Pendidikan::SMA->value,
|
||||||
|
Pendidikan::PESANTREN->value,
|
||||||
|
Pendidikan::LAINNYA->value => 4,
|
||||||
|
Pendidikan::DIPLOMA->value,
|
||||||
|
Pendidikan::SARJANA->value,
|
||||||
|
Pendidikan::MAGISTER->value,
|
||||||
|
Pendidikan::DOKTOR->value => 5,
|
||||||
|
default => null,
|
||||||
|
};
|
||||||
|
|
||||||
|
return is_null($nilai) ? null : round($nilai * 0.1, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function skorSosialEkonomi(): ?float
|
||||||
|
{
|
||||||
|
if (!Schema::hasTable('sosial_ekonomi')) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
$sosialEkonomi = $this->sosialEkonomi()->first();
|
||||||
|
|
||||||
|
if (!$sosialEkonomi) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
$nilai = collect([
|
||||||
|
$this->enumValue($sosialEkonomi->skor_periode_paceklik),
|
||||||
|
$this->enumValue($sosialEkonomi->skor_kemampuan_menabung),
|
||||||
|
$this->enumValue($sosialEkonomi->skor_kecukupan_penghasilan),
|
||||||
|
$this->enumValue($sosialEkonomi->skor_kejelasan_status_lahan),
|
||||||
|
])->filter(fn ($value) => !is_null($value) && $value !== '');
|
||||||
|
|
||||||
|
if ($nilai->isEmpty()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return round($nilai->sum(fn ($value) => (int) $value) * 0.2, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function skorAksesPasar(): ?float
|
||||||
|
{
|
||||||
|
if (!Schema::hasTable('akses_pasar')) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
$aksesPasar = $this->aksesPasar()->first();
|
||||||
|
|
||||||
|
if (!$aksesPasar) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
$nilai = collect([
|
||||||
|
$aksesPasar->skor_pengalaman,
|
||||||
|
$aksesPasar->skor_kesadaran_premium,
|
||||||
|
])->filter(fn ($value) => !is_null($value) && $value !== '');
|
||||||
|
|
||||||
|
if ($nilai->isEmpty()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return round($nilai->sum(fn ($value) => (int) $value) * 0.1, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function skorSegmenPetani(): ?float
|
||||||
|
{
|
||||||
|
$nilai = collect([
|
||||||
|
$this->skorLahanTanaman(),
|
||||||
|
$this->skorPraktikBudidaya(),
|
||||||
|
$this->skorPendidikan(),
|
||||||
|
$this->skorSosialEkonomi(),
|
||||||
|
$this->skorAksesPasar(),
|
||||||
|
])->filter(fn ($value) => !is_null($value));
|
||||||
|
|
||||||
|
if ($nilai->isEmpty()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return round($nilai->sum(), 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function segmenPetani(): ?string
|
||||||
|
{
|
||||||
|
$skor = $this->skorSegmenPetani();
|
||||||
|
|
||||||
|
if (is_null($skor)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return match (true) {
|
||||||
|
$skor >= 4.0 => 'Penggerak',
|
||||||
|
$skor >= 3.0 => 'Perintis',
|
||||||
|
$skor >= 2.0 => 'Pemerhati',
|
||||||
|
$skor >= 1.0 => 'Pemula',
|
||||||
|
default => 'Belum tersegmentasi',
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
private function enumValue(mixed $value): mixed
|
||||||
|
{
|
||||||
|
return $value instanceof \BackedEnum ? $value->value : $value;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -56,13 +56,20 @@
|
|||||||
type="text"
|
type="text"
|
||||||
class="form-control"
|
class="form-control"
|
||||||
id="username"
|
id="username"
|
||||||
name="name"
|
name="username"
|
||||||
|
value="{{ old('username') }}"
|
||||||
placeholder="Enter your username"
|
placeholder="Enter your username"
|
||||||
autofocus />
|
autofocus />
|
||||||
|
@error('username')
|
||||||
|
<div class="invalid-feedback d-block">{{ $message }}</div>
|
||||||
|
@enderror
|
||||||
</div>
|
</div>
|
||||||
<div class="mb-6 form-control-validation">
|
<div class="mb-6 form-control-validation">
|
||||||
<label for="email" class="form-label">Email</label>
|
<label for="email" class="form-label">Email</label>
|
||||||
<input type="text" class="form-control" id="email" name="email" placeholder="Enter your email" />
|
<input type="text" class="form-control" id="email" name="email" value="{{ old('email') }}" placeholder="Enter your email" />
|
||||||
|
@error('email')
|
||||||
|
<div class="invalid-feedback d-block">{{ $message }}</div>
|
||||||
|
@enderror
|
||||||
</div>
|
</div>
|
||||||
<div class="mb-6 form-password-toggle form-control-validation">
|
<div class="mb-6 form-password-toggle form-control-validation">
|
||||||
<label class="form-label" for="password">Password</label>
|
<label class="form-label" for="password">Password</label>
|
||||||
@@ -76,6 +83,22 @@
|
|||||||
aria-describedby="password" />
|
aria-describedby="password" />
|
||||||
<span class="input-group-text cursor-pointer"><i class="icon-base ti tabler-eye-off"></i></span>
|
<span class="input-group-text cursor-pointer"><i class="icon-base ti tabler-eye-off"></i></span>
|
||||||
</div>
|
</div>
|
||||||
|
@error('password')
|
||||||
|
<div class="invalid-feedback d-block">{{ $message }}</div>
|
||||||
|
@enderror
|
||||||
|
</div>
|
||||||
|
<div class="mb-6 form-password-toggle form-control-validation">
|
||||||
|
<label class="form-label" for="password_confirmation">Confirm Password</label>
|
||||||
|
<div class="input-group input-group-merge">
|
||||||
|
<input
|
||||||
|
type="password"
|
||||||
|
id="password_confirmation"
|
||||||
|
class="form-control"
|
||||||
|
name="password_confirmation"
|
||||||
|
placeholder="············"
|
||||||
|
aria-describedby="password_confirmation" />
|
||||||
|
<span class="input-group-text cursor-pointer"><i class="icon-base ti tabler-eye-off"></i></span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="my-8 form-control-validation">
|
<div class="my-8 form-control-validation">
|
||||||
<div class="form-check mb-0 ms-2">
|
<div class="form-check mb-0 ms-2">
|
||||||
@@ -119,4 +142,4 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@endsection
|
@endsection
|
||||||
|
|||||||
@@ -23,6 +23,37 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-md-8 d-flex flex-column">
|
<div class="col-md-8 d-flex flex-column">
|
||||||
|
@php
|
||||||
|
$skorLahanTanaman = isset($petani) ? $petani->skorLahanTanaman() : null;
|
||||||
|
$skorPraktikBudidaya = isset($petani) ? $petani->skorPraktikBudidaya() : null;
|
||||||
|
$skorPendidikan = isset($petani) ? $petani->skorPendidikan() : null;
|
||||||
|
$skorSosialEkonomiSegmen = isset($petani) ? $petani->skorSosialEkonomi() : null;
|
||||||
|
$skorAksesPasarSegmen = isset($petani) ? $petani->skorAksesPasar() : null;
|
||||||
|
|
||||||
|
$skorSegmenPetani = collect([
|
||||||
|
$skorLahanTanaman,
|
||||||
|
$skorPraktikBudidaya,
|
||||||
|
$skorPendidikan,
|
||||||
|
$skorSosialEkonomiSegmen,
|
||||||
|
$skorAksesPasarSegmen,
|
||||||
|
])->filter(fn ($value) => !is_null($value))->sum();
|
||||||
|
|
||||||
|
$skorSegmenPetani = $skorSegmenPetani > 0 ? round($skorSegmenPetani, 1) : null;
|
||||||
|
$segmenPetani = is_null($skorSegmenPetani) ? null : match (true) {
|
||||||
|
$skorSegmenPetani >= 4.0 => 'Penggerak',
|
||||||
|
$skorSegmenPetani >= 3.0 => 'Perintis',
|
||||||
|
$skorSegmenPetani >= 2.0 => 'Pemerhati',
|
||||||
|
$skorSegmenPetani >= 1.0 => 'Pemula',
|
||||||
|
default => 'Belum tersegmentasi',
|
||||||
|
};
|
||||||
|
|
||||||
|
$lahanPetani = isset($petani) && \Illuminate\Support\Facades\Schema::hasTable('map_lahan')
|
||||||
|
? $petani->lahans()->get()
|
||||||
|
: collect();
|
||||||
|
$totalLuasLahan = $lahanPetani->sum('luas_lahan');
|
||||||
|
$totalTanaman = $lahanPetani->sum('jumlah_tanaman');
|
||||||
|
$pendidikanLabel = isset($petani) ? $petani->pendidikan_terakhir?->label() : null;
|
||||||
|
@endphp
|
||||||
|
|
||||||
<div class="card mb-2 flex-grow-1">
|
<div class="card mb-2 flex-grow-1">
|
||||||
<div class="card-widget-separator-wrapper h-100">
|
<div class="card-widget-separator-wrapper h-100">
|
||||||
@@ -31,9 +62,13 @@
|
|||||||
<div class="d-flex justify-content-between align-items-center card-widget-1 border-end h-100 pe-3">
|
<div class="d-flex justify-content-between align-items-center card-widget-1 border-end h-100 pe-3">
|
||||||
<div>
|
<div>
|
||||||
<p class="mb-0 text-muted" style="font-size: 0.75rem;">Segmen Petani</p>
|
<p class="mb-0 text-muted" style="font-size: 0.75rem;">Segmen Petani</p>
|
||||||
<h5 class="mb-0">Penggerak</h5>
|
<h5 class="mb-0">{{ $segmenPetani ?? '-' }}</h5>
|
||||||
<p class="mb-0" style="font-size: 0.75rem;">
|
<p class="mb-0" style="font-size: 0.75rem;">
|
||||||
<span class="me-1">Skor 4.2</span></span>
|
@if(!is_null($skorSegmenPetani))
|
||||||
|
<span class="me-1">Skor {{ number_format($skorSegmenPetani, 1) }}</span>
|
||||||
|
@else
|
||||||
|
<span class="me-1">Belum isi</span>
|
||||||
|
@endif
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<span class="avatar">
|
<span class="avatar">
|
||||||
@@ -47,9 +82,19 @@
|
|||||||
<div class="d-flex justify-content-between align-items-center card-widget-1 border-end h-100 px-3">
|
<div class="d-flex justify-content-between align-items-center card-widget-1 border-end h-100 px-3">
|
||||||
<div>
|
<div>
|
||||||
<p class="mb-0 text-muted" style="font-size: 0.75rem;">Lahan & Tanaman</p>
|
<p class="mb-0 text-muted" style="font-size: 0.75rem;">Lahan & Tanaman</p>
|
||||||
<h5 class="mb-0">12000 m<sup>2</sup></h5>
|
<h5 class="mb-0">
|
||||||
|
@if($lahanPetani->isNotEmpty())
|
||||||
|
{{ number_format($totalLuasLahan, 0, ',', '.') }} m<sup>2</sup>
|
||||||
|
@else
|
||||||
|
-
|
||||||
|
@endif
|
||||||
|
</h5>
|
||||||
<p class="mb-0" style="font-size: 0.75rem;">
|
<p class="mb-0" style="font-size: 0.75rem;">
|
||||||
<span class="me-1">120 tanaman kopi</span><span class="text-success fw-medium">sehat</span>
|
@if(!is_null($skorLahanTanaman))
|
||||||
|
<span class="me-1">Skor {{ number_format($skorLahanTanaman, 1) }}</span><span class="text-success fw-medium">{{ number_format($totalTanaman, 0, ',', '.') }} tanaman</span>
|
||||||
|
@else
|
||||||
|
<span class="me-1">Belum isi</span>
|
||||||
|
@endif
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<span class="avatar">
|
<span class="avatar">
|
||||||
@@ -63,9 +108,19 @@
|
|||||||
<div class="d-flex justify-content-between align-items-center card-widget-1 h-100 ps-3">
|
<div class="d-flex justify-content-between align-items-center card-widget-1 h-100 ps-3">
|
||||||
<div>
|
<div>
|
||||||
<p class="mb-0 text-muted" style="font-size: 0.75rem;">Praktik Budidaya</p>
|
<p class="mb-0 text-muted" style="font-size: 0.75rem;">Praktik Budidaya</p>
|
||||||
<h5 class="mb-0">$5,345.43</h5>
|
<h5 class="mb-0">
|
||||||
|
@if(!is_null($skorPraktikBudidaya))
|
||||||
|
{{ number_format(round($skorPraktikBudidaya), 0, ',', '.') }}%
|
||||||
|
@else
|
||||||
|
-
|
||||||
|
@endif
|
||||||
|
</h5>
|
||||||
<p class="mb-0" style="font-size: 0.75rem;">
|
<p class="mb-0" style="font-size: 0.75rem;">
|
||||||
<span class="me-1">5k orders</span><span class="text-success fw-medium">+5.7%</span>
|
@if(!is_null($skorPraktikBudidaya))
|
||||||
|
<span class="me-1">Skor {{ number_format($skorPraktikBudidaya, 1) }}</span>
|
||||||
|
@else
|
||||||
|
<span class="me-1">Belum isi</span>
|
||||||
|
@endif
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<span class="avatar">
|
<span class="avatar">
|
||||||
@@ -88,9 +143,13 @@
|
|||||||
<div class="d-flex justify-content-between align-items-center card-widget-1 border-end h-100 pe-3">
|
<div class="d-flex justify-content-between align-items-center card-widget-1 border-end h-100 pe-3">
|
||||||
<div>
|
<div>
|
||||||
<p class="mb-0 text-muted" style="font-size: 0.75rem;">Pendidikan</p>
|
<p class="mb-0 text-muted" style="font-size: 0.75rem;">Pendidikan</p>
|
||||||
<h5 class="mb-0">$5,345.43</h5>
|
<h5 class="mb-0">{{ $pendidikanLabel ?? '-' }}</h5>
|
||||||
<p class="mb-0" style="font-size: 0.75rem;">
|
<p class="mb-0" style="font-size: 0.75rem;">
|
||||||
<span class="me-1">5k orders</span><span class="text-success fw-medium">+5.7%</span>
|
@if(!is_null($skorPendidikan))
|
||||||
|
<span class="me-1">Skor {{ number_format($skorPendidikan, 1) }}</span>
|
||||||
|
@else
|
||||||
|
<span class="me-1">Belum isi</span>
|
||||||
|
@endif
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<span class="avatar">
|
<span class="avatar">
|
||||||
@@ -104,9 +163,37 @@
|
|||||||
<div class="d-flex justify-content-between align-items-center card-widget-1 border-end h-100 px-3">
|
<div class="d-flex justify-content-between align-items-center card-widget-1 border-end h-100 px-3">
|
||||||
<div>
|
<div>
|
||||||
<p class="mb-0 text-muted" style="font-size: 0.75rem;">Sosial Ekonomi</p>
|
<p class="mb-0 text-muted" style="font-size: 0.75rem;">Sosial Ekonomi</p>
|
||||||
<h5 class="mb-0">$5,345.43</h5>
|
@php
|
||||||
|
$sosialEkonomi = isset($petani) ? $petani->sosialEkonomi : null;
|
||||||
|
$skorSosialEkonomi = null;
|
||||||
|
$skorSosialEkonomiBulat = null;
|
||||||
|
|
||||||
|
if($sosialEkonomi) {
|
||||||
|
$enumValue = fn ($value) => $value instanceof \BackedEnum ? $value->value : $value;
|
||||||
|
|
||||||
|
$periodePaceklik = (int) ($enumValue($sosialEkonomi->skor_periode_paceklik) ?? 0);
|
||||||
|
$kemampuanMenabung = (int) ($enumValue($sosialEkonomi->skor_kemampuan_menabung) ?? 0);
|
||||||
|
$kecukupanPenghasilan = (int) ($enumValue($sosialEkonomi->skor_kecukupan_penghasilan) ?? 0);
|
||||||
|
$kejelasanStatusLahan = (int) ($enumValue($sosialEkonomi->skor_kejelasan_status_lahan) ?? 0);
|
||||||
|
|
||||||
|
$totalSkor = $periodePaceklik + $kemampuanMenabung + $kecukupanPenghasilan + $kejelasanStatusLahan;
|
||||||
|
$skorSosialEkonomi = ($totalSkor * 20) / 100;
|
||||||
|
$skorSosialEkonomiBulat = (int) round($skorSosialEkonomi);
|
||||||
|
}
|
||||||
|
@endphp
|
||||||
|
<h5 class="mb-0">
|
||||||
|
@if($sosialEkonomi)
|
||||||
|
{{ number_format($skorSosialEkonomiBulat, 0, ',', '.') }}%
|
||||||
|
@else
|
||||||
|
-
|
||||||
|
@endif
|
||||||
|
</h5>
|
||||||
<p class="mb-0" style="font-size: 0.75rem;">
|
<p class="mb-0" style="font-size: 0.75rem;">
|
||||||
<span class="me-1">5k orders</span><span class="text-success fw-medium">+5.7%</span>
|
@if($sosialEkonomi)
|
||||||
|
<span class="me-1">Skor {{ number_format($skorSosialEkonomi, 1) }}</span>
|
||||||
|
@else
|
||||||
|
<span class="me-1">Belum isi</span>
|
||||||
|
@endif
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<span class="avatar">
|
<span class="avatar">
|
||||||
@@ -120,9 +207,31 @@
|
|||||||
<div class="d-flex justify-content-between align-items-center card-widget-1 h-100 ps-3">
|
<div class="d-flex justify-content-between align-items-center card-widget-1 h-100 ps-3">
|
||||||
<div>
|
<div>
|
||||||
<p class="mb-0 text-muted" style="font-size: 0.75rem;">Akses Pasar</p>
|
<p class="mb-0 text-muted" style="font-size: 0.75rem;">Akses Pasar</p>
|
||||||
<h5 class="mb-0">$5,345.43</h5>
|
@php
|
||||||
|
$aksesPasar = isset($petani) ? $petani->aksesPasar : null;
|
||||||
|
$skorAksesPasar = null;
|
||||||
|
$skorAksesPasarBulat = null;
|
||||||
|
|
||||||
|
if($aksesPasar) {
|
||||||
|
$totalSkorAksesPasar = (int) ($aksesPasar->skor_pengalaman ?? 0)
|
||||||
|
+ (int) ($aksesPasar->skor_kesadaran_premium ?? 0);
|
||||||
|
$skorAksesPasar = ($totalSkorAksesPasar * 10) / 100;
|
||||||
|
$skorAksesPasarBulat = (int) round($skorAksesPasar);
|
||||||
|
}
|
||||||
|
@endphp
|
||||||
|
<h5 class="mb-0">
|
||||||
|
@if($aksesPasar)
|
||||||
|
{{ number_format($skorAksesPasarBulat, 0, ',', '.') }}%
|
||||||
|
@else
|
||||||
|
-
|
||||||
|
@endif
|
||||||
|
</h5>
|
||||||
<p class="mb-0" style="font-size: 0.75rem;">
|
<p class="mb-0" style="font-size: 0.75rem;">
|
||||||
<span class="me-1">5k orders</span><span class="text-success fw-medium">+5.7%</span>
|
@if($aksesPasar)
|
||||||
|
<span class="me-1">Skor {{ number_format($skorAksesPasar, 1) }}</span>
|
||||||
|
@else
|
||||||
|
<span class="me-1">Belum isi</span>
|
||||||
|
@endif
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<span class="avatar">
|
<span class="avatar">
|
||||||
|
|||||||
Reference in New Issue
Block a user