Files
database-pertani-web/app/Models/Pertanian/AksesPasar.php
T
2026-07-13 10:18:32 +07:00

88 lines
2.4 KiB
PHP

<?php
namespace App\Models\Pertanian;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Support\Str;
use App\Models\User;
use App\Models\Pertanian\Petani;
use App\Models\Pertanian\SkorPetani;
class AksesPasar extends Model
{
use SoftDeletes;
protected $table = 'akses_pasar';
protected $fillable = [
'uid',
'petani_id',
'skor_pengalaman',
'saluran_terdahulu',
'saluran_terdahulu_lainnya',
'alasan_berhenti',
'praktik_fermentasi',
'proses_fermentasi',
'model_fermentasi_memungkinkan',
'skor_kesadaran_premium',
'sumber_info_premium',
'waktu_mulai_wawancara',
'waktu_selesai_wawancara',
'skor_kepercayaan_responden',
'kehadiran_orang_lain',
'skor_pengaruh_orang_lain',
'created_by',
'updated_by',
'deleted_by',
];
protected $casts = [
'saluran_terdahulu' => 'array',
];
protected static function booted(): void
{
static::saved(function (AksesPasar $aksesPasar) {
$petani = Petani::find($aksesPasar->petani_id);
$skor = SkorPetani::where('petani_id')->orderBy('id')->first();
if (!$skor) {
$petaniUid = $petani->uid;
$part = explode('-', $petaniUid);
$skor = SkorPetani::create([
'petani_id' => $petani->id,
'uid' => 'SKR-' . $part[1] . '-' . strtoupper(Str::random(10)),
'created_by' => $petani->created_by,
'updated_by' => $petani->updated_by
]);
}
$skor->update([
'skor_d6_k1_6_pengalaman_menjual_ke_saluran_berbeda' => $aksesPasar->skor_pengalaman->value,
'skor_d6_k4_1_kesadaran_akses_pasar_premium' => $aksesPasar->skor_kesadaran_premium->value,
'skor_d6_k5_1_hambatan_mutu' => $aksesPasar->skor_kepercayaan_responden->value
]);
});
}
public function petani()
{
return $this->belongsTo(Petani::class, 'petani_id');
}
public function creator()
{
return $this->belongsTo(User::class, 'created_by');
}
public function updater()
{
return $this->belongsTo(User::class, 'updated_by');
}
public function deleter()
{
return $this->belongsTo(User::class, 'deleted_by');
}
}