<?php

    namespace App\Models;

    use App\Libs\Database\Eloquent\ContentTypeModel;
    use App\Models\GenericBackoffice\Traits\LanguageSupportTrait;

    class Block extends ContentTypeModel
    {
        use LanguageSupportTrait;

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

        protected $dates = []; // dates

        protected $casts = [
            'data' => 'array',
            'block_data' => 'array',
        ];

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

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

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

        public function blockSliderQuote() {
            return $this->belongsToMany(Quote::class, 'block_quotes', 'block_id', 'quote_id')->withPivot('position')->withTimestamps();
        }

        public function blockHeroWebLinks() {
            return $this->belongsToMany(WebLink::class, 'hero_web_links', 'block_id', 'web_link_id')->withPivot('position')->withTimestamps();
        }

        public function listItems() {
            return $this->belongsToMany(ListItem::class, 'block_list_item', 'block_id', 'list_item_id')->withPivot('position')->withTimestamps();
        }

        public function blockProducts() {
            return $this->belongsToMany(Product::class, 'block_highlight_product', 'block_id', 'product_id')->withPivot('position')->withTimestamps();
        }

        public function blockProjects() {
            return $this->belongsToMany(Project::class)->withPivot('position')->withTimestamps();
        }

        public function blockEvents() {
            return $this->belongsToMany(Event::class)->withPivot('position')->withTimestamps();
        }
/*
        public function blockHighlightsKit() {
            return $this->belongsToMany(ProductShowcase::class, 'block_kit_showcases', 'block_id', 'product_showcase_id')->withPivot('position')->withTimestamps();
        }
 */
        public function versions() {
            return $this->belongsToMany(SoftwareVersion::class, 'block_software_versions', 'block_id', 'software_version_id')->withPivot('position')->withTimestamps();
        }

        public function textLoop() {
            return $this->belongsToMany(TextLoop::class, 'block_text_loops', 'block_id', 'text_loop_id')->withPivot('position')->withTimestamps();
        }

        public function blockHeroSideWebLinks() {
            return $this->belongsToMany(WebLink::class, 'hero_side_web_links', 'block_id', 'web_link_id')->withPivot('position')->withTimestamps();
        }

        public function blockWebLinks() {
            return $this->belongsToMany(WebLink::class, 'block_web_links', 'block_id', 'web_link_id')->withPivot('position')->withTimestamps();
        }

        public function blockCategories() {
            return $this->belongsToMany(Category::class)->withPivot('position')->withTimestamps();
        }
        public function blockTags() {
            return $this->belongsToMany(Tag::class)->withPivot('position')->withTimestamps();
        }

        public function blockListBoxItems() {
            return $this->belongsToMany(ListBoxItem::class, 'block_list_box_items', 'block_id', 'list_box_item_id')->withPivot('position')->withTimestamps();
        }

        public function blockTabsContainer() {
            return $this->belongsToMany(Tab::class)->withPivot('position')->withTimestamps();
        }

        public function blockLists() {
            return $this->belongsToMany(BlockList::class)->withPivot('position')->withTimestamps();
        }

        public function blockPageTabs() {
            return $this->belongsToMany(PageTab::class)->withPivot('position')->withTimestamps();
        }

        public function blockFaq() {
            return $this->belongsToMany(AccordionItem::class)->withPivot('position')->withTimestamps();
        }

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

        public function blockAddons() {
            return $this->belongsToMany(Addon::class)->withPivot('position')->withTimestamps();
        }

        public function blockTutorialCards() {
            return $this->belongsToMany(Card::class)->withPivot('position')->withTimestamps();
        }

        public function pageTab() {
            return $this->belongsToMany(PageTab::class, 'page_tab_block')->withPivot('position')->withTimestamps();
        }

        public function blockTutorialsList() {
            return $this->belongsToMany(NormalTab::class)->withPivot('position')->withTimestamps();
        }

        public function blockGeneralCards() {
            return $this->belongsToMany(GeneralCard::class)->withPivot('position')->withTimestamps();
        }
    }
