parfum/app/Livewire/Forms/MembershipForm.php
Yoga Pangestu 28c69dbf23 feat(membership): membuat curd dengan modal
-membuat action edit dengan modal
-menghapus sidebar yang tidak diperlukan
2025-09-25 19:24:41 +07:00

74 lines
2.0 KiB
PHP

<?php
namespace App\Livewire\Forms;
use App\Models\Membership;
use Livewire\Form;
class MembershipForm extends Form
{
public ?Membership $membership = null;
public string $name = '';
public string $min_purchase = '';
public string $discount_percentage = '';
public ?string $terms_conditions = null;
public function rules(): array
{
return [
'name' => ['required', 'string', 'max:50'],
'min_purchase' => ['required', 'regex:/^[0-9.]+$/', 'max:99999999999'],
'discount_percentage' => ['required', 'numeric', 'between:0,100'],
'terms_conditions' => ['nullable', 'string'],
];
}
public function validationAttributes(): array
{
return [
'name' => 'nama',
'min_purchase' => 'min. pembelian',
'discount_percentage' => 'persentase diskon',
'terms_conditions' => 'syarat dan ketentuan',
];
}
public function setMembership(Membership $membership)
{
$this->membership = $membership;
$this->name = $membership->name;
$this->min_purchase = currency($membership->min_purchase);
$this->terms_conditions = $membership->terms_conditions;
$this->discount_percentage = $membership->discount_percentage;
}
public function store()
{
$this->validate();
Membership::create([
'name' => $this->name,
'min_purchase' => replaceCurrency($this->min_purchase),
'discount_percentage' => $this->discount_percentage,
'terms_conditions' => $this->terms_conditions,
]);
}
public function update()
{
$this->validate();
$this->membership->update([
'name' => $this->name,
'min_purchase' => replaceCurrency($this->min_purchase),
'discount_percentage' => $this->discount_percentage,
'terms_conditions' => $this->terms_conditions,
]);
}
}