Your IP : 216.73.216.79


Current Path : /var/www/html/reddsis/app/Http/Controllers/Backend/
Upload File :
Current File : /var/www/html/reddsis/app/Http/Controllers/Backend/FrontendUserController.php

<?php

namespace App\Http\Controllers\Backend;

use App\Http\Controllers\Controller;
use App\Http\Requests\Backend\UserRequest;
use App\Models\Backend\FrontendUser;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Storage;

class FrontendUserController extends Controller
{
    /**
     * Display a listing of the resource.
     */
    public function index(Request $request)
    {
        $search = $request->get('search');

        $frontendUsers = FrontendUser::when($search, function ($q) use ($search) {
                $q->where(function ($sub) use ($search) {
                    $sub->where('username', 'like', "%{$search}%")
                        ->orWhere('email', 'like', "%{$search}%")
                        ->orWhere('first_name', 'like', "%{$search}%")
                        ->orWhere('last_name', 'like', "%{$search}%");
                });
            })
            ->orderBy('created_at', 'desc')
            ->paginate(10)->onEachSide(1)->withQueryString();

        return view(
            'backend.module.frontendUser.index',
            [
                'frontendUsers' => $frontendUsers,
                'search' => $search,
            ]
        );
    }

    /**
     * Show the form for creating a new resource.
     */
    public function create()
    {
        return view(
            'backend.module.frontendUser.create'
        );
    }

    /**
     * Store a newly created resource in storage.
     */
    public function store(UserRequest $request)
    {
        // Validation is automatically handled by UserRequest

        $user = FrontendUser::create([
            'username' => $request->username,
            'email' => $request->email,
            'password' => Hash::make($request->password),
            'first_name' => $request->first_name,
            'last_name' => $request->last_name,
            'is_active' => $request->is_active ?? 1,
        ]);

        if ($request->hasFile('profile_picture')) {
            $path = $request->file('profile_picture')->store('profile_pictures/frontend', 'public');
            $user->update(['profile_picture' => $path]);
        }

        // OPTIONAL: send verification email
        if ($request->send_verification_email) {
            $user->sendEmailVerificationNotification();
        }

        flash()->success('Frontend User created successfully!');

        return redirect()->route('frontend-user.index');
    }

    /**
     * Display the specified resource.
     */
    public function show($id)
    {
        $frontendUsers = FrontendUser::findOrFail($id);

        return view(
            'backend.module.frontendUser.show',
            [
                'frontendUsers' => $frontendUsers
            ]
        );
    }

    /**
     * Show the form for editing the specified resource.
     */
    public function edit($id)
    {
        $frontendUsers = FrontendUser::findOrFail($id);

        return view(
            'backend.module.frontendUser.edit',
            [
                'frontendUsers' => $frontendUsers
            ]
        );
    }

    /**
     * Update the specified resource in storage.
     */
    public function update(UserRequest $request, $id)
    {
        $frontendUsers = FrontendUser::findOrFail($id);

        $data = [
            'username' => $request->username,
            'email' => $request->email,
            'first_name' => $request->first_name,
            'last_name' => $request->last_name,
            'is_active' => $request->is_active ?? $frontendUsers->is_active,
        ];

        if ($request->filled('password')) {
            $data['password'] = Hash::make($request->password);
        }

        if ($request->hasFile('profile_picture')) {
            if ($frontendUsers->profile_picture) {
                Storage::disk('public')->delete($frontendUsers->profile_picture);
            }
            $data['profile_picture'] = $request->file('profile_picture')->store('profile_pictures/frontend', 'public');
        }

        $frontendUsers->update($data);

        flash()->success('Frontend User updated successfully!');

        return redirect()->route('frontend-user.index');
    }

    /**
     * Remove the specified resource from storage.
     */
    public function destroy($id)
    {
        $frontendUsers = FrontendUser::findOrFail($id);
        $frontendUsers->delete();

        flash()->success('Frontend User deleted successfully.');

        return redirect()->route('frontend-user.index');
    }
}