74 lines
2.0 KiB
PHP
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,
|
|
]);
|
|
}
|
|
}
|