CasperSecurity
<?php
namespace App\Http\Livewire\Hrms;
use App\Models\PayrollItems;
use Livewire\Component;
use Livewire\WithPagination;
class PayrollItemsLivewire extends Component
{
use WithPagination;
protected $paginationTheme = 'bootstrap';
public $search;
public $perPage=10;
public $orderBy='id';
public $orderAsc='1';
public $employee_or_employer,$payroll_item_type,$payroll_item,$status,$payroll_item_short_name;
public $modelid;
public $showmodal=false;
public $successmsg="The Payroll data has been saved successfully.";
public $updatemsg="The Payroll item data has been updated successfully.";
public $deletemsg="The Payroll item data has been deleted successfully.";
public $duplicateerrormsg="Sorry !!! Payroll item name has already exists in our database. Please Try Another Name";
public $errormsg="Sorry !!! Something went wrong. Please Try Again.";
protected $listeners = ['delete'];
public $rules=[
'employee_or_employer'=>'nullable',
'payroll_item_type'=>'required|max:25',
'payroll_item'=>'required|max:25',
'payroll_item_short_name'=>'required|max:25',
];
public $updatedrules=[
'employee_or_employer'=>'nullable',
'payroll_item_type'=>'required|max:25',
'payroll_item'=>'required|max:25',
'payroll_item_short_name'=>'required|max:25',
'status'=>'required',
];
public $messages=[
'payroll_item_type.required'=>'This field is required',
'payroll_item_type.max'=>'This field allows maximum 25 character',
'payroll_item.required'=>'This field is required',
'payroll_item.max'=>'This field allows maximum 25 character',
];
public function updatingSearch()
{
$this->resetPage();
}
public function showmodalclick(){
$this->resetValidation();
$this->showmodal=true;
}
public function closemodalclick(){
$this->resetValidation();
$this->showmodal=false;
}
public function updateclick($id){
$this->modelid=$id;
$this->loadData($this->modelid);
$this->showmodal=true;
}
public function deleteclick($id){
$this->modelid=$id;
$this->dispatchBrowserEvent('confirmdelete',[
'message'=>'Are you sure want to delete this data ?',
'funcname'=>'delete'
]);
}
public function cleanVar(){
$this->modelid=null;
$this->employee_or_employer=null;
$this->payroll_item_type=null;
$this->payroll_item=null;
$this->payroll_item_short_name=null;
$this->status=null;
$this->showmodal=false;
}
public function loadData($id){
$response=PayrollItems::find($id);
if($response){
$this->employee_or_employer=$response['employee_or_employer'];
$this->payroll_item_type=$response['payroll_item_type'];
$this->payroll_item=$response['payroll_item'];
$this->payroll_item_short_name=$response['payroll_item_short_name'];
$this->status=$response['status'];
}
}
public function save(){
$this->validate($this->rules,$this->messages);
$response=PayrollItems::where('payroll_item',$this->payroll_item)->latest()->first();
if($response){
$this->dispatchBrowserEvent('showsuccessmsg',[
'type'=>'error',
'message'=>$this->duplicateerrormsg
]);
}else {
$response = PayrollItems::create([
'employee_or_employer' => $this->employee_or_employer,
'payroll_item_type' => $this->payroll_item_type,
'payroll_item' => $this->payroll_item,
'payroll_item_short_name' => $this->payroll_item_short_name,
]);
if ($response) {
$this->cleanVar();
$this->dispatchBrowserEvent('closeOffCanvas');
$this->dispatchBrowserEvent('showsuccessmsg', [
'type' => 'success',
'message' => $this->successmsg
]);
} else {
$this->dispatchBrowserEvent('showsuccessmsg', [
'type' => 'error',
'message' => $this->errormsg
]);
}
}
}
public function update(){
$this->validate($this->updatedrules,$this->messages);
$response=PayrollItems::find($this->modelid);
if($response){
$response->update([
'employee_or_employer'=>$this->employee_or_employer,
'payroll_item_type'=>$this->payroll_item_type,
'payroll_item'=>$this->payroll_item,
'payroll_item_short_name'=>$this->payroll_item_short_name,
'status'=>$this->status,
]);
if($response){
$this->cleanVar();
$this->dispatchBrowserEvent('closeOffCanvas');
$this->dispatchBrowserEvent('showsuccessmsg',[
'type'=>'success',
'message'=>$this->updatemsg
]);
}else{
// $this->cleanVar();
$this->dispatchBrowserEvent('showsuccessmsg',[
'type'=>'error',
'message'=>$this->errormsg
]);
}
}
}
public function delete(){
$response=PayrollItems::find($this->modelid);
if($response){
if($response->delete()){
$this->cleanVar();
$this->dispatchBrowserEvent('showsuccessmsg',[
'type'=>'success',
'message'=>$this->deletemsg
]);
}else{
$this->dispatchBrowserEvent('showsuccessmsg',[
'type'=>'error',
'message'=>$this->errormsg
]);
}
}
}
public function read(){
$leave_types=PayrollItems::search($this->search)
->orderBy($this->orderBy, $this->orderAsc ? 'asc' : 'desc')
->paginate($this->perPage);
return $leave_types;
}
public function render()
{
$datatable=$this->read();
return view('livewire.hrms.payroll-items-livewire',compact('datatable'));
}
}