CasperSecurity
<?php
namespace App\Http\Livewire\Hrms;
use App\Models\AttendanceRule;
use App\Models\AttendanceType;
use Livewire\Component;
use Livewire\WithPagination;
class AttendanceRuleLivewire extends Component
{
use WithPagination;
protected $paginationTheme = 'bootstrap';
public $search;
public $perPage = 10;
public $orderBy = 'id';
public $orderAsc = '1';
public $attendance_type_id,$start_time,$end_time,$late_allowed_time, $break_time, $status, $data;
public $modelid;
public $showmodal = false;
public $successmsg = "The Attendance Type has been saved successfully.";
public $updatemsg = "The Attendance Type has been updated successfully.";
public $deletemsg = "The Attendance Type data has been deleted successfully.";
public $duplicateerrormsg = "Sorry !!! Attendance Type 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 = [
'attendance_type_id' => 'required|max:25',
'start_time' => 'required',
'end_time' => 'required',
'late_allowed_time' => 'required',
'break_time' => 'required',
];
public $updatedrules = [
'attendance_type_id' => 'required|max:25',
'start_time' => 'required',
'end_time' => 'required',
'late_allowed_time' => 'required',
'break_time' => 'required',
'status' => 'required',
];
public $messages = [
'attendance_type_id.required' => 'This field is required',
'start_time.required' => 'This field is required',
'end_time.required' => 'This field is required',
'late_allowed_time.required' => 'This field is required',
'break_time.required' => 'This field is required',
];
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->attendance_type_id = null;
$this->start_time = null;
$this->end_time = null;
$this->late_allowed_time = null;
$this->break_time = null;
$this->status = null;
$this->showmodal = false;
}
public function loadData($id)
{
$response = AttendanceRule::find($id);
if ($response) {
$this->attendance_type_id = $response['attendance_type_id'];
$this->start_time = $response['date_range'];
$this->end_time = $response['shift_time'];
$this->late_allowed_time = $response['late_allowed_time'];
$this->break_time = $response['break_time'];
$this->status = $response['status'];
}
}
public function save()
{
$this->validate($this->rules, $this->messages);
$response = AttendanceRule::where('start_time', $this->start_time)->latest()->first();
if ($response) {
$this->dispatchBrowserEvent('showsuccessmsg', [
'type' => 'error',
'message' => $this->duplicateerrormsg
]);
} else {
$response = AttendanceRule::create([
'attendance_type_id' => $this->attendance_type_id,
'start_time' => $this->start_time,
'end_time' => $this->end_time,
'late_allowed_time' => $this->late_allowed_time,
'break_time' => $this->break_time,
]);
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 = AttendanceRule::find($this->modelid);
if ($response) {
$response->update([
'attendance_type_id' => $this->attendance_type_id,
'start_time' => $this->start_time,
'end_time' => $this->end_time,
'late_allowed_time' => $this->late_allowed_time,
'break_time' => $this->break_time,
'status' => $this->status,
]);
//dd($response);
if ($response) {
$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 = AttendanceRule::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()
{
$attendance_rules = AttendanceRule::search($this->search)
->orderBy($this->orderBy, $this->orderAsc ? 'asc' : 'desc')
->paginate($this->perPage);
return $attendance_rules;
}
public function render()
{
$datatable = [];
$datatable = $this->read();
if (sizeof($datatable) > 0) {
foreach ($datatable as $key => $data) {
$attendance = AttendanceType::where('id', $data->attendance_type_id)->first();
if ($attendance) {
$datatable[$key]['attendance_type'] = $attendance->attendance_type;
} else {
$datatable[$key]['attendance_type'] = "NA";
}
}
}
$attendancetype=AttendanceType::where('status',1)->get();
return view('livewire.hrms.attendance-rule-livewire',compact('datatable','attendancetype'));
}
}