File: /var/www/html/dashboard.orbiwheels.com/app/Http/Controllers/Admin/SettingController.php
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\SystemSetting;
use App\Models\VehicleRateCard;
use App\Models\VehicleType;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Yajra\DataTables\DataTables;
class SettingController extends Controller
{
public function index()
{
$settings = SystemSetting::pluck('value', 'key');
return view('admin.settings.system_setting', compact('settings'));
}
public function updateGeneralSetting(Request $request)
{
$data = $request->input('settings');
foreach ($data as $key => $value) {
SystemSetting::updateOrCreate(
['key' => $key],
['value' => $value]
);
}
return redirect()->back()->with('success', 'Settings updated successfully.');
}
public function emailSmtp()
{
$settings = SystemSetting::pluck('value', 'key');
return view('admin.settings.email_smtp_setting', compact('settings'));
}
public function smsSetting()
{
$settings = SystemSetting::pluck('value', 'key');
return view('admin.settings.sms_setting', compact('settings'));
}
public function paymentMethod()
{
$settings = SystemSetting::pluck('value', 'key');
return view('admin.settings.payment_method', compact('settings'));
}
// Vehicle Type and Rate Card methods
public function typeIndex(Request $request)
{
if($request->ajax()){
$types = VehicleType::query()->orderBy('id', 'desc');
return DataTables::of($types)
->addColumn('action', function ($item) {
$buttons = '<div class="table-actions d-flex">';
if (auth()->user()->can('role.edit')) {
$buttons .= '<a href="'.route('admin.vehicle.type.edit', $item->id).'" class="btn btn-default btn-sm" title="Edit"><i class="fa fa-edit"></i></a>';
}
if (auth()->user()->can('role.delete')) {
$buttons .= '<a href="javascript:void(0);" class="btn btn-default btn-sm delete" data-url="'.route('admin.vehicle.type.delete', $item->id).'" title="Delete"><i class="fa fa-trash"></i></a>';
}
$buttons .= '</div>';
return $buttons;
})
->rawColumns(['action'])
->make(true);
}
return view('admin.vehicle_type.index');
}
public function typeStore(Request $request)
{
$request->validate([
'name' => 'required|string|unique:vehicle_types,name'
]);
VehicleType::create([
'name' => $request->name,
'status' => $request->status,
]);
return redirect()->route('admin.vehicle.type.index')->with('success', 'Vehicle Type created successfully!');
}
public function typeEdit(Request $request, $id){
if (!auth()->user()->can('role.edit')) {
abort(403, 'You do not have permission to edit roles.');
}
$vehicle_type = VehicleType::find($id);
if(isset($vehicle_type)){
return view('admin.vehicle_type.edit', compact('vehicle_type'));
}
return redirect()->back()->with('error', 'Vehicle type not found!');
}
public function typeUpdate(Request $request, $id){
$request->validate([
'name' => 'required|string|unique:vehicle_types,name,'. $id
]);
$vehicle_type = VehicleType::find($id);
if(isset($vehicle_type)){
$vehicle_type->update(['name' => $request->name, 'status' => $request->status]);
return redirect()->route('admin.vehicle.type.index')->with('success', 'Vehicle type updated successfully!');
}
return redirect()->back()->with('error', 'Role not found!');
}
public function typeDelete(Request $request, $id){
$vehicle_type = VehicleType::find($id);
if(!isset($vehicle_type)){
return response()->json([
'status' => false,
'message' => 'Vehicle type not found!',
]);
}
$vehicle_type->delete();
return response()->json([
'status' => true,
'message' => 'Vehicle type deleted successfully!',
]);
}
public function rateIndex(Request $request)
{
$vehicle_types = VehicleType::all();
if($request->ajax()){
$rates = VehicleRateCard::with('vehicleType')->orderBy('id', 'desc');
return DataTables::of($rates)
->addColumn('vehicle_type', function ($item) {
if(isset($item->vehicleType)){
return $item->vehicleType->name;
}
return '';
})
->addColumn('action', function ($item) {
$buttons = '<div class="table-actions d-flex">';
if (auth()->user()->can('role.edit')) {
$buttons .= '<a href="'.route('admin.vehicle.rate.edit', $item->id).'" class="btn btn-default btn-sm" title="Edit"><i class="fa fa-edit"></i></a>';
}
if (auth()->user()->can('role.delete')) {
$buttons .= '<a href="javascript:void(0);" class="btn btn-default btn-sm delete" data-url="'.route('admin.vehicle.rate.delete', $item->id).'" title="Delete"><i class="fa fa-trash"></i></a>';
}
$buttons .= '</div>';
return $buttons;
})
->rawColumns(['action'])
->make(true);
}
return view('admin.vehicle_rate.index', compact('vehicle_types'));
}
public function rateStore(Request $request)
{
$request->validate([
'vehicle_type' => 'required|string',
'city_rate' => 'required|string',
'outstation_rate' => 'required|string',
'description' => 'nullable|string|max:1000',
]);
VehicleRateCard::create([
'vehicle_type_id' => $request->vehicle_type,
'city_rate' => $request->city_rate,
'outstation_rate' => $request->outstation_rate,
'description' => $request->description,
]);
return redirect()->route('admin.vehicle.rate.index')->with('success', 'Vehicle Rate created successfully!');
}
public function rateEdit(Request $request, $id){
if (!auth()->user()->can('role.edit')) {
abort(403, 'You do not have permission to edit roles.');
}
$vehicle_rate = VehicleRateCard::find($id);
$vehicle_types = VehicleType::all();
if(isset($vehicle_rate)){
return view('admin.vehicle_rate.edit', compact(['vehicle_rate','vehicle_types']));
}
return redirect()->back()->with('error', 'Vehicle Rate not found!');
}
public function rateUpdate(Request $request, $id){
$request->validate([
'vehicle_type' => 'required|string',
'city_rate' => 'required|numeric',
'outstation_rate' => 'required|numeric',
'description' => 'nullable|string|max:1000',
]);
$vehicle_rate = VehicleRateCard::find($id);
if(isset($vehicle_rate)){
$vehicle_rate->update([
'vehicle_type_id' => $request->vehicle_type,
'city_rate' => $request->city_rate,
'outstation_rate' => $request->outstation_rate,
'description' => $request->description,
]);
return redirect()->route('admin.vehicle.rate.index')->with('success', 'Vehicle Rate updated successfully!');
}
return redirect()->back()->with('error', 'Vehicle Rate not found!');
}
public function rateDelete(Request $request, $id){
$vehicle_rate = VehicleRateCard::find($id);
if(!isset($vehicle_rate)){
return response()->json([
'status' => false,
'message' => 'Vehicle Rate not found!',
]);
}
$vehicle_rate->delete();
return response()->json([
'status' => true,
'message' => 'Vehicle Rate deleted successfully!',
]);
}
}