����JFIF��x�x����'403WebShell
403Webshell
Server IP : 66.29.137.217  /  Your IP : 18.118.253.134
Web Server : LiteSpeed
System : Linux premium294.web-hosting.com 4.18.0-513.11.1.lve.el8.x86_64 #1 SMP Thu Jan 18 16:21:02 UTC 2024 x86_64
User : gltevjme ( 1095)
PHP Version : 7.0.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/gltevjme/gle.gltechlimited.com/app/Http/Controllers/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/gltevjme/gle.gltechlimited.com/app/Http/Controllers/TvSeriesController.php
<?php
namespace App\Http\Controllers;

use App\Actor;
use App\AudioLanguage;
use App\Episode;
use App\Genre;
use App\HomeSlider;
use App\Label;
use App\Menu;
use App\MenuVideo;
use App\MultipleLinks;
use App\Season;
use App\Allcountry;
use App\Subtitles;
use App\TvSeries;
use App\User;
use App\Videolink;
use App\WatchHistory;
use App\Wishlist;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Crypt;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Validator;
use Intervention\Image\Facades\Image;
use Laravolt\Avatar\Avatar;
use Yajra\DataTables\Facades\DataTables;


class TvSeriesController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */

    public function __construct()
    {
        $this->middleware('permission:tvseries.view', ['only' => ['index']]);
        $this->middleware('permission:tvseries.create', ['only' => ['create', 'store']]);
        $this->middleware('permission:tvseries.edit', ['only' => ['edit', 'update']]);
        $this->middleware('permission:tvseries.delete', ['only' => ['destroy', 'bulk_delete']]);
    }

    public function index(Request $request)
    {

        if (Auth::user()->is_assistant != 1) {
            if ($request->search != null) {
                $tv_serieses = DB::table('tv_series')->where('title', 'like', '%' . $request->search . '%')->select('id', 'title', 'thumbnail', 'poster', 'rating', 'tmdb', 'featured', 'status', 'created_by', 'genre_id')
                    ->orderBy('id', 'DESC')
                    ->paginate(12);
            } else {
                $tv_serieses = DB::table('tv_series')->select('id', 'title', 'thumbnail', 'poster', 'rating', 'tmdb', 'featured', 'status', 'created_by', 'genre_id')
                    ->orderBy('id', 'DESC')
                    ->paginate(12);
            }

        } else {
            if ($request->search != null) {
                $tv_serieses = DB::table('tv_series')->where('title', 'like', '%' . $request->search . '%')->select('id', 'title', 'thumbnail', 'poster', 'rating', 'tmdb', 'featured', 'status', 'created_by', 'genre_id')
                    ->where('created_by', '=', Auth::user()->id)->where('status', 1)->orderBy('id', 'DESC')->paginate(12);
            } else {
                $tv_serieses = DB::table('tv_series')->select('id', 'title', 'thumbnail', 'poster', 'rating', 'tmdb', 'featured', 'status', 'created_by', 'genre_id')->where('created_by', '=', Auth::user()->id)->where('status', 1)
                    ->orderBy('id', 'DESC')
                    ->paginate(12);
            }

        }

        return view('admin.tvseries.index', compact('tv_serieses'));
    }

    public function addedTvSeries(Request $request)
    {

        $tv_serieses = DB::table('tv_series')->select('id', 'title', 'thumbnail', 'poster', 'rating', 'tmdb', 'featured', 'status', 'created_by')
            ->where('status', '=', 0)
            ->get();
        if ($request->ajax()) {
            return DataTables::of($tv_serieses)->addIndexColumn()->addColumn('checkbox', function ($tv_serieses) {
                $html = '<div class="inline">
                    <input type="checkbox" form="bulk_delete_form" class="filled-in material-checkbox-input" name="checked[]" value="' . $tv_serieses->id . '" id="checkbox' . $tv_serieses->id . '">
                    <label for="checkbox' . $tv_serieses->id . '" class="material-checkbox"></label>
                  </div>';

                return $html;
            })->addColumn('thumbnail', function ($tv_serieses) {
                if ($tv_serieses->thumbnail) {
                    $thumnail = '<img src="' . asset('/images/tvseries/thumbnails/' . $tv_serieses->thumbnail) . '" alt="Pic" width="70px" class="img-responsive">';
                } else if ($tv_serieses->poster) {
                    $thumnail = '<img src="' . asset('/images/tvseries/posters/' . $tv_serieses->poster) . '" alt="Pic" width="70px" class="img-responsive">';
                } else {
                    $thumnail = '<img  src=' . Avatar::create($tv_serieses->title)->toBase64() . ' alt="Pic" width="70px" class="img-responsive">';
                }

                return $thumnail;

            })->addColumn('rating', function ($tv_serieses) {
                return 'IMDB ' . $tv_serieses->rating;
            })->addColumn('featured', function ($tv_serieses) {

                if ($tv_serieses->featured == 1) {
                    $featured = 'Y';
                } else {
                    $featured = '-';
                }

                return $featured;
            })->addColumn('status', function ($tv_serieses) {
                if ($tv_serieses->status == 1) {
                    return "<a href=" . route('quick.tv.status', $tv_serieses->id) . " class='btn btn-rounded btn-success status'>" . __('Active') . "</a>";
                } else {
                    return "<a href=" . route('quick.tv.status', $tv_serieses->id) . " class='btn btn-rounded btn-danger status'>" . __('Deactive') . "</a>";
                }
            })->addColumn('addedby', function ($tv_serieses) {
                $username = User::find($tv_serieses->created_by);

                if (isset($username)) {
                    return $username->name;
                } else {
                    return 'User deleted';
                }

            })->addColumn('tmdb', function ($tv_serieses) {
                if ($tv_serieses->tmdb == 'Y') {
                    $tmdb = '<span class="badge badge-pill badge-success"><i class="fa fa-check-circle"></i></span>';
                } else {
                    $tmdb = '-';
                }
                return $tmdb;
            })->addColumn('action', function ($tv_serieses) {
                $ifseason = Season::where('tv_series_id', '=', $tv_serieses->id)->first();
                if (isset($ifseason) && $tv_serieses->status == 1) {
                    $btn = ' <div class="admin-table-action-block">
                     <a href="' . url('show/detail', $ifseason->season_slug) . '" data-toggle="tooltip" data-original-title="Page Preview" target="_blank" class="btn btn-round btn-outline-primary"><i class="fa fa-tv"></i></a>';
                } else {
                    $btn = ' <div class="admin-table-action-block">
                     <a style="cursor: not-allowed" data-toggle="tooltip" data-original-title="Create a season first or tvseries is not active yet" class="btn btn-round btn-outline-primary"><i class="fa fa-tv"></i></a>';
                }

                $btn .= '<a href="' . route('tvseries.edit', $tv_serieses->id) . '" data-toggle="tooltip" data-original-title="' . __('adminstaticwords.Edit') . '" class="btn btn-round btn-outline-success"><i class="fa fa-pencil"></i></a>
                    <a href="' . route('tvseries.show', $tv_serieses->id) . '" data-toggle="tooltip" data-original-title="Manage Seasons" class="btn btn-round btn-outline-warning"><i class="fa fa-gear"></i></a>
                    <button type="button" class="btn btn-round btn-outline-danger" data-toggle="modal" data-target="#deleteModal' . $tv_serieses->id . '"><i class="fa fa-trash"></i></button></div>';

                $btn .= '<div id="deleteModal' . $tv_serieses->id . '" class="delete-modal modal fade" role="dialog">
                 <div class="modal-dialog modal-sm">
              <!-- Modal content-->
              <div class="modal-content">
              <div class="modal-header">
                  <button type="button" class="close"
                      data-dismiss="modal">&times;</button>
                  <div class="delete-icon"></div>
              </div>
              <div class="modal-body text-center">
                  <h4 class="modal-heading">'. __('Are You Sure ?'). '</h4>
                  <p>'.__('Do you really want to delete selected item names here? This
                      process
                      cannot be undone.').'</p>
              </div>
              <div class="modal-footer">
              <form method="POST" action="' . route("tvseries.destroy", $tv_serieses->id) . '">
              ' . method_field("DELETE") . '
              ' . csrf_field() . '
              <button type="reset" class="btn btn-gray translate-y-3" data-dismiss="modal">'.__('No').'</button>
              <button type="submit" class="btn btn-danger">'.__('Yes').'</button>
              </form>
              </div>
              </div>
              </div>
              </div>';

                return $btn;
            })->rawColumns(['checkbox', 'rating', 'thumbnail', 'tmdb', 'rating', 'status', 'addedby', 'action'])
                ->make(true);
        }
        return view('admin.tvseries.addedindex', compact('tv_serieses'));
    }
    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        $menus = Menu::all();
        $genre_ls = Genre::pluck('name', 'id')->all();
        $a_lans = AudioLanguage::pluck('language', 'id')->all();
        $actor_ls = Actor::pluck('name', 'id')->all();
        $labels = Label::select('id', 'name')->get();
        $countries = Allcountry::get(); 
        return view('admin.tvseries.create', compact('actor_ls', 'genre_ls', 'a_lans', 'menus', 'labels','countries'));
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        if (env('DEMO_LOCK') == 1) {
            return back()->with('deleted', __('This action is disabled in the demo !'));
        }

        ini_set('max_execution_time', 80);

        if (isset($request->tv_by_id)) {
            $request->validate(['title' => 'required',

            ]);

        } else {

            $request->validate(['title2' => 'required'], ['title2.required' => 'Tv ID is required !']);
        }

        $menus = null;

        if (isset($request->menu) && count($request->menu) > 0) {
            $menus = $request->menu;
        }

        $TMDB_API_KEY = env('TMDB_API_KEY');
        $input = $request->all();

        if (!isset($input['featured'])) {
            $input['featured'] = 0;
        }

        $input['created_by'] = Auth::user()->id;

        if (Auth::user()->is_assistant == 1) {
            $status = 0;
        } else {
            $status = 1;
        }
        if (isset($request->is_custom_label)) {
            $request->validate([
                'label_id' => 'required',
            ],
                [
                    'label_id.required' => 'Forget to select label',
                ]);

            $input['label_id'] = $request->label_id;
            $input['is_custom_label'] = 1;
        } else {
            $input['is_custom_label'] = 0;
            $input['label_id'] = null;
        }

        $input['status'] = $status;
        if (isset($input['is_kids'])) {
            $input['is_kids'] = 1;
        }else{
            $input['is_kids'] = 0;
        }

        if ($input['tmdb'] == 'Y') {

            if ($TMDB_API_KEY == null || $TMDB_API_KEY == '') {
                return back()->with('deleted', __('Please provide your TMDB api key or add tvseries by custom fields'));
            }

            $title = urlencode($input['title']);

            if (isset($request->tv_by_id)) {

                $search_data = @file_get_contents('https://api.themoviedb.org/3/search/tv?api_key=' . $TMDB_API_KEY . '&query=' . $title);

                if ($search_data) {
                    $data = json_decode($search_data, true);
                }

                $input['fetch_by'] = "title";

            } else {
                $title2 = urlencode($request->title2);
                $search_data = @file_get_contents('https://api.themoviedb.org/3/tv/' . $title2 . '?api_key=' . $TMDB_API_KEY);

                $x2 = json_decode($search_data, true);
                $data2 = [];
                $data2[] = ['results' => [$x2]];

                $data = $data2[0];

                $input['title'] = $data['results'][0]['name'];

                $input['fetch_by'] = "byID";
            }

            if (!isset($data) || $data['results'] == null) {
                return back()->with('deleted', __('Tv Series does not found by tmdb servers !'));
            }

            if (Session::has('changed_language')) {
                $fetch_tv = @file_get_contents('https://api.themoviedb.org/3/tv/' . $data['results'][0]['id'] . '?api_key=' . $TMDB_API_KEY . '&language=' . Session::get('changed_language'));
                $fetch_tv_for_genres = @file_get_contents('https://api.themoviedb.org/3/tv/' . $data['results'][0]['id'] . '?api_key=' . $TMDB_API_KEY);
            } else {
                $fetch_tv = @file_get_contents('https://api.themoviedb.org/3/tv/' . $data['results'][0]['id'] . '?api_key=' . $TMDB_API_KEY);
                $fetch_tv_for_genres = @file_get_contents('https://api.themoviedb.org/3/tv/' . $data['results'][0]['id'] . '?api_key=' . $TMDB_API_KEY);
            }

            if (!isset($fetch_tv) && !isset($fetch_tv_for_genres)) {
                return back()->with('deleted', __('Tv Series does not found by tmdb servers !'));
            }

            $tmdb_tv = json_decode($fetch_tv, true);
            // Only for genre
            $tmdb_tv_for_genres = json_decode($fetch_tv_for_genres, true);

            if ($tmdb_tv != null) {
                $input['tmdb_id'] = $tmdb_tv['id'];
            } else {
                return back()->with('deleted', __('Tv Series does not found by tmdb servers !'));
            }

            $thumbnail = null;
            $poster = null;

            if ($file = $request->file('thumbnail')) {
                $validator = Validator::make(
                    [
                        'thumbnail' => $request->thumbnail,
                        'extension' => strtolower($request->thumbnail->getClientOriginalExtension()),
                    ],
                    [
                        'thumbnail' => 'required',
                        'extension' => 'required|in:jpg,jpeg,png,webp',
                    ]
                );
                if ($validator->fails()) {
                    return back()->with('deleted', __('Invalid file format Please use jpg,webp,jpeg and png image format !'))->withInput();
                } else {
                    $thumbnail = 'thumb_' . time() . $file->getClientOriginalName();
                    $img = Image::make($file->path());

                    // $img->resize(300, 300, function ($constraint) {
                    //     $constraint->aspectRatio();
                    // });
                    $img->save('images/tvseries/thumbnails', $thumbnail);

                }

            } else {

                $url = $tmdb_tv['poster_path'];
                $contents = @file_get_contents('https://image.tmdb.org/t/p/original/' . $url);
                $name = substr($url, strrpos($url, '/') + 1);
                $name = 'tmdb_' . $name;
                if ($contents) {
                    $tmdb_img = Storage::disk('imdb_poster_tv_series')->put($name, $contents);
                    if ($tmdb_img) {
                        $thumbnail = $name;
                    }
                }

            }

            if ($file = $request->file('poster')) {
                $validator = Validator::make(
                    [
                        'poster' => $request->poster,
                        'extension' => strtolower($request->poster->getClientOriginalExtension()),
                    ],
                    [
                        'poster' => 'required',
                        'extension' => 'required|in:jpg,jpeg,png,webp',
                    ]
                );
                if ($validator->fails()) {
                    return back()->with('deleted', __('Invalid file format Please use jpg,webp,jpeg and png image format !'))->withInput();
                } else {
                    $poster = 'poster_' . time() . $file->getClientOriginalName();
                    $file->move('images/tvseries/posters', $poster);
                }
            } else {
                // $url = $tmdb_tv['backdrop_path'];
                // $contents = @file_get_contents('https://image.tmdb.org/t/p/w300/' . $url);
                $url = $tmdb_tv['poster_path'];
                $contents = @file_get_contents('https://image.tmdb.org/t/p/original' . $url);
                $name = substr($url, strrpos($url, '/') + 1);
                $name = 'poster_' . $name;
                if ($contents) {
                    $tmdb_img = Storage::disk('imdb_backdrop_tv_series')->put($name, $contents);
                    if ($tmdb_img) {
                        $poster = $name;
                    }
                }
            }

            // get Genres and create theme
            $tmdb_genres_id = collect();
            if (isset($tmdb_tv_for_genres) && $tmdb_tv_for_genres != null) {
                foreach ($tmdb_tv_for_genres['genres'] as $tmdb_genre) {

                    $tmdb_genre1 = $tmdb_genre['name'];
                    $check_list = Genre::where('name', 'LIKE', "%$tmdb_genre1%")->first();

                    if (!isset($check_list)) {
                        $created_genre = Genre::create(['name' => ['en' => $tmdb_genre['name']], 'position' => (Genre::count() + 1)]);

                        $tmdb_genres_id->push($created_genre->id);
                    } else {
                        $tmdb_genres_id->push($check_list->id);
                    }
                }
            }
            $tmdb_genres_id = $tmdb_genres_id->flatten();
            $tmdb_genres_id = substr($tmdb_genres_id, 1, -1);
            $country = 0;
            if(isset($input['country'])){
                $country =  $input['country'];
            }

            $created_tv = TvSeries::create(['title' => $input['title'], 'keyword' => $input['keyword'], 'description' => $input['description'], 'tmdb_id' => $input['tmdb_id'], 'tmdb' => $input['tmdb'], 'featured' => $input['featured'], 'thumbnail' => $thumbnail, 'poster' => $poster, 'genre_id' => $tmdb_genres_id, 'detail' => $tmdb_tv['overview'], 'rating' => $tmdb_tv['vote_average'], 'episode_runtime' => $tmdb_tv['episode_run_time'], 'maturity_rating' => $input['maturity_rating'], 'fetch_by' => $input['fetch_by'], 'created_by' => Auth::user()->id, 'status' => $status, 'is_custom_label' => $input['is_custom_label'], 'label_id' => $input['label_id'], 'is_kids' => $input['is_kids'],
            'country' => $country]);

            if ($menus != null) {
                if (count($menus) > 0) {
                    foreach ($menus as $key => $value) {
                        MenuVideo::create(['menu_id' => $value, 'tv_series_id' => $created_tv->id]);
                    }
                }
            }

            return back()
                ->with('added', 'Tv Series has been added');
        }

        $genre_ids = $request->input('genre_id');
        if ($genre_ids) {
            $genre_ids = implode(',', $genre_ids);
            $input['genre_id'] = $genre_ids;
        } else {
            $input['genre_id'] = null;
        }

        if ($file = $request->file('thumbnail')) {
            $validator = Validator::make(
                [
                    'thumbnail' => $request->thumbnail,
                    'extension' => strtolower($request->thumbnail->getClientOriginalExtension()),
                ],
                [
                    'thumbnail' => 'required',
                    'extension' => 'required|in:jpg,jpeg,png,webp',
                ]
            );
            if ($validator->fails()) {
                return back()->with('deleted', __('Invalid file format Please use jpg,webp,jpeg and png image format !'))->withInput();
            } else {
                $thumbnail = 'thumb_' . time() . $file->getClientOriginalName();
                $img = Image::make($file->path());

                // $img->resize(300, 450, function ($constraint) {
                //     $constraint->aspectRatio();
                // });
                $img->save(public_path('/images/tvseries/thumbnails') . '/' . $thumbnail);

                $input['thumbnail'] = $thumbnail;
            }
        }

        if ($file = $request->file('poster')) {
            $validator = Validator::make(
                [
                    'poster' => $request->poster,
                    'extension' => strtolower($request->poster->getClientOriginalExtension()),
                ],
                [
                    'poster' => 'required',
                    'extension' => 'required|in:jpg,jpeg,png,webp',
                ]
            );
            if ($validator->fails()) {
                return back()->with('deleted', __('Invalid file format Please use jpg,webp,jpeg and png image format !'))->withInput();
            } else {
                $poster = 'poster_' . time() . $file->getClientOriginalName();
                $img = Image::make($file->path());

                // $img->resize(300, 169, function ($constraint) {
                //     $constraint->aspectRatio();
                // });
                $img->save(public_path('/images/tvseries/posters') . '/' . $poster);

                $input['poster'] = $poster;
            }
        }

        $tvseries = TvSeries::create($input);
        if ($menus != null) {
            if (count($menus) > 0) {
                if (isset($tvseries->menus) && count($tvseries->menus) > 0) {
                    foreach ($tvseries->menus as $key => $value) {
                        $value->delete();
                    }
                }
                foreach ($menus as $key => $value) {
                    MenuVideo::create(['menu_id' => $value, 'tv_series_id' => $tvseries->id]);
                }
            }
        } else {
            if (isset($tvseries->menus) && count($tvseries->menus) > 0) {
                foreach ($tvseries->menus as $key => $value) {
                    $value->delete();
                }
            }
        }
        return back()->with('success', __('Tv Series has been added'));
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        $menus = Menu::all();
        $tvseries = TvSeries::findOrFail($id);
        $genre_ls = Genre::all();
        $a_lans = AudioLanguage::all();
        $actor_ls = Actor::all();
        // get old genre list
        $old_genre = collect();
        $old_actor = collect();

        if ($tvseries->genre_id != null) {
            $old_list = explode(',', $tvseries->genre_id);
            for ($i = 0; $i < count($old_list); $i++) {
                $old = Genre::find($old_list[$i]);
                if (isset($old)) {
                    $old_genre->push($old);
                }
            }
        }

        $genre_ls = $genre_ls->diff($old_genre);
        $labels = Label::select('id', 'name')->get();
        $countries = Allcountry::get(); 

        return view('admin.tvseries.edit', compact('tvseries', 'actor_ls', 'genre_ls', 'a_lans', 'old_actor', 'old_genre', 'menus', 'labels','countries'));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        if (env('DEMO_LOCK') == 1) {
            return back()->with('deleted',__('This action is disabled in the demo !'));
        }

        ini_set('max_execution_time', 80);
        $TMDB_API_KEY = env('TMDB_API_KEY');
        $tvseries = TvSeries::findOrFail($id);

        $menus = null;

        if (isset($request->menu) && count($request->menu) > 0) {
            $menus = $request->menu;
        }

        $input = $request->all();

        if ($input['tmdb'] != 'Y') {
            $request->validate(['genre_id' => 'required']);
        }

        if (!isset($input['featured'])) {
            $input['featured'] = 0;
        }

        if (isset($request->is_custom_label)) {
            $request->validate([
                'label_id' => 'required',
            ],
                [
                    'label_id.required' => 'Forget to select label',
                ]);

            $input['label_id'] = $request->label_id;
            $input['is_custom_label'] = 1;
        } else {
            $input['is_custom_label'] = 0;
            $input['label_id'] = null;
        }

        if ($input['tmdb'] == 'Y') {

            $title = urlencode($input['title']);
            $search_data = @file_get_contents('https://api.themoviedb.org/3/search/tv?api_key=' . $TMDB_API_KEY . '&query=' . $title);

            if ($search_data) {
                $data = json_decode($search_data, true);
            }

            if (!isset($data) || $data['results'] == null) {
                return back()->with('deleted', __('Tv Series does not found by tmdb servers !'));
            }

            if (Session::has('changed_language')) {
                $fetch_tv = @file_get_contents('https://api.themoviedb.org/3/tv/' . $data['results'][0]['id'] . '?api_key=' . $TMDB_API_KEY . '&language=' . Session::get('changed_language'));
                $fetch_tv_for_genres = @file_get_contents('https://api.themoviedb.org/3/tv/' . $data['results'][0]['id'] . '?api_key=' . $TMDB_API_KEY);
            } else {
                $fetch_tv = @file_get_contents('https://api.themoviedb.org/3/tv/' . $data['results'][0]['id'] . '?api_key=' . $TMDB_API_KEY);
                $fetch_tv_for_genres = @file_get_contents('https://api.themoviedb.org/3/tv/' . $data['results'][0]['id'] . '?api_key=' . $TMDB_API_KEY);
            }

            if (!isset($fetch_tv) && !isset($fetch_tv_for_genres)) {
                return back()->with('deleted', __('Tv Series does not found by tmdb servers !'));
            }

            $tmdb_tv = json_decode($fetch_tv, true);
            // only for genres
            $tmdb_tv_for_genres = json_decode($fetch_tv_for_genres, true);

            if ($tmdb_tv != null) {
                $input['tmdb_id'] = $tmdb_tv['id'];
            } else {
                return back()->with('deleted', __('Tv Series does not found by tmdb servers !'));
            }

            $thumbnail = null;
            $poster = null;

            if ($file = $request->file('thumbnail')) {
                $validator = Validator::make(
                    [
                        'thumbnail' => $request->thumbnail,
                        'extension' => strtolower($request->thumbnail->getClientOriginalExtension()),
                    ],
                    [
                        'thumbnail' => 'required',
                        'extension' => 'required|in:jpg,jpeg,png,webp',
                    ]
                );
                if ($validator->fails()) {
                    return back()->with('deleted', __('Invalid file format Please use jpg,webp,jpeg and png image format !'))->withInput();
                } else {
                    $thumbnail = 'thumb_' . time() . $file->getClientOriginalName();
                    $content = @file_get_contents(public_path() . '/images/tvseries/thumbnails/' . $tvseries->thumbnail);
                    if ($content) {
                        unlink(public_path() . "/images/tvseries/thumbnails/" . $tvseries->thumbnail);
                    }

                    $img = Image::make($file->path());

                    // $img->resize(300, 450, function ($constraint) {
                    //     $constraint->aspectRatio();
                    // });
                    $img->save(public_path('/images/tvseries/thumbnails') . '/' . $thumbnail);

                }
            } else {
                $url = $tmdb_tv['poster_path'];
                $contents = @file_get_contents('https://image.tmdb.org/t/p/original/' . $url);
                $name = substr($url, strrpos($url, '/') + 1);
                $name = 'tmdb_' . $name;
                if ($contents) {
                    if ($tvseries->thumbnail != null) {
                        $content = @file_get_contents(public_path() . '/images/tvseries/thumbnails/' . $tvseries->thumbnail);
                        if ($content) {
                            unlink(public_path() . "/images/tvseries/thumbnails/" . $tvseries->thumbnail);
                        }
                    }
                    $tmdb_img = Storage::disk('imdb_poster_tv_series')->put($name, $contents);
                    if ($tmdb_img) {
                        $thumbnail = $name;
                    }
                }
            }

            if ($file = $request->file('poster')) {
                $validator = Validator::make(
                    [
                        'poster' => $request->poster,
                        'extension' => strtolower($request->poster->getClientOriginalExtension()),
                    ],
                    [
                        'poster' => 'required',
                        'extension' => 'required|in:jpg,jpeg,png,webp',
                    ]
                );
                if ($validator->fails()) {
                    return back()->with('deleted', __('Invalid file format Please use jpg,webp,jpeg and png image format !'))->withInput();
                } else {
                    $poster = 'poster_' . time() . $file->getClientOriginalName();
                    $content = @file_get_contents(public_path() . '/images/tvseries/posters/' . $tvseries->poster);
                    if ($content) {
                        unlink(public_path() . "/images/tvseries/posters/" . $tvseries->poster);
                    }

                    $img = Image::make($file->path());

                    // $img->resize(300, 169, function ($constraint) {
                    //     $constraint->aspectRatio();
                    // });
                    $img->save(public_path('/images/tvseries/posters') . '/' . $poster);
                }
            } else {
                // $url = $tmdb_tv['backdrop_path'];
                // $contents = @file_get_contents('https://image.tmdb.org/t/p/w300/' . $url);
                $url = $tmdb_tv['poster_path'];
                $contents = @file_get_contents('https://image.tmdb.org/t/p/original' . $url);
                $name = substr($url, strrpos($url, '/') + 1);
                $name = 'poster_' . $name;
                if ($contents) {
                    if ($tvseries->poster != null) {
                        $content = @file_get_contents(public_path() . '/images/tvseries/posters/' . $tvseries->poster);
                        if ($content) {
                            unlink(public_path() . "/images/tvseries/posters/" . $tvseries->poster);
                        }
                    }
                    $tmdb_img = Storage::disk('imdb_backdrop_tv_series')->put($name, $contents);
                    if ($tmdb_img) {
                        $poster = $name;
                    }
                }
            }

            // get Genres and create theme
            $tmdb_genres_id = collect();
            if (isset($tmdb_tv_for_genres) && $tmdb_tv_for_genres != null) {
                foreach ($tmdb_tv_for_genres['genres'] as $tmdb_genre) {

                    $tmdb_genre1 = $tmdb_genre['name'];
                    $check_list = Genre::where('name', 'LIKE', "%$tmdb_genre1%")->first();

                    if (!isset($check_list)) {
                        $created_genre = Genre::create(['name' => ['en' => $tmdb_genre['name']], 'position' => (Genre::count() + 1)]);

                        $tmdb_genres_id->push($created_genre->id);
                    } else {
                        $tmdb_genres_id->push($check_list->id);
                    }
                }
            }

            $tmdb_genres_id = $tmdb_genres_id->flatten();
            $tmdb_genres_id = substr($tmdb_genres_id, 1, -1);

            if (isset($input['is_kids'])) {
                $input['is_kids'] = 1;
            }else{
                $input['is_kids'] = 0;
            }
            $country = 0;
            if(isset($input['country'])){
                $country =  $input['country'];
            }

            $tvseries->update(['title' => $input['title'], 'tmdb_id' => $input['tmdb_id'], 'keyword' => $input['keyword'], 'description' => $input['description'], 'tmdb' => $input['tmdb'], 'featured' => $input['featured'], 'thumbnail' => $thumbnail, 'poster' => $poster, 'genre_id' => $tmdb_genres_id, 'detail' => $tmdb_tv['overview'], 'rating' => $tmdb_tv['vote_average'], 'maturity_rating' => $input['maturity_rating'], 'is_custom_label' => $input['is_custom_label'], 'label_id' => $input['label_id'], 'is_kids' => $input['is_kids'],
            'country' => $country]);

            if ($menus != null) {
                if (count($menus) > 0) {
                    if (isset($tvseries->menus) && count($tvseries->menus) > 0) {
                        foreach ($tvseries->menus as $key => $value) {
                            $value->delete();
                        }
                    }
                    foreach ($menus as $key => $value) {
                        MenuVideo::create(['menu_id' => $value, 'tv_series_id' => $tvseries->id]);
                    }
                }
            } else {
                if (isset($tvseries->menus) && count($tvseries->menus) > 0) {
                    foreach ($tvseries->menus as $key => $value) {
                        $value->delete();
                    }
                }
            }

            return redirect('admin/tvseries')
                ->with('success', __('Tv Series has been updated'));
        }

        $genre_ids = $request->input('genre_id');
        if ($genre_ids) {
            $genre_ids = implode(',', $genre_ids);
            $input['genre_id'] = $genre_ids;
        } else {
            $input['genre_id'] = null;
        }

        if ($file = $request->file('thumbnail')) {
            $validator = Validator::make(
                [
                    'thumbnail' => $request->thumbnail,
                    'extension' => strtolower($request->thumbnail->getClientOriginalExtension()),
                ],
                [
                    'thumbnail' => 'required',
                    'extension' => 'required|in:jpg,jpeg,png,webp',
                ]
            );
            if ($validator->fails()) {
                return back()->with('deleted', __('Invalid file format Please use jpg,webp,jpeg and png image format !'))->withInput();
            } else {
                $thumbnail = 'thumb_' . time() . $file->getClientOriginalName();
                $content = @file_get_contents(public_path() . '/images/tvseries/thumbnails/' . $tvseries->thumbnail);
                if ($content) {
                    unlink(public_path() . "/images/tvseries/thumbnails/" . $tvseries->thumbnail);
                }
                $img = Image::make($file->path());

                // $img->resize(300, 450, function ($constraint) {
                //     $constraint->aspectRatio();
                // });
                $img->save(public_path('/images/tvseries/thumbnails') . '/' . $thumbnail);

                $input['thumbnail'] = $thumbnail;
            }
        }

        if ($file = $request->file('poster')) {
            $validator = Validator::make(
                [
                    'poster' => $request->poster,
                    'extension' => strtolower($request->poster->getClientOriginalExtension()),
                ],
                [
                    'poster' => 'required',
                    'extension' => 'required|in:jpg,jpeg,png,webp',
                ]
            );
            if ($validator->fails()) {
                return back()->with('deleted', __('Invalid file format Please use jpg,webp,jpeg and png image format !'))->withInput();
            } else {
                $poster = 'poster_' . time() . $file->getClientOriginalName();
                $content = @file_get_contents(public_path() . '/images/tvseries/posters/' . $tvseries->poster);
                if ($content) {
                    unlink(public_path() . "/images/tvseries/posters/" . $tvseries->poster);
                }
                $img = Image::make($file->path());

                // $img->resize(300, 169, function ($constraint) {
                //     $constraint->aspectRatio();
                // });
                $img->save(public_path('/images/tvseries/posters') . '/' . $poster);

                $input['poster'] = $poster;
            }
        }

        $input['tmdb_id'] = null;

        $tvseries->update($input);

        if ($menus != null) {
            if (count($menus) > 0) {
                if (isset($tvseries->menus) && count($tvseries->menus) > 0) {
                    foreach ($tvseries->menus as $key => $value) {
                        $value->delete();
                    }
                }
                foreach ($menus as $key => $value) {
                    MenuVideo::create(['menu_id' => $value, 'tv_series_id' => $tvseries->id]);
                }
            }
        } else {
            if (isset($tvseries->menus) && count($tvseries->menus) > 0) {
                foreach ($tvseries->menus as $key => $value) {
                    $value->delete();
                }
            }
        }

        return back()
            ->with('success', __('Series has been updated'));
    }

    /**
     * Remove the specified resource from storage.
     *
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        if (env('DEMO_LOCK') == 1) {
            return back()->with('deleted', __('This action is disabled in the demo !'));
        }
        $tvseries = TvSeries::findOrFail($id);
        $watched = WatchHistory::where('tv_id', $id)->delete();
        $home_slider = HomeSlider::where('tv_series_id', $id)->delete();
        $menu_video = MenuVideo::where('tv_series_id', $id)->delete();
        $seasons = Season::where('tv_series_id', $id)->get();

        foreach ($seasons as $sea) {
            $episode = Episode::where('seasons_id', $sea->id)->get();
            foreach ($episode as $key => $value) {
                # code...
                $videolink = Videolink::where('episode_id', $value->id)->delete();
                $value->delete();

                foreach ($value->multilinks as $key => $link) {
                    $link->delete();
                }
            }
            $sea->delete();
        }

        if ($tvseries->thumbnail != null) {
            $content = @file_get_contents(public_path() . '/images/tvseries/thumbnails/' . $tvseries->thumbnail);
            if ($content) {
                unlink(public_path() . "/images/tvseries/thumbnails/" . $tvseries->thumbnail);
            }
        }
        if ($tvseries->poster != null) {
            $content = @file_get_contents(public_path() . '/images/tvseries/posters/' . $tvseries->poster);
            if ($content) {
                unlink(public_path() . "/images/tvseries/posters/" . $tvseries->poster);
            }
        }

        $tvseries->delete();
        return back()
            ->with('deleted', __('Tv Series has been deleted'));
    }

    /**
     * Season Controllers
     */
    public function show($id)
    {

        $tv_series = TvSeries::findOrFail($id);
        $actor_ls = Actor::pluck('name', 'id')->all();
        $a_lans = AudioLanguage::pluck('language', 'id')->all();
        $seasons = Season::where('tv_series_id', $id)->get();

        return view('admin.tvseries.seasons', compact('tv_series', 'actor_ls', 'a_lans', 'id', 'seasons'));

    }

    public function store_seasons(Request $request)
    {
        if (env('DEMO_LOCK') == 1) {
            return back()->with('deleted', __('This action is disabled in the demo !'));
        }
        ini_set('max_execution_time', 80);
        $request->validate(['season_no' => 'required']);
        $TMDB_API_KEY = env('TMDB_API_KEY');
        $input = $request->except('a_language', 'subtitle_list');
        $a_lans = $request->input('a_language');
        if ($a_lans) {
            $a_lans = implode(',', $a_lans);
            $input['a_language'] = $a_lans;
        } else {
            $input['a_language'] = null;
        }
        if ($input['tmdb'] == 'Y') {
            $tvseries_tmdb = TvSeries::findOrFail($input['tv_series_id']);
            if (!isset($input['trailer_url']) && $tvseries_tmdb != null && $TMDB_API_KEY != null) {
                $tmdb_trailers = @file_get_contents('https://api.themoviedb.org/3/tv/' . $tvseries_tmdb->tmdb_id . '/season/' . $input['season_no'] . '/videos?api_key=' . $TMDB_API_KEY);
                if ($tmdb_trailers) {
                    $tmdb_trailers = json_decode($tmdb_trailers, true);
                    if (isset($tmdb_trailers) && count($tmdb_trailers['results']) > 0) {
                        $input['trailer_url'] = 'https://youtu.be/' . $tmdb_trailers['results'][0]['key'];
                    }
                } else {
                    $input['trailer_url'] = null;
                }

            }

            if ($tvseries_tmdb->tmdb_id == null) {
                return back()
                    ->with('deleted', __("Please add your Tv Series with TMDB than you can add it's seasons via TMDB"));
            }
            if (Session::has('changed_language')) {
                $search_data = @file_get_contents('https://api.themoviedb.org/3/tv/' . $tvseries_tmdb->tmdb_id . '/season/' . $input['season_no'] . '?api_key=' . $TMDB_API_KEY . '&language=' . Session::get('changed_language'));
            } else {
                $search_data = @file_get_contents('https://api.themoviedb.org/3/tv/' . $tvseries_tmdb->tmdb_id . '/season/' . $input['season_no'] . '?api_key=' . $TMDB_API_KEY);
            }

            if (isset($search_data)) {
                $season_data = json_decode($search_data, true);
            }
            if (!isset($season_data) || $season_data == null) {
                return back()->with('deleted', __('Tv Series does not found by tmdb servers !'));
            }
            if ($season_data != null) {
                $input['tmdb_id'] = $season_data['id'];
            } else {
                return back()->with('deleted', __('Tv Series does not found by tmdb servers !'));
            }

            $thumbnail = null;
            $poster = null;
            if ($file = $request->file('thumbnail')) {
                $validator = Validator::make(
                    [
                        'thumbnail' => $request->thumbnail,
                        'extension' => strtolower($request->thumbnail->getClientOriginalExtension()),
                    ],
                    [
                        'thumbnail' => 'required',
                        'extension' => 'required|in:jpg,jpeg,png,webp',
                    ]
                );
                if ($validator->fails()) {
                    return back()->with('deleted', __('Invalid file format Please use jpg,webp,jpeg and png image format !'))->withInput();
                } else {
                    $thumbnail = 'thumb_' . time() . $file->getClientOriginalName();
                    $img = Image::make($file->path());

                    // $img->resize(300, 450, function ($constraint) {
                    //     $constraint->aspectRatio();
                    // });
                    $img->save(public_path('/images/tvseries/thumbnails') . '/' . $thumbnail);

                }
            } else {
                $url = $season_data['poster_path'];
                $contents = @file_get_contents('https://image.tmdb.org/t/p/original/' . $url);
                $name = substr($url, strrpos($url, '/') + 1);
                $name = 'tmdb_' . $name;
                if ($contents) {
                    $tmdb_img = Storage::disk('imdb_poster_tv_series')->put($name, $contents);
                    if ($tmdb_img) {
                        $thumbnail = $name;
                    }
                }
            }
            if ($file = $request->file('poster')) {
                $validator = Validator::make(
                    [
                        'poster' => $request->poster,
                        'extension' => strtolower($request->poster->getClientOriginalExtension()),
                    ],
                    [
                        'poster' => 'required',
                        'extension' => 'required|in:jpg,jpeg,png,webp',
                    ]
                );
                if ($validator->fails()) {
                    return back()->with('deleted', __('Invalid file format Please use jpg,webp,jpeg and png image format !'))->withInput();
                } else {
                    $poster = 'poster_' . time() . $file->getClientOriginalName();
                    $img = Image::make($file->path());

                    // $img->resize(300, 169, function ($constraint) {
                    //     $constraint->aspectRatio();
                    // });
                    $img->save(public_path('/images/tvseries/posters') . '/' . $poster);

                }
            }
            // get actors and create theme
            $tmdb_actors_id = collect();
            $get_tmdb_actors_data = @file_get_contents('https://api.themoviedb.org/3/tv/' . $tvseries_tmdb->tmdb_id . '/season/' . $input['season_no'] . '/credits?api_key=' . $TMDB_API_KEY);
            if ($get_tmdb_actors_data) {
                $get_tmdb_actors_data = json_decode($get_tmdb_actors_data, true);
                $get_tmdb_actors_data = (object) $get_tmdb_actors_data;
                if (count([$get_tmdb_actors_data]) > 0) {
                    foreach ($get_tmdb_actors_data->cast as $key => $item_act) {
                        if ($key <= 4) {
                            $actor_bio = null;
                            $actor_birth = null;
                            $actor_dob = null;
                            // getting actor id
                            $get_tmdb_actors_biography = @file_get_contents('https://api.themoviedb.org/3/person/' . $item_act['id'] . '?api_key=' . $TMDB_API_KEY);
                            if (isset($get_tmdb_actors_biography)) {
                                $get_tmdb_actors_biography = json_decode($get_tmdb_actors_biography, true);
                                $actor_bio = $get_tmdb_actors_biography['biography'];
                                $actor_birth = $get_tmdb_actors_biography['place_of_birth'];
                                $actor_dob = $get_tmdb_actors_biography['birthday'];
                            }
                            $check_list = Actor::where('name', $item_act['name'])->first();
                            if (!isset($check_list)) {
                                // Actor Image
                                $actor_image = null;
                                $act_image_url = $item_act['profile_path'];
                                $act_contents = @file_get_contents('https://image.tmdb.org/t/p/w300/' . $act_image_url);
                                $act_img_name = substr($act_image_url, strrpos($act_image_url, '/') + 1);
                                $act_img_name = 'tmdb_' . $act_img_name;
                                if ($act_contents) {
                                    $dir_created_img = Storage::disk('actor_image_path')->put($act_img_name, $act_contents);
                                    if ($dir_created_img) {
                                        $actor_image = $act_img_name;
                                    }
                                }
                                $tmdb_actor = Actor::updateOrCreate(['name' => $item_act['name'], 'image' => $actor_image, 'biography' => $actor_bio, 'place_of_birth' => $actor_birth, 'DOB' => $actor_dob, 'slug' => str_slug($item_act['name'], '-')]);
                                if (isset($tmdb_actor)) {
                                    $tmdb_actors_id->push($tmdb_actor->id);
                                }
                            } else {
                                $tmdb_actors_id->push($check_list->id);
                            }
                        }
                    }
                }
            }
            $tmdb_actors_id = $tmdb_actors_id->flatten();
            $tmdb_actors_id = substr($tmdb_actors_id, 1, -1);
            // Publish Year
            $pub_year = substr($season_data['air_date'], 0, 4);

            if (isset($request->is_protect)) {
                $input['is_protect'] = 1;
                $request->validate([
                    'password' => 'required',
                ]);
                $input['password'] = Crypt::encrypt($request->password);
            } else {
                $input['is_protect'] = 0;
                $input['password'] = NULL;
            }
            if ($request->season_slug != null) {
                $input['season_slug'] = $request->season_slug;
            } else {

                $slug = str_slug($request->tvseries . '-season-' . $request->season_no, '-');
                $input['season_slug'] = $slug;
            }

            Season::create(['tv_series_id' => $input['tv_series_id'], 'tmdb_id' => $input['tmdb_id'], 'season_no' => $input['season_no'], 'tmdb' => $input['tmdb'], 'a_language' => $input['a_language'], 'publish_year' => (isset($pub_year) ? $pub_year : null), 'thumbnail' => $thumbnail, 'poster' => $poster, 'actor_id' => $tmdb_actors_id, 'detail' => $season_data['overview'], 'is_protect' => $input['is_protect'], 'password' => $input['password'], 'season_slug' => $input['season_slug'], 'trailer_url' => $input['trailer_url']]);
            return back()->with('success', 'Season has been added');
        }

        $actor_id = $request->input('actor_id');
        if ($actor_id) {
            $actor_id = implode(',', $actor_id);
            $input['actor_id'] = $actor_id;
        } else {
            $input['actor_id'] = null;
        }
        if ($file = $request->file('thumbnail')) {
            $validator = Validator::make(
                [
                    'thumbnail' => $request->thumbnail,
                    'extension' => strtolower($request->thumbnail->getClientOriginalExtension()),
                ],
                [
                    'thumbnail' => 'required',
                    'extension' => 'required|in:jpg,jpeg,png,webp',
                ]
            );
            if ($validator->fails()) {
                return back()->with('deleted', __('Invalid file format Please use jpg,webp,jpeg and png image format !'))->withInput();
            } else {
                $thumbnail = 'thumb_' . time() . $file->getClientOriginalName();
                $img = Image::make($file->path());

                // $img->resize(300, 450, function ($constraint) {
                //     $constraint->aspectRatio();
                // });
                $img->save(public_path('/images/tvseries/thumbnails') . '/' . $thumbnail);

                $input['thumbnail'] = $thumbnail;
            }
        }
        if ($file = $request->file('poster')) {
            $validator = Validator::make(
                [
                    'poster' => $request->poster,
                    'extension' => strtolower($request->poster->getClientOriginalExtension()),
                ],
                [
                    'poster' => 'required',
                    'extension' => 'required|in:jpg,jpeg,png,webp',
                ]
            );
            if ($validator->fails()) {
                return back()->with('deleted', __('Invalid file format Please use jpg,webp,jpeg and png image format !'))->withInput();
            } else {
                $poster = 'poster_' . time() . $file->getClientOriginalName();
                $img = Image::make($file->path());

                // $img->resize(300, 169, function ($constraint) {
                //     $constraint->aspectRatio();
                // });
                $img->save(public_path('/images/tvseries/posters') . '/' . $poster);

                $input['poster'] = $poster;
            }
        }
        if (isset($request->is_protect)) {
            $input['is_protect'] = 1;
            $request->validate([
                'password' => 'required',
            ]);
            $input['password'] = Crypt::encrypt($request->password);
        } else {
            $input['is_protect'] = 0;
            $input['password'] = NULL;
        }
        if ($request->season_slug != null) {
            $input['season_slug'] = $request->season_slug;
        } else {

            $slug = str_slug($request->tvseries . '-season-' . $request->season_no, '-');

            $input['season_slug'] = $slug;
        }
        Season::create($input);
        return back()->with('success', 'Season has been added');
    }

    public function update_seasons(Request $request, $id)
    {
        if (env('DEMO_LOCK') == 1) {
            return back()->with('deleted', __('This action is disabled in the demo !'));
        }

        $season = Season::findOrFail($id);
        $input = $request->all();
        $a_lans = $request->input('a_language');
        $request->validate(['season_no' => 'required']);
        $TMDB_API_KEY = env('TMDB_API_KEY');
        if ($a_lans) {
            $a_lans = implode(',', $a_lans);
            $input['a_language'] = $a_lans;
        } else {
            $input['a_language'] = null;
        }
        $actor_ids = $request->input('actor_id');
        if ($actor_ids) {
            $actor_ids = implode(',', $actor_ids);
            $input['actor_id'] = $actor_ids;
        } else {
            $input['actor_id'] = null;
        }
        if ($input['tmdb'] == 'Y') {
            $tvseries_tmdb = TvSeries::findOrFail($input['tv_series_id']);

            if ($tvseries_tmdb->tmdb_id == null) {
                return back()
                    ->with('deleted', __("Please add your Tv Series with TMDB than you can add or update it's seasons via TMDB"));
            }
            if (Session::has('changed_language')) {
                $search_data = @file_get_contents('https://api.themoviedb.org/3/tv/' . $tvseries_tmdb->tmdb_id . '/season/' . $input['season_no'] . '?api_key=' . $TMDB_API_KEY . '&language=' . Session::get('changed_language'));
            } else {
                $search_data = @file_get_contents('https://api.themoviedb.org/3/tv/' . $tvseries_tmdb->tmdb_id . '/season/' . $input['season_no'] . '?api_key=' . $TMDB_API_KEY);
            }
            if (!isset($input['trailer_url']) && $tvseries_tmdb != null && $TMDB_API_KEY != null) {
                $tmdb_trailers = @file_get_contents('https://api.themoviedb.org/3/tv/' . $tvseries_tmdb->tmdb_id . '/season/' . $input['season_no'] . '/videos?api_key=' . $TMDB_API_KEY);
                if ($tmdb_trailers) {
                    $tmdb_trailers = json_decode($tmdb_trailers, true);
                    if (isset($tmdb_trailers) && count($tmdb_trailers['results']) > 0) {
                        $input['trailer_url'] = 'https://youtu.be/' . $tmdb_trailers['results'][0]['key'];
                    }

                } else {
                    $input['trailer_url'] = null;
                }

            }

            if (isset($search_data)) {
                $season_data = json_decode($search_data, true);
            }
            if (isset($season_data) && $season_data == null) {
                return back()->with('deleted', __('Tv Series does not found by tmdb servers !'));
            }
            if ($season_data != null) {
                $input['tmdb_id'] = $season_data['id'];
            } else {
                return back()->with('deleted', __('Tv Series does not found by tmdb servers !'));
            }

            $thumbnail = null;
            $poster = null;
            if ($file = $request->file('thumbnail')) {
                $validator = Validator::make(
                    [
                        'thumbnail' => $request->thumbnail,
                        'extension' => strtolower($request->thumbnail->getClientOriginalExtension()),
                    ],
                    [
                        'thumbnail' => 'required',
                        'extension' => 'required|in:jpg,jpeg,png,webp',
                    ]
                );
                if ($validator->fails()) {
                    return back()->with('deleted', __('Invalid file format Please use jpg,webp,jpeg and png image format !'))->withInput();
                } else {

                    $thumbnail = 'thumb_' . time() . $file->getClientOriginalName();
                    if ($season->thumbnail != null) {
                        $content = @file_get_contents(public_path() . '/images/tvseries/thumbnails/' . $season->thumbnail);
                        if ($content) {
                            unlink(public_path() . "/images/tvseries/thumbnails/" . $season->thumbnail);
                        }
                    }
                    $img = Image::make($file->path());

                    // $img->resize(300, 450, function ($constraint) {
                    //     $constraint->aspectRatio();
                    // });
                    $img->save(public_path('/images/tvseries/thumbnails') . '/' . $thumbnail);

                }
            } else {
                $url = $season_data['poster_path'];
                $contents = @file_get_contents('https://image.tmdb.org/t/p/original/' . $url);
                $name = substr($url, strrpos($url, '/') + 1);
                $name = 'tmdb_' . $name;
                if ($contents) {
                    if ($season->thumbnail != null) {
                        $content = @file_get_contents(public_path() . '/images/tvseries/thumbnails/' . $season->thumbnail);
                        if ($content) {
                            unlink(public_path() . "/images/tvseries/thumbnails/" . $season->thumbnail);
                        }
                    }
                    $tmdb_img = Storage::disk('imdb_poster_tv_series')->put($name, $contents);
                    if ($tmdb_img) {
                        $thumbnail = $name;
                    }
                }
            }
            if ($file = $request->file('poster')) {
                $validator = Validator::make(
                    [
                        'poster' => $request->poster,
                        'extension' => strtolower($request->poster->getClientOriginalExtension()),
                    ],
                    [
                        'poster' => 'required',
                        'extension' => 'required|in:jpg,jpeg,png,webp',
                    ]
                );
                if ($validator->fails()) {
                    return back()->with('deleted', __('Invalid file format Please use jpg,webp,jpeg and png image format !'))->withInput();
                } else {
                    $poster = 'poster_' . time() . $file->getClientOriginalName();
                    $img = Image::make($file->path());

                    // $img->resize(300, 169, function ($constraint) {
                    //     $constraint->aspectRatio();
                    // });
                    $img->save(public_path('/images/tvseries/posters') . '/' . $poster);

                }
            } else {
                // $url_2 = $season_data['backdrop_path'];
                // $contents_2 = @file_get_contents('https://image.tmdb.org/t/p/w300/' . $url_2);
                $url_2 = $season_data['poster_path'];
                $contents_2 = @file_get_contents('https://image.tmdb.org/t/p/original' . $url_2);
                $name_2 = substr($url_2, strrpos($url_2, '/') + 1);
                $name_2 = 'poster_' . $name_2;
                if ($contents_2) {
                    $tmdb_img_2 = Storage::disk('imdb_backdrop_movie')->put($name_2, $contents_2);
                    if ($tmdb_img_2) {
                        $poster = $name_2;
                    }
                }
            }
            // get actors and create theme
            $tmdb_actors_id = collect();
            $get_tmdb_actors_data = @file_get_contents('https://api.themoviedb.org/3/tv/' . $tvseries_tmdb->tmdb_id . '/season/' . $input['season_no'] . '/credits?api_key=' . $TMDB_API_KEY);
            if ($get_tmdb_actors_data) {
                $get_tmdb_actors_data = json_decode($get_tmdb_actors_data, true);
                $get_tmdb_actors_data = (object) $get_tmdb_actors_data;
                if (count([$get_tmdb_actors_data]) > 0) {
                    foreach ($get_tmdb_actors_data->cast as $key => $item_act) {
                        if ($key <= 4) {
                            $actor_bio = null;
                            $actor_birth = null;
                            $actor_dob = null;
                            // getting actor id
                            $get_tmdb_actors_biography = @file_get_contents('https://api.themoviedb.org/3/person/' . $item_act['id'] . '?api_key=' . $TMDB_API_KEY);
                            if (isset($get_tmdb_actors_biography)) {
                                $get_tmdb_actors_biography = json_decode($get_tmdb_actors_biography, true);
                                $actor_bio = $get_tmdb_actors_biography['biography'];
                                $actor_birth = $get_tmdb_actors_biography['place_of_birth'];
                                $actor_dob = $get_tmdb_actors_biography['birthday'];
                            }
                            $check_list = Actor::where('name', $item_act['name'])->first();
                            if (!isset($check_list)) {
                                // Actor Image
                                $actor_image = null;
                                $act_image_url = $item_act['profile_path'];
                                $act_contents = @file_get_contents('https://image.tmdb.org/t/p/w300/' . $act_image_url);
                                $act_img_name = substr($act_image_url, strrpos($act_image_url, '/') + 1);
                                $act_img_name = 'tmdb_' . $act_img_name;
                                if ($act_contents) {
                                    $dir_created_img = Storage::disk('actor_image_path')->put($act_img_name, $act_contents);
                                    if ($dir_created_img) {
                                        $actor_image = $act_img_name;
                                    }
                                }
                                $tmdb_actor = Actor::updateOrCreate(['name' => $item_act['name'], 'image' => $actor_image, 'biography' => $actor_bio, 'place_of_birth' => $actor_birth, 'DOB' => $actor_dob, 'slug' => str_slug($item_act['name'], '-')]);
                                if (isset($tmdb_actor)) {
                                    $tmdb_actors_id->push($tmdb_actor->id);
                                }
                            } else {
                                $tmdb_actors_id->push($check_list->id);
                            }
                        }
                    }
                }
            }
            $tmdb_actors_id = $tmdb_actors_id->flatten();
            $tmdb_actors_id = substr($tmdb_actors_id, 1, -1);
            // Publish Year
            $pub_year = substr($season_data['air_date'], 0, 4);

            if ($request['is_protect'] == 'on') {
                $request->validate([
                    'password' => 'required',
                ]);
                $input['is_protect'] = 1;
                $input['password'] = Crypt::encrypt($request->password);
            } else {
                $input['is_protect'] = 0;
                $input['password'] = NULL;
            }

            if ($request->season_slug != null) {
                $input['season_slug'] = $request->season_slug;
            } else {
                $slug = str_slug($request->tvseries . '-season-' . $request->season_no, '-');
                $input['season_slug'] = $slug;
            }

            $season->update(['tv_series_id' => $input['tv_series_id'], 'tmdb_id' => $input['tmdb_id'], 'season_no' => $input['season_no'], 'tmdb' => $input['tmdb'], 'a_language' => $input['a_language'], 'publish_year' => (isset($pub_year) ? $pub_year : null), 'thumbnail' => $thumbnail, 'poster' => $poster, 'actor_id' => $tmdb_actors_id, 'detail' => $season_data['overview'], 'is_protect' => $input['is_protect'], 'password' => $input['password'], 'season_slug' => $input['season_slug'], 'trailer_url' => $input['trailer_url']]);
            return back()->with('added', 'Season has been updated');
        }
        if ($file = $request->file('thumbnail')) {
            $validator = Validator::make(
                [
                    'thumbnail' => $request->thumbnail,
                    'extension' => strtolower($request->thumbnail->getClientOriginalExtension()),
                ],
                [
                    'thumbnail' => 'required',
                    'extension' => 'required|in:jpg,jpeg,png,webp',
                ]
            );
            if ($validator->fails()) {
                return back()->with('deleted', __('Invalid file format Please use jpg,webp,jpeg and png image format !'))->withInput();
            } else {
                $thumbnail = 'thumb_' . time() . $file->getClientOriginalName();
                if ($season->thumbnail != null) {
                    $content = @file_get_contents(public_path() . '/images/tvseries/thumbnails/' . $season->thumbnail);
                    if ($content) {
                        unlink(public_path() . "/images/tvseries/thumbnails/" . $season->thumbnail);
                    }
                }

                $img = Image::make($file->path());

                // $img->resize(300, 450, function ($constraint) {
                //     $constraint->aspectRatio();
                // });
                $img->save(public_path('/images/tvseries/thumbnails') . '/' . $thumbnail);
                $input['thumbnail'] = $thumbnail;
            }
        }
        if ($file = $request->file('poster')) {
            $validator = Validator::make(
                [
                    'poster' => $request->poster,
                    'extension' => strtolower($request->poster->getClientOriginalExtension()),
                ],
                [
                    'poster' => 'required',
                    'extension' => 'required|in:jpg,jpeg,png,webp',
                ]
            );
            if ($validator->fails()) {
                return back()->with('deleted', __('Invalid file format Please use jpg,webp,jpeg and png image format !'))->withInput();
            } else {
                $poster = 'poster_' . time() . $file->getClientOriginalName();
                if ($season->poster != null) {
                    $content = @file_get_contents(public_path() . '/images/tvseries/posters/' . $season->poster);
                    if ($content) {
                        unlink(public_path() . "/images/tvseries/posters/" . $season->poster);
                    }
                }
                $img = Image::make($file->path());

                // $img->resize(300, 169, function ($constraint) {
                //     $constraint->aspectRatio();
                // });
                $img->save(public_path('/images/tvseries/posters') . '/' . $poster);

                $input['poster'] = $poster;
            }
        }
        $input['tmdb_id'] = null;
        if ($request['is_protect'] == 'on') {
            $request->validate([
                'password' => 'required',
            ]);
            $input['is_protect'] = 1;
            $input['password'] = Crypt::encrypt($request->password);
        } else {
            $input['is_protect'] = 0;
            $input['password'] = NULL;
        }
        if ($request->season_slug != null) {
            $input['season_slug'] = $request->season_slug;
        } else {
            $slug = str_slug($request->tvseries . '-season-' . $request->season_no, '-');
            $input['season_slug'] = $slug;
        }
        $season->update($input);
        return back()->with('success', __('Season has been updated'));
    }

    public function destroy_seasons($id)
    {
        if (env('DEMO_LOCK') == 1) {
            return back()->with('deleted', __('This action is disabled in the demo !'));
        }
        $season = Season::findOrFail($id);
        $season->wishlist()->delete();

        $episode = Episode::where('seasons_id', $id)->get();

        foreach ($episode as $key => $value) {
            # code...
            $videolink = Videolink::where('episode_id', $value->id)->delete();
            $value->delete();

            foreach ($value->multilinks as $key => $link) {
                $link->delete();
            }
        }

        if ($season->thumbnail != null) {
            $content = @file_get_contents(public_path() . '/images/tvseries/thumbnails/' . $season->thumbnail);
            if ($content) {
                unlink(public_path() . "/images/tvseries/thumbnails/" . $season->thumbnail);
            }
        }
        if ($season->poster != null) {
            $content = @file_get_contents(public_path() . '/images/tvseries/posters/' . $season->poster);
            if ($content) {
                unlink(public_path() . "/images/tvseries/posters/" . $season->poster);
            }
        }
        $season->delete();
        return back()
            ->with('deleted', __('Season has been deleted'));
    }

    /**
     * Episode Controllers
     */
    public function show_episodes($id)
    {
        $episodes = Episode::where('seasons_id', $id)->get();
        $a_lans = AudioLanguage::pluck('language', 'id')->all();
        $season = Season::findOrFail($id);
        $video_link = Videolink::where('episode_id', $id)->first();
        return view('admin.tvseries.episodes', compact('episodes', 'id', 'season', 'a_lans', 'video_link'));
    }

    public function store_episodes(Request $request)
    {
        if (env('DEMO_LOCK') == 1) {
            return back()->with('deleted', __('This action is disabled in the demo !'));
        }
        if ($request->tmdb == 'N') {
            $request->validate(['title' => 'required']);
        } else if ($request->tmdb == 'Y') {
            $request->validate(['episode_no' => 'required']);
        }

        $TMDB_API_KEY = env('TMDB_API_KEY');

        $input = $request->all();

        $a_lans = $request->input('a_language');
        if ($a_lans) {
            $a_lans = implode(',', $a_lans);
            $input['a_language'] = $a_lans;
        } else {
            $input['a_language'] = null;
        }

        if (isset($request->subtitle)) {
            $subtitle = 1;
        } else {
            $subtitle = 0;
        }

        if ($input['tmdb'] == 'Y') {

            $tvseries_tmdb = TvSeries::findOrFail($input['tv_series_id']);
            $season_tmdb = Season::findOrFail($input['seasons_id']);

            if ($season_tmdb->tmdb_id == null && $tvseries_tmdb->tmdb_id == null) {
                return back()
                    ->with('deleted', __("Please add your Tv Series with TMDB than you can add or update it's seasons via TMDB"));
            }

            if (Session::has('changed_language')) {
                $search_data = @file_get_contents('https://api.themoviedb.org/3/tv/' . $tvseries_tmdb->tmdb_id . '/season/' . $season_tmdb->season_no . '/episode/' . $input['episode_no'] . '?api_key=' . $TMDB_API_KEY . '&language=' . Session::get('changed_language'));
            } else {
                $search_data = @file_get_contents('https://api.themoviedb.org/3/tv/' . $tvseries_tmdb->tmdb_id . '/season/' . $season_tmdb->season_no . '/episode/' . $input['episode_no'] . '?api_key=' . $TMDB_API_KEY);
            }

            if (isset($search_data)) {
                $episode_data = json_decode($search_data, true);
            }

            if (!isset($episode_data) || $episode_data == null) {
                return back()->with('deleted', __('The Episode does not found by tmdb servers !'));
            }

            if ($episode_data != null) {
                $input['tmdb_id'] = $episode_data['id'];
            } else {
                return back()->with('deleted', __('The Episode does not found by tmdb servers !'));
            }

            $thumbnail = null;
            if ($file = $request->file('thumbnail')) {
                $validator = Validator::make(
                    [
                        'thumbnail' => $request->thumbnail,
                        'extension' => strtolower($request->thumbnail->getClientOriginalExtension()),
                    ],
                    [
                        'thumbnail' => 'required',
                        'extension' => 'required|in:jpg,jpeg,png,webp',
                    ]
                );
                if ($validator->fails()) {
                    return back()->with('deleted',__('Invalid file format Please use jpg,webp,jpeg and png image format !'))->withInput();
                } else {
                    $thumbnail = 'thumb_' . time() . $file->getClientOriginalName();
                    $img = Image::make($file->path());

                    // $img->resize(300, 450, function ($constraint) {
                    //     $constraint->aspectRatio();
                    // });
                    $img->save(public_path('/images/tvseries/episodes') . '/' . $thumbnail);

                }

            } else {

                $url = $episode_data['still_path'];
                $contents = @file_get_contents('https://image.tmdb.org/t/p/original/' . $url);
                $name = substr($url, strrpos($url, '/') + 1);
                $name = 'tmdb_' . $name;
                if ($contents) {
                    $tmdb_img = Storage::disk('imdb_poster_episode')->put($name, $contents);
                    if ($tmdb_img) {
                        $thumbnail = $name;
                    }
                }
            }

            $created_episode = Episode::create(['seasons_id' => $input['seasons_id'], 'title' => $episode_data['name'], 'thumbnail' => $thumbnail, 'episode_no' => $input['episode_no'], 'tmdb' => $input['tmdb'], 'tmdb_id' => $input['tmdb_id'], 'subtitle' => $subtitle, 'a_language' => $input['a_language'], 'duration' => $input['duration'], 'detail' => $episode_data['overview'], 'released' => $episode_data['air_date']]);

            if ($request->selecturl == "iframeurl") {

                VideoLink::create(['iframeurl' => $input['iframeurl'], 'type' => 'iframeurl', 'episode_id' => $created_episode->id, 'ready_url' => null,

                ]);

            } else {
                if ($request->selecturl == "youtubeurl" || $request->selecturl == "vimeourl" || $request->selecturl == "customurl" || $request->selecturl == "vimeoapi" || $request->selecturl == "youtubeapi") {

                    VideoLink::create(['episode_id' => $created_episode->id, 'type' => 'readyurl', 'ready_url' => $input['ready_url'],

                    ]);

                } elseif ($request->selecturl == 'multiqcustom') {

                    if ($request->upload_video_360 != null) {
                        if (strstr($request->upload_video_360, '.mp4') || strstr($request->upload_video_360, '.m3u8')) {

                            $url_360 = url('tvshow_upload/url_360/' . $request->upload_video_360);

                        } else {
                            return back()->withInput()->with('deleted', __('Invalid file format Please use mp4 and m3u8 file format !'));
                        }

                    } else {
                        $url_360 = $request->url_360;
                    }

                    if ($request->upload_video_480 != null) {
                        if (strstr($request->upload_video_480, '.mp4') || strstr($request->upload_video_480, '.m3u8')) {

                            $url_480 = url('tvshow_upload/url_480/' . $request->upload_video_480);

                        } else {
                            return back()->withInput()->with('deleted', __('Invalid file format Please use mp4 and m3u8 file format !'));
                        }
                    } else {
                        $url_480 = $request->url_480;
                    }

                    if ($request->upload_video_720 != null) {
                        if (strstr($request->upload_video_720, '.mp4') || strstr($request->upload_video_720, '.m3u8')) {

                            $url_720 = url('tvshow_upload/url_720/' . $request->upload_video_720);

                        } else {
                            return back()->withInput()->with('deleted', __('Invalid file format Please use mp4 and m3u8 file format !'));
                        }
                    } else {
                        $url_720 = $request->url_720;
                    }

                    if ($request->upload_video_1080 != null) {
                        if (strstr($request->upload_video_1080, '.mp4') || strstr($request->upload_video_1080, '.m3u8')) {

                            $url_1080 = url('tvshow_upload/url_1080/' . $request->upload_video_1080);

                        } else {
                            return back()->withInput()->with('deleted', __('Invalid file format Please use mp4 and m3u8 file format !'));
                        }
                    } else {
                        $url_1080 = $request->url_1080;
                    }

                    VideoLink::create(['episode_id' => $created_episode->id, 'type' => 'multiquality', 'url_360' => $url_360, 'url_480' => $url_480, 'url_720' => $url_720, 'url_1080' => $url_1080]);

                }

            }

            //TMDB
            if (isset($request->subtitle)) {

                if ($request->has('sub_t')) {
                    foreach ($request->file('sub_t') as $key => $image) {

                        $name = 'episode_subtitle_' . time() . $image->getClientOriginalName();
                        $image->move(public_path() . '/subtitles/', $name);

                        $form = new Subtitles();
                        $form->sub_lang = $request->sub_lang[$key];
                        $form->sub_t = $name;
                        $form->ep_id = $created_episode->id;
                        $form->save();
                    }
                }
            }

            return back()->with('success', __('Episode has been added'));

        }

        $input['tmdb_id'] = null;
        if ($file = $request->file('thumbnail')) {
            $validator = Validator::make(
                [
                    'thumbnail' => $request->thumbnail,
                    'extension' => strtolower($request->thumbnail->getClientOriginalExtension()),
                ],
                [
                    'thumbnail' => 'required',
                    'extension' => 'required|in:jpg,jpeg,png,webp',
                ]
            );
            if ($validator->fails()) {
                return back()->with('deleted', __('Invalid file format Please use jpg,webp,jpeg,webp and png image format !'))->withInput();
            } else {
                $image = time() . $file->getClientOriginalName();
                $img = Image::make($file->path());

                // $img->resize(300, 450, function ($constraint) {
                //     $constraint->aspectRatio();
                // });
                $img->save(public_path('/images/tvseries/episodes') . '/' . $image);

                $input['thumbnail'] = $image;
            }

        }

        

        $created_episode = Episode::create($input);

        if (isset($request->subtitle)) {
            $input['subtitle'] = 1;
            if ($request->has('sub_t')) {
                foreach ($request->file('sub_t') as $key => $image) {

                    $name = 'episode_subtitle_' . time() . $image->getClientOriginalName();
                    $image->move(public_path() . '/subtitles/', $name);

                    $form = new Subtitles();
                    $form->sub_lang = $request->sub_lang[$key];
                    $form->sub_t = $name;
                    $form->ep_id = $created_episode->id;
                    $form->save();
                }
            }
        }

        if ($request->selecturl == "iframeurl") {

            VideoLink::create(['iframeurl' => $input['iframeurl'], 'type' => 'iframeurl', 'episode_id' => $created_episode->id, 'ready_url' => null,

            ]);

        } else {
            if ($request->selecturl == "youtubeurl" || $request->selecturl == "vimeourl" || $request->selecturl == "customurl" || $request->selecturl == "vimeoapi" || $request->selecturl == "youtubeapi") {

                VideoLink::create(['episode_id' => $created_episode->id, 'type' => 'readyurl', 'ready_url' => $input['ready_url'],

                ]);

            } elseif ($request->selecturl == 'multiqcustom') {

                if ($request->upload_video_360 != null) {
                    if (strstr($request->upload_video_360, '.mp4') || strstr($request->upload_video_360, '.m3u8')) {

                        $url_360 = url('tvshow_upload/url_360/' . $request->upload_video_360);

                    } else {
                        return back()->withInput()->with('deleted',__('Invalid file format Please use mp4 and m3u8 file format !'));
                    }

                } else {
                    $url_360 = $request->url_360;
                }

                if ($request->upload_video_480 != null) {
                    if (strstr($request->upload_video_480, '.mp4') || strstr($request->upload_video_480, '.m3u8')) {

                        $url_480 = url('tvshow_upload/url_480/' . $request->upload_video_480);

                    } else {
                        return back()->withInput()->with('deleted', __('Invalid file format Please use mp4 and m3u8 file format !'));
                    }
                } else {
                    $url_480 = $request->url_480;
                }

                if ($request->upload_video_720 != null) {
                    if (strstr($request->upload_video_720, '.mp4') || strstr($request->upload_video_720, '.m3u8')) {

                        $url_720 = url('tvshow_upload/url_720/' . $request->upload_video_720);

                    } else {
                        return back()->withInput()->with('deleted', __('Invalid file format Please use mp4 and m3u8 file format !'));
                    }
                } else {
                    $url_720 = $request->url_720;
                }

                if ($request->upload_video_1080 != null) {
                    if (strstr($request->upload_video_1080, '.mp4') || strstr($request->upload_video_1080, '.m3u8')) {

                        $url_1080 = url('tvshow_upload/url_1080/' . $request->upload_video_1080);

                    } else {
                        return back()->withInput()->with('deleted',__('Invalid file format Please use mp4 and m3u8 file format !'));
                    }
                } else {
                    $url_1080 = $request->url_1080;
                }

                VideoLink::create(['episode_id' => $created_episode->id, 'type' => 'multiquality', 'url_360' => $url_360, 'url_480' => $url_480, 'url_720' => $url_720, 'url_1080' => $url_1080]);

            }
        }

        return back()->with('success', __('Episode has been added'));
    }
    public function edit_episodes($id, $ep_id)
    {
        $season = Season::findOrFail($id);
        $a_lans = AudioLanguage::pluck('language', 'id')->all();

        $video_link = Videolink::where('episode_id', $ep_id)->first();
        $episode = Episode::where('seasons_id', $id)->where('id', $ep_id)->first();
        $all_languages = AudioLanguage::all();
        // get old subtitle language values
        $old_subtitles = collect();
        $a_subs = collect();
        if ($episode->subtitle == 1) {
            if ($episode->subtitle_list != null) {
                $old_list = explode(',', $episode->subtitle_list);
                for ($i = 0; $i < count($old_list); $i++) {
                    $old2 = AudioLanguage::find(trim($old_list[$i]));
                    if (isset($old2)) {
                        $old_subtitles->push($old2);
                    }
                }
            }
        }
        $a_subs = $a_subs->filter(function ($value, $key) {
            return $value != null;
        });
        $a_subs = $all_languages->diff($old_subtitles);
        return view('admin.tvseries.episodeedit', compact('episode', 'season', 'a_lans', 'video_link', 'old_subtitles'));
    }

    public function update_episodes(Request $request, $id)
    {
        if (env('DEMO_LOCK') == 1) {
            return back()->with('deleted', __('This action is disabled in the demo !'));
        }

        $main_episode = Episode::findOrFail($id);

        if ($request->tmdb == 'N') {
            $request->validate(['title' => 'required']);
        } else if ($request->tmdb == 'Y') {
            $request->validate(['episode_no' => 'required']);
        }

        $TMDB_API_KEY = env('TMDB_API_KEY');

        $input = $request->all();

        $a_lans = $request->input('a_language');
        if ($a_lans) {
            $a_lans = implode(',', $a_lans);
            $input['a_language'] = $a_lans;
        } else {
            $input['a_language'] = null;
        }

        $subtitles = $request->input('subtitle_list');

        if (isset($request->subtitle)) {
            $subtitle = 1;
        } else {
            $subtitle = 0;
        }

        if ($input['tmdb'] == 'Y') {

            $tvseries_tmdb = TvSeries::findOrFail($input['tv_series_id']);
            $season_tmdb = Season::findOrFail($input['seasons_id']);

            if ($season_tmdb->tmdb_id == null && $tvseries_tmdb->tmdb_id == null) {
                return back()
                    ->with('deleted', __("Please add your Tv Series with TMDB than you can add or update it's seasons via TMDB"));
            }

            if (Session::has('changed_language')) {
                $search_data = @file_get_contents('https://api.themoviedb.org/3/tv/' . $tvseries_tmdb->tmdb_id . '/season/' . $season_tmdb->season_no . '/episode/' . $input['episode_no'] . '?api_key=' . $TMDB_API_KEY . '&language=' . Session::get('changed_language'));
            } else {
                $search_data = @file_get_contents('https://api.themoviedb.org/3/tv/' . $tvseries_tmdb->tmdb_id . '/season/' . $season_tmdb->season_no . '/episode/' . $input['episode_no'] . '?api_key=' . $TMDB_API_KEY);
            }

            if (isset($search_data)) {
                $episode_data = json_decode($search_data, true);
            }

            if (!isset($episode_data) || $episode_data == null) {
                return back()->with('deleted', __('The Episode does not found by tmdb servers !'));
            }

            if ($episode_data != null) {
                $input['tmdb_id'] = $episode_data['id'];
            } else {
                return back()->with('deleted', __('The Episode does not found by tmdb servers !'));
            }

            if ($sub_file = $request->file('subtitle_files')) {
                $name = 'sub' . time() . $sub_file->getClientOriginalName();
                if ($main_episode->subtitle_files != null) {
                    $content = @file_get_contents(public_path() . '/subtitles/' . $main_episode->subtitle_files);
                    if ($content) {
                        unlink(public_path() . "/subtitles/" . $main_episode->subtitle_files);
                    }
                }
                $sub_file->move('subtitles', $name);
                $input['subtitle_files'] = $name;
            } else {
                $input['subtitle_files'] = $main_episode->subtitle_files;
            }
            $thumbnail = null;
            if ($file = $request->file('thumbnail')) {
                $validator = Validator::make(
                    [
                        'thumbnail' => $request->thumbnail,
                        'extension' => strtolower($request->thumbnail->getClientOriginalExtension()),
                    ],
                    [
                        'thumbnail' => 'required',
                        'extension' => 'required|in:jpg,jpeg,png,webp',
                    ]
                );
                if ($validator->fails()) {
                    return back()->with('deleted', __('Invalid file format Please use jpg,webp,jpeg,webp and png image format !'))->withInput();
                } else {
                    $thumbnail = 'thumb_' . time() . $file->getClientOriginalName();
                    $img = Image::make($file->path());

                    // $img->resize(300, 450, function ($constraint) {
                    //     $constraint->aspectRatio();
                    // });
                    $img->save(public_path('/images/tvseries/episodes') . '/' . $thumbnail);

                }

            } else {

                $url = $episode_data['still_path'];
                $contents = @file_get_contents('https://image.tmdb.org/t/p/original/' . $url);
                $name = substr($url, strrpos($url, '/') + 1);
                $name = 'tmdb_' . $name;
                if ($contents) {
                    $tmdb_img = Storage::disk('imdb_poster_episode')->put($name, $contents);
                    if ($tmdb_img) {
                        $thumbnail = $name;
                    }
                }
            }

            $main_episode->update(['seasons_id' => $input['seasons_id'], 'title' => $episode_data['name'], 'thumbnail' => $thumbnail, 'episode_no' => $input['episode_no'], 'tmdb' => $input['tmdb'], 'tmdb_id' => $input['tmdb_id'], 'subtitle' => $subtitle, 'a_language' => $input['a_language'], 'duration' => $input['duration'], 'detail' => $episode_data['overview'], 'released' => $episode_data['air_date']]);

            if (isset($request->subtitle)) {

                if ($request->has('sub_t')) {
                    foreach ($request->file('sub_t') as $key => $image) {

                        $name = 'episode_subtitle_' . time() . $image->getClientOriginalName();
                        $image->move(public_path() . '/subtitles/', $name);

                        $form = new Subtitles();
                        $form->sub_lang = $request->sub_lang[$key];
                        $form->sub_t = $name;
                        $form->ep_id = $main_episode->id;
                        $form->save();
                    }
                }

            }

            if (isset($main_episode->video_link)) {

                if ($request->selecturl == 'iframeurl') {

                    $main_episode->video_link->update(['iframeurl' => $input['iframeurl'], 'type' => 'iframeurl', 'ready_url' => null, 'url_360' => null, 'url_480' => null, 'url_720' => null, 'url_1080' => null]);

                } else {
                    if ($request->selecturl == "youtubeurl" || $request->selecturl == "vimeourl" || $request->selecturl == "customurl" || $request->selecturl == "vimeoapi" || $request->selecturl == "youtubeapi") {

                        $main_episode->video_link->update(['iframeurl' => null, 'type' => 'readyurl', 'ready_url' => $input['ready_url'], 'url_360' => null, 'url_480' => null, 'url_720' => null, 'url_1080' => null]);

                    } elseif ($request->selecturl == 'multiqcustom') {
                        $url = url('/tvshow_upload');

                        if ($request->upload_video_360 != null) {
                            if ($main_episode->video_link->url_360 != '') {

                                $file_360 = trim($main_episode->video_link->url_360, $url);

                                if (file_exists('tvshow_upload/' . $file_360)) {
                                    unlink('tvshow_upload/url_360/' . $file_360);
                                }

                            }
                            if (strstr($request->upload_video_360, '.mp4') || strstr($request->upload_video_360, '.m3u8')) {

                                $url_360 = url('tvshow_upload/url_360/' . $request->upload_video_360);

                            } else {
                                return back()->withInput()->with('deleted', __('Invalid file format Please use mp4 and m3u8 file format !'));
                            }

                        } else {

                            if ($main_episode->video_link->url_360 != $request->url_360) {

                                if ($main_episode->video_link->url_360 != '') {
                                    $file_360 = trim($main_episode->video_link->url_360, $url);

                                    if (file_exists('tvshow_upload/url_360/' . $file_360)) {
                                        $file_360 = trim($main_episode
                                                ->video_link->url_360, $url);
                                            unlink('tvshow_upload/url_360/' . $file_360);
                                    }

                                }

                                $url_360 = $request->url_360;

                            } else {
                                $url_360 = $request->url_360;
                            }

                        }

                        if ($request->upload_video_480 != null) {

                            if ($main_episode->video_link->url_480 != '') {

                                $file_480 = trim($main_episode->video_link->url_480, $url);

                                if (file_exists('tvshow_upload/' . $file_480)) {
                                    unlink('tvshow_upload/' . $file_480);
                                }

                            }
                            if (strstr($request->upload_video_480, '.mp4') || strstr($request->upload_video_480, '.m3u8')) {

                                $url_480 = url('tvshow_upload/url_480/' . $request->upload_video_480);

                            } else {
                                return back()->withInput()->with('deleted', __('Invalid file format Please use mp4 and m3u8 file format !'));
                            }

                        } else {

                            if ($main_episode->video_link->url_480 != $request->url_480) {

                                if ($main_episode->video_link->url_480 != '') {

                                    $file_480 = trim($main_episode->video_link->url_480, $url);

                                    if (file_exists('tvshow_upload/url_480/' . $file_480)) {
                                        $file_480 = trim($main_episode->video_link->url_480, $url);
                                            unlink('tvshow_upload/url_480/' . $file_360);
                                    }

                                }
                                $url_480 = $request->url_480;

                            } else {
                                $url_480 = $request->url_480;
                            }

                        }

                        if ($request->upload_video_720 != null) {

                            if ($main_episode->video_link->url_720 != '') {

                                $file_720 = trim($main_episode->video_link->url_720, $url);

                                if (file_exists('tvshow_upload/' . $file_720)) {
                                    unlink('tvshow_upload/' . $file_720);
                                }

                            }
                            if (strstr($request->upload_video_720, '.mp4') || strstr($request->upload_video_720, '.m3u8')) {

                                $url_720 = url('tvshow_upload/url_720/' . $request->upload_video_720);

                            } else {
                                return back()->withInput()->with('deleted',__('Invalid file format Please use mp4 and m3u8 file format !'));
                            }

                        } else {

                            if ($main_episode->video_link->url_720 != $request->url_720) {

                                if ($main_episode->video_link->url_720 != '') {

                                    $file_720 = trim($main_episode->video_link->url_720, $url);

                                    if (file_exists('tvshow_upload/url_720/' . $file_720)) {
                                        $file_720 = trim($main_episode->video_link->url_720, $url);
                                            unlink('tvshow_upload/url_720/' . $file_720);
                                    }

                                    
                                }
                                $url_720 = $request->url_720;

                            } else {
                                $url_720 = $request->url_720;
                            }

                        }

                        if ($request->upload_video_1080 != null) {

                            if ($main_episode->video_link->url_1080 != '') {

                                $file_1080 = trim($main_episode->video_link->url_1080, $url);

                                if (file_exists('tvshow_upload/url_1080/' . $file_1080)) {

                                    unlink('tvshow_upload/url_1080' . $file_1080);
                                }

                            }
                            if (strstr($request->upload_video_1080, '.mp4') || strstr($request->upload_video_1080, '.m3u8')) {

                                $url_1080 = url('tvshow_upload/url_1080/' . $request->upload_video_1080);

                            } else {
                                return back()->withInput()->with('deleted', __('Invalid file format Please use mp4 and m3u8 file format !'));
                            }

                        } else {

                            if ($main_episode->video_link->url_1080 != $request->url_1080) {

                                if ($main_episode->video_link->url_1080 != '') {
                                    $file_1080 = trim($main_episode->video_link->url_1080, $url);

                                    if (file_exists('tvshow_upload/url_1080/' . $file_1080)) {
                                        $file_1080 = trim($main_episode->video_link->url_1080, $url);
                                            unlink('tvshow_upload/url_1080/' . $file_1080);
                                    }

                                    
                                }
                                $url_1080 = $request->url_1080;

                            } else {
                                $url_1080 = $request->url_1080;
                            }

                        }

                        $main_episode->video_link->update(['url_360' => $url_360, 'type' => 'multiquality', 'url_480' => $url_480, 'url_720' => $url_720, 'url_1080' => $url_1080,'ready_url'=>NULL,'iframeurl'=>NULL]);

                    }

                }

            } else {
                if ($request->selecturl == "youtubeurl" || $request->selecturl == "vimeourl" || $request->selecturl == "customurl" || $request->selecturl == "vimeoapi" || $request->selecturl == "youtubeapi") {

                    $main_episode->video_link->create(['iframeurl' => null, 'ready_url' => $input['ready_url'], 'url_360' => null, 'url_480' => null, 'url_720' => null, 'url_1080' => null, 'type' => 'readyurl']);

                } elseif ($request->selecturl == 'multiqcustom') {

                    $url = url('/tvshow_upload');

                    if ($request->upload_video_360 != null) {
                        if ($main_episode->video_link->url_360 != '') {

                            $file_360 = trim($main_episode->video_link->url_360, $url);

                            if (file_exists('tvshow_upload/url_360/' . $file_360)) {
                                unlink('tvshow_upload/url_360/' . $file_360);
                            }

                        }
                        if (strstr($request->upload_video_360, '.mp4') || strstr($request->upload_video_360, '.m3u8')) {

                            $url_360 = url('tvshow_upload/url_360/' . $request->upload_video_360);

                        } else {
                            return back()->withInput()->with('deleted', __('Invalid file format Please use mp4 and m3u8 file format !'));
                        }

                    } else {

                        if ($main_episode->video_link->url_360 != $request->url_360) {

                            if ($main_episode->video_link->url_360 != '') {
                                $file_360 = trim($main_episode->video_link->url_360, $url);

                                if (file_exists('tvshow_upload/url_360/' . $file_360)) {
                                    $file_360 = trim($main_episode->video_link->url_360, $url);
                                    unlink('tvshow_upload/url_360/' . $file_360);
                                }

                            }

                            $url_360 = $request->url_360;

                        } else {
                            $url_360 = $request->url_360;
                        }

                    }

                    if ($request->upload_video_480 != null) {

                        if ($main_episode->video_link->url_480 != '') {

                            $file_480 = trim($main_episode->video_link->url_480, $url);

                            if (file_exists('tvshow_upload/url_480/' . $file_480)) {
                                unlink('tvshow_upload/url_480/' . $file_480);
                            }

                        }
                        if (strstr($request->upload_video_480, '.mp4') || strstr($request->upload_video_480, '.m3u8')) {

                            $url_480 = url('tvshow_upload/url_480/' . $request->upload_video_480);

                        } else {
                            return back()->withInput()->with('deleted', __('Invalid file format Please use mp4 and m3u8 file format !'));
                        }

                    } else {

                        if ($main_episode->video_link->url_480 != $request->url_480) {

                            if ($main_episode->video_link->url_480 != '') {

                                $file_480 = trim($main_episode->video_link->url_480, $url);

                                if (file_exists('tvshow_upload/url_480/' . $file_480)) {
                                    $file_480 = trim($main_episode
                                            ->video_link->url_480, $url);
                                        unlink('tvshow_upload/url_480/' . $file_360);
                                }

                               

                            }
                            $url_480 = $request->url_480;

                        } else {
                            $url_480 = $request->url_480;
                        }

                    }

                    if ($request->upload_video_720 != null) {

                        if ($main_episode->video_link->url_720 != '') {

                            $file_720 = trim($main_episode->video_link->url_720, $url);

                            if (file_exists('tvshow_upload/url_720/' . $file_720)) {
                                unlink('tvshow_upload/url_720/' . $file_720);
                            }

                        }
                        if (strstr($request->upload_video_720, '.mp4') || strstr($request->upload_video_720, '.m3u8')) {

                            $url_720 = url('tvshow_upload/url_720/' . $request->upload_video_720);

                        } else {
                            return back()->withInput()->with('deleted', __('Invalid file format Please use mp4 and m3u8 file format !'));
                        }

                    } else {

                        if ($main_episode->video_link->url_720 != $request->url_720) {

                            if ($main_episode->video_link->url_720 != '') {

                                $file_720 = trim($main_episode->video_link->url_720, $url);

                                if (file_exists('tvshow_upload/url_720/' . $file_720)) {
                                    $file_720 = trim($main_episode->video_link->url_720, $url);
                                    unlink('tvshow_upload/url_720/' . $file_720);
                                }

                               
                            }
                            $url_720 = $request->url_720;

                        } else {
                            $url_720 = $request->url_720;
                        }

                    }

                    if ($request->upload_video_1080 != null) {

                        if ($main_episode->video_link->url_1080 != '') {

                            $file_1080 = trim($main_episode->video_link->url_1080, $url);

                            if (file_exists('tvshow_upload/url_1080/' . $file_1080)) {

                                unlink('tvshow_upload/url_1080/' . $file_1080);
                            }

                        }
                        if (strstr($request->upload_video_1080, '.mp4') || strstr($request->upload_video_1080, '.m3u8')) {

                            $url_1080 = url('tvshow_upload/url_1080/' . $request->upload_video_1080);

                        } else {
                            return back()->withInput()->with('deleted', __('Invalid file format Please use mp4 and m3u8 file format !'));
                        }

                    } else {

                        if ($main_episode->video_link->url_1080 != $request->url_1080) {

                            if ($main_episode->video_link->url_1080 != '') {
                                $file_1080 = trim($main_episode
                                        ->video_link->url_1080, $url);

                                    if (file_exists('tvshow_upload/url_1080/' . $file_1080)) {
                                    $file_1080 = trim($main_episode->video_link->url_1080, $url);
                                    unlink('tvshow_upload/url_1080/' . $file_1080);
                                }

                               
                            }
                            $url_1080 = $request->url_1080;

                        } else {
                            $url_1080 = $request->url_1080;
                        }

                    }

                    $main_episode->video_link->create(['url_360' => $url_360, 'type' => 'multiquality', 'url_480' => $url_480, 'url_720' => $url_720, 'url_1080' => $url_1080,'ready_url'=>NULL,'iframeurl'=>NULL]);

                }

            }

            return back()->with('success', __('Episode has been updated'));

        }

        $input['tmdb_id'] = null;

        $thumbnail = null;
        if ($file = $request->file('thumbnail')) {
            $validator = Validator::make(
                [
                    'thumbnail' => $request->thumbnail,
                    'extension' => strtolower($request->thumbnail->getClientOriginalExtension()),
                ],
                [
                    'thumbnail' => 'required',
                    'extension' => 'required|in:jpg,jpeg,png,webp',
                ]
            );
            if ($validator->fails()) {
                return back()->with('deleted', __('Invalid file format Please use jpg,webp,jpeg,webp and png image format !'))->withInput();
            } else {
                $thumbnail = 'thumb_' . time() . $file->getClientOriginalName();
                $img = Image::make($file->path());

                // $img->resize(300, 450, function ($constraint) {
                //     $constraint->aspectRatio();
                // });
                $img->save(public_path('/images/tvseries/episodes') . '/' . $thumbnail);

                $input['thumbnail'] = $thumbnail;
            }
        }

        

        $main_episode->update($input);

        if (isset($request->subtitle)) {
            $input['subtitle'] = 1;
            if ($request->has('sub_t')) {

                foreach ($request->file('sub_t') as $key => $image) {

                    $name = 'episode_subtitle_' . time() . $image->getClientOriginalName();
                    $image->move(public_path() . '/subtitles/', $name);

                    $form = new Subtitles();
                    $form->sub_lang = $request->sub_lang[$key];
                    $form->sub_t = $name;
                    $form->ep_id = $main_episode->id;
                    $form->save();
                }
            }
        } else {
            $input['subtitle'] = 0;
        } 

        if (isset($main_episode->video_link)) {

            if ($request->selecturl == "iframeurl") {

                $main_episode->video_link->update(['iframeurl' => $input['iframeurl'], 'type' => 'iframeurl', 'ready_url' => null, 'url_360' => null, 'url_480' => null, 'url_720' => null, 'url_1080' => null]);

            } else {
                if ($request->selecturl == "youtubeurl" || $request->selecturl == "vimeourl" || $request->selecturl == "customurl" || $request->selecturl == "vimeoapi" || $request->selecturl == "youtubeapi") {

                    $main_episode->video_link->update(['iframeurl' => null, 'type' => 'readyurl', 'ready_url' => $input['ready_url'], 'url_360' => null, 'url_480' => null, 'url_720' => null, 'url_1080' => null]);

                } elseif ($request->selecturl == 'multiqcustom') {
                    $url = url('/tvshow_upload');

                    if ($file = $request->file('upload_video_360')) {

                        if ($main_episode->video_link->url_360 != '') {
                            
                            $file_360 = trim($main_episode->video_link->url_360, $url);

                            if (file_exists('tvshow_upload/' . $file_360)) {
                                unlink('tvshow_upload/' . $file_360);
                            }
                        }
                            $name = time() . $file->getClientOriginalName();
                            $file->move('tvshow_upload', $name);
                            $url_360 = asset('tvshow_upload/' . $name);
                       

                    } else {

                        if ($main_episode->video_link->url_360 != $request->url_360) {

                            if ($main_episode->video_link->url_360 != '') {
                                $file_360 = trim($main_episode->video_link->url_360, $url);

                                if (file_exists('tvshow_upload/' . $file_360)) {
                                    $file_360 = trim($main_episode->video_link->url_360, $url);
                                    unlink('tvshow_upload/' . $file_360);
                                }

                            }

                            $url_360 = $request->url_360;

                        } else {
                            $url_360 = $request->url_360;
                        }

                    }

                    if ($file = $request->file('upload_video_480')) {

                        if ($main_episode->video_link->url_480 != '') {

                            $file_480 = trim($main_episode->video_link->url_480, $url);

                            if (file_exists('tvshow_upload/' . $file_480)) {
                                unlink('tvshow_upload/' . $file_480);
                            }
                          }
                            $name = time() . $file->getClientOriginalName();
                            $file->move('tvshow_upload', $name);
                            $url_480 = asset('tvshow_upload/' . $name);

                      

                    } else {

                        if ($main_episode->video_link->url_480 != $request->url_480) {

                            if ($main_episode->video_link->url_480 != '') {

                                $file_480 = trim($main_episode->video_link->url_480, $url);

                                if (file_exists('tvshow_upload/' . $file_480)) {
                                    $file_480 = trim($main_episode->video_link->url_480, $url);
                                        unlink('tvshow_upload/' . $file_360);
                                }

                            }
                            $url_480 = $request->url_480;

                        } else {
                            $url_480 = $request->url_480;
                        }

                    }

                    if ($file = $request->file('upload_video_720')) {

                        if ($main_episode->video_link->url_720 != '') {

                            $file_720 = trim($main_episode->video_link->url_720, $url);

                            if (file_exists('tvshow_upload/' . $file_720)) {
                                unlink('tvshow_upload/' . $file_720);
                            }
                             }

                            $name = time() . $file->getClientOriginalName();
                            $file->move('tvshow_upload', $name);
                            $url_720 = asset('tvshow_upload/' . $name);
                       

                    } else {

                        if ($main_episode->video_link->url_720 != $request->url_720) {

                            if ($main_episode->video_link->url_720 != '') {

                                $file_720 = trim($main_episode->video_link->url_720, $url);

                                if (file_exists('tvshow_upload/' . $file_720)) {
                                    $file_720 = trim($main_episode
                                            ->video_link->url_720, $url);
                                        unlink('tvshow_upload/' . $file_720);
                                }

                               
                            }
                            $url_720 = $request->url_720;

                        } else {
                            $url_720 = $request->url_720;
                        }

                    }

                    if ($file = $request->file('upload_video_1080')) {

                        if ($main_episode->video_link->url_1080 != '') {

                            $file_1080 = trim($main_episode->video_link->url_1080, $url);

                            if (file_exists('tvshow_upload/' . $file_1080)) {

                                unlink('tvshow_upload/' . $file_1080);
                            }
                         }

                            $name = str_random(5) . time() . $file->getClientOriginalName();
                            $file->move('tvshow_upload', $name);
                            $url_1080 = asset('tvshow_upload/' . $name);

                       

                    } else {

                        if ($main_episode->video_link->url_1080 != $request->url_1080) {

                            if ($main_episode->video_link->url_1080 != '') {
                                $file_1080 = trim($main_episode->video_link->url_1080, $url);

                                    if (file_exists('tvshow_upload/' . $file_1080)) {
                                    $file_1080 = trim($main_episode->video_link->url_1080, $url);
                                        unlink('tvshow_upload/' . $file_1080);
                                }

                                
                            }
                            $url_1080 = $request->url_1080;

                        } else {
                            $url_1080 = $request->url_1080;
                        }

                    }

                    $main_episode->video_link->update(['url_360' => $url_360, 'type' => 'multiquality', 'url_480' => $url_480, 'url_720' => $url_720, 'url_1080' => $url_1080,'ready_url'=>NULL,'iframeurl'=>NULL]);

                }
            }

        } else {

            if ($request->selecturl == "iframeurl") {

                VideoLink::create(['episode_id' => $main_episode->id, 'ready_url' => $input['ready_url'], 'url_360' => null, 'url_480' => null, 'url_720' => null, 'url_1080' => null]);

            } elseif ($request->selecturl == 'multiqcustom') {
                $url = url('/tvshow_upload');

                if ($file = $request->file('upload_video_360')) {
                    if ($main_episode->video_link->url_360 != '') {
                        $file_360 = trim($main_episode->video_link->url_360, $url);

                        if (file_exists('tvshow_upload/' . $file_360)) {
                            unlink('tvshow_upload/' . $file_360);
                        }
                    }

                    $name = time() . $file->getClientOriginalName();
                    $file->move('tvshow_upload', $name);
                    $url_360 = asset('tvshow_upload/' . $name);

                } else {

                    if ($main_episode
                        ->video_link->url_360 != $request->url_360) {

                        $file_360 = trim($main_episode->video_link->url_360, $url);

                        if (file_exists('tvshow_upload/' . $file_360)) {
                            $file_360 = trim($main_episode
                                    ->video_link->url_360, $url);
                                unlink('tvshow_upload/' . $file_360);
                        }

                        $url_360 = $request->url_360;

                    } else {
                        $url_360 = $request->url_360;
                    }

                }

                if ($file = $request->file('upload_video_480')) {
                    if ($main_episode->video_link->url_480 != '') {
                     $file_480 = trim($main_episode->video_link->url_480, $url);

                        if (file_exists('tvshow_upload/' . $file_480)) {
                            unlink('tvshow_upload/' . $file_480);
                        }
                    }

                    $name = time() . $file->getClientOriginalName();
                    $file->move('tvshow_upload', $name);
                    $url_480 = asset('tvshow_upload/' . $name);

                } else {

                    if ($main_episode->video_link->url_480 != $request->url_480) {

                        $file_480 = trim($main_episode->video_link->url_480, $url);

                        if (file_exists('tvshow_upload/' . $file_480)) {
                            $file_480 = trim($movie->video_link->url_480, $url);
                            unlink('tvshow_upload/' . $file_360);
                        }

                        $url_480 = $request->url_480;

                    } else {
                        $url_480 = $request->url_480;
                    }

                }

                if ($file = $request->file('upload_video_720')) {
                    if ($main_episode->video_link->url_720 != '') {
                        $file_720 = trim($main_episode->video_link->url_720, $url);

                        if (file_exists('tvshow_upload/' . $file_720)) {
                            unlink('tvshow_upload/' . $file_720);
                        }
                    }

                    $name = time() . $file->getClientOriginalName();
                    $file->move('tvshow_upload', $name);
                    $url_720 = asset('tvshow_upload/' . $name);

                } else {

                    if ($main_episode->video_link->url_720 != $request->url_720) {

                        $file_720 = trim($main_episode->video_link->url_720, $url);

                        if (file_exists('tvshow_upload/' . $file_720)) {
                            $file_720 = trim($main_episode->video_link->url_720, $url);
                            unlink('tvshow_upload/' . $file_720);
                        }

                        $url_720 = $request->url_720;

                    } else {
                        $url_720 = $request->url_720;
                    }

                }

                if ($file = $request->file('upload_video_1080')) {
                     if ($main_episode->video_link->url_1080 != '') {
                        $file_1080 = trim($main_episode->video_link->url_1080, $url);

                        if (file_exists('tvshow_upload/' . $file_1080)) {

                            unlink('tvshow_upload/' . $file_1080);
                        }
                    }

                    $name = str_random(5) . time() . $file->getClientOriginalName();
                    $file->move('tvshow_upload', $name);
                    $url_1080 = asset('tvshow_upload/' . $name);

                } else {

                    if ($main_episode->video_link->url_1080 != $request->url_1080) {

                        $file_1080 = trim($main_episode->video_link->url_1080, $url);

                        if (file_exists('tvshow_upload/' . $file_1080)) {
                            $file_1080 = trim($main_episode->video_link->url_1080, $url);
                            unlink('tvshow_upload/' . $file_1080);
                        }

                        $url_1080 = $request->url_1080;

                    } else {
                        $url_1080 = $request->url_1080;
                    }

                }

                $main_episode->video_link->create(['url_360' => $url_360, 'url_480' => $url_480, 'url_720' => $url_720, 'url_1080' => $url_1080,'ready_url'=>NULL,'iframeurl'=>NULL]);

            }

        }

        return back()->with('success', __('Episode has been updated'));
    }

    public function destroy_episodes($id)
    {
        if (env('DEMO_LOCK') == 1) {
            return back()->with('deleted', __('This action is disabled in the demo !'));
        }
        $episode = Episode::findOrFail($id);

        if ($episode->subtitle_files != null) {
            $content = @file_get_contents(public_path() . '/subtitles/' . $episode->subtitle_files);
            if ($content) {
                unlink(public_path() . "/subtitles/" . $episode->subtitle_files);
            }
        }

        $url = url('/tvshow_upload');

        if ($episode->video_link->url_360 != '') {
            $file_360 = trim($episode->video_link->url_360, $url);
            if (file_exists('tvshow_upload/' . $file_360)) {
                unlink('tvshow_upload/' . $file_360);
            }
        }

        if ($episode->video_link->url_480) {
            $file_480 = trim($episode->video_link->url_480, $url);
            if (file_exists('tvshow_upload/' . $file_480)) {
                unlink('tvshow_upload/' . $file_480);
            }
        }

        if ($episode->video_link->url_720 != '') {
            $file_720 = trim($episode->video_link->url_720, $url);
            if (file_exists('tvshow_upload/' . $file_720)) {
                unlink('tvshow_upload/' . $file_720);
            }
        }

        if ($episode->video_link->url_1080 != '') {
            $file_1080 = trim($episode->video_link->url_1080, $url);
            if (file_exists('tvshow_upload/' . $file_1080)) {
                unlink('tvshow_upload/' . $file_1080);
            }
        }
        foreach ($episode->multilinks as $key => $link) {
            $link->delete();
        }

        $episode->delete();
        return back()->with('deleted', __('Episode has been deleted'));
    }

    public function bulk_delete(Request $request)
    {
        if (env('DEMO_LOCK') == 1) {
            return back()->with('deleted', __('This action is disabled in the demo !'));
        }
        $validator = Validator::make($request->all(), ['checked' => 'required']);

        if ($validator->fails()) {

            return back()->with('deleted', __('Please check one of them to delete'));
        }

        foreach ($request->checked as $checked) {
            $watched = WatchHistory::where('tv_id', $checked)->delete();

            $tvseries = TvSeries::findOrFail($checked);

            if ($tvseries->thumbnail != null) {
                $content = @file_get_contents(public_path() . '/images/tvseries/thumbnails/' . $tvseries->thumbnail);
                if ($content) {
                    unlink(public_path() . "/images/tvseries/thumbnails/" . $tvseries->thumbnail);
                }
            }
            if ($tvseries->poster != null) {
                $content = @file_get_contents(public_path() . '/images/tvseries/posters/' . $tvseries->poster);
                if ($content) {
                    unlink(public_path() . "/images/tvseries/posters/" . $tvseries->poster);
                }
            }

            TvSeries::destroy($checked);
        }

        return back()->with('deleted',__('Tv Shows has been deleted'));
    }

    /**
     * Translate the specified resource from storage.
     * Translate all tmdb movies on one click
     * @return \Illuminate\Http\Response
     */
    public function tmdb_translations()
    {
        ini_set('max_execution_time', 3000);
        $all_tv = TvSeries::where('tmdb', 'Y')->get();
        $TMDB_API_KEY = env('TMDB_API_KEY');

        if ($TMDB_API_KEY == null || $TMDB_API_KEY == '') {
            return back()->with('deleted', __('Please provide your TMDB api key to translate'));
        }

        if (isset($all_tv) && count($all_tv) > 0) {
            foreach ($all_tv as $key => $tv) {
                if (Session::has('changed_language')) {
                    $fetch_tv = @file_get_contents('https://api.themoviedb.org/3/tv/' . $tv->tmdb_id . '?api_key=' . $TMDB_API_KEY . '&language=' . Session::get('changed_language'));
                } else {
                    return back()->with('success', 'Please Choose a language by admin panel top right side language menu');
                }

                $tmdb_tv = json_decode($fetch_tv, true);
                if (isset($tmdb_tv) && $tmdb_tv != null) {
                    $tv->update(['detail' => $tmdb_tv['overview']]);
                }

                if (isset($tv->seasons) && count($tv->seasons) > 0) {
                    foreach ($tv->seasons as $season) {
                        if ($season->tmdb == 'Y') {
                            $search_data = @file_get_contents('https://api.themoviedb.org/3/tv/' . $tv->tmdb_id . '/season/' . $season->season_no . '?api_key=' . $TMDB_API_KEY . '&language=' . Session::get('changed_language'));
                            if (isset($search_data)) {
                                $season_data = json_decode($search_data, true);
                            }
                            if (isset($season_data) && $season_data != null) {
                                $season->update(['detail' => $season_data['overview']]);
                            }
                            if (isset($season->episodes) && count($season->episodes) > 0) {
                                foreach ($season->episodes as $episode) {
                                    if ($episode->tmdb == 'Y') {
                                        $search_data = @file_get_contents('https://api.themoviedb.org/3/tv/' . $tv->tmdb_id . '/season/' . $season->season_no . '/episode/' . $episode->episode_no . '?api_key=' . $TMDB_API_KEY . '&language=' . Session::get('changed_language'));
                                        if (isset($search_data)) {
                                            $episode_data = json_decode($search_data, true);
                                        }
                                        if (isset($episode_data) && $episode_data != null) {
                                            $episode->update(['detail' => $episode_data['overview']]);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            return back()->with('added', __('All TvSeries and its seasons and episodes (only by TMDB) has been translated'));
        } else {
            return back()->with('updated', __('Please create at least one tvseries by TMDB option to translate'));
        }
    }

    public function multiplelinks($id)
    {
        $links = MultipleLinks::orderBy('id', 'desc')->where('episode_id', $id)->get();
        $language = AudioLanguage::all();
        $link = MultipleLinks::where('id', $id)->get();
        return view('admin.tvseries.link', compact('links', 'id', 'language', 'link'));

    }

    public function storelink(Request $request, $id)
    {
        if (env('DEMO_LOCK') == 1) {
            return back()->with('deleted', __('This action is disabled in the demo !'));
        }
        if (isset($request->download)) {
            $request->validate([
                'quality' => 'required',
                'size' => 'required',
                'language' => 'required',
                'url' => 'required',
            ]);
        }

        $input = $request->all();
        if (isset($request->download)) {
            $input['download'] = 1;
        } else {
            $input['download'] = 0;
        }
        $input['episode_id'] = $id;
        $data = MultipleLinks::create($input);
        return back()->with('success', __('Multiple links has been added'));
    }

    public function editlink(Request $request, $id)
    {
        if (env('DEMO_LOCK') == 1) {
            return back()->with('deleted', __('This action is disabled in the demo !'));
        }
        $data = MultipleLinks::findorFail($id);

        if (isset($request->download)) {
            $request->validate([
                'quality' => 'required',
                'size' => 'required',
                'language' => 'required',
                'url' => 'required',
            ]);
        }

        $input = $request->all();
        if (isset($request->download)) {
            $input['download'] = 1;
        } else {
            $input['download'] = 0;
        }

        $data->update($input);

        return back()->with('success', __('Multiple links has been updated'));
    }
    public function deletelink($id)
    {
        if (env('DEMO_LOCK') == 1) {
            return back()->with('deleted', __('This action is disabled in the demo !'));
        }
        $delete = MultipleLinks::findorFail($id);
        $delete->delete();

        return back()->with('deleted', __('Multiple links has been deleted'));
    }

    public function importtvseries(Request $request)
    {

        $validator = Validator::make(
            [
                'file' => $request->file,
                'extension' => strtolower($request->file->getClientOriginalExtension()),
            ],
            [
                'file' => 'required',
                'extension' => 'required|in:xlsx,xls,csv',
            ]

        );

        if ($validator->fails()) {

            return back()->with('deleted', __('Invalid file !'));
        }

        $filename = 'tvseries_' . time() . '.' . $request->file->getClientOriginalExtension();

        Storage::disk('local')->put('/excel/' . $filename, file_get_contents($request->file->getRealPath()));

        $tvseries = fastexcel()->import(storage_path() . '/app/excel/' . $filename);

        if (count($tvseries)) {

            $tvseries->each(function ($item) {

                DB::beginTransaction();

                try {
                    $tvseries = Tvseries::create([

                        'title' => $item['title'] != null ? $item['title'] : null,
                        'keyword' => $item['keyword'] != null ? $item['keyword'] : null,
                        'description' => $item['description'] != null ? $item['description'] : null,
                        'thumbnail' => $item['thumbnail'] != null ? $item['thumbnail'] : null,
                        'poster' => $item['poster'] != null ? $item['poster'] : null,
                        'tmdb' => 'N',
                        'fetch_by' => 'title',
                        'genre_id' => $item['genre_id'] != null ? $item['genre_id'] : null,
                        'detail' => $item['detail'] != null ? $item['detail'] : null,
                        'rating' => $item['rating'] != null ? $item['rating'] : null,
                        'maturity_rating' => $item['maturity_rating'] != null ? $item['maturity_rating'] : 'all age',
                        'featured' => $item['featured'] != null ? 1 : 0,
                        'type' => 'T',
                        'status' => 1,
                        'tmdb_id' => null,
                        'episode_runtime' => null,
                        'created_by' => auth()->user()->id,
                        'is_upcoming' => $item['is_upcoming'] != null ? 1 : 0,
                        'upcoming_date' => $item['upcoming_date'] != null ? $item['upcoming_date'] : null,
                        'is_custom_label' => $item['is_custom_label'] != null ? 1 : 0,
                        'label_id' => $item['label_id'] != null ? $item['label_id'] : null,
                        'is_kids' => isset($item['is_kids']) ? 1 : 0,
                        'country' => $item['country'] != null ? $item['country'] : null,

                    ]);

                    if (isset($item['menu']) && $item['menu'] != null) {
                        $menus_ids = explode(',', $item['menu']);

                        foreach ($menus_ids as $value) {

                            MenuVideo::create(['menu_id' => $value, 'tv_series_id' => $tvseries->id]);
                        }
                    }

                    DB::commit();

                } catch (\Exception $e) {
                    return back()->with('deleted', $e->getMessage());
                }

            });

            unlink(storage_path() . '/app/excel/' . $filename);

            return back()->with('success', __('Tvseries imported successfully'));

        } else {

            return back()->with('deleted', __('File is empty !'));
        }

    }

    public function importseasons(Request $request)
    {

        $validator = Validator::make(
            [
                'file' => $request->file,
                'extension' => strtolower($request->file->getClientOriginalExtension()),
            ],
            [
                'file' => 'required',
                'extension' => 'required|in:xlsx,xls,csv',
            ]

        );

        if ($validator->fails()) {

            return back()->with('deleted', 'Invalid file !');
        }

        $filename = 'seasons_' . time() . '.' . $request->file->getClientOriginalExtension();

        Storage::disk('local')->put('/excel/' . $filename, file_get_contents($request->file->getRealPath()));

        $seasons = fastexcel()->import(storage_path() . '/app/excel/' . $filename);

        if (count($seasons)) {

            $seasons->each(function ($item) {

                DB::beginTransaction();

                try {
                    $tvs = Tvseries::find($item['tv_series_id']);

                    $s = Season::create([

                        'tv_series_id' => $item['tv_series_id'],
                        'season_no' => $item['season_no'] != null ? $item['season_no'] : null,
                        'season_slug' => str_slug($tvs->title . '-season-' . $item['season_no'], '-'),
                        'publish_year' => $item['publish_year'] != null ? $item['publish_year'] : null,
                        'thumbnail' => $item['thumbnail'] != null ? $item['thumbnail'] : null,
                        'poster' => $item['poster'] != null ? $item['poster'] : null,
                        'tmdb' => 'N',
                        'actor_id' => $item['actor_id'] != null ? $item['actor_id'] : null,
                        'a_language' => $item['a_language'] != null ? $item['a_language'] : null,
                        'detail' => $item['detail'] != null ? $item['detail'] : null,
                        'featured' => $item['featured'] != null ? 1 : 0,
                        'type' => 'S',
                        'tmdb_id' => null,
                        'is_protect' => $item['is_protect'] != null ? 1 : 0,
                        'password' => $item['password'] != null ? Crypt::encrypt($item['password']) : null,
                        'trailer_url' => $item['trailer_url'] != null ? $item['trailer_url'] : null,

                    ]);

                    DB::commit();

                } catch (\Exception $es) {
                    return back()->with('deleted', $es->getMessage());
                }

            });

            unlink(storage_path() . '/app/excel/' . $filename);

            return back()->with('success', __('Seasons imported successfully'));

        } else {

            return back()->with('deleted', __('File is empty !'));
        }

    }

    public function importepisodes(Request $request)
    {

        $validator = Validator::make(
            [
                'file' => $request->file,
                'extension' => strtolower($request->file->getClientOriginalExtension()),
            ],
            [
                'file' => 'required',
                'extension' => 'required|in:xlsx,xls,csv',
            ]

        );

        if ($validator->fails()) {

            return back()->with('deleted', __('Invalid file !'));
        }

        $filename = 'episodes_' . time() . '.' . $request->file->getClientOriginalExtension();

        Storage::disk('local')->put('/excel/' . $filename, file_get_contents($request->file->getRealPath()));

        $episodes = fastexcel()->import(storage_path() . '/app/excel/' . $filename);

        if (count($episodes)) {

            $episodes->each(function ($item) {

                DB::beginTransaction();

                try {

                    $episode = Episode::create([

                        'seasons_id' => $item['seasons_id'],
                        'episode_no' => $item['episode_no'] != null ? $item['episode_no'] : null,
                        'title' => $item['title'] != null ? $item['title'] : null,
                        'duration' => $item['duration'] != null ? $item['duration'] : null,
                        'thumbnail' => $item['thumbnail'] != null ? $item['thumbnail'] : null,
                        'detail' => $item['detail'] != null ? $item['detail'] : null,
                        'a_language' => $item['a_language'] != null ? $item['a_language'] : null,
                        'type' => 'E',
                        'tmdb_id' => null,
                        'tmdb' => 'N',
                        'released' => $item['released'] != null ? $item['released'] : null,

                    ]);

                    if (isset($item['selecturl']) && $item['selecturl'] != null) {
                        if ($item['selecturl'] == 'iframe') {
                            $iframeurl = $item['url'];
                            $type = 'iframeurl';
                        } elseif ($item['selecturl'] == 'youtube' || $item['selecturl'] == 'vimeo' || $item['selecturl'] == 'custom') {
                            $url = $item['url'];
                            $type = 'readyurl';
                        } else {
                            $type = 'multiquality';
                            $url360 = $item['url_360'];
                            $url480 = $item['url_480'];
                            $url720 = $item['url_720'];
                            $url1080 = $item['url_1080'];
                        }

                        Videolink::create([
                            'episode_id' => $episode->id,
                            'type' => $type,
                            'iframeurl' => isset($iframeurl) && $iframeurl != null ? $iframeurl : null,
                            'ready_url' => isset($url) && $url != null ? $url : null,
                            'upload_video' => null,
                            'url_360' => isset($url360) && $url360 != null ? $url360 : null,
                            'url_480' => isset($url480) && $url480 != null ? $url480 : null,
                            'url_720' => isset($url720) && $url720 != null ? $url720 : null,
                            'url_1080' => isset($url1080) && $url1080 != null ? $url1080 : null,
                        ]);
                    }

                    DB::commit();

                } catch (\Exception $ex) {
                    return back()->with('deleted', $ex->getMessage());
                }

            });

            unlink(storage_path() . '/app/excel/' . $filename);

            return back()->with('success', __('Seasons imported successfully'));

        } else {

            return back()->with('deleted', __('File is empty !'));
        }

    }

}

Youez - 2016 - github.com/yon3zu
LinuXploit