File: /home/workzeni/stream-flix.workzenix.com/app/Http/Controllers/Website/WebsiteController.php
<?php
namespace App\Http\Controllers\Website;
use App\Http\Controllers\Controller;
use App\Models\Category;
use App\Models\Movie;
use Illuminate\Http\Request;
class WebsiteController extends Controller
{
public function search(Request $request)
{
$query = $request->get('q', '');
if (empty($query)) {
return response()->json(['movies' => []]);
}
$movies = Movie::with(['category', 'language'])
->where('name', 'like', "%{$query}%")
->orWhere('year', 'like', "%{$query}%")
->orWhereHas('category', function ($q) use ($query) {
$q->where('name', 'like', "%{$query}%");
})
->orWhereHas('language', function ($q) use ($query) {
$q->where('name', 'like', "%{$query}%");
})
->select('id', 'name', 'thumbnail_image', 'year', 'duration', 'rating')
->take(15)
->get()
->map(function ($movie) {
return [
'id' => $movie->id,
'title' => $movie->name,
'poster' => asset('uploads/thumbnail/' . $movie->thumbnail_image),
'year' => $movie->year,
'duration' => $movie->duration,
'rating' => $movie->rating,
'genre' => [$movie->category->name ?? 'Unknown'],
'languages' => [$movie->language->name ?? 'Unknown'],
];
});
return response()->json(['movies' => $movies]);
}
public function index()
{
$heroBanner = Movie::where('status', 'active')->latest()->take(5)->get();
$popularMovies = Movie::where('status', 'active')->orderBy('views', 'desc')->take(10)->get();
$newMovies = Movie::where('status', 'active')->latest()->take(10)->get();
$movies = Movie::where('status', 'active')->latest()->get();
return view('website.pages.home.index', compact('heroBanner', 'popularMovies', 'newMovies', 'movies'));
}
public function category($slug)
{
$category = Category::where('slug', $slug)->firstOrFail();
$movie = Movie::where('category_id', $category->id)->orderBy('id', 'desc')->get();
return view('website.pages.cetagory.index');
}
public function watch($code)
{
$movie = Movie::where('code', $code)->firstOrFail();
$viewedMovies = session()->get('viewed_movies', []);
if (!in_array($movie->id, $viewedMovies)) {
$movie->increment('views');
$viewedMovies[] = $movie->id;
session(['viewed_movies' => $viewedMovies]);
}
$upNext = Movie::where('category_id', $movie->category_id)
->where('id', '!=', $movie->id)
->orderBy('id', 'asc')
->first();
$moreLikeThis = Movie::where('category_id', $movie->category_id)
->where('id', '!=', $movie->id)
->take(5)
->get();
$popularMovies = Movie::where('language_id', $movie->language_id)
->orderBy('views', 'desc')
->take(5)
->get();
return view('website.pages.watch.index', compact('movie', 'upNext', 'moreLikeThis', 'popularMovies'));
}
}