up
This commit is contained in:
@@ -0,0 +1,113 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\Whatsapp;
|
||||
|
||||
use App\Models\WhatsappMessageTemplate;
|
||||
use Livewire\Component;
|
||||
use Jantinnerezo\LivewireAlert\LivewireAlert;
|
||||
|
||||
class ShowPlantillas extends Component
|
||||
{
|
||||
use LivewireAlert;
|
||||
|
||||
public string $search = '';
|
||||
public string $filterStatus = '';
|
||||
|
||||
// Formulario
|
||||
public bool $showForm = false;
|
||||
public ?int $editId = null;
|
||||
public string $name = '';
|
||||
public string $templateName = '';
|
||||
public string $languageCode = 'es';
|
||||
public string $status = 'pending';
|
||||
public string $bodyText = '';
|
||||
public string $headerType = 'none';
|
||||
public string $headerText = '';
|
||||
public string $footerText = '';
|
||||
|
||||
protected function rules(): array
|
||||
{
|
||||
return [
|
||||
'name' => 'required|string|max:255',
|
||||
'templateName' => 'required|string|max:255|regex:/^[a-z0-9_]+$/',
|
||||
'languageCode' => 'required|string|max:10',
|
||||
'bodyText' => 'required|string',
|
||||
];
|
||||
}
|
||||
|
||||
public function openForm(?int $id = null): void
|
||||
{
|
||||
$this->resetForm();
|
||||
if ($id) {
|
||||
$tpl = WhatsappMessageTemplate::findOrFail($id);
|
||||
$this->editId = $id;
|
||||
$this->name = $tpl->name;
|
||||
$this->templateName = $tpl->template_name;
|
||||
$this->languageCode = $tpl->language_code;
|
||||
$this->status = $tpl->status;
|
||||
$this->bodyText = $tpl->body_text ?? '';
|
||||
$this->headerType = $tpl->header_type;
|
||||
$this->headerText = $tpl->header_text ?? '';
|
||||
$this->footerText = $tpl->footer_text ?? '';
|
||||
}
|
||||
$this->showForm = true;
|
||||
}
|
||||
|
||||
public function save(): void
|
||||
{
|
||||
$this->validate();
|
||||
|
||||
$data = [
|
||||
'name' => $this->name,
|
||||
'template_name' => $this->templateName,
|
||||
'language_code' => $this->languageCode,
|
||||
'status' => $this->status,
|
||||
'body_text' => $this->bodyText,
|
||||
'header_type' => $this->headerType,
|
||||
'header_text' => $this->headerText,
|
||||
'footer_text' => $this->footerText,
|
||||
];
|
||||
|
||||
if ($this->editId) {
|
||||
WhatsappMessageTemplate::findOrFail($this->editId)->update($data);
|
||||
$this->alert('success', 'Plantilla actualizada.');
|
||||
} else {
|
||||
WhatsappMessageTemplate::create($data);
|
||||
$this->alert('success', 'Plantilla creada.');
|
||||
}
|
||||
|
||||
$this->resetForm();
|
||||
}
|
||||
|
||||
public function delete(int $id): void
|
||||
{
|
||||
WhatsappMessageTemplate::findOrFail($id)->delete();
|
||||
$this->alert('success', 'Plantilla eliminada.');
|
||||
}
|
||||
|
||||
public function resetForm(): void
|
||||
{
|
||||
$this->showForm = false;
|
||||
$this->editId = null;
|
||||
$this->name = '';
|
||||
$this->templateName = '';
|
||||
$this->languageCode = 'es';
|
||||
$this->status = 'pending';
|
||||
$this->bodyText = '';
|
||||
$this->headerType = 'none';
|
||||
$this->headerText = '';
|
||||
$this->footerText = '';
|
||||
}
|
||||
|
||||
public function render()
|
||||
{
|
||||
$templates = WhatsappMessageTemplate::when($this->search, fn($q) =>
|
||||
$q->where('name', 'like', "%{$this->search}%")
|
||||
->orWhere('template_name', 'like', "%{$this->search}%"))
|
||||
->when($this->filterStatus, fn($q) => $q->where('status', $this->filterStatus))
|
||||
->orderByDesc('updated_at')
|
||||
->paginate(15);
|
||||
|
||||
return view('livewire.whatsapp.show-plantillas', compact('templates'));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user