first commit
This commit is contained in:
190
Livewire/Store/PostForm.php
Normal file
190
Livewire/Store/PostForm.php
Normal file
@ -0,0 +1,190 @@
|
||||
<?php
|
||||
|
||||
namespace Koneko\VuexyStoreManager\Livewire\Stores;
|
||||
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Koneko\VuexyWarehouse\Models\Warehouse;
|
||||
use Livewire\Component;
|
||||
|
||||
class StoreForm extends Component
|
||||
{
|
||||
public $form_title;
|
||||
public $mode = 'create';
|
||||
|
||||
public $warehouseId,
|
||||
$store_id,
|
||||
$workcenter_id,
|
||||
$code,
|
||||
$name,
|
||||
$description,
|
||||
$is_active = true,
|
||||
$is_default,
|
||||
$confirm_delete;
|
||||
|
||||
public $store_options = [],
|
||||
$workcenter_options = [];
|
||||
|
||||
protected $listeners = [
|
||||
'editWarehouse' => 'loadWarehouse',
|
||||
'confirmDeleteWarehouse' => 'loadWarehouseForDeletion',
|
||||
];
|
||||
|
||||
|
||||
public function mount()
|
||||
{
|
||||
$this->loadOptions();
|
||||
$this->resetForm();
|
||||
}
|
||||
|
||||
private function loadOptions()
|
||||
{
|
||||
$this->store_options = DB::table('stores')
|
||||
->select('id', 'name')
|
||||
->orderBy('name')
|
||||
->pluck('name', 'id');
|
||||
|
||||
$this->workcenter_options = DB::table('store_work_centers')
|
||||
->select('id', 'name')
|
||||
->orderBy('name')
|
||||
->pluck('name', 'id');
|
||||
}
|
||||
|
||||
public function loadWarehouse($id)
|
||||
{
|
||||
$warehouse = Warehouse::find($id);
|
||||
|
||||
if ($warehouse) {
|
||||
$this->fill($warehouse->only(['id', 'store_id', 'workcenter_id', 'code', 'name', 'description', 'is_active', 'is_default']));
|
||||
$this->form_title = "Editar: $warehouse->name";
|
||||
$this->mode = 'edit';
|
||||
|
||||
$this->dispatch('on-edit-warehouse-modal');
|
||||
}
|
||||
}
|
||||
|
||||
public function loadWarehouseForDeletion($id)
|
||||
{
|
||||
$warehouse = Warehouse::find($id);
|
||||
|
||||
if ($warehouse) {
|
||||
$this->fill($warehouse->only(['id', 'store_id', 'workcenter_id', 'code', 'name', 'description', 'is_active', 'is_default']));
|
||||
$this->form_title = "Eliminar: $warehouse->name";
|
||||
$this->mode = 'delete';
|
||||
|
||||
$this->dispatch('on-delete-warehouse-modal');
|
||||
}
|
||||
}
|
||||
|
||||
public function editWarehouse($id)
|
||||
{
|
||||
$warehouse = Warehouse::find($id);
|
||||
|
||||
if ($warehouse) {
|
||||
$this->form_title = 'Editar: ' . $warehouse->name;
|
||||
$this->mode = 'edit';
|
||||
|
||||
$this->warehouseId = $warehouse->id;
|
||||
$this->store_id = $warehouse->store_id;
|
||||
$this->workcenter_id = $warehouse->workcenter_id;
|
||||
$this->code = $warehouse->code;
|
||||
$this->name = $warehouse->name;
|
||||
$this->description = $warehouse->description;
|
||||
$this->is_active = $warehouse->is_active;
|
||||
$this->is_default = $warehouse->is_default;
|
||||
|
||||
$this->dispatch('on-edit-warehouse-modal');
|
||||
}
|
||||
}
|
||||
|
||||
public function confirmDeleteWarehouse($id)
|
||||
{
|
||||
$warehouse = Warehouse::find($id);
|
||||
|
||||
if ($warehouse) {
|
||||
$this->form_title = 'Eliminar: ' . $warehouse->name;
|
||||
$this->mode = 'delete';
|
||||
|
||||
$this->warehouseId = $warehouse->id;
|
||||
$this->store_id = $warehouse->store_id;
|
||||
$this->workcenter_id = $warehouse->workcenter_id;
|
||||
$this->code = $warehouse->code;
|
||||
$this->name = $warehouse->name;
|
||||
$this->description = $warehouse->description;
|
||||
$this->is_active = $warehouse->is_active;
|
||||
$this->is_default = $warehouse->is_default;
|
||||
|
||||
$this->dispatch('on-delete-warehouse-modal');
|
||||
}
|
||||
}
|
||||
|
||||
public function onSubmit()
|
||||
{
|
||||
if ($this->mode === 'delete') {
|
||||
return $this->delete();
|
||||
}
|
||||
|
||||
return $this->save();
|
||||
}
|
||||
|
||||
private function save()
|
||||
{
|
||||
try {
|
||||
$validatedData = $this->validate([
|
||||
'store_id' => 'required',
|
||||
'code' => 'required|string|max:16',
|
||||
'name' => 'required|string|max:96',
|
||||
'description' => 'nullable|string|max:1024',
|
||||
]);
|
||||
} catch (\Illuminate\Validation\ValidationException $e) {
|
||||
$this->dispatch('on-failed-validation-warehouse-modal');
|
||||
$this->dispatch('warehouse-message', ['type' => 'danger', 'message' => 'Error en la validación']);
|
||||
throw $e;
|
||||
}
|
||||
|
||||
Warehouse::updateOrCreate(
|
||||
['id' => $this->warehouseId],
|
||||
[
|
||||
'store_id' => $validatedData['store_id'],
|
||||
'workcenter_id' => $this->workcenter_id,
|
||||
'code' => $validatedData['code'],
|
||||
'name' => $validatedData['name'],
|
||||
'description' => $validatedData['description'] ?? null,
|
||||
'is_active' => (bool) $this->is_active,
|
||||
'is_default' => (bool) $this->is_default,
|
||||
]
|
||||
);
|
||||
|
||||
$this->dispatch('warehouse-message', ['type' => 'success', 'message' => 'Almacén guardado correctamente']);
|
||||
$this->dispatch('reload-warehouse-table');
|
||||
$this->dispatch('close-warehouse-modal');
|
||||
$this->resetForm();
|
||||
}
|
||||
|
||||
public function delete()
|
||||
{
|
||||
if ($this->warehouseId) {
|
||||
Warehouse::find($this->warehouseId)->delete();
|
||||
|
||||
$this->dispatch('warehouse-message', ['type' => 'warning', 'message' => 'Almacén eliminado']);
|
||||
$this->dispatch('reload-warehouse-table');
|
||||
$this->dispatch('close-warehouse-modal');
|
||||
|
||||
$this->resetForm();
|
||||
}
|
||||
}
|
||||
|
||||
public function resetForm()
|
||||
{
|
||||
$this->reset(['warehouseId', 'store_id', 'workcenter_id', 'code', 'name', 'description', 'is_default', 'confirm_delete']);
|
||||
|
||||
$this->form_title = 'Agregar almacén';
|
||||
$this->mode = 'create';
|
||||
$this->is_active = true;
|
||||
}
|
||||
|
||||
public function render()
|
||||
{
|
||||
return view('vuexy-warehouse::livewire.stores.form');
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user