You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
190 lines
7.4 KiB
190 lines
7.4 KiB
<?php
|
|
|
|
namespace App\Http\Controllers\Admin;
|
|
use App\Models\Vehicle;
|
|
use Illuminate\Http\Request;
|
|
use App\Http\Controllers\Controller;
|
|
use Brian2694\Toastr\Facades\Toastr;
|
|
use App\CentralLogics\Helpers;
|
|
use App\Models\DeliveryMan;
|
|
use Illuminate\Support\Facades\Validator;
|
|
class VehicleController extends Controller
|
|
{
|
|
/**
|
|
* Display a listing of the resource.
|
|
*
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function list(Request $request)
|
|
{
|
|
$key = explode(' ', $request['search']);
|
|
$vehicles = Vehicle::when(isset($key) ,function ($q) use ($key) {
|
|
foreach ($key as $value) {
|
|
$q->where('type', 'like', "%{$value}%");
|
|
}
|
|
})->latest()->paginate(config('default_pagination'));
|
|
return view('admin-views.vehicle.list', compact('vehicles') );
|
|
}
|
|
|
|
/**
|
|
* Show the form for creating a new resource.
|
|
*
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function create()
|
|
{
|
|
return view('admin-views.vehicle.index');
|
|
}
|
|
|
|
/**
|
|
* Store a newly created resource in storage.
|
|
*
|
|
* @param \Illuminate\Http\Request $request
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function store(Request $request)
|
|
{
|
|
$validator = Validator::make($request->all(), [
|
|
'type' => 'required|string|max:254|unique:vehicles',
|
|
'extra_charges' => 'required|numeric|between:0,999999999999.99',
|
|
'starting_coverage_area' => 'required|numeric|between:0,999999999999.99',
|
|
'maximum_coverage_area' => 'required|numeric|between:.01,999999999999.99|gt:starting_coverage_area',
|
|
]);
|
|
if ($validator->fails()) {
|
|
return response()->json(['errors' => Helpers::error_processor($validator)]);
|
|
}
|
|
|
|
$starting_coverage_area= $request->starting_coverage_area;
|
|
$maximum_coverage_area= $request->maximum_coverage_area;
|
|
|
|
$temp = Vehicle::where(function ($query) use ($starting_coverage_area) {
|
|
$query->where('starting_coverage_area', '<=', $starting_coverage_area)->where('maximum_coverage_area', '>=', $starting_coverage_area);
|
|
})->orWhere(function ($query) use ($maximum_coverage_area) {
|
|
$query->where('starting_coverage_area', '<=', $maximum_coverage_area)->where('maximum_coverage_area', '>=', $maximum_coverage_area);
|
|
})->orWhere(function ($query) use ($starting_coverage_area,$maximum_coverage_area) {
|
|
$query->where('starting_coverage_area', '>=', $starting_coverage_area)->where('maximum_coverage_area', '<=', $maximum_coverage_area);
|
|
})
|
|
->first();
|
|
|
|
if (isset($temp)) {
|
|
return response()->json(['errors' => [
|
|
['code' => 'Vehicle_overlaped', 'message' => translate('messages.Coverage_area_overlapped')]
|
|
]]);
|
|
}
|
|
|
|
|
|
$vehicle = new Vehicle();
|
|
$vehicle->type = $request->type;
|
|
$vehicle->status = 1;
|
|
$vehicle->extra_charges = $request->extra_charges;
|
|
$vehicle->starting_coverage_area = $request->starting_coverage_area;
|
|
$vehicle->maximum_coverage_area = $request->maximum_coverage_area;
|
|
$vehicle->save();
|
|
|
|
return response()->json(['success' => translate('messages.Vehicle_created')]);
|
|
}
|
|
|
|
/**
|
|
* Display the specified resource.
|
|
*
|
|
* @param \App\Models\Vehicle $vehicle
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function view(Vehicle $vehicle, Request $request)
|
|
{
|
|
$key = explode(' ', $request['search']);
|
|
$delivery_men = DeliveryMan::when(isset($key),function($query)use($key){
|
|
$query->where(function($query)use($key){
|
|
foreach ($key as $value) {
|
|
$query->orWhere('f_name', 'like', "%{$value}%")->orWhere('l_name', 'like', "%{$value}%");
|
|
}
|
|
});
|
|
})
|
|
->with('vehicle')
|
|
->where('vehicle_id',$vehicle->id)
|
|
->latest()->paginate(config('default_pagination'));
|
|
return view('admin-views.vehicle.view', compact('vehicle','delivery_men') );
|
|
}
|
|
|
|
|
|
|
|
public function status($id, $status)
|
|
{
|
|
$Vehicle = Vehicle::findOrFail($id);
|
|
$Vehicle->status = $status;
|
|
$Vehicle->save();
|
|
Toastr::success(translate('messages.Vehicle_status_updated'));
|
|
return back();
|
|
}
|
|
/**
|
|
* Show the form for editing the specified resource.
|
|
*
|
|
* @param \App\Models\Vehicle $vehicle
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function edit(Vehicle $vehicle)
|
|
{
|
|
return view('admin-views.vehicle.edit', compact('vehicle') );
|
|
}
|
|
|
|
/**
|
|
* Update the specified resource in storage.
|
|
*
|
|
* @param \Illuminate\Http\Request $request
|
|
* @param \App\Models\Vehicle $vehicle
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function update(Request $request, Vehicle $vehicle)
|
|
{
|
|
$validator = Validator::make($request->all(), [
|
|
'type' => 'required|string|max:254|unique:vehicles,type,'.$vehicle->id,
|
|
'extra_charges' => 'required|numeric|between:0,999999999999.99',
|
|
'starting_coverage_area' => 'required|numeric|between:0,999999999999.99',
|
|
'maximum_coverage_area' => 'required|numeric|between:.01,999999999999.99|gt:starting_coverage_area',
|
|
]);
|
|
|
|
if ($validator->fails()) {
|
|
return response()->json(['errors' => Helpers::error_processor($validator)]);
|
|
}
|
|
$starting_coverage_area= $request->starting_coverage_area;
|
|
$maximum_coverage_area= $request->maximum_coverage_area;
|
|
|
|
$temp = Vehicle::where('id' ,'!=', $vehicle->id)->where(function ($q) use ($starting_coverage_area,$maximum_coverage_area ){
|
|
$q->where(function ($query) use ($starting_coverage_area) {
|
|
$query->where('starting_coverage_area', '<=', $starting_coverage_area)->where('maximum_coverage_area', '>=', $starting_coverage_area);
|
|
})->orWhere(function ($query) use ($maximum_coverage_area) {
|
|
$query->where('starting_coverage_area', '<=', $maximum_coverage_area)->where('maximum_coverage_area', '>=', $maximum_coverage_area);
|
|
})->orWhere(function ($query) use ($starting_coverage_area, $maximum_coverage_area) {
|
|
$query->where('starting_coverage_area', '>=', $starting_coverage_area)->where('maximum_coverage_area', '<=', $maximum_coverage_area);
|
|
});
|
|
})
|
|
->first();
|
|
if (isset($temp)) {
|
|
return response()->json(['errors' => [
|
|
['code' => 'Vehicle_overlaped', 'message' => translate('messages.Coverage_area_overlapped')]
|
|
]]);
|
|
}
|
|
|
|
$vehicle->type = $request->type;
|
|
$vehicle->extra_charges = $request->extra_charges;
|
|
$vehicle->starting_coverage_area = $request->starting_coverage_area;
|
|
$vehicle->maximum_coverage_area = $request->maximum_coverage_area;
|
|
$vehicle->save();
|
|
|
|
return response()->json(['success' => translate('messages.Vehicle_updated')]);
|
|
}
|
|
|
|
/**
|
|
* Remove the specified resource from storage.
|
|
*
|
|
* @param \App\Models\Vehicle $vehicle
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function destroy(Request $request)
|
|
{
|
|
$vehicle = Vehicle::findOrFail($request->vehicle);
|
|
$vehicle->delete();
|
|
Toastr::success(translate('messages.vehicle') . ' ' . translate('messages.removed'));
|
|
return back();
|
|
}
|
|
}
|
|
|