<?php

    namespace App\Models;

    use App\Libs\Database\Eloquent\ContentTypeModel;
    use App\Models\GenericBackoffice\Entry;
    use App\Models\GenericBackoffice\Traits\LanguageSupportTrait;
    use Grimzy\LaravelMysqlSpatial\Eloquent\SpatialTrait;

    class Block extends ContentTypeModel
    {
        use LanguageSupportTrait;
        use SpatialTrait;

        protected $hidden = ['languages', "websites"];
        protected $with = ['languages', "websites"];

        protected $dates = []; // dates
        protected $spatialFields = ['location']; // Locations lat & longs

        protected $casts = [];

        public function slider()
        {
            return $this->belongsToMany(SliderItem::class)->withPivot('position');
        }

        public function videos()
        {
            return $this->belongsToMany(VideoItem::class)->withPivot('position');
        }

        public function imageGallery()
        {
            return $this->belongsToMany(ImageItem::class)->withPivot('position');
        }

        public function cardItems()
        {
            return $this->hasMany(CardItem::class);
        }

        public function image()
        {
            return $this->belongsTo(MediaItem::class);
        }

        public function image2()
        {
            return $this->belongsTo(MediaItem::class);
        }

        public function topic()
        {
            return $this->belongsTo(Topic::class);
        }

        public function documentType()
        {
            return $this->belongsTo(DocumentType::class);
        }

        public function imageMobile()
        {
            return $this->belongsTo(MediaItem::class);
        }

        public function document()
        {
            return $this->belongsTo(MediaItem::class);
        }

        public function video()
        {
            return $this->belongsTo(MediaItem::class);
        }

        public function timelineCards()
        {
            return $this->hasMany(TimelineCard::class);
        }

        public function textCards()
        {
            return $this->hasMany(TextCard::class);
        }

        public function teamMembers()
        {
            return $this->belongsToMany(TeamMember::class)->withPivot('position');
        }

        public function documents()
        {
            return $this->belongsToMany(Document::class)->withPivot('position');
        }

        public function accordionItems()
        {
            return $this->hasMany(AccordionItem::class);
        }

        public function trackerCategories()
        {
            return $this->hasMany(TrackerCategory::class);
        }

        public function links()
        {
            return $this->belongsToMany(Link::class)->withPivot('position');
        }

        public function page()
        {
            return $this->belongsToMany(Entry::class, 'entry_block')->withPivot('position');
        }

        public function form()
        {
            return $this->belongsTo(Form::class);
        }
    }
