PK

ADDRLIN : /home/questend/public_html/domains/evami.in/app/Http/Controllers/
FLL :
Current File : /home/questend/public_html/domains/evami.in/app/Http/Controllers/BannerController.php

<?php

namespace App\Http\Controllers;

use App\Banner;
use Illuminate\Http\Request;
use Illuminate\Http\RedirectResponse;
use Illuminate\View\View;
use Illuminate\Http\JsonResponse;
use Carbon\Carbon;
use Illuminate\Support\Facades\Response;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Str;

class BannerController extends Controller
{
    /**
     * Create a new controller instance.
     */
    public function __construct()
    {
        $this->middleware('auth:admin');
    }

    /**
     * Display a listing of the resource.
     */
    public function index(): View|RedirectResponse
    {
        if (view()->exists('backend.admin.banners.banner')) {   
            $banners = Banner::orderBy('banner_sortby', 'desc')->paginate(5);
            $banners->withPath('banner');
            return view('backend.admin.banners.banner', compact('banners'));
        }
        return back()->with('error', 'View not found');
    }

    /**
     * Show the form for creating a new resource.
     */
    public function create(): View|RedirectResponse
    {
        if (view()->exists('backend.admin.banners.bannerCreate')) { 
            return view('backend.admin.banners.bannerCreate');
        }
        return back()->with('error', 'View not found');
    }

    /**
     * Store a newly created resource in storage.
     */
    public function store(Request $request): RedirectResponse
    {
        // CSRF token validation
        if ($request->_token !== Session::token()) {
            return Redirect::back()->with('error', 'Invalid form submission!');
        }

        // Validation rules
        $validator = Validator::make($request->all(), [
            'category_id' => 'required|integer',
            'banner_image' => 'required|image|mimes:jpeg,png,jpg,gif,webp,svg|max:5120', // 5MB max
            'banner_sortby' => 'required|integer|min:1',
            'isvisible' => 'required|boolean',
            'isactive' => 'required|boolean',
            'banner_title' => 'nullable|string|max:255',
            'banner_desc' => 'nullable|string',
            'banner_url' => 'nullable|string|max:255',
        ]);

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

        try {
            $banner = new Banner();
            $banner->category_id = (int) $request->category_id;
            $banner->banner_title = $request->banner_title ?? '';
            $banner->banner_desc = $request->banner_desc ?? '';
            $banner->banner_url = $request->banner_url ?? '#';
            $banner->banner_sortby = (int) $request->banner_sortby;
            $banner->isvisible = (bool) $request->isvisible;
            $banner->isactive = (bool) $request->isactive;
            $banner->isdelete = 1;
            $banner->addedby = Auth::id();
            $banner->created_at = Carbon::now();
            $banner->visitor = $request->ip();

            // Image Upload
            $destinationPath = 'images/banner';
            
            // Create directory if it doesn't exist
            if (!File::exists(public_path($destinationPath))) {
                File::makeDirectory(public_path($destinationPath), 0755, true);
            }

            if ($request->hasFile('banner_image') && $request->file('banner_image')->isValid()) {
                $extension = $request->file('banner_image')->getClientOriginalExtension();
                $timestamp = Carbon::now()->timestamp;
                $fileName = 'banner_' . $timestamp . '.' . $extension;
                
                if ($request->file('banner_image')->move(public_path($destinationPath), $fileName)) {
                    $banner->banner_image = $destinationPath . '/' . $fileName;
                } else {
                    return back()->with('error', 'Failed to upload banner image.');
                }
            } else {
                return back()->with('error', 'Please select a valid banner image.');
            }

            if ($banner->save()) {
                return redirect()->route('banner.index')
                    ->with('success', 'New banner added successfully!');
            }

            return back()->with('error', 'Failed to save banner. Please try again.');

        } catch (\Exception $e) {
            return back()->with('error', 'An error occurred while creating the banner.');
        }
    }

    /**
     * Display the specified resource.
     */
    public function show(Banner $banner)
    {
        // Method intentionally left empty
    }

    /**
     * Show the form for editing the specified resource.
     */
    public function edit(Banner $banner): View|RedirectResponse
    {
        if (view()->exists('backend.admin.banners.bannerEdit')) { 
            return view('backend.admin.banners.bannerEdit', compact('banner'));
        }
        return back()->with('error', 'View not found');
    }

    /**
     * Update the specified resource in storage.
     */
    public function update(Request $request, Banner $banner): RedirectResponse
    {
        // CSRF token validation
        if ($request->_token !== Session::token()) {
            return Redirect::back()->with('error', 'Invalid form submission!');
        }

        // Validation rules
        $validator = Validator::make($request->all(), [
            'category_id' => 'required|integer',
            'banner_image' => 'nullable|image|mimes:jpeg,png,jpg,gif,webp,svg|max:5120',
            'banner_sortby' => 'required|integer|min:1',
            'isvisible' => 'required|boolean',
            'isactive' => 'required|boolean',
            'banner_title' => 'nullable|string|max:255',
            'banner_desc' => 'nullable|string',
            'banner_url' => 'nullable|string|max:255',
        ]);

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

        try {
            $banner->category_id = (int) $request->category_id;
            $banner->banner_title = Str::title($request->banner_title ?? '');
            $banner->banner_desc = $request->banner_desc ?? '';
            $banner->banner_url = $request->banner_url ?? '#';
            $banner->banner_sortby = (int) $request->banner_sortby;
            $banner->isvisible = (bool) $request->isvisible;
            $banner->isactive = (bool) $request->isactive;
            $banner->addedby = Auth::id();
            $banner->updated_at = Carbon::now();
            $banner->visitor = $request->ip();

            // Image Upload
            $destinationPath = 'images/banner';
            
            // Create directory if it doesn't exist
            if (!File::exists(public_path($destinationPath))) {
                File::makeDirectory(public_path($destinationPath), 0755, true);
            }

            if ($request->hasFile('banner_image') && $request->file('banner_image')->isValid()) {
                $oldFileName = $banner->banner_image;
                
                // Delete old image if it exists
                if ($oldFileName && File::exists(public_path($oldFileName))) {
                    File::delete(public_path($oldFileName));
                }

                $extension = $request->file('banner_image')->getClientOriginalExtension();
                $timestamp = Carbon::now()->timestamp;
                $fileName = 'banner_' . $banner->id . '_' . $timestamp . '.' . $extension;
                
                if ($request->file('banner_image')->move(public_path($destinationPath), $fileName)) {
                    $banner->banner_image = $destinationPath . '/' . $fileName;
                } else {
                    return back()->with('error', 'Failed to upload new banner image.');
                }
            }

            if ($banner->save()) {
                return redirect()->route('banner.edit', $banner->id)
                    ->with('success', 'Banner updated successfully!');
            }

            return back()->with('error', 'Failed to update banner. Please try again.');

        } catch (\Exception $e) {
            return back()->with('error', 'An error occurred while updating the banner.');
        }
    }

    /**
     * Remove the specified resource from storage.
     */
    public function destroy(Banner $banner)
    {
        // Method intentionally left empty - using delete method instead
    }

    /**
     * Soft delete the specified resource from storage.
     */
    public function delete(Request $request, int $id): JsonResponse
    {
        try {
            $banner = Banner::withTrashed()->findOrFail($id);
            $banner->isdelete = 0;
            $banner->addedby = Auth::id();
            $banner->deleted_at = Carbon::now();

            if ($banner->save()) {
                // Delete associated image file
                if ($banner->banner_image && File::exists(public_path($banner->banner_image))) {
                    File::delete(public_path($banner->banner_image));
                }

                return response()->json([
                    'id' => $banner->id,
                    'status' => true,
                    'msg' => 'Banner deleted successfully!'
                ]);
            }

            return response()->json([
                'status' => false,
                'msg' => 'Failed to delete banner!'
            ], 500);

        } catch (\Exception $e) {
            return response()->json([
                'status' => false,
                'msg' => 'Banner not found or already deleted!'
            ], 404);
        }
    }

    /**
     * Restore the specified resource from storage.
     */
    public function restore(int $id = 0): RedirectResponse
    {
        try {
            if ($id > 0) {
                $banner = Banner::withTrashed()->findOrFail($id);
                $banner->restore();
                $banner->isdelete = 1;
                $banner->save();

                return back()->with('success', 'Banner restored successfully!');
            } else {
                // Restore all trashed banners
                Banner::onlyTrashed()->restore();
                Banner::where('isdelete', 0)->update([
                    'isdelete' => 1,
                    'addedby' => Auth::id()
                ]);

                return back()->with('success', 'All banners restored successfully!');
            }
        } catch (\Exception $e) {
            return back()->with('error', 'Failed to restore banner. Please try again.');
        }
    }

    /**
     * Change banner visibility status.
     */
    public function changeStatus(Request $request): JsonResponse
    {
        try {
            $id = $request->input('id');
            $banner = Banner::findOrFail($id);
            $banner->isvisible = !$banner->isvisible;
            $banner->save();

            return response()->json([
                'status' => true,
                'isvisible' => $banner->isvisible,
                'message' => 'Banner visibility updated successfully'
            ]);

        } catch (\Exception $e) {
            return response()->json([
                'status' => false,
                'message' => 'Failed to update banner status'
            ], 500);
        }
    }

    /**
     * Change banner active status.
     */
    public function changeActiveStatus(Request $request): JsonResponse
    {
        try {
            $id = $request->input('id');
            $banner = Banner::findOrFail($id);
            $banner->isactive = !$banner->isactive;
            $banner->save();

            return response()->json([
                'status' => true,
                'isactive' => $banner->isactive,
                'message' => 'Banner status updated successfully'
            ]);

        } catch (\Exception $e) {
            return response()->json([
                'status' => false,
                'message' => 'Failed to update banner status'
            ], 500);
        }
    }
}


PK 99
E-SHOP || DASHBOARD
404

Page Not Found

It looks like you found a glitch in the matrix...

← Back to Home