CasperSecurity
<?php
namespace App\Http\Livewire\Transportmanagement;
use App\Models\AssignVehicle;
use App\Models\EmployeeRegistration;
use App\Models\ManageDriver;
use App\Models\ManageVehicle;
use Carbon\Carbon;
use Livewire\Component;
use Livewire\WithFileUploads;
use Livewire\WithPagination;
class AssignVehicleLivewire extends Component
{
use WithPagination;
use WithFileUploads;
protected $paginationTheme = 'bootstrap';
public $search;
public $perPage=10;
public $orderBy='id';
public $orderAsc='1';
public $vehicle_id,$driver_id,$vehicle_assign_start_date,$vehicle_assign_end_date;
public $modelid;
public $showmodal=false;
public $status=true;
public $successmsg="Vehicle Assign has created successfully.";
public $updatemsg="Vehicle Assign has updated successfully.";
public $deletemsg="Vehicle Assign has deleted successfully";
public $errormsg="Oops !!! Something went wrong.";
protected $listeners = ['delete'];
protected $rules = [
'vehicle_id' => 'required',
'driver_id' => 'required',
'vehicle_assign_start_date' => 'required|date',
'vehicle_assign_end_date' => 'required|date|after:vehicle_assign_start_date',
'status' => 'nullable',
];
protected $updatedrules = [
'vehicle_id' => 'required',
'driver_id' => 'required',
'vehicle_assign_start_date' => 'required|date',
'vehicle_assign_end_date' => 'required|date|after:vehicle_assign_start_date',
];
protected $messages = [
'vehicle_id.required' => 'The vehicle Name cannot be empty.',
'driver_id.required' => 'The Driver Name cannot be empty.',
'vehicle_assign_start_date.required' => 'The vehicle Assign Start Date cannot be empty.',
'vehicle_assign_end_date.required' => 'The vehicle Assign End Date cannot be empty.',
'status.required' => 'The status cannot be empty.',
'vehicle_assign_end_date.after' => 'The vehicle Assign End Date must be greater than the Start Date.',
];
public function showmodalclick(){
$this->cleanVar();
$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->vehicle_id = null;
$this->driver_id = null;
$this->vehicle_assign_start_date = null;
$this->vehicle_assign_end_date = null;
$this->status = null;
}
public function loadData($id)
{
$response=AssignVehicle::find($id);
if($response){
$this->vehicle_id =$response['vehicle_id'];
$this->driver_id =$response['driver_id'];
$this->vehicle_assign_start_date =$response['vehicle_assign_start_date'];
$this->vehicle_assign_end_date =$response['vehicle_assign_end_date'];
$this->status=$response['status'];
}
}
public function save(){
$this->validate($this->rules,$this->messages);
$response= AssignVehicle::where('vehicle_assign_start_date',$this->vehicle_assign_start_date)->latest()->first();
if($response){
$this->dispatchBrowserEvent('showsuccessmsg',[
'type'=>'error',
'message'=>$this->errormsg
]);
}else {
$response = AssignVehicle::create([
'vehicle_id' => $this->vehicle_id,
'driver_id' => $this->driver_id,
'vehicle_assign_start_date' => $this->vehicle_assign_start_date,
'vehicle_assign_end_date' => $this->vehicle_assign_end_date,
]);
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=AssignVehicle::find($this->modelid);
if($response){
$response->update([
'vehicle_id' => $this->vehicle_id,
'driver_id' => $this->driver_id,
'vehicle_assign_start_date' => $this->vehicle_assign_start_date,
'vehicle_assign_end_date' => $this->vehicle_assign_end_date,
'status'=>$this->status,
]);
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=AssignVehicle::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()
{
$query = AssignVehicle::select('assign_vehicles.*', 'employee_registrations.name')
->join('employee_registrations', 'assign_vehicles.driver_id', '=', 'employee_registrations.id');
$validOrderColumns = ['id', 'driver_id', 'name', 'created_at', 'updated_at'];
if (in_array($this->orderBy, $validOrderColumns)) {
$query->orderBy($this->orderBy, $this->orderAsc ? 'asc' : 'desc');
} else {
$query->orderBy('id', 'asc');
}
return $query->paginate($this->perPage);
}
public function render()
{
$datatable=[];
$datatable=$this->read();
$drivers = ManageDriver::where('status', 1)->where('driver_id', '!=', '') ->get();
foreach($drivers as $key=> $dri){
$dridet=EmployeeRegistration::find($dri->driver_id);
$dri['name']=$dridet['name'];
}
//dd($dri);
$vehicles = ManageVehicle::where('status', 1)->get();
return view('livewire.transportmanagement.assign-vehicle-livewire',compact('datatable','drivers','vehicles'));
}
}