92 lines
2.6 KiB
PHP
92 lines
2.6 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;
|
|
use App\Enums\AksesPasar\PraktikFermentasi;
|
|
use App\Enums\AksesPasar\SaluranTerdahulu;
|
|
use App\Enums\AksesPasar\SkorPengalaman;
|
|
use App\Enums\AksesPasar\SkorKesadaranPremium;
|
|
|
|
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,
|
|
'skor_d6_k4_1_kesadaran_akses_pasar_premium' => $aksesPasar->skor_kesadaran_premium,
|
|
'skor_d6_k5_1_hambatan_mutu' => $aksesPasar->skor_kepercayaan_responden
|
|
]);
|
|
});
|
|
}
|
|
|
|
|
|
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');
|
|
}
|
|
} |