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/orbidirectory.com/app/Http/Controllers/WebsiteServiceController.php
<?php

namespace App\Http\Controllers;

use App\Models\Website;
use App\Models\WebsiteService;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Yajra\DataTables\Facades\DataTables;

class WebsiteServiceController extends Controller
{

    public function index(Request $request)
    {
        if ($request->ajax()) {
            $search_keyword = $request->input('search_keyword', '');
            $sort_column_key = '';
            $sort_column_dir = 'asc';

            if ($request->has('order') && $request->order[0]['column'] != 0) {
                $sort_column_number = $request->order[0]['column'];
                $sort_column_dir = $request->order[0]['dir'];
                $sort_column_key = $request->columns[$sort_column_number]['data'];
            }

            $query = WebsiteService::query();
            if (!empty($search_keyword)) {
                $query->where('name', 'LIKE', '%' . $search_keyword . '%');
            }

            if (!empty($sort_column_key)) {
                $query->orderBy($sort_column_key, $sort_column_dir);
            } else {
                $query->latest();
            }

            $data = $query->get();
            $count_total = $query->count();

            return DataTables::of($data)
                ->addColumn('website', function ($row) {
                    return $row->website_id;
                })
                ->addColumn('name', function ($row) {
                    return $row->name;
                })
                ->addColumn('description', function ($row) {
                    return $row->description;
                })
                ->addColumn('action', function ($row) {
                    return view('admin.website_service.partially.delete', compact('row'));
                })
                ->rawColumns(['action'])
                ->with([
                    "recordsTotal"    => $count_total,
                    "recordsFiltered" => $count_total,
                ])
                ->make(true);
        }


        return view('admin.website_service.index');
    }
    public function listServices(Request $request, $website_id)
    {
        if ($request->ajax()) {
            $search_keyword = $request->input('search_keyword', '');
            $sort_column_key = '';
            $sort_column_dir = 'asc';

            if ($request->has('order') && $request->order[0]['column'] != 0) {
                $sort_column_number = $request->order[0]['column'];
                $sort_column_dir = $request->order[0]['dir'];
                $sort_column_key = $request->columns[$sort_column_number]['data'];
            }

            $query = WebsiteService::where('website_id', $website_id);

            if (!empty($search_keyword)) {
                $query->where('name', 'LIKE', '%' . $search_keyword . '%');
            }

            if (!empty($sort_column_key)) {
                $query->orderBy($sort_column_key, $sort_column_dir);
            } else {
                $query->latest();
            }

            $data = $query->get();
            $count_total = $query->count();

            return DataTables::of($data)
                ->addColumn('website', function ($row) {
                    return $row->website_id;
                })
                ->addColumn('name', function ($row) {
                    return $row->name;
                })
                ->addColumn('description', function ($row) {
                    return $row->description;
                })
                ->addColumn('action', function ($row) {
                    return view('admin.website_service.partially.delete', ['row' => $row, 'website_id' => $row->website_id]);
                })
                ->rawColumns(['action'])
                ->with([
                    "recordsTotal"    => $count_total,
                    "recordsFiltered" => $count_total,
                ])
                ->make(true);
        }

        return view('admin.website_service.index', ['website_id' => $website_id]);
    }


    public function addService($websiteid)
    {

        return view('admin.website_service.create', compact('websiteid'));
    }
    public function store(Request $request)
    {
        $validator = Validator::make($request->all(), [
            'name' => 'required',
        ]);

        if ($validator->fails()) {
            return redirect()->back()->withErrors($validator)->withInput();
        }

        $website_services = new WebsiteService();
        $website_services->website_id = $request->websiteid;
        $website_services->name = $request->name;
        $website_services->description = $request->description;
        $website_services->save();

        if ($request->hasFile('website_service_image')) {
            $file = $request->file('website_service_image');

            try {
                $media = $website_services->addMedia($file)
                    ->usingFileName(time() . '_' . $file->getClientOriginalName())
                    ->toMediaCollection('website_service_image');
            } catch (\Exception $e) {
                \Log::error('File upload error: ' . $e->getMessage());
                return redirect()->back()->with('error', 'Failed to upload the Image.');
            }
        }

        return redirect()->route('website.services', ['id' => $website_services->website_id])->with('success', 'Website Service added Successfully');
    }


    public function editService($website_id, $id)
    {
        $website_services = WebsiteService::find($id);


        if (isset($website_services)) {

            return view('admin.website_service.edit', compact('website_services', 'website_id'));
        } else {
            return back()->with('error', 'Website Service does not exist');
        }
    }
    public function updateService(Request $request, $id)
    {
        $validator = Validator::make($request->all(), [
            'name' => 'required',
        ]);

        if ($validator->fails()) {
            return redirect()->back()->withErrors($validator)->withInput();
        }

        $website_services = WebsiteService::find($id);
        if (isset($website_services)) {

            $website_services->name = $request->name;
            $website_services->description = $request->description;
            $website_services->save();
            if ($request->hasFile('website_service_image')) {
                $file = $request->file('website_service_image');

                if (!$file->isValid()) {
                    return redirect()->back()->with('error', 'Invalid file upload.');
                }

                try {

                    if ($website_services->hasMedia('website_service_image')) {
                        $website_services->clearMediaCollection('website_service_image');
                    }


                    $website_services->addMedia($file)
                        ->usingFileName(time() . '_' . $file->getClientOriginalName())
                        ->toMediaCollection('website_service_image');
                } catch (\Exception $e) {
                    // Log the error and redirect back with an error message
                    \Log::error('File upload error: ' . $e->getMessage());
                    return redirect()->back()->with('error', 'Failed to upload the Image.');
                }
            }

            return redirect()->route('website.services', ['id' => $website_services->website_id])->with('success', 'Website Service has been updated successfully.');
        } else {
            return back()->with('error', 'Website Service not found.');
        }
    }

    public function destroy(string $id)
    {
        $website_services = WebsiteService::find($id);
        if (isset($website_services)) {
            $website_services->Delete();

            return redirect()->back()->with('success', 'Website Service has been deleted successfully.');
        } else {
            return back()->with('error', 'Website Service not found.');
        }
    }
}