PATH:
home
/
lab2454c
/
omvstudio.com
/
app
/
Http
/
Controllers
/
API
/
V1
<?php namespace App\Http\Controllers\API\V1; use App\Http\Controllers\Controller; use Illuminate\Http\Request; use App\Models\Movie; use App\Models\Category; use App\Models\Review; use App\Models\User; use DB; class HomeController extends Controller { public function index() { $featured_movies = Movie::where('is_featured',1)->where('status','active')->orderBy('created_at','desc')->get(); $featured_categories = Category::where('is_featured',1)->where('status','active')->orderBy('created_at','desc')->get(); if($featured_movies->isEmpty() || $featured_categories->isEmpty()){ return response()->json([ 'message'=>'No data found', 'featured_movies' => $featured_movies, 'featured_categories' => $featured_categories, ]); } $featured_categories_with_movie = Category::inRandomOrder()->take(4)->where('is_featured','1')->where('status','active')->orderBy('created_at','desc')->get(); $category_movies_arr = []; foreach ($featured_categories_with_movie as $category) { $movies = Movie::whereHas('categories', function ($query) use($category) { //$query->where('id', ) //$query->whereIn('categories.id',$category->id); $query->where('categories.id',$category->id); $query->where('movies.status','active'); })->inRandomOrder()->take(10)->get(); $category_movies_arr[$category->slug] = ['category' => $category, 'movies' => $movies]; } $category_movies = $category_movies_arr; //dd($data['category_movies']); return response()->json([ 'featured_movies' => $featured_movies, 'featured_categories' => $featured_categories, 'featured_categories_with_movie' => $featured_categories_with_movie, 'category_movies' => $category_movies ], 200); } public function categoryList($category_slug='') { /*$data= []; $categories = Category::where('status','active')->orderBy('created_at','desc')->get(); $category_movies = []; foreach ($categories as $category) { $movies = Movie::whereHas('categories', function ($query) use($category){ $query->where('categories.id',$category->id); $query->where('movies.status','active'); })->paginate(12); $category_movies[$category->slug] = ['category' => $category, 'movies' => $movies]; } $data['category_movies'] = $category_movies;*/ $categories = empty($category_slug) ? Category::where('status','active')->orderBy('created_at','desc')->get() : Category::where('slug',$category_slug)->orderBy('created_at','desc')->first(); //dd($categories->toArray()); $category_movies = []; $category_movies_arr = []; if (empty($category_slug)) { foreach ($categories as $category) { $movies = Movie::whereHas('categories', function ($query) use($category){ $query->where('categories.id',$category->id); $query->where('movies.status','active'); })->paginate(12); $category_movies_arr[$category->slug] = ['category' => $category, 'movies' => $movies]; } $category_movies = $category_movies_arr; } else{ if(!isset($categories) || $categories->status == "inactive"){ //abort(404, 'Page Not Found'); return response()->json([ 'category_movies' => 'This Category does not exists', ], 404); } $movies = Movie::whereHas('categories', function ($query) use($category_slug){ $query->where('categories.slug',$category_slug); $query->where('movies.status','active'); })->get(); if ($movies->isEmpty()){ return response()->json([ 'message'=>'No movie exists', 'category_movies'=>$category_movies ], 422); } $category_movies_arr[$categories->slug] = ['category' => $categories, 'movies' => $movies]; $category_movies = $category_movies_arr; } return response()->json([ 'category_movies' => $category_movies, ], 200); } public function movieDetails($movie_slug) { //$movie = Movie::findOrFail($movie_slug); // it's for movie $movie = Movie::where('slug',$movie_slug)->where('status','active')->first(); //dd($movie); if(!isset($movie) || $movie->status == "inactive"){ return response()->json([ 'message'=>'This movie does not exists', 'movie' => $movie, ], 404); } // it's for movie star cast $movie['star_cast'] = json_decode($movie->star_cast); // get category id in array by movie $category_id_arr = []; foreach ($movie->categories as $value) { array_push($category_id_arr,$value->id); } // get categories $categories = Category::whereIn('id',$category_id_arr)->where('status','active')->take(2)->get(); // get related movies by movie $related_movies = Movie::whereHas('categories', function ($query) use($category_id_arr) { $query->whereIn('categories.id',$category_id_arr); $query->where('movies.status','active'); })->inRandomOrder()->take(20)->where('id','!=', $movie->id)->get(); //it's for star_cast to covert array foreach ($related_movies as $key => $value) { $related_movies[$key] = $value; $related_movies[$key]['star_cast'] = json_decode($value->star_cast,true); } //return response()->json(['related_movies'=>$related_movies]); // get reviews $reviews = Review::where('movie_id',$movie->id)->where('status','active')->orderByDesc('created_at')->get(); $rating_sum = Review::where('movie_id',$movie->id)->where('status','active')->sum('rating'); $average = DB::select( DB::raw("SELECT ((SELECT COUNT(*) AS Total FROM `reviews` WHERE `rating` > 4 AND movie_id = ".$movie->id.") / COUNT(*)) * 100 AS excellent, ((SELECT COUNT(*) AS Total FROM `reviews` WHERE (`rating` < 5 AND `rating` >= 4) AND movie_id = ".$movie->id.") / COUNT(*)) * 100 AS good, ((SELECT COUNT(*) AS Total FROM `reviews` WHERE (`rating` < 4 AND `rating` >= 3) AND movie_id = ".$movie->id.") / COUNT(*)) * 100 AS average, ((SELECT COUNT(*) AS Total FROM `reviews` WHERE `rating` < 3 AND movie_id = ".$movie->id.") / COUNT(*)) * 100 AS belowaverage FROM `reviews` WHERE `movie_id` = ".$movie->id." ") ); if ($reviews->count() > 0) { //slove error if no review $average_rating = number_format($rating_sum / $reviews->count(),1); $reviews_count = $reviews->count(); $review_data_arr = []; foreach ($reviews as $count => $review) { $review_arr = [ 'first_name' => $review->user->first_name, 'last_name' => $review->user->last_name, 'rating' => $review->rating, 'created_at' => $review->created_at->diffForHumans(), 'profile_picture' => $review->user->profile_picture, ]; array_push($review_data_arr, $review_arr); } //dd($review_data_arr); $reviews = collect($review_data_arr)->paginate(12); } else{ $average_rating = 0; $reviews_count = 'no'; } //dd($category_id_arr); //prxArr($category); // if ($related_movies->isEmpty()) { // return response()->json([ // 'message'=> 'No related movie exists', // ], 422); // } return response()->json([ 'movie'=> $movie, //'movie_star_cast' => $movie_star_cast, 'categories' => $categories, 'related_movies' => $related_movies, 'average' => $average, 'average_rating' => $average_rating, 'reviews_count' => $reviews_count, 'reviews' => $reviews ], 200); //return $data; } /*public function watchList($user_id) { try { $user = User::findOrFail($user_id); $watchlist = $user->movies; $count = $watchlist->count(); if($watchlist->count()){ return response()->json([ 'status'=> 200, 'watchlist'=>$watchlist ], 200); } else{ return response()->json([ 'status'=> 404, 'watchlist'=>$watchlist ]); } } catch (\Exception $e) { return response()->json([ 'status' => false, 'message' => 'User not exists' ], 404); } }*/ }
[-] ProfileController.php
[edit]
[+]
..
[-] MobHomeController.php
[edit]
[-] ReviewController.php
[edit]
[-] DashboardController.php
[edit]
[-] HomeController.php
[edit]
[-] AuthController.php
[edit]