<?php

namespace App\Http\Controllers\Admin;

use Carbon\Carbon;
use Faker\Factory;
use App\Models\User;
use App\Models\Company;
use App\Models\TeamSize;
use Illuminate\Support\Str;
use App\Models\IndustryType;
use Illuminate\Http\Request;
use App\Models\OrganizationType;
use App\Http\Controllers\Controller;
use Modules\Location\Entities\Country;
use Illuminate\Support\Facades\Notification;
use App\Http\Requests\UniversityCreateFormRequest;
use App\Http\Requests\UniversityUpdateFormRequest;
use App\Models\Job;
use App\Models\Setting;
use App\Notifications\CompanyCreateApprovalPendingNotification;
use App\Notifications\CompanyCreatedNotification;
use App\Notifications\UpdateCompanyPassNotification;
use App\Models\Universities;
use App\Models\University;
use App\Models\Countries;
use App\Models\City;
use App\Models\State;
use App\Models\Faq;
use Illuminate\Support\Facades\DB;
use App\Models\Ranking;
use App\Models\RankingPublisher;
// use Modules\Faq\Entities\Faq;

use Illuminate\Support\Facades\Storage;

class UniversityController extends Controller
{
    public function index(Request $request)
    {        
        abort_if(!userCan('university.view'), 403);

        $querys = Universities::query();
        if ($request->keyword && $request->keyword != null) {

            $querys->where('name', 'LIKE', "%$request->keyword%")
                ->orWhere('email', 'LIKE', "%$request->keyword%");
        }

        // countries_type
        if ($request->countries_type && $request->countries_type != null) {
            $querys->where('country_id', $request->countries_type);
        }

        if ($request->robot_type && $request->robot_type != null) {
            $querys->where('robots', $request->robot_type);
        }

        

        // $querys->orderBy('sorting', 'DESC');
        // $querys->orderByRaw("CASE WHEN sorting IS NULL THEN 1 ELSE 0 END, sorting");


        $universities =  $querys->latest()->sorting()->paginate(10);

        $query = Company::query();

        // sortby
        if ($request->sort_by == 'latest' || $request->sort_by == null) {
            $query->latest();
        } else {
            $query->oldest();
        }

        // verified status
        if ($request->has('ev_status') && $request->ev_status != null) {
            $ev_status = null;
            if ($request->ev_status == 'true') {
                $query->whereHas('user', function ($q) use ($ev_status) {
                    $q->whereNotNull('email_verified_at');
                });
            } else {
                $query->whereHas('user', function ($q) use ($ev_status) {
                    $q->whereNull('email_verified_at');
                });
            }
        }



        // organization_type
        if ($request->organization_type && $request->organization_type != null) {
            $query->whereHas('organization', function ($q) use ($request) {
                $q->where('slug', $request->organization_type);
            });
        }

        // organization_type
        if ($request->industry_type && $request->industry_type != null) {
            $query->where('industry_type_id', $request->industry_type);
        }

        // $companies = $query->with('organization:id,name', 'user')->paginate(10)->through(function ($company) {
        //     $company->active_jobs = Job::where('company_id', $company->id)->openPosition()->count();
        //     return $company;
        // });
        
        $companies = [];

        // $industry_types = IndustryType::all();
        $industry_types = [];
        // $organization_types = OrganizationType::all();
        $organization_types = [];
        $countries_types = Countries::all();

        // return view('admin.university.index', compact('companies', 'industry_types', 'organization_types'));
        return view('admin.university.index', compact('universities', 'companies', 'industry_types', 'organization_types', 'countries_types'));
    }

    public function create()
    {
        abort_if(!userCan('university.create'), 403);

        $data['countries'] = Countries::all();
        $data['publishers'] = RankingPublisher::select('parentPublisherName', 'id')->get();
        // $data['industry_types'] = IndustryType::all();
        // $data['organization_types'] = OrganizationType::all();
        // $data['team_sizes'] = TeamSize::all();

        return view('admin.university.create', $data);
    }

    public function store(UniversityCreateFormRequest $request)
    {
        abort_if(!userCan('university.create'), 403);
        try {
            $folder = '/university/' . $request['url'];
            $file_logo = ($request->file('logo')) ? $request->file('logo') : NULL;
            $file_university_icon = ($request->file('university_icon')) ? $request->file('university_icon') : NULL;
            $file_brochure = ($request->file('brochure')) ? $request->file('brochure') : NULL;

            $file_headerImageDesktop = ($request->file('headerImageDesktop')) ? $request->file('headerImageDesktop') : NULL;
            $file_headerImageMobile = ($request->file('headerImageMobile')) ? $request->file('headerImageMobile') : NULL;


            $meta_description = (!empty($request['meta_description'])) ? $request['meta_description'] : null;
            // // $images = (!empty($request->img)) ? $request->img : null;
            // if (!empty(isset($request['headerImageDesktop']))) {
            //     $file_headerImageDesktop = $request->file('headerImageDesktop');
            // }
            // if (!empty(isset($request['headerImageMobile']))) {
            //     $file_headerImageMobile = $request->file('headerImageMobile');
            // }            

            $images = $request->newImgs;
            // dd($images);

            $img = [];
            if(!empty($images)){

                foreach ($images as $key => $imageData) {
                //  dd($imageData['mediaUrl']);
                    if ($imageData['mediaUrl']) {
                        // echo"1";die();
                        $image = $imageData['mediaUrl'];
                        $path_img = Storage::disk('public')->put($folder, $image);
                        $img[$key]['mediaUrl'] = $path_img;
                     

                    }
                    $img[$key]['mediaTitle'] = !empty($imageData['mediaTitles']) ? $imageData['mediaTitles'] : "_images";
                    $img[$key]['altText'] = !empty($imageData['altTexts']) ? $imageData['altTexts'] : "images";
                    // $img[$key]['status'] = !empty($imageData['status'])  ? $imageData['status'] : 0;
                    $img[$key]['overview_img'] = !empty($imageData['overview_img'])  ? $imageData['overview_img'] : 0;
                    $img[$key]['study_img'] = !empty($imageData['study_img'])  ? $imageData['study_img'] : 0;
                    $img[$key]['university_img'] = !empty($imageData['university_img'])  ? $imageData['university_img'] : 0;
                }
                $imagejson = json_encode($img);
            }
            else{
                $imagejson = null;
            }
        
            if (!empty($file_logo) || $file_logo != null) {
                $path_logo = Storage::disk('public')->put($folder, $file_logo);
            }
            if (!empty($file_university_icon) || $file_university_icon != null) {
                $path_university_icon = Storage::disk('public')->put($folder, $file_university_icon);
            }
            if (!empty($file_brochure) || $file_brochure != null) {
                $path_brochure = Storage::disk('public')->put($folder, $file_brochure);
            }
            if (!empty($file_headerImageDesktop) || $file_headerImageDesktop != null) {
                $path_headerImageDesktop = Storage::disk('public')->put($folder, $file_headerImageDesktop);
            }
            if (!empty($file_headerImageMobile) || $file_headerImageMobile != null) {
                $path_headerImageMobile = Storage::disk('public')->put($folder, $file_headerImageMobile);
            }
            $request['recommended'] = isset($request['recommended']) ? 1 : 0;
            //  $recommended =$req['recommended'];
            $req = $request->all();
      
            $req['social_media'] = '';
            $req['logo'] = isset($path_logo)?$path_logo:'';
            $req['university_icon'] = isset($path_university_icon)?$path_university_icon:'';
            $req['brochure'] = isset($path_brochure)?$path_brochure:'';
            $req['headerImageDesktop'] = isset($path_headerImageDesktop)?$path_headerImageDesktop:'';
            $req['headerImageMobile'] = isset($path_headerImageMobile)?$path_headerImageMobile:'';
            $req['meta_description'] = $meta_description;
            $req['images'] = $imagejson;

            $req['data_source_id'] = 1;
            $req['sid'] = 1;
            $req['city_id'] = $request->city_id;
            $req['created_by'] = Auth()->user()->id;

            $on_campus_accommodation = [];
            $on_campus_accommodation['details'] = (!empty($request['on_campus_accommodation'])) ? $request['on_campus_accommodation'] : null;
            $on_campus_accommodation['website'] = (!empty($request['on_campus_accommodation_website'])) ? $request['on_campus_accommodation_website'] : null;
            $on_campus_accommodation['livingExpenseDetails'] = (!empty($request['on_campus_accommodation_livingExpenseDetails'])) ? $request['on_campus_accommodation_livingExpenseDetails'] : null;
            $on_campus_accommodation['livingExpenseUrl'] = (!empty($request['on_campus_accommodation_livingExpenseUrl'])) ? $request['on_campus_accommodation_livingExpenseUrl'] : null;
            $on_campus_accommodation['ugDescription'] = (!empty($request['on_campus_accommodation_ugDescription'])) ? $request['on_campus_accommodation_ugDescription'] : null;
            $on_campus_accommodation['pgDescription'] = (!empty($request['on_campus_accommodation_pgDescription'])) ? $request['on_campus_accommodation_pgDescription'] : null;
            // if (!empty($on_campus_accommodation)) {
            $req['on_campus_accommodation'] = json_encode($on_campus_accommodation);
            // }

            $off_campus_accommodation = [];
            $off_campus_accommodation['description'] = (!empty($request['off_campus_accommodation'])) ? $request['off_campus_accommodation'] : null;
            $off_campus_accommodation['links'] = (!empty($request['off_campus_accommodation_links'])) ? $request['off_campus_accommodation_links'] : null;

            if (!empty($off_campus_accommodation['links'])) {
                foreach ($off_campus_accommodation['links'] as $key => $link) {
                    $off_campus_accommodation['links'][$key] = (!empty($link)) ? $link : null;
                }
            }

            // if (!empty($off_campus_accommodation)) {
            $req['off_campus_accommodation'] = json_encode($off_campus_accommodation);
            // }


            if (!empty($request['videos']) && !empty($request['videos'][0])) {
                foreach ($request['videos'] as $video) {
                    $newVideoUrl = str_replace('watch?v=', 'embed/', $video);
                    if (is_string($newVideoUrl)) {  // Check if $video is a string
                        $videos['mediaUrl'] = $newVideoUrl;
                        $videos['mediaTitle'] = "_video";
                        $videos['altText'] = 'images';
                        $videoKeyArray = explode('/', $newVideoUrl);
                        $videos['videoKey'] = end($videoKeyArray);
                        $videos['thumbUrl'] = ' https://i.ytimg.com/vi/' . end($videoKeyArray) . '/hqdefault.jpg';
                        $finalArr[] = $videos;
                    }
                }
                $req['videos'] = json_encode($finalArr);
                unset($req['social_media']);
            } else {
                unset($req['videos']);
                unset($req['social_media']);
            }



            if (!empty($request->input('study_point'))) {
                $studyPoints = [];  
                foreach ($request->input('study_point') as $studyPointData) {
                   
                    $studyPoint = [];
                    $studyPoint['header'] = !empty($studyPointData['header']) ? $studyPointData['header'] : NULL;
                    $studyPoint['content'] = !empty($studyPointData['content']) ? $studyPointData['content'] : NULL;
                    $studyPoints[] = $studyPoint;
                }

                $req['study_points'] = json_encode($studyPoints);
            }


            if (!empty($request->input('overview_service_block'))) {
                $overview_service_blocks = [];  
                foreach ($request->input('overview_service_block') as $overviewServiceBlockData) {
                   
                    $overview_service_block = [];
                    $overview_service_block['header'] = !empty($overviewServiceBlockData['header']) ? $overviewServiceBlockData['header'] : NULL;
                    $overview_service_block['content'] = !empty($overviewServiceBlockData['content']) ? $overviewServiceBlockData['content'] : NULL;
                    $overview_service_blocks[] = $overview_service_block;
                }

                $req['overview_service_blocks'] = json_encode($overview_service_blocks);
            }

            // $request['images']='';
            // $request['videos']='';
           





            // if(!empty($request['videos']) && !empty($request['videos'][0])){

            //     foreach($request['videos'] as $video){
            //         $videos['mediaUrl']=$video;
            //         $videos['mediaTitle']="_video";
            //         $videos['altText']='images';
            //         $videos['videoKey']=end(explode('/',$video));
            //         $videos['thumbUrl']=' https://i.ytimg.com/vi/'.end(explode('/',$video)).'/hqdefault.jpg';
            //         $finalArr[]=$videos;
            //     }
            //     $request['videos']=json_encode($finalArr);
            // }else{
            //     unset($request['videos']);
            //     unset($request['social_media']);
            // }



            // if (!empty($request['videos']) && !empty($request['videos'][0])) {
            //     foreach ($request['videos'] as $video) {
            //         $newVideoUrl = str_replace('watch?v=', 'embed/', $video);
            //         if (is_string($newVideoUrl)) {  // Check if $video is a string
            //             $videos['mediaUrl'] = $newVideoUrl;
            //             $videos['mediaTitle'] = "_video";
            //             $videos['altText'] = 'images';
            //             $videoKeyArray = explode('/', $newVideoUrl);
            //             $videos['videoKey'] = end($videoKeyArray);
            //             $videos['thumbUrl'] = ' https://i.ytimg.com/vi/' . end($videoKeyArray) . '/hqdefault.jpg';
            //             $finalArr[] = $videos;
            //         }
            //     }
            //     $request['videos'] = json_encode($finalArr);
            //     unset($request['social_media']);
            // } else {
            //     unset($request['videos']);
            //     unset($request['social_media']);
            // }


            if (!empty($request['admission_dates'])) {
                $admission_dates_dateTime = Carbon::parse($request['admission_dates']);
                $req['admission_dates'] = $admission_dates_dateTime->format('Y-m-d H:i:s');
            }

            if(!empty($request['english_lpt'])){
                $english_lpt = json_encode($request['english_lpt']);
                $req['english_lpt'] = $english_lpt;
            }

            $universities = Universities::create($req);
            
            if ($universities->id) {
                $ranks = $request->input('Ranking', []);
                foreach ($ranks as $rankData) {
                    $publisherId = $rankData['publisher_id'];
                    $rankingId = isset($rankData['ranking_id']) ? $rankData['ranking_id'] : null;
                    $year = $rankData['year'];
                    if($year != NUll && $year != "" && $rankData['rank'] != NUll && $rankData['rank'] != ""){
                    $existingRank = $rankingId
                    ? Ranking::where('id', $rankingId)
                            ->where('university_id', $universities->id)
                            ->first()
                    : null;
                    if ($existingRank) {                           
                        $count1 = Ranking::where('university_id' ,$universities->id)
                                ->where('publisher_id', $publisherId)
                                ->where('years', $year)->get();
                            if(count($count1) > 0){
                                $existingRank->update([
                                    'publisher_id' => $publisherId,
                                    'years'   =>  $rankData['year'],
                                    'ranking' => $rankData['rank'],
                                ]);
                                }
                            else{
                                Ranking::create([
                                'university_id' => $universities->id,
                                'publisher_id' => $publisherId,
                                'ranking' => $rankData['rank'],
                                'years' => $rankData['year'],
                            ]);
                            } 
                        } 
                        
                        else {
                            $count = Ranking::where('university_id' ,$universities->id)
                                    ->where('publisher_id', $publisherId)
                                    ->where('years', $year)->get();
                            if(count($count) > 0){
                                Ranking::where('id',$count[0]->id)->update([
                                    'publisher_id' => $publisherId,
                                    'years' =>  $year,
                                    'ranking' => $rankData['rank'],
                                ]);
                            }
                            else{
                                Ranking::create([
                                    'university_id' => $universities->id,
                                    'publisher_id' => $publisherId,
                                    'ranking' => $rankData['rank'],
                                    'years' => $year,
                                ]);
                            }    
                        }
                    }
                }
                // city save
                $cities = City::find($request->city_id);
                $cities->overview = $request['city_overview'];
                $cities->accmmidation = $request['city_accmmidation'];
                $cities->meals = $request['city_meals'];
                $cities->earings = $request['city_earings'];
                $cities->local_travel = $request['city_local_travel'];
                $cities->save();
                flashSuccess(__('university_created_successfully'));
                // $universities->cities()->create($cities);
                return redirect()->route('university.edit', $universities->id);
            }
        } catch (\Throwable $th) {
            return redirect()->back()->with('error', config('app.debug') ? $th->getMessage() : 'Something went wrong');
        }
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        abort_if(!userCan('university.view'), 403);

        $universities = Universities::findOrFail($id);

        return view('admin.university.show', compact('universities'));
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        abort_if(!userCan('university.update'), 403);

        $data['universities'] = Universities::findOrFail($id);
        $data['countries'] = Countries::all();
        $country_url = Countries::select('url')->where('id', $data['universities']->country_id)->first();
        $data['country_url'] = null;
        if(!empty($country_url->url)){
            $data['country_url'] =  $country_url->url;
        }

        $find_state_id = null;
        if (!empty($data['universities']->city_id)) {
            $find_state_id = City::where("id", $data['universities']->city_id)->pluck('state_id')->first();
        }

        $data['states'] = State::where("country_id", $data['universities']->country_id)->get();
        $data['citys'] = City::where("id", $data['universities']->city_id)->get();
        $data['find_state_id'] = $find_state_id;

        $data['ranking'] = University::select('universities.name as university_name', 'RankingPublisher.parentPublisherName as publisher_name','RankingPublisher.id as publisher_id', 'rankings.years as year','rankings.id as ranking_id', 'rankings.ranking as rank')
                                    ->join('rankings', 'universities.id', '=', 'rankings.university_id')
                                    ->join('RankingPublisher', 'rankings.publisher_id', '=', 'RankingPublisher.id')
                                    ->where('universities.id', $id)
                                    ->get();
                                    // ->first();
        $data['publishers'] = RankingPublisher::select('parentPublisherName', 'id')->get();
                             
                                    
        return view('admin.university.edit', $data);
    }

    public function update(UniversityUpdateFormRequest $request, Universities $university)
    {
        $country = Countries::select('name', 'url', 'id')->where('id', $request->country_id)->first();
        $countryName = strtolower($country->name);

        $ranks = $request->input('Ranking', []);
        foreach ($ranks as $rankData) {
            $publisherId = $rankData['publisher_id'];
            $rankingId = isset($rankData['ranking_id']) ? $rankData['ranking_id'] : null;
            $year = $rankData['year'];
            if($year != NUll && $year != "" && $rankData['rank'] != NUll && $rankData['rank'] != ""){
            $existingRank = $rankingId
            ? Ranking::where('id', $rankingId)
                      ->where('university_id', $university->id)
                      ->first()
            : null;
            if ($existingRank) {                           
                $count1 = Ranking::where('university_id' ,$university->id)
                        ->where('publisher_id', $publisherId)
                        ->where('years', $year)->get();
                       if(count($count1) > 0){
                        $existingRank->update([
                             'publisher_id' => $publisherId,
                             'years'   =>  $rankData['year'],
                             'ranking' => $rankData['rank'],
                          ]);
                        }
                    else{
                         Ranking::create([
                        'university_id' => $university->id,
                        'publisher_id' => $publisherId,
                        'ranking' => $rankData['rank'],
                        'years' => $rankData['year'],
                     ]);
                    } 
                } 
                
                else {
                $count = Ranking::where('university_id' ,$university->id)
                        ->where('publisher_id', $publisherId)
                        ->where('years', $year)->get();
                if(count($count) > 0){
                    Ranking::where('id',$count[0]->id)->update([
                        'publisher_id' => $publisherId,
                        'years' =>  $year,
                        'ranking' => $rankData['rank'],
                    ]);
                }
                else{
                    Ranking::create([
                        'university_id' => $university->id,
                        'publisher_id' => $publisherId,
                        'ranking' => $rankData['rank'],
                        'years' => $year,
                    ]);
                }    
            }
         }
        }
        
        abort_if(!userCan('university.update'), 403);
        $existingImagesUni = !empty($university['images']) ? json_decode($university['images'], true) : [];
        if($country->id === 79){
            $folder = '/university/' . $request['url'];
        } else {
            if($countryName === 'united states')
                $folder = '/university/us/' . $request['url'];
            else
            $folder = '/university/'. $countryName .'/' . $request['url'];
        }

        try {
            if (!empty($request->input('newImgs'))) {
                $existingImages = [];

                foreach ($request->input('newImgs') as $newImageData) {
                    $appUrl = env('APP_URL');
                    $parsedUrl = parse_url($newImageData['mediaUrl']);

                    // Check if the URL is valid and contains a path
                    if ($parsedUrl && isset($parsedUrl['path'])) {
                        // Get the path component
                        $path = $parsedUrl['path'];

                        // Remove the base application URL from the path
                        $urlSegment = ltrim(str_replace($appUrl, '', $path), '/');
                    } else {
                        // Invalid URL, skip this iteration
                        continue;
                    }

                    $newMediaUrlParts = explode('/', $newImageData['mediaUrl']);
                    $newFilename = end($newMediaUrlParts);
                    $newimg = [];
                    $newimg['mediaUrl'] = $folder . '/' . $newFilename;
                    $newimg['mediaTitle'] = !empty($newImageData['mediaTitle']) ? $newImageData['mediaTitle'] : "_images";
                    $newimg['altText'] = !empty($newImageData['altText']) ? $newImageData['altText'] : "images";
                    $newimg['overview_img'] = !empty($newImageData['overview_img'])  ? $newImageData['overview_img'] : 0;
                    $newimg['study_img'] = !empty($newImageData['study_img'])  ? $newImageData['study_img'] : 0;
                    $newimg['university_img'] = !empty($newImageData['university_img'])  ? $newImageData['university_img'] : 0;

                    // Check if the URL has changed
                    $imageExists = false;
                    foreach ($existingImagesUni as $existingImage) {
                        if ($existingImage['mediaUrl'] === $newimg['mediaUrl']) {
                            $imageExists = true;
                            break;
                        }
                    }

                    // Update the image only if the URL has changed
                    if (!$imageExists) {
                        $existingImages[] = $newimg;
                    } else {
                        // Keep the existing data if the URL hasn't changed
                        $existingImages[] = $existingImage;
                    }
                }

                $university['images'] = json_encode($existingImages);
            }
            
            if (!empty($request->input('study_point'))) {
                $studyPoints = [];  
                foreach ($request->input('study_point') as $studyPointData) {
                   
                    $studyPoint = [];
                    $studyPoint['header'] = !empty($studyPointData['header']) ? $studyPointData['header'] : NULL;
                    $studyPoint['content'] = !empty($studyPointData['content']) ? $studyPointData['content'] : NULL;
                    $studyPoints[] = $studyPoint;
                }

                $university['study_points'] = json_encode($studyPoints);
            }

            if (!empty($request->input('overview_service_block'))) {
                $overview_service_blocks = [];
                foreach ($request->input('overview_service_block') as $overviewServiceBlockData) {
                   
                    $overview_service_block = [];
                    $overview_service_block['header'] = !empty($overviewServiceBlockData['header']) ? $overviewServiceBlockData['header'] : NULL;
                    $overview_service_block['content'] = !empty($overviewServiceBlockData['content']) ? $overviewServiceBlockData['content'] : NULL;
                    $overview_service_blocks[] = $overview_service_block;
                }

                $university['overview_service_blocks'] = json_encode($overview_service_blocks);
            }

    


            if (!empty($request->input('img'))) {
                foreach ($request->input('img') as $imageData) {
                    if (isset($imageData['mediaUrl'])) {
                        $mediaUrl = $imageData['mediaUrl'];
            
                        if (is_string($mediaUrl)) {
                            // Check if the image already exists by comparing with existing URLs
                            $imageExists = false;
                            foreach ($existingImagesUni as $existingImage) {
                                if ($existingImage['mediaUrl'] === $mediaUrl) {
                                    $imageExists = true;
                                    $existingImages[] = $existingImage; // Use the existing image URL
                                    break;
                                }
                            }
            
                            if (!$imageExists) {
                                $fileContent = base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $mediaUrl));
                                // Generate a unique filename
                                $filename = time() . '_' . uniqid() . '.png';
                                // Determine the file path
                                $filePath = $folder . '/' . $filename;
                                // Write the file content to the specified path
                                $result = Storage::disk('public')->put($filePath, $fileContent);
                                
                                if ($result !== false) {
                                    $img = [];
                                    $img['mediaUrl'] = $folder . '/' . $filename;
                                    $img['mediaTitle'] = !empty($imageData['mediaTitles']) ? $imageData['mediaTitles'] : "_images";
                                    $img['altText'] = !empty($imageData['altTexts']) ? $imageData['altTexts'] : "images";
                                    $img['status'] = !empty($imageData['status'])  ? $imageData['status'] : 0;
                                    $img['overview_img'] = !empty($imageData['overview_img'])  ? $imageData['overview_img'] : 0;
                                    $img['study_img'] = !empty($imageData['study_img'])  ? $imageData['study_img'] : 0;
                                    $img['university_img'] = !empty($imageData['university_img'])  ? $imageData['university_img'] : 0;
                                    $existingImages[] = $img;
                                }
                            }
                        }
                    }
                }
            
                $university['images'] = json_encode($existingImages);
            }
            



            $file_logo = ($request->file('logo')) ? $request->file('logo') : NULL;
            $file_study_point_image = ($request->file('study_point_image')) ? $request->file('study_point_image') : NULL;
            $file_university_icon = ($request->file('university_icon')) ? $request->file('university_icon') : NULL;
            $file_brochure = ($request->file('brochure')) ? $request->file('brochure') : NULL;

            if (!empty(isset($request['headerImageDesktop']))) {
                $file_headerImageDesktop = $request->file('headerImageDesktop');
            }
            if (!empty(isset($request['headerImageMobile']))) {
                $file_headerImageMobile = $request->file('headerImageMobile');
            }

            $request = $request->all();

            if (!empty($file_logo)) {
                if ($university['logo'] && Storage::disk('public')->exists($university['logo'])) {
                    Storage::disk('public')->delete($university['logo']);
                }
                $path_logo = Storage::disk('public')->put($folder, $file_logo);
                $university['logo'] = $path_logo;
            }

            if (!empty($file_study_point_image)) {
                if ($university['study_point_image'] && Storage::disk('public')->exists($university['study_point_image'])) {
                    Storage::disk('public')->delete($university['study_point_image']);
                }
                $path_study_point_image = Storage::disk('public')->put($folder, $file_study_point_image);
                $university['study_point_image'] = $path_study_point_image;
            }

            if (!empty($file_university_icon)) {
                if ($university['university_icon'] && Storage::disk('public')->exists($university['university_icon'])) {
                    Storage::disk('public')->delete($university['university_icon']);
                }
                $file_university_icon = Storage::disk('public')->put($folder, $file_university_icon);
                $university['university_icon'] = $file_university_icon;
            }

            if (!empty($file_brochure)) {
                if ($university['brochure'] && Storage::disk('public')->exists($university['brochure'])) {
                    Storage::disk('public')->delete($university['brochure']);
                }
                $path_brochure = Storage::disk('public')->put($folder, $file_brochure);
                $university['brochure'] = $path_brochure;
            }

            if (!empty(isset($file_headerImageDesktop))) {
                if ($university['headerImageDesktop'] && Storage::disk('public')->exists($university['headerImageDesktop'])) {
                    Storage::disk('public')->delete($university['headerImageDesktop']);
                }
                $path_headerImageDesktop = Storage::disk('public')->put($folder, $file_headerImageDesktop);
                $university['headerImageDesktop'] = $path_headerImageDesktop;
            }


            if (!empty(isset($file_headerImageMobile))) {
                if ($university['headerImageMobile'] && Storage::disk('public')->exists($university['headerImageMobile'])) {
                    Storage::disk('public')->delete($university['headerImageMobile']);
                }
                $path_headerImageMobile = Storage::disk('public')->put($folder, $file_headerImageMobile);
                $university['headerImageMobile'] = $path_headerImageMobile;
            }


            ////// if(!empty($pathImages)){

            //  //     foreach($pathImages as $path_images){
            //  //        
            //  //         $img['mediaUrl']= $path_images;
            //  //         $img['mediaTitle']="_images";
            // //         $img['altText']='images';

            ////         $finalArrImages[]=$img;
            // //     }
            // //     $university['images'] = json_encode($finalArrImages);
            // // }else{
            // //     $university['images'] = $university['images'];
            //// }


            if (!empty($request['videos']) && !empty($request['videos'][0])) {
                $finalArr = [];

                foreach ($request['videos'] as $video) {
                    $newVideoUrl = str_replace('watch?v=', 'embed/', $video);
                    if (is_string($newVideoUrl)) {
                        $videos['mediaUrl'] = $newVideoUrl;
                        $videos['mediaTitle'] = "_video";
                        $videos['altText'] = 'images';
                        $videoKeyArray = explode('/', $newVideoUrl);
                        $videos['videoKey'] = end($videoKeyArray);
                        $videos['thumbUrl'] = ' https://i.ytimg.com/vi/' . end($videoKeyArray) . '/hqdefault.jpg';
                        $finalArr[] = $videos;
                    }
                }

                $university['videos'] = json_encode($finalArr);
                unset($university['social_media']);
            } else {
                unset($university['videos']);
                unset($university['social_media']);
            }


            if (!empty($request['admission_dates'])) {
                $admission_dates_dateTime = Carbon::parse($request['admission_dates']);
                $university['admission_dates'] = $admission_dates_dateTime->format('Y-m-d H:i:s');
            }


            $new_on_campus_accommodation = [];
            $new_on_campus_accommodation['details'] = (!empty($request['on_campus_accommodation_details'])) ? $request['on_campus_accommodation_details'] : null;
            $new_on_campus_accommodation['website'] = (!empty($request['on_campus_accommodation_website'])) ? $request['on_campus_accommodation_website'] : null;
            $new_on_campus_accommodation['livingExpenseDetails'] = (!empty($request['on_campus_accommodation_livingExpenseDetails'])) ? $request['on_campus_accommodation_livingExpenseDetails'] : null;
            $new_on_campus_accommodation['livingExpenseUrl'] = (!empty($request['on_campus_accommodation_livingExpenseUrl'])) ? $request['on_campus_accommodation_livingExpenseUrl'] : null;
            $new_on_campus_accommodation['ugDescription'] = (!empty($request['on_campus_accommodation_ugDescription'])) ? $request['on_campus_accommodation_ugDescription'] : null;
            $new_on_campus_accommodation['pgDescription'] = (!empty($request['on_campus_accommodation_pgDescription'])) ? $request['on_campus_accommodation_pgDescription'] : null;
            if (!empty($new_on_campus_accommodation)) {
                $university['on_campus_accommodation'] = json_encode($new_on_campus_accommodation);
            }


            $new_off_campus_accommodation = [];
            $new_off_campus_accommodation['description'] = (!empty($request['off_campus_accommodation_description'])) ? $request['off_campus_accommodation_description'] : null;
            $new_off_campus_accommodation['links'] = (!empty($request['off_campus_accommodation_links'])) ? $request['off_campus_accommodation_links'] : null;

            if (!empty($new_off_campus_accommodation['links'])) {
                foreach ($new_off_campus_accommodation['links'] as $key => $link) {
                    $new_off_campus_accommodation['links'][$key] = (!empty($link)) ? $link : null;
                }
            }

            if (!empty($new_off_campus_accommodation)) {
                $university['off_campus_accommodation'] = json_encode($new_off_campus_accommodation);
            }
                                                         
            $university['recommended'] = isset($request['recommended']) ? 1 : 0;
            $university['overview_services'] = $request['overview_services'];
            $university['overview_services'] = $request['overview_services'];
            $university['accommodation_desc'] = $request['accommodation_desc'];
            $university['calc_living_exp_desc'] = $request['calc_living_exp_desc'];
            $university['name'] = $request['name'];
            $university['url'] = $request['url'];
            $university['country_id'] = $request['country_id'];
            $university['meta_title'] = $request['meta_title'];
            $university['meta_keywords'] = $request['meta_keywords'];
            $university['meta_description'] = $request['meta_description'];
            $university['short_description'] = $request['short_description'];
            $university['entrance_requirement'] = $request['entrance_requirement'];
            $university['phone'] = $request['phone'];
            $university['email'] = $request['email'];
            $university['website'] = $request['website'];
            $university['address'] = $request['address'];
            $university['map_link'] = $request['map_link'];
            $university['wikipedia_url'] = $request['wikipedia_url'];
            $university['population_of_city'] = $request['population_of_city'];
            $university['size_of_city'] = $request['size_of_city'];
            $university['aboutCollege'] = $request['aboutCollege'];
            $university['aboutCollegePlacement'] = $request['aboutCollegePlacement'];

           
            // $university['on_campus_accommodation'] = $request['on_campus_accommodation'];
            // $university['off_campus_accommodation'] = $request['off_campus_accommodation'];
            // $university['admissionRequirement'] = $request['admissionRequirement']; 
            // $university['campuses'] = $request['campuses'];
            //  $university['ranking_data'] = '$request['ranking_data']';
            // $university['sectionwiseData'] = $request['sectionwiseData'];
            // $university['entryCriteria'] = $request['entryCriteria'];
            // $university['courseWidget'] = $request['courseWidget'];

            // $university['feesTable'] = $request['feesTable'];
            $university['students'] = $request['students']; 
            $university['gallery_desc'] = $request['gallery_desc'];
            $university['faq_desc'] = $request['faq_desc'];
            $university['faq_dream_university_desc'] = $request['faq_dream_university_desc'];
            $university['qs_ranking'] = $request['qs_ranking'];
            $university['reviews'] = $request['reviews'];
            $university['establishment'] = $request['establishment'];
            $university['male_female_ratio'] = $request['male_female_ratio'];
            $university['known_as'] = $request['known_as'];
            $university['endowments'] = $request['endowments'];
            $university['international_students'] = $request['international_students'];
            $university['ug_pg_course_ratio'] = $request['ug_pg_course_ratio'];
            $university['total_campuses'] = $request['total_campuses'];
            $university['status'] = $request['status'];
            $university['international_studentsContent'] = $request['international_studentsContent'];
            $university['scholarships_content'] = $request['scholarships_content'];
            $university['conclusion'] = $request['conclusion'];
            $university['rankings_short_desc'] = $request['rankings_short_desc'];
            $university['admission_short_desc'] = $request['admission_short_desc'];
            $university['course_overview'] = $request['course_overview'];
            $university['admission_overview'] = $request['admission_overview'];
            $university['date_deadline_overview'] = $request['date_deadline_overview'];
            $university['ranking_overview'] = $request['ranking_overview'];
            $university['scholarships_overview'] = $request['scholarships_overview'];

            $university['admission_documents'] = $request['admission_documents'];
            $university['admission_application_fees'] = $request['admission_application_fees'];
            $university['admission_intake_season'] = $request['admission_intake_season'];

            $university['display_date'] = $request['display_date'];
            // $study_details = implode(',',$request['study_detail']);
            $university['study_detail'] = $request['study_detail'];
            // $university['created_at'] = $request['created_at'];
            $university['modified_by'] = Auth()->user()->id;

                
            if(empty($university['created_by'])){
                $university['created_by'] = Auth()->user()->id;
            }

            $university['robots'] = $request['robots'];

            if (!empty($request['recruiter_details'])) {
                $university['recruiter_details'] = $request['recruiter_details'];
                $recruiters = explode(' | ', $request['recruiter_details']);
                $university['recruiters'] = count($recruiters);
            } else {
                $university['recruiter_details'] = NULL;
                $university['recruiters'] = NULL;
            }

            if(!empty($request['english_lpt'])){
                $english_lpt = json_encode($request['english_lpt']);
                $university['english_lpt'] = $english_lpt;
            }

            $university['sorting'] = $request['sorting'];
            // $university['data_source_id']=1;
            // $university['sid']=1;
            $university['city_id'] = $request['city_id'];

            $university->update();

            if (!empty($university['city_id'])  && !empty($university->cities)) {
                $university->cities['overview'] = $request['city_overview'];
                $university->cities['accmmidation'] = $request['city_accmmidation'];
                $university->cities['meals'] = $request['city_meals'];
                $university->cities['earings'] = $request['city_earings'];
                $university->cities['local_travel'] = $request['city_local_travel'];
                $university->cities->timestamps = false;
                $university->cities->update();
            }

            flashSuccess(__('university_updated_successfully'));
            return redirect()->route('university.edit', $university->id);
        } catch (\Throwable $th) {
            return redirect()->back()->withInput()->with('error', config('app.debug') ? $th->getMessage() : 'Something went wrong');
        }
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */

     public function deleteRanking(request $request){
        $rankId = $request->input('id');
        $ranking = Ranking::find($rankId);
    
        if ($ranking) {
            $ranking->delete();
            return response()->json(['status' => 1]);
        } else {
            return response()->json(['status' => 0]);
        }
        return back();
     }



    public function destroy($id)
    {

        abort_if(!userCan('university.delete'), 403);

        $universities = Universities::findOrFail($id);

        if (!empty(isset($universities->logo))) {
            deleteFile($universities->logo);
        }
        // if(!empty(isset($universities->images))){
        //     deleteFile($universities->images);
        // }
        if (!empty(isset($universities->headerImageMobile))) {
            deleteFile($universities->headerImageMobile);
        }
        if (!empty(isset($universities->headerImageMobile))) {
            deleteFile($universities->headerImageMobile);
        }

        $universities->delete();

        flashSuccess(__('university_deleted_successfully'));
        return back();
    }

    public function getYears(Request $request)
    {
        $data = $request->all();
        if(!empty($data['publisher_id'])){
        $years = University::select('years')
            ->from('rankings')       
            ->where('university_id', $data['university_id'])
            ->where('publisher_id', $data['publisher_id'])
            ->get();
        return response()->json(['years' => $years]);
        }
    
    }



    public function getRankings(Request $request)
    {
        $data = $request->all();
        $rankings = University::select('rankings.ranking as rank')
            ->join('rankings', 'universities.id', '=', 'rankings.university_id')
            ->join('RankingPublisher', 'rankings.publisher_id', '=', 'RankingPublisher.id')
            ->where('universities.id', $data['university_id'])
            ->where('rankings.publisher_id', $data['publisher_id'])
            ->where('rankings.years', $data['year'])
            ->get();
        return response()->json(['rankings' => $rankings]);
    
    
    }

    public function getStateList(Request $request)
    {
        $data['states'] = State::where("country_id", $request->country_id)
            ->get(["name", "id"]);
        return response()->json($data);
    }

    public function getCityList(Request $request)
    {

        $data['cities'] = City::where("state_id", $request->state_id)
            ->get(["name", "id"]);
        return response()->json($data);
    }

    // public function statusChange(Request $request)
    // {
    //     $user = User::findOrFail($request->id);

    //     $user->update(['status' => $request->status]);

    //     if ($request->status == 1) {
    //         return responseSuccess(__('company_activated_successfully'));
    //     } else {
    //         return responseSuccess(__('company_deactivated_successfully'));
    //     }
    // }

    // public function verificationChange(Request $request)
    // {
    //     $user = User::findOrFail($request->id);

    //     if ($request->status) {
    //         $user->update(['email_verified_at' => now()]);
    //         $message = __('email_verified_successfully');
    //     } else {
    //         $user->update(['email_verified_at' => null]);
    //         $message = __('email_unverified_successfully');
    //     }

    //     return responseSuccess($message);
    // }

}
