CasperSecurity
<?php
namespace App\Http\Livewire\Hrms;
use Livewire\Component;
use App\Models\LeaveRule;
use App\Models\EmployeeType;
use App\Models\LeaveTypes;
use Livewire\WithPagination;
class LeaveRuleLivewire extends Component
{
use WithPagination;
protected $paginationTheme = 'bootstrap';
public $search;
public $perPage=10;
public $orderBy='id';
public $orderAsc='1';
public $status;
public $modelid;
public $showmodal=false;
public $leave_type_id,$leave_max_days_apply,$attendance_dependent,$attendance_days,$credit_no_days,$completion_month,$encashment_amt,$encashment_resign,$advance_leave,$half_day,$carry_forwarded,$max_days,$after_carry_forward_lapsed,$after_carry_forward_encash,$certificate_required,$certificate_required_days,$leave_employee_type_id,$leave_employee_gender,$created_by;
public $credit_period=null;
public $carry_forward_date=null;
protected $listeners = ['delete'];
//todo::Notifcation Of Success Or Error Message
public $successmsg="The Leave Rule has been created successfully.";
public $updatemsg="The Leave Rule has been updated successfully.";
public $deletemsg="The Leave Rule has been deleted successfully.";
public $duplicateerrormsg="Sorry !!! has already exists in our database. Please Try Another Name";
public $errormsg="Sorry !!! Something went wrong. Please Try Again.";
public function createsuccessmsg(){
$this->dispatchBrowserEvent('showsuccessmsg', [
'type' => 'success',
'title'=>'DATA SAVED',
'message' => $this->successcreatemsg,
]);
}
public function updatesuccessmsg(){
$this->dispatchBrowserEvent('showsuccessmsg', [
'type' => 'success',
'title'=>'DATA UPDATED',
'message' => $this->successupdatemsg,
]);
}
public function deletesuccessmsg(){
$this->dispatchBrowserEvent('showsuccessmsg', [
'type' => 'success',
'title'=>'DATA DELETED',
'message' => $this->successdeletemsg,
]);
}
public function errormsg(){
$this->dispatchBrowserEvent('showsuccessmsg',[
'type'=>'error',
'title'=>'Sorry !!!',
'message'=>$this->errormsg,
]);
}
public function commonmsg($type,$title,$msg){
$this->dispatchBrowserEvent('showsuccessmsg', [
'type' => $type,
'title'=>$title,
'message' => $msg,
]);
}
// public function updatedCarryForwarded($value){
// dd($value);
// }
protected $rules=[
'leave_type_id' => 'required|max:255',
'leave_max_days_apply' => 'nullable',
'attendance_dependent' => 'nullable',
'attendance_days' => 'nullable',
'credit_period' => 'nullable',
'credit_no_days' => 'nullable',
'completion_month' => 'nullable',
'carry_forwarded' => 'nullable',
'max_days' => 'nullable',
'carry_forward_date' => 'nullable',
'after_carry_forward_lapsed' => 'nullable',
'after_carry_forward_encash' => 'nullable',
'certificate_required' => 'nullable',
'certificate_required_days' => 'nullable',
'leave_employee_type_id' => 'nullable',
'leave_employee_gender' => 'nullable',
'encashment_amt' => 'nullable',
'encashment_resign' => 'nullable',
'advance_leave' => 'nullable',
'half_day' => 'nullable',
'status' => 'nullable',
];
protected $updaterules=[
'leave_type_id' => 'required|max:255',
'leave_max_days_apply' => 'nullable',
'attendance_dependent' => 'nullable',
'attendance_days' => 'nullable',
'credit_period' => 'nullable',
'credit_no_days' => 'nullable',
'completion_month' => 'nullable',
'carry_forwarded' => 'nullable',
'max_days' => 'nullable',
'carry_forward_date' => 'nullable',
'after_carry_forward_lapsed' => 'nullable',
'after_carry_forward_encash' => 'nullable',
'certificate_required' => 'nullable',
'certificate_required_days' => 'nullable',
'leave_employee_type_id' => 'nullable',
'leave_employee_gender' => 'nullable',
'encashment_amt' => 'nullable',
'encashment_resign' => 'nullable',
'advance_leave' => 'nullable',
'half_day' => 'nullable',
'status' => 'nullable',
];
protected $messages = [
'leave_type_id.required' => 'This field cannot be empty.',
'leave_type_id.max' => 'This field is exceeding the limit.',
'leave_max_days_apply.required' => 'This field cannot be empty.',
'status.required' => 'This field cannot be empty.',
];
public function updatingSearch()
{
$this->resetPage();
}
public function showmodalclick(){
$this->resetValidation();
$this->showmodal=true;
}
public function closemodalclick(){
$this->resetValidation();
$this->showmodal=false;
$this->cleanVar();
}
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 updatdLeaveTypeId($value){
$this->leave_type_id=$value;
}
public function cleanVar()
{
$this->modelid=null;
$this->leave_type_id=null;
$this->leave_max_days_apply=null;
$this->attendance_dependent=null;
$this->attendance_days=null;
$this->credit_period=null;
$this->credit_no_days=null;
$this->completion_month=null;
$this->carry_forwarded=null;
$this->max_days=null;
$this->carry_forward_date=null;
$this->after_carry_forward_lapsed=null;
$this->after_carry_forward_encash=null;
$this->certificate_required=null;
$this->certificate_required_days=null;
$this->leave_employee_type_id=null;
$this->leave_employee_gender=null;
$this->encashment_amt=null;
$this->encashment_resign=null;
$this->advance_leave=null;
$this->half_day=null;
$this->status=null;
}
public function loadData($id){
$data=LeaveRule::find($id);
if($data){
$this->leave_type_id=$data['leave_type_id'];
$this->leave_max_days_apply=$data['leave_max_days_apply'];
$this->attendance_dependent=$data['attendance_dependent'];
$this->attendance_days=$data['attendance_days'];
$this->credit_period=$data['credit_period'];
$this->credit_no_days=$data['credit_no_days'];
$this->completion_month=$data['completion_month'];
$this->carry_forwarded=$data['carry_forwarded'];
$this->max_days=$data['max_days'];
$this->carry_forward_date=$data['carry_forward_date'];
$this->after_carry_forward_lapsed=$data['after_carry_forward_lapsed'];
$this->after_carry_forward_encash=$data['after_carry_forward_encash'];
$this->certificate_required=$data['certificate_required'];
$this->certificate_required_days=$data['certificate_required_days'];
$this->leave_employee_type_id=$data['leave_employee_type_id'];
$this->leave_employee_gender=$data['leave_employee_gender'];
$this->encashment_amt=$data['encashment_amt'];
$this->encashment_resign=$data['encashment_resign'];
$this->advance_leave=$data['advance_leave'];
$this->half_day=$data['half_day'];
}
}
/* modelData */
public function setDataForPostPut(){
// $attdetils=AttendanceRule::where('status',1)->first();
// if($attdetils){
// $workhours=Carbon::parse($attdetils->start_time)->diff(Carbon::parse($attdetils->end_time));
// //dd($workhours);
// $totalHours=$workhours->h;
// $totalMinutes=$workhours->i;
// $totalMinutesInHour=$totalMinutes/60;
// $totalTimeInHours=$totalHours+$totalMinutesInHour;
// //$monthly_workhour=$this->total_days*$totalTimeInHours;
// }
if(!$this->credit_period){
$this->credit_period=null;
}
if(!$this->carry_forward_date){
$this->carry_forward_date=null;
}
if($this->status){
return [
'leave_type_id' => $this->leave_type_id,
'leave_max_days_apply' => $this->leave_max_days_apply,
'attendance_dependent' => $this->attendance_dependent,
'attendance_days' => $this->attendance_days,
'credit_period' => $this->credit_period,
'credit_no_days' => $this->credit_no_days,
'credit_no_hours' => null,
'completion_month' => $this->completion_month,
'carry_forwarded' => $this->carry_forwarded,
'max_days' => $this->max_days,
'carry_forward_date' => $this->carry_forward_date,
'after_carry_forward_lapsed' => $this->after_carry_forward_lapsed,
'after_carry_forward_encash' => $this->after_carry_forward_encash,
'certificate_required' => $this->certificate_required,
'certificate_required_days' => $this->certificate_required_days,
'leave_employee_type_id' => $this->leave_employee_type_id,
'leave_employee_gender' => $this->leave_employee_gender,
'encashment_amt' => $this->encashment_amt,
'encashment_resign' => $this->encashment_resign,
'advance_leave' => $this->advance_leave,
'half_day' => $this->half_day,
'status' => $this->status,
'created_by' => $this->created_by,
];
}else{
return [
'leave_type_id' => $this->leave_type_id,
'leave_max_days_apply' => $this->leave_max_days_apply,
'attendance_dependent' => $this->attendance_dependent,
'attendance_days' => $this->attendance_days,
'credit_period' => $this->credit_period,
'credit_no_days' => $this->credit_no_days,
'credit_no_hours' => null,
'completion_month' => $this->completion_month,
'carry_forwarded' => $this->carry_forwarded,
'max_days' => $this->max_days,
'carry_forward_date' => $this->carry_forward_date,
'after_carry_forward_lapsed' => $this->after_carry_forward_lapsed,
'after_carry_forward_encash' => $this->after_carry_forward_encash,
'certificate_required' => $this->certificate_required,
'certificate_required_days' => $this->certificate_required_days,
'leave_employee_type_id' => $this->leave_employee_type_id,
'leave_employee_gender' => $this->leave_employee_gender,
'encashment_amt' => $this->encashment_amt,
'encashment_resign' => $this->encashment_resign,
'advance_leave' => $this->advance_leave,
'half_day' => $this->half_day,
'created_by' => $this->created_by,
];
}
}
public function save()
{
$validatedData = $this->validate($this->rules,$this->messages);
//dd($validatedData);
$response=LeaveRule::create($this->setDataForPostPut());
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()
{
$validatedData = $this->validate($this->updaterules,$this->messages);
$response=LeaveRule::find($this->modelid);
$response->update($this->setDataForPostPut());
if($response) {
$this->leave_type_id=$response['leave_type_id'];
$this->leave_max_days_apply=$response['leave_max_days_apply'];
$this->attendance_dependent=$response['attendance_dependent'];
$this->attendance_days=$response['attendance_days'];
$this->credit_period=$response['credit_period'];
$this->credit_no_days=$response['credit_no_days'];
$this->completion_month=$response['completion_month'];
$this->carry_forwarded=$response['carry_forwarded'];
$this->max_days=$response['max_days'];
$this->carry_forward_date=$response['carry_forward_date'];
$this->after_carry_forward_lapsed=$response['after_carry_forward_lapsed'];
$this->after_carry_forward_encash=$response['after_carry_forward_encash'];
$this->certificate_required=$response['certificate_required'];
$this->certificate_required_days=$response['certificate_required_days'];
$this->leave_employee_type_id=$response['leave_employee_type_id'];
$this->leave_employee_gender=$response['leave_employee_gender'];
$this->encashment_amt=$response['encashment_amt'];
$this->encashment_resign=$response['encashment_resign'];
$this->advance_leave=$response['advance_leave'];
$this->half_day=$response['half_day'];
$this->status=$response['status'];
$this->cleanVar();
$this->dispatchBrowserEvent('closeOffCanvas');
$this->dispatchBrowserEvent('showsuccessmsg',[
'type'=>'success',
'message'=>$this->updatemsg
]);
}else{
$this->dispatchBrowserEvent('showsuccessmsg',[
'type'=>'error',
'message'=>$this->errormsg
]);
}
}
public function delete(){
$response=LeaveRule::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_rules=LeaveRule::search($this->search)
->orderBy($this->orderBy, $this->orderAsc ? 'asc' : 'desc')
->paginate($this->perPage);
return $leave_rules;
}
public function render()
{
$datatable=$this->read();
$leavetypes=LeaveTypes::where('status',1)->get();
$employeetypes=EmployeeType::where('status',1)->get();
return view('livewire.hrms.leave-rule-livewire',compact('datatable','leavetypes','employeetypes'));
}
}