<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Modules\Faq\Entities\Faq;

class Universities extends Model
{
    use HasFactory;
    // protected $connection = 'study_data';
    // protected $table = 'universities1';
    protected $fillable = [
        'name', 'country_id', 'meta_title', 'meta_description', 'meta_keywords', 'logo', 'images', 'videos', 'website', 'phone', 'email', 'address', 'size_of_city', 'population_of_city', 'wikipedia_url', 'map_link', 'data_source_id', 'status', 'on_campus_accommodation', 'off_campus_accommodation', 'scholarships', 'created', 'modified', 'url', 'parent_id', 'type', 'aboutCollege', 'short_description', 'aboutCollegePlacement', 'headerImageDesktop', 'headerImageMobile', 'admissionRequirement', 'ranking_data', 'campuses', 'sectionwiseData', 'entryCriteria', 'feesTable', 'courseWidget', 'sid', 'city_id', 'admission_dates',
        'students', 'reviews', 'recruiters', 'establishment', 'male_female_ratio', 'known_as', 'endowments', 'international_students', 'ug_pg_course_ratio', 'total_campuses add', 'sorting', 'brochure', 'recruiter_details', 'university_icon', 'scholarships_content', 'scholarships_overview','ranking_overview',
        'date_deadline_overview','admission_overview','course_overview','rankings_short_desc','admission_short_desc','entrance_requirement','conclusion','international_studentsContent','total_campuses','links','display_date','created_date','created_by','modified_by','robots', 'admission_documents', 'admission_application_fees', 'admission_intake_season','created_at','qs_ranking','study_detail','study_points','study_point_image','faq_desc','faq_dream_university_desc','gallery_desc','accommodation_desc','calc_living_exp_desc','overview_services','overview_service_blocks'
    ];



    protected $appends = ['logo_url', 'university_icon_url', 'images_urls', 'images_url', 'image_desktop_url', 'image_mobile_url'];


    
    
    public function scopeSorting($query)
    {
        return $query->orderByRaw("CASE WHEN sorting IS NULL THEN 1 ELSE 0 END, sorting");
    }    
    public function getLogoUrlAttribute()
    {
        if (!$this->logo) {
            return asset('backend/image/default.png');
        }

        return asset($this->logo);
    }

    public function getUniversityIconUrlAttribute()
    {
        if (!$this->university_icon) {
            return asset('backend/image/default.png');
        }

        return asset($this->university_icon);
    }



    // public function getImagesUrlAttribute()
    // {
    //     if (!$this->images) {
    //         return asset('backend/image/default.png');
    //     }

    //     return asset($this->images);
    // }

    public function getImagesUrlAttribute()
    {
        if (!$this->images) {
            return asset('backend/image/default.png');
        }

        $images = json_decode($this->images, true);

        if (isset($images[0]['mediaUrl'])) {
            return asset($images[0]['mediaUrl']);
        }

        return asset('backend/image/default.png');
    }

    // public function getImagesUrlsAttribute()
    // {
    //     if (!$this->images) {
    //         return [asset('backend/image/default.png')];
    //     }

    //     $images = json_decode($this->images, true);
    //     $imageUrls = [];

    //     foreach ($images as $image) {
    //         if (isset($image['mediaUrl'])) {
    //             $imageUrls['mediaUrl']=asset($image['mediaUrl']);
    //             $imageUrls['mediaTitle']=$image['mediaTitle'];
    //             $imageUrls['altText']=$image['altText'];
    //         }
    //     }

    //     if (empty($imageUrls)) {
    //         $imageUrls['mediaUrl'] = asset('backend/image/default.png');
    //         $imageUrls['mediaTitle']='mediaTitle';
    //         $imageUrls['altText']='altText';
    //     }

    //     return $imageUrls;
    // }

    public function getImagesUrlsAttribute()
    {
        if (!$this->images) {
            return [
                [
                    'mediaUrl' => asset('backend/image/default.png'),
                    'mediaTitle' => 'mediaTitle',
                    'altText' => 'altText'
                ]
            ];
        }

        $images = json_decode($this->images, true);
        $imageUrls = [];
        if (!empty($images)) {
            foreach ($images as $image) {
                if (isset($image['mediaUrl'])) {
                    $imageUrls[] = [
                        'mediaUrl' => asset($image['mediaUrl']),
                        'mediaTitle' => !empty($image['mediaTitle']) ? $image['mediaTitle'] : "_images",
                        'altText' => !empty($image['altText']) ? $image['altText'] : "_images",
                        'status' => !empty($image['status']) ? $image['status'] : 0
                    ];
                }
            }
        }


        if (empty($imageUrls)) {
            $imageUrls[] = [
                'mediaUrl' => asset('backend/image/default.png'),
                'mediaTitle' => 'mediaTitle',
                'altText' => 'altText',
                'altText' => 0
            ];
        }

        return $imageUrls;
    }

    public function getImageDesktopUrlAttribute()
    {
        // return asset('backend/image/default.png');
        if (!$this->headerImageDesktop) {
            return asset('backend/image/default.png');
        }

        return asset($this->headerImageDesktop);
    }

    public function getImageMobileUrlAttribute()
    {
        if (!$this->headerImageMobile) {
            return asset('backend/image/default.png');
        }
        return asset($this->headerImageMobile);
    }

    public function countries()
    {
        return $this->belongsTo(Countries::class, 'country_id');
    }

    public function cities()
    {
        return $this->belongsTo(City::class, 'city_id');
    }
    public function review()
    {
        return $this->hasMany(Review::class, 'page_id', 'id')->where('category_id', 32);
    }



    public function faq()
    {
        return $this->hasMany(\Modules\Faq\Entities\Faq::class, 'page_id', 'id')->where('category_id', 2);
    }
    public function courses()
    {
        return $this->hasMany(Course::class, 'university_id');
    }
    public function author()
    {
        return $this->belongsTo(Admin::class, 'created_by');
    }

    public function modified()
    {
        return $this->belongsTo(Admin::class, 'modified_by');
    }
}
