<?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.sprava.kniznica.index', function ($trail) {
    $trail->parent('vzdelavanie.sprava.index');
    $trail->push('Knižnica', route('vzdelavanie.sprava.kniznica.index'));
});

// Vzdelavanie > Kniznica > Kategorie
Breadcrumbs::for('vzdelavanie.sprava.kniznica.kategoria.index', function ($trail) {
    $trail->parent('vzdelavanie.sprava.kniznica.index');
    $trail->push('Kategórie', route('vzdelavanie.sprava.kniznica.kategoria.index'));
});

// Vzdelavanie > Kniznica > Kategorie > Nova kategoria
Breadcrumbs::for('vzdelavanie.sprava.kniznica.kategoria.create', function ($trail) {
    $trail->parent('vzdelavanie.sprava.kniznica.index');
    $trail->push('Nová kategória');
});

// Vzdelavanie > Kniznica > Kategorie > [Kategoria] > Uprava
Breadcrumbs::for('vzdelavanie.sprava.kniznica.kategoria.edit', function ($trail, $vzdKnzncKategoriaId) use ($kategoriaService) {
    /** @var Kategoria $kategoria */
    $kategoria = $kategoriaService->vratPodlaId($vzdKnzncKategoriaId);

    $trail->parent('vzdelavanie.sprava.kniznica.index');
    $trail->push($kategoria->nazov, route('vzdelavanie.sprava.kniznica.kategoria.ucebnice.index', $kategoria));
    $trail->push('Úprava');
});

// Vzdelavanie > Kniznica > Kategorie > [Kategoria] > Ucebny material
Breadcrumbs::for('vzdelavanie.sprava.kniznica.kategoria.ucebnice.index', function ($trail, $vzdKnzncKategoriaId) use ($kategoriaService) {
    /** @var Kategoria $kategoria */
    $kategoria = $kategoriaService->vratPodlaId($vzdKnzncKategoriaId);

    $trail->parent('vzdelavanie.sprava.kniznica.index');
    $trail->push($kategoria->nazov, route('vzdelavanie.sprava.kniznica.kategoria.ucebnice.index', $kategoria));
});

// Vzdelavanie > Kniznica > Kategorie > [Kategoria] > Novy ucebny material
Breadcrumbs::for('vzdelavanie.sprava.kniznica.kategoria.ucebnice.create', function ($trail, $vzdKnzncKategoriaId) use ($kategoriaService) {
    /** @var Kategoria $kategoria */
    $kategoria = $kategoriaService->vratPodlaId($vzdKnzncKategoriaId);

    $trail->parent('vzdelavanie.sprava.kniznica.kategoria.ucebnice.index', $kategoria->id);
    $trail->push('Nový učebný meteriál');
});

// Vzdelavanie > Kniznica > Kategorie > [Kategoria] > [Ucebny material]
Breadcrumbs::for('vzdelavanie.sprava.kniznica.kategoria.ucebnice.edit', function ($trail, $vzdKnzncKategoriaId, $vzdKnzncUcbnMtrlId) use ($kategoriaService, $ucebnicaService) {
    /** @var Kategoria $kategoria */
    $kategoria = $kategoriaService->vratPodlaId($vzdKnzncKategoriaId);
    /** @var Ucebnica $ucebnica */
    $ucebnica = $ucebnicaService->vratUcebnyText($vzdKnzncUcbnMtrlId);

    $trail->parent('vzdelavanie.sprava.kniznica.kategoria.ucebnice.index', $kategoria->id);
    $trail->push($ucebnica->nazov, route('vzdelavanie.sprava.kniznica.kategoria.ucebnice.edit', [$kategoria, $ucebnica]));
    $trail->push('Úprava');
});

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

    $trail->parent('vzdelavanie.sprava.kniznica.kategoria.ucebnice.edit', $kategoria->id, $ucebnica->id);
});

// Vzdelavanie > Kniznica > Kategorie > [Kategoria] > [Ucebny material] > Nova sekcia
Breadcrumbs::for('vzdelavanie.sprava.kniznica.kategoria.ucebnice.sekcia.create', function ($trail, $vzdKnzncKategoriaId, $vzdKnzncUcbnMtrlId) use ($kategoriaService, $ucebnicaService) {
    /** @var Kategoria $kategoria */
    $kategoria = $kategoriaService->vratPodlaId($vzdKnzncKategoriaId);
    /** @var Ucebnica $ucebnica */
    $ucebnica = $ucebnicaService->vratUcebnyText($vzdKnzncUcbnMtrlId);

    $trail->parent('vzdelavanie.sprava.kniznica.kategoria.ucebnice.edit', $kategoria->id, $ucebnica->id);
    $trail->push('Nová sekcia');
});

// Vzdelavanie > Kniznica > Kategorie > [Kategoria] > [Ucebny material] > [Sekcia]
Breadcrumbs::for('vzdelavanie.sprava.kniznica.kategoria.ucebnice.sekcia.edit', function ($trail, $vzdKnzncKategoriaId, $vzdKnzncUcbnMtrlId, $vzdKnzncSekciaId) use ($kategoriaService, $ucebnicaService, $sekciaService) {
    /** @var Kategoria $kategoria */
    $kategoria = $kategoriaService->vratPodlaId($vzdKnzncKategoriaId);
    /** @var Ucebnica $ucebnica */
    $ucebnica = $ucebnicaService->vratUcebnyText($vzdKnzncUcbnMtrlId);
    /** @var Sekcia $sekcia */
    $sekcia = $sekciaService->vratSekciu($vzdKnzncSekciaId);

    $trail->parent('vzdelavanie.sprava.kniznica.kategoria.ucebnice.sekcia.index', $kategoria->id, $ucebnica->id);

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

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