<?php

use App\Libs\Facades\Localization;

trait BlocksTrait
{
    public function scopeWithBlocks($query)
    {
        return $query->with(['blocks' => function($query) {
            $query->where('language_id', Localization::getActiveLocale())
                ->with(['image1', 'image1Mobile', 'projects' => function($query) {
                    $query->full()->orderBy('block_project.position', 'asc')
                        ->with(['overviewImage']);
                },  'stories' => function($query) {
                    $query->full()->orderBy('block_story.position', 'asc')
                        ->with(['image', 'storyItems']);
                }, 'blockTimelineItems' => function($query) {
                    $query->full()->orderBy('website_objects.position', 'asc')
                        ->with(['mediaItem']);
                }, 'blockAgendaItems' => function($query) {
                    $query->full()
                        ->with(['agendaSpeakers' => function($query) {
                            $query->full()->orderBy('website_objects.position', 'asc');
                        }])
                        ->orderBy('website_objects.position', 'asc');
                }, 'speakers' => function($query) {
                    $query->full()->orderBy('block_speaker.position', 'asc')
                        ->with(['image']);
                }, 'blockQuickFacts' => function($query) {
                    $query->full()->orderBy('website_objects.position', 'asc');
                }, 'blockGalleryItems' => function($query) {
                    $query->full()->orderBy('website_objects.position', 'asc');
                }, 'cards' => function($query) {
                    $query->full()->orderBy('website_objects.position', 'asc');
                }, 'teamMemberGroup' => function($query) {
                    $query->full()->with(['teamMembers' => function($query) {
                        $query->full()->orderBy('website_objects.position', 'asc');
                    }]);
                }, 'images' => function($query) {
                    $query->orderBy('block_images.position', 'asc');
                }, 'mobileImages' => function($query) {
                    $query->orderBy('block_mobile_images.position', 'asc');
                }, 'publications' => function($query) {
                    $query->full()->orderBy('block_publications.position', 'asc');
                }, 'testimonial'])
                ->orderBy('position');
        }]);
    }
}
