HEX
Server: LiteSpeed
System: Linux s3.sitechai.com 4.18.0-553.51.1.lve.1.el8.x86_64 #1 SMP Wed May 14 14:34:57 UTC 2025 x86_64
User: workzeni (2217)
PHP: 8.1.32
Disabled: mail, show_source, system, shell_exec, passthru, exec, eval, shell
Upload Files
File: //home/workzeni/stream-flix.workzenix.com/app/Http/Controllers/Admin/MovieController.php
<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use App\Models\Category;
use App\Models\Movie;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
use App\Helpers\FileHelper;
use App\Models\Language;
use Illuminate\Support\Facades\Log;

class MovieController extends Controller
{
    private function generateCode()
    {
        return strtoupper(Str::random(8));
    }

    public function index(Request $request)
    {
        $categories = Category::where('status', 'active')->get();
        $languages = Language::where('status', 'active')->get();
        $movies = Movie::latest()->get();
        // For AJAX filtering
        if ($request->ajax()) {
            $query = Movie::with(['category', 'language']);

            // Filter by category
            if ($request->category_id && $request->category_id != 'all') {
                $query->where('category_id', $request->category_id);
            }

            // Filter by status
            if ($request->status && $request->status != 'all') {
                $query->where('status', $request->status);
            }

            // Search by name
            if ($request->search) {
                $query->where('name', 'like', '%' . $request->search . '%');
            }

            $perPage = $request->per_page ?? 10;
            $movies = $query->latest()->paginate($perPage);
            return response()->json([
                'movies' => $movies->items(),
                'pagination' => [
                    'total' => $movies->total(),
                    'per_page' => $movies->perPage(),
                    'current_page' => $movies->currentPage(),
                    'last_page' => $movies->lastPage(),
                ]
            ]);
        }

        // Normal page load
        return view('admin.pages.movie.index', compact('categories', 'languages', 'movies'));
    }

    public function create()
    {
        $categories = Category::all();
        $languages = Language::all();
        return view('admin.pages.movie.add', compact('categories', 'languages'));
    }


    public function store(Request $request)
    {
        $request->validate([
            'category_id' => 'required|string',
            'language_id' => 'required|string',
            'name' => 'nullable|string|max:255|unique:languages',
            'year' => 'nullable|string',
            'duration' => 'nullable|string',
            'rating' => 'nullable',
            'description' => 'nullable|string',
            'thumbnail_image' => 'nullable|image|mimes:jpeg,png,jpg,gif',
            'movie_url' => 'nullable|file|mimes:mp4,avi,mkv,flv',
            'status' => 'required|in:active,inactive,draft',
        ]);

        $movie = new Movie();
        $movie->category_id = $request->category_id;
        $movie->language_id = $request->language_id;
        $movie->name = $request->name;
        $movie->slug = Str::slug($request->name);
        $movie->code = $this->generateCode();
        $movie->year = $request->year;
        $movie->duration = $request->duration;
        $movie->rating = $request->rating;
        $movie->description = $request->description;
        $movie->status = $request->status;

        if ($request->hasFile('thumbnail_image')) {
            $movie->thumbnail_image = FileHelper::saveFile($request->file('thumbnail_image'), 'thumbnail');
        }

        if ($request->hasFile('movie_url')) {
            $movie->movie_url = FileHelper::saveFile($request->file('movie_url'), 'movies');
        }

        $movie->save();

        // return response()->json(['message' => 'Movie saved successfully!', 'movie' => $movie], 201);
        return redirect()
            ->route('movie.list')
            ->with('success', 'Movie saved successfully.');
    }

    public function edit($language)
    {
        $movie = Movie::findOrFail($language);
        $categories = Category::all();
        $languages = Language::all();
        return view('admin.pages.movie.edit', compact('movie', 'categories', 'languages'));
    }

    public function update(Request $request, $movieId)
    {
        $request->validate([
            'category_id' => 'required|string',
            'language_id' => 'required|string',
            'name' => 'nullable|string|max:255|unique:languages,name,' . $movieId,
            'year' => 'nullable|string',
            'duration' => 'nullable|string',
            'rating' => 'nullable|numeric',
            'description' => 'nullable|string',
            'thumbnail_image' => 'nullable|image|mimes:jpeg,png,jpg,gif',
            'movie_url' => 'nullable|file|mimes:mp4,avi,mkv,flv',
            'status' => 'required|in:active,inactive,draft',
        ]);

        // Find the existing Movie by ID
        $movie = Movie::findOrFail($movieId);

        $movie->category_id = $request->category_id;
        $movie->language_id = $request->language_id;
        $movie->name = $request->name;
        $movie->slug = Str::slug($request->name);
        $movie->year = $request->year;
        $movie->duration = $request->duration;
        $movie->rating = $request->rating;
        $movie->description = $request->description;
        $movie->status = $request->status;

        // Handle Thumbnail Image Upload
        if ($request->hasFile('thumbnail_image')) {
            $movie->thumbnail_image = FileHelper::updateSaveFile(
                $request->file('thumbnail_image'), // Uploaded file
                'thumbnail', // Folder name
                $movie->thumbnail_image // Old file path
            );
        }

        // Handle Movie URL Upload
        if ($request->hasFile('movie_url')) {
            $movie->movie_url = FileHelper::updateSaveFile(
                $request->file('movie_url'),
                'movies',
                $movie->movie_url
            );
        }

        $movie->save();
        return response()->json(['message' => 'Movie updated successfully!', 'movie' => $movie], 200);
    }

    public function delete($id)
    {
        // Find the movie by ID
        $movie = Movie::find($id);
        if (!$movie) {
            return response()->json(['message' => 'Movie not found!'], 404);
        }
        // Delete the old thumbnail image if it exists
        if ($movie->thumbnail_image) {
            FileHelper::deleteFile($movie->thumbnail_image, 'thumbnail');
        }
        // Delete the old movie URL file if it exists
        if ($movie->movie_url) {
            FileHelper::deleteFile($movie->movie_url, 'movies');
        }
        $movie->delete();

        return response()->json(['message' => 'Movie deleted successfully!'], 200);
    }
}