<?php

use Seka\Vzdelavanie\Models\Kniznica\Sekcia;
use Seka\Vzdelavanie\Services\SekciaService;
use Seka\Vzdelavanie\Models\Kniznica\Ucebnica;
use Seka\Vzdelavanie\Models\Kniznica\Kategoria;
use DaveJamesMiller\Breadcrumbs\Facades\Breadcrumbs;
use Seka\Vzdelavanie\Services\UcebnicaServiceInterface as UcebnicaService;
use Seka\Vzdelavanie\Services\KategoriaServiceInterface as KategoriaService;

$sekciaService = app(SekciaService::class);
$ucebnicaService = app(UcebnicaService::class);
$kategoriaService = app(KategoriaService::class);

// Vzdelavanie > Kniznica
Breadcrumbs::for('vzdelavanie.kniznica.index', function ($trail) {
    $trail->parent('vzdelavanie.index');
    $trail->push('Knižnica', route('vzdelavanie.kniznica.index'));
});

// Vzdelavanie > Kniznica > [Kategoria]
Breadcrumbs::for('vzdelavanie.kniznica.kategoria.ucebnice.index', function ($trail, $vzdKnzncKategoriaId) use ($kategoriaService) {
    /** @var Kategoria $kategoria */
    $kategoria = $kategoriaService->vratPodlaId($vzdKnzncKategoriaId);
    $trail->parent('vzdelavanie.kniznica.index');
    $trail->push($kategoria->nazov, route('vzdelavanie.kniznica.kategoria.ucebnice.index', $kategoria));
});

// Vzdelavanie > Kniznica > [Kategoria] > [Ucebny material]
Breadcrumbs::for('vzdelavanie.kniznica.ucebnica.show', function ($trail, $vzdKnzncUcbnMtrlId) use ($ucebnicaService) {
    /** @var Ucebnica $ucebnica */
    $ucebnica = $ucebnicaService->vratUcebnyText($vzdKnzncUcbnMtrlId);
    $trail->parent('vzdelavanie.kniznica.kategoria.ucebnice.index', $ucebnica->kategoria->id);
    $trail->push($ucebnica->nazov, route('vzdelavanie.kniznica.ucebnica.show', $ucebnica));
});

// Vzdelavanie > Kniznica > [Kategoria] > [Ucebny material] > [Sekcia]
Breadcrumbs::for('vzdelavanie.kniznica.ucebnica.sekcia.index', function ($trail, $vzdKnzncUcbnMtrlId) use ($ucebnicaService) {
    /** @var Ucebnica $ucebnica */
    $ucebnica = $ucebnicaService->vratUcebnyText($vzdKnzncUcbnMtrlId);

    $trail->parent('vzdelavanie.kniznica.ucebnica.show', $ucebnica->id);
});

// Vzdelavanie > Kniznica > [Kategoria] > [Ucebny material] > [Sekcia]
Breadcrumbs::for('vzdelavanie.kniznica.ucebnica.sekcia.show', function ($trail, $vzdKnzncUcbnMtrlId, $vzdKnzncSekciaId) use ($ucebnicaService, $sekciaService) {
    /** @var Ucebnica $ucebnica */
    $ucebnica = $ucebnicaService->vratUcebnyText($vzdKnzncUcbnMtrlId);
    /** @var Sekcia $sekcia */
    $sekcia = $sekciaService->vratSekciu($vzdKnzncSekciaId);
    $trail->parent('vzdelavanie.kniznica.ucebnica.show', $ucebnica->id);

    foreach ($sekcia->ancestors()->orderBy('_lft', 'asc')->get() as $ancestor) {
        $trail->push($ancestor->nazov, route('vzdelavanie.kniznica.ucebnica.sekcia.show', [$ucebnica, $ancestor]));
    }

    $trail->push($sekcia->nazov);
});
