ldc-boutique-cnc-sable/routes/breadcrumbs-bo.php
2026-10-27 09:58:51 +01:00

219 lines
8.6 KiB
PHP

<?php
declare(strict_types=1);
use App\Dto\DiscountDto;
use App\Dto\PageDto;
use App\Dto\PickupExceptionDto;
use App\Dto\ProductDto;
use App\Dto\RangeDto;
use App\Dto\ShopDto;
use App\Dto\SlideDto;
use App\Models\Discount;
use App\Models\Faq;
use App\Models\Page;
use App\Models\PickupException;
use App\Models\Product;
use App\Models\Range;
use App\Models\Shop;
use App\Models\Slide;
use App\Models\Tag;
use Diglactic\Breadcrumbs\Breadcrumbs;
use Diglactic\Breadcrumbs\Generator;
use Illuminate\Support\Str;
$creationLabel = Str::ucfirst(trans('crud.actions.create'));
$editionLabel = Str::ucfirst(trans('crud.actions.edit'));
$viewLabel = Str::ucfirst(trans('crud.actions.view'));
// * Root
Breadcrumbs::for('bo.dashboard', function (Generator $trail): void {
$trail->push(trans('Dashboard'), route('bo.dashboard'));
});
// * Slides
Breadcrumbs::for('bo.slides.index', function (Generator $trail): void {
$trail->parent('bo.dashboard');
$trail->push(Str::ucfirst(trans_choice('models.classes.slides', \INF)), route('bo.slides.index'));
});
Breadcrumbs::for('bo.slides.create', function (Generator $trail) use ($creationLabel): void {
$trail->parent('bo.slides.index');
$trail->push($creationLabel);
});
Breadcrumbs::for('bo.slides.edit', function (Generator $trail, Slide | SlideDto $slide) use ($editionLabel): void {
$trail->parent('bo.slides.index');
$trail->push($editionLabel, route('bo.slides.edit', $slide));
});
// * Tags
Breadcrumbs::for('bo.tags.index', function (Generator $trail): void {
$trail->parent('bo.dashboard');
$trail->push(Str::ucfirst(trans_choice('models.classes.tags', \INF)), route('bo.tags.index'));
});
Breadcrumbs::for('bo.tags.create', function (Generator $trail) use ($creationLabel): void {
$trail->parent('bo.tags.index');
$trail->push($creationLabel);
});
Breadcrumbs::for('bo.tags.edit', function (Generator $trail, Tag $tag) use ($editionLabel): void {
$trail->parent('bo.tags.index');
$trail->push($editionLabel, route('bo.tags.edit', $tag));
});
// * Ranges
Breadcrumbs::for('bo.ranges.index', function (Generator $trail): void {
$trail->parent('bo.dashboard');
$trail->push(Str::ucfirst(trans_choice('models.classes.ranges', \INF)), route('bo.ranges.index'));
});
Breadcrumbs::for('bo.ranges.create', function (Generator $trail) use ($creationLabel): void {
$trail->parent('bo.ranges.index');
$trail->push($creationLabel);
});
Breadcrumbs::for('bo.ranges.edit', function (Generator $trail, Range | RangeDto $range) use ($editionLabel): void {
$trail->parent('bo.ranges.index');
$trail->push($editionLabel, route('bo.ranges.edit', $range));
});
// * Static Pages
Breadcrumbs::for('bo.pages.index', function (Generator $trail): void {
$trail->parent('bo.dashboard');
$trail->push(Str::ucfirst(trans_choice('models.classes.pages', \INF)));
});
Breadcrumbs::for('bo.pages.create', function (Generator $trail) use ($creationLabel): void {
$trail->parent('bo.pages.index');
$trail->push($creationLabel);
});
Breadcrumbs::for('bo.pages.edit', function (Generator $trail, Page | PageDto $page) use ($editionLabel): void {
$trail->parent('bo.pages.index');
$trail->push("{$editionLabel} {$page->slug->label()}", route('bo.pages.edit', $page->slug->value()));
});
// * Faqs
Breadcrumbs::for('bo.faqs.index', function (Generator $trail): void {
$trail->parent('bo.pages.index');
$trail->push(Str::ucfirst(trans_choice('models.classes.faqs', \INF)), route('bo.faqs.index'));
});
Breadcrumbs::for('bo.faqs.create', function (Generator $trail) use ($creationLabel): void {
$trail->parent('bo.faqs.index');
$trail->push($creationLabel);
});
Breadcrumbs::for('bo.faqs.edit', function (Generator $trail, Faq $faq) use ($editionLabel): void {
$trail->parent('bo.faqs.index');
$trail->push($editionLabel, route('bo.faqs.edit', $faq));
});
// * Products
Breadcrumbs::for('bo.products.index', function (Generator $trail): void {
$trail->parent('bo.dashboard');
$trail->push(Str::ucfirst(trans_choice('models.classes.products', \INF)), route('bo.products.index'));
});
Breadcrumbs::for('bo.products.create', function (Generator $trail) use ($creationLabel): void {
$trail->parent('bo.products.index');
$trail->push($creationLabel);
});
Breadcrumbs::for('bo.products.edit', function (Generator $trail, Product | ProductDto $product) use ($editionLabel): void {
$trail->parent('bo.products.index');
$trail->push($editionLabel, route('bo.products.edit', $product));
});
// * Product Incos
Breadcrumbs::for('bo.products.incos.create', function (Generator $trail, Product | ProductDto $product) use ($creationLabel): void {
$trail->parent('bo.products.edit', $product);
$trail->push(Str::ucfirst(trans_choice('models.classes.product_incos', 1)));
$trail->push($creationLabel);
});
Breadcrumbs::for('bo.products.incos.edit', function (Generator $trail, Product | ProductDto $product) use ($editionLabel): void {
$trail->parent('bo.products.edit', $product);
$trail->push(Str::ucfirst(trans_choice('models.classes.product_incos', 1)));
$trail->push($editionLabel);
});
// * Merchandising
Breadcrumbs::for('bo.merch', function (Generator $trail): void {
$trail->parent('bo.dashboard');
$trail->push(trans('Merchandising'));
});
Breadcrumbs::for('bo.merch.starred', function (Generator $trail): void {
$trail->parent('bo.merch');
$trail->push(trans('crud.helpers.starred'), route('bo.merch.starred'));
});
Breadcrumbs::for('bo.discounts.index', function (Generator $trail): void {
$trail->parent('bo.merch');
$trail->push(Str::ucfirst(trans_choice('models.classes.discounts', \INF)), route('bo.discounts.index'));
});
Breadcrumbs::for('bo.discounts.create', function (Generator $trail) use ($creationLabel): void {
$trail->parent('bo.discounts.index');
$trail->push($creationLabel);
});
Breadcrumbs::for('bo.discounts.edit', function (Generator $trail, Discount | DiscountDto $discount) use ($editionLabel): void {
$trail->parent('bo.discounts.index');
$trail->push($editionLabel, route('bo.discounts.edit', $discount));
});
// * Pickup points
Breadcrumbs::for('bo.shops.index', function (Generator $trail): void {
$trail->parent('bo.dashboard');
$trail->push(Str::ucfirst(trans_choice('models.classes.shops', \INF)), route('bo.shops.index'));
});
Breadcrumbs::for('bo.shops.create', function (Generator $trail) use ($creationLabel): void {
$trail->parent('bo.shops.index');
$trail->push($creationLabel);
});
Breadcrumbs::for('bo.shops.edit', function (Generator $trail, Shop | ShopDto $shop) use ($editionLabel): void {
$trail->parent('bo.shops.index');
$trail->push($editionLabel, route('bo.shops.edit', $shop));
});
Breadcrumbs::for('bo.shops.pickup-exceptions.edit', function (Generator $trail, Shop | ShopDto $shop): void {
$trail->parent('bo.shops.edit', $shop);
$trail->push(
Str::ucfirst(trans_choice('models.classes.pickup-exceptions', \INF)),
route('bo.pickup-exceptions.index')
);
});
// * Pickup exceptions
Breadcrumbs::for('bo.pickup-exceptions.index', function (Generator $trail): void {
$trail->parent('bo.dashboard');
$trail->push(
Str::ucfirst(trans_choice('models.classes.pickup-exceptions', \INF)),
route('bo.pickup-exceptions.index')
);
});
Breadcrumbs::for('bo.pickup-exceptions.create', function (Generator $trail) use ($creationLabel): void {
$trail->parent('bo.shops.index');
$trail->push($creationLabel);
});
Breadcrumbs::for(
'bo.pickup-exceptions.edit',
function (Generator $trail, PickupException | PickupExceptionDto $pickupException) use ($editionLabel): void {
$trail->parent('bo.pickup-exceptions.index');
$trail->push($editionLabel, route('bo.pickup-exceptions.edit', $pickupException));
}
);
// * Orders
Breadcrumbs::for('bo.orders.index', function (Generator $trail): void {
$trail->parent('bo.dashboard');
$trail->push(
Str::ucfirst(trans_choice('models.classes.orders', \INF)),
route('bo.orders.index')
);
});
Breadcrumbs::for('bo.orders.today', function (Generator $trail): void {
$trail->parent('bo.orders.index');
$trail->push(trans('Today\'s Orders'));
});
Breadcrumbs::for('bo.orders.show', function (Generator $trail) use ($viewLabel): void {
$trail->parent('bo.orders.index');
$trail->push($viewLabel);
});
// * Settings
Breadcrumbs::for('bo.settings.index', function (Generator $trail): void {
$trail->parent('bo.dashboard');
$trail->push(trans('Settings'));
});
Breadcrumbs::for('bo.settings.edit', function (Generator $trail): void {
$trail->parent('bo.dashboard');
$trail->push(__('Employee sites'), route('bo.settings.edit'));
});