Commit a11e8bc8 authored by Thidaporn Laisan's avatar Thidaporn Laisan
Browse files

update create parameter and delete

parent 6014fa9c
<?php
namespace App\Http\Livewire\Pages\Parameter;
use Livewire\Component;
use App\Models\ConfParameter;
use App\Models\TabParameterInfo;
use App\Models\TabSpnpage;
class ParameterCreate extends Component
{
public $name, $message, $value, $description, $active = 'Y', $pageCode;
public $searchByPage = [];
public function mount()
{
$this->searchByPage = TabSpnpage::select('pagecode', 'pagename')->get()->toArray();
}
public function addParameter()
{
$this->validate([
'name' => 'required|string|max:30',
'value' => 'required|string|max:50',
'description' => 'required|string|max:100',
'active' => 'required',
'pageCode' => 'required',
]);
ConfParameter::create([
'name' => $this->name,
'value' => $this->value,
'description' => $this->description,
'active' => $this->active,
]);
TabParameterInfo::create([
'parameterName' => $this->name,
'pageCode' => $this->pageCode,
]);
$this->reset(['name', 'value', 'description', 'active', 'pageCode']);
$this->emit('showparameterListForm');
session()->flash('message', 'Parameter added successfully!');
}
public function render()
{
return view('livewire.pages.parameter.parameter-create');
}
}
......@@ -11,10 +11,11 @@ use App\Models\TabSpnpage;
class ParameterIndex extends Component
{
use WithPagination;
public $action = 'list';
public $searchBy,$searchByPage, $editPid, $message, $keyword, $perPage = 10, $searchSelected = 'name', $searchSelectedPage = '' ;
protected $listeners = [ 'deleteItem', 'deleteSelected' ,'showparameterListForm'];
public $action = 'list';
public $searchBy, $searchByPage, $editPid, $message, $keyword, $perPage = 20, $searchSelected = 'name', $searchSelectedPage = '';
public $selectedParameters = [];
protected $listeners = ['deleteItem', 'deleteSelected', 'showparameterListForm'];
public function mount()
{
......@@ -23,35 +24,35 @@ class ParameterIndex extends Component
'value' => 'By Value',
'description' => 'By Description'
];
$this->searchByPage = TabSpnpage::select('pagecode', 'pagename')->get()->toArray();
logger($this->searchByPage);
}
public function render()
{
$query = ConfParameter::select('conf_parameter.PID', 'conf_parameter.name', 'conf_parameter.value', 'conf_parameter.description', 'conf_parameter.active', 'tab_parameter_info.pageCode')
->leftJoin('tab_parameter_info', 'conf_parameter.name', '=', 'tab_parameter_info.parameterName');
if ($this->searchSelected && $this->keyword) {
$query->where($this->searchSelected, 'LIKE', '%' . $this->keyword . '%');
}
if ($this->searchSelectedPage) {
$query->where('tab_parameter_info.pageCode', $this->searchSelectedPage);
}
$query->orderBy('PID', 'DESC');
$results = $query->paginate($this->perPage);
return view('livewire.pages.parameter.parameter-index', compact('results'));
}
public function search()
{
$this->resetPage();
}
public function showparameterListForm()
{
$this->action = 'list';
......@@ -66,8 +67,37 @@ class ParameterIndex extends Component
{
$this->editPid = $pid;
$this->action = 'edit';
// $this->emit('showpatchEditForm');
}
public function showparameterDeleteForm($pid)
{
$this->deletePid = $pid;
$this->action = 'delete';
}
public function deleteParameter($pid)
{
$parameter = ConfParameter::where('PID', $pid)->firstOrFail();
$parameterName = $parameter->name;
ConfParameter::where('PID', $pid)->delete();
TabParameterInfo::where('parameterName', $parameterName)->delete();
session()->flash('message', 'Parameter deleted successfully!');
$this->showparameterListForm();
}
public function deleteSelectedParameters()
{
$parameters = ConfParameter::whereIn('PID', $this->selectedParameters)->get();
foreach ($parameters as $parameter) {
$parameterName = $parameter->name;
ConfParameter::where('PID', $parameter->PID)->delete();
TabParameterInfo::where('parameterName', $parameterName)->delete();
}
session()->flash('message', 'Selected parameters deleted successfully!');
$this->selectedParameters = [];
$this->showparameterListForm();
}
}
......@@ -6,7 +6,9 @@ use Illuminate\Database\Eloquent\Model;
class ConfParameter extends Model
{
public $timestamps = false;
protected $table = 'conf_parameter';
protected $fillable = [
'PID',
'name',
......
......@@ -6,6 +6,7 @@ use Illuminate\Database\Eloquent\Model;
class TabParameterInfo extends Model
{
public $timestamps = false;
protected $table = 'tab_parameter_info';
protected $fillable = [
'infoid',
......
......@@ -3,6 +3,7 @@
'delete-modal' => 'App\\Http\\Livewire\\DeleteModal',
'main-container' => 'App\\Http\\Livewire\\MainContainer',
'navbar' => 'App\\Http\\Livewire\\Navbar',
'pages.parameter.parameter-create' => 'App\\Http\\Livewire\\Pages\\Parameter\\ParameterCreate',
'pages.parameter.parameter-index' => 'App\\Http\\Livewire\\Pages\\Parameter\\ParameterIndex',
'pages.patch.modal-edit-code' => 'App\\Http\\Livewire\\Pages\\Patch\\ModalEditCode',
'pages.patch.patch-create' => 'App\\Http\\Livewire\\Pages\\Patch\\PatchCreate',
......
<div>
<button type="button" wire:click="loadPage('Parameter')"
class="btn mx-auto m-3 text-white bg-primary px-3 py-2">Back</button>
<div class="max-w-full mx-auto p-6 bg-gray-100">
<div class="w-full px-6 mb-12 flex justify-center">
<div class="p-12 bg-white shadow-md rounded-lg w-1/2">
<h2 class="text-2xl font-bold mb-4">Create Parameter</h2>
<div class="mx-auto p-4">
@if (session()->has('message'))
<div class="alert alert-success">
{{ session('message') }}
</div>
@endif
<form wire:submit.prevent="addParameter">
<div class="mb-4">
<label for="name" class="block text-sm font-medium text-gray-700">Name</label>
<input type="text" wire:model.defer="name" id="name"
class="w-full mt-1 p-2 border border-gray-300 rounded-md">
@error('name') <span class="text-red-500">{{ $message }}</span> @enderror
</div>
<div class="mb-4">
<label for="value" class="block text-sm font-medium text-gray-700">Value</label>
<input type="text" wire:model.defer="value" id="value"
class="w-full mt-1 p-2 border border-gray-300 rounded-md">
@error('value') <span class="text-red-500">{{ $message }}</span> @enderror
</div>
<div class="mb-4">
<label for="description" class="block text-sm font-medium text-gray-700">Description</label>
<textarea wire:model.defer="description" id="description"
class="w-full mt-1 p-2 border border-gray-300 rounded-md"></textarea>
@error('description') <span class="text-red-500">{{ $message }}</span> @enderror
</div>
<div class="mb-4">
<label for="active" class="block text-sm font-medium text-gray-700">Active</label>
<select wire:model.defer="active" id="active"
class="w-full mt-1 p-2 border border-gray-300 rounded-md">
<option value="Y">Yes</option>
<option value="N">No</option>
</select>
@error('active') <span class="text-red-500">{{ $message }}</span> @enderror
</div>
<div class="mb-4">
<label for="pageCode" class="block text-sm font-medium text-gray-700">Page Code</label>
<select wire:model.defer="pageCode" id="pageCode"
class="w-full mt-1 p-2 border border-gray-300 rounded-md">
@foreach ($searchByPage as $page)
<option value="">Please Select</option>
<option value="{{ $page['pagecode'] }}">{{ $page['pagename'] }}</option>
@endforeach
</select>
@error('pageCode') <span class="text-red-500">{{ $message }}</span> @enderror
</div>
<div class="flex items-center justify-end">
<button type="submit"
class="ml-3 inline-flex justify-center py-2 px-4 border border-transparent shadow-sm text-sm font-medium rounded-md text-white bg-indigo-600 hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500">
Save
</button>
</div>
</form>
</div>
</div>
</div>
</div>
<div wire:loading.remove>
<div wire:loading.remove>
<style>
table {
width: 100%;
......@@ -11,12 +10,6 @@
}
</style>
<main class="m-2">
{{-- <div wire:loading.class="flex" wire:loading.class.remove="hidden"
class="absolute inset-0 items-center justify-center z-50 bg-slate-50 dark:bg-navy-900 hidden">
<div class="flex justify-center items-center ">
<div class="animate-spin rounded-full h-32 w-32 border-t-2 border-b-2 border-blue-500"></div>
</div>
</div> --}}
@if ($action === 'list')
@if ($message)
<div class="alert alert-success">
......@@ -27,19 +20,19 @@
</div>
</div>
@endif
<div class="grid grid-cols-1 gap-4 sm:gap-5 lg:gap-6 ">
<div class="grid grid-cols-1 gap-4 sm:gap-5 lg:gap-6">
<div class="pb-4">
<div class="my-3 flex h-8 items-center justify-between px-4 sm:px-5">
<h2
class="font-medium tracking-wide text-slate-700 line-clamp-1 dark:text-navy-100 lg:text-base">
<h2 class="font-medium tracking-wide text-slate-700 line-clamp-1 dark:text-navy-100 lg:text-base">
SPN Parameter
</h2>
</div>
<div class="flex justify-between">
<div class="px-2 ml-4">
<button type="button" class="py-2 px-3 bg-stone-700 rounded-lg text-white" wire:click="showparameterAddForm">Add</button>
<button type="button" class="py-2 px-3 bg-stone-700 rounded-lg text-white"
wire:click="showparameterAddForm">Add</button>
<button type="button" class="py-2 px-3 bg-stone-700 rounded-lg text-white"
wire:click="deleteSelectedParameters">Delete</button>
</div>
<div class="inline-flex flex-initial">
<div x-data="{ isInputActive: true }">
......@@ -72,14 +65,10 @@
<select wire:model.defer="searchSelectedPage"
class="form-select h-9 w-full rounded-lg border border-slate-300 bg-white px-3 py-2 hover:border-slate-400 focus:border-primary dark:border-navy-450 dark:bg-navy-700 dark:hover:border-navy-400 dark:focus:border-accent">
@foreach ($searchByPage as $page)
@if (isset($page['pagecode']) && isset($page['pagename']))
<option value="">Please Select</option>
<option value="{{ $page['pagecode'] }}">{{ $page['pagename'] }}</option>
@endif
<option value="{{ $page['pagecode'] }}">{{ $page['pagename'] }}</option>
@endforeach
</select>
</span>
<button type="button" class="bg-stone-700 text-white px-4 py-2 rounded"
wire:click="search">Search</button>
</div>
......@@ -95,7 +84,7 @@
<th
class="whitespace-nowrap rounded-tl-lg bg-slate-200 px-4 py-3 font-semibold uppercase text-slate-800 dark:bg-navy-800 dark:text-navy-100 lg:px-5">
#
</th>
</th>
<th
class="whitespace-nowrap bg-slate-200 px-2 py-3 font-semibold uppercase text-slate-800 dark:bg-navy-800 dark:text-navy-100 lg:px-2">
Name
......@@ -123,32 +112,32 @@
</tr>
</thead>
<tbody>
@foreach ($results as $para)
<tr
class="border-y border-transparent border-b-slate-200 dark:border-b-navy-500">
<tr class="border-y border-transparent border-b-slate-200 dark:border-b-navy-500">
<td class="whitespace-nowrap px-4 py-3 sm:px-5">
<label class="inline-flex items-center space-x-2">
<input
class="form-checkbox is-basic h-4 w-4 rounded border-slate-400/70 checked:bg-primary checked:border-primary hover:border-primary focus:border-primary dark:bg-navy-900 dark:border-navy-500 dark:checked:bg-accent dark:checked:border-accent dark:hover:border-accent dark:focus:border-accent"
type="checkbox" wire:model.defer="selectedParameter"
value="{{ $para->id }}" />
class="form-checkbox is-basic h-4 w-4 rounded border-slate-400/70 checked:bg-primary checked:border-primary hover:border-primary focus:border-primary dark:bg-navy-900 dark:border-navy-500 dark:checked:bg-accent dark:checked:border-accent dark:hover:border-accent dark:focus:border-accent"
type="checkbox" wire:model.defer="selectedParameters"
value="{{ $para->PID }}" />
</label>
</td>
<td class="whitespace-nowrap px-1 py-3 sm:px-2">
{{ \Illuminate\Support\Str::limit($para->name, 40) }}</td>
<td class="whitespace-nowrap px-1 py-3 sm:px-2">{{ $para->value }}</td>
<td class="whitespace-nowrap px-1 py-3 sm:px-2">{{ $para->description }}</td>
<td class="whitespace-nowrap px-1 py-3 sm:px-2">{{ $para->pageCode }}
<td class="whitespace-nowrap px-1 py-3 sm:px-2">{{ $para->active }}
</td>
<td class="whitespace-nowrap px-1 py-3 sm:px-2">{{ $para->pageCode }}</td>
<td class="whitespace-nowrap px-1 py-3 sm:px-2">{{ $para->active }}</td>
<td class="whitespace-nowrap px-1 py-3 sm:px-2">
<div class="flex justify-center space-x-2">
<a wire:click="showparameterEditForm({{ $para->PID }})"
class="btn h-8 w-8 p-0 text-info hover:bg-info/20 focus:bg-info/20 active:bg-info/25">
<i class="fa fa-edit"></i>
</a>
<a wire:click="deleteParameter({{ $para->PID }})"
class="btn h-8 w-8 p-0 text-danger hover:bg-danger/20 focus:bg-danger/20 active:bg-danger/25">
<i class="fa fa-trash"></i>
</a>
</div>
</td>
</tr>
......@@ -156,17 +145,16 @@
</tbody>
</table>
</div>
<livewire:delete-modal />
{{ $results->links('livewire.paginate-custom') }}
</div>
</div>
</div>
@elseif($action === 'add')
<livewire:pages.parameter.parameter-create >
<livewire:pages.parameter.parameter-create />
@elseif($action === 'edit')
<livewire:pages.parameter.parameter-edit :editPid="$editPid">
<livewire:pages.parameter.parameter-edit :editPid="$editPid" />
@endif
</main>
</div>
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment