HEX
Server: Apache/2.4.58 (Ubuntu)
System: Linux ip-172-26-0-120 6.17.0-1009-aws #9~24.04.2-Ubuntu SMP Fri Mar 6 23:50:29 UTC 2026 x86_64
User: ubuntu (1000)
PHP: 8.3.6
Disabled: NONE
Upload Files
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!',
        ]);
    }
}