<?php namespace App\Libs\Composers;

use TeamMemberGroup;
use TeamTemplateConfiguration;

class TeamBlockComposer
{
    public function compose($view)
    {
        $block = $view->block;

        $block->load(['teamMemberGroups1' => function ($query) {
            $query->full()
                ->with(['teamMembers' => function ($query) {
                    $query->full()->orderBy('website_objects.position');
                }])
                ->orderBy('block_team_group_1.position');
        }, 'teamMemberGroups2' => function ($query) {
            $query->full()
                ->with(['teamMembers' => function ($query) {
                    $query->full()->orderBy('website_objects.position');
                }])
                ->orderBy('block_team_group_2.position');
        }, 'teamMemberGroups3' => function ($query) {
            $query->full()
                ->with(['teamMembers' => function ($query) {
                    $query->full()->orderBy('website_objects.position');
                }])
                ->orderBy('block_team_group_3.position');
        }]);

        $members1 = $this->_setTeamMembers($block->teamMemberGroups1, $block->show_team_group_labels);
        $members2 = $this->_setTeamMembers($block->teamMemberGroups2, $block->show_team_group_labels);
        $members3 = $this->_setTeamMembers($block->teamMemberGroups3, $block->show_team_group_labels);

        $slideCount = max(sizeof($members1), sizeof($members2), sizeof($members3));

        $view->with(array(
            'members1' => $members1,
            'members2' => $members2,
            'members3' => $members3,
            'slideCount' => $slideCount
        ));
    }

    private function _setTeamMembers($groups, $showGroupLabel = false)
    {
        $members = [];
        $groupLabel = "";
        foreach($groups as $group) {
            foreach($group->teamMembers as $member) {
                if($showGroupLabel && $groupLabel != $group->title) {
                    $member->groupLabel = $group->title;
                    $member->groupLabelColor = $group->tag_color;
                    $groupLabel = $group->title;
                }
                $members[] = $member;
            }
        }
        return $members;
    }
}
