@page "/tire-storage"
@implements IAsyncDisposable
@inject ITireStackService TireStackService
@inject IStorageLocationService StorageLocationService
@inject ICatalogService CatalogService
@inject UserSessionService UserSession
@inject IJSRuntime JS
@using Lagerbestand.Components.Shared
Lagerübersicht - Reifen Späth Lagerverwaltung
@if (!UserSession.IsWorkerOrAdmin)
{
🔒
Zugriff verweigert
Diese Seite ist nur für Mitarbeiter und Administratoren zugänglich.
Zur Startseite
}
else
{
@* Compact Toolbar: Stats as clickable filter chips + controls *@
@* Tire Stacks List *@
@if (isLoading)
{
}
else if (showGridView)
{
@foreach (var area in new[] { AreaType.Werkstatt, AreaType.Lager })
{
@area.GetBuildingLabel()
@for (int row = StorageLocation.MinRow; row <= area.GetMaxRow(); row++)
{
var currentRow = row;
Reihe @currentRow
@foreach (var side in new[] { "Links", "Rechts" })
{
@side
@foreach (var pos in ShelfPositionExtensions.All.Where(p => p.IsLeft() == (side == "Links")).OrderByDescending(p => p.IsTop()))
{
@(pos.IsTop() ? "Oben" : "Unten")
@for (int slot = StorageLocation.MinSlot; slot <= StorageLocation.MaxSlot; slot++)
{
var loc = GetLocation(area, currentRow, pos, slot);
var cellClass = loc == null ? "missing" : !loc.IsAvailable ? "blocked" : loc.IsOccupied ? "occupied" : "free";
}
}
}
}
}
Frei
Belegt
Gesperrt
@if (selectedLocation != null)
{
}
}
else if (filteredTireStacks.Count == 0)
{
📦
Keine Einträge
@(string.IsNullOrEmpty(searchTerm) ? "Noch keine Reifenstapel eingelagert." : "Keine Ergebnisse für Ihre Suche.")
@if (string.IsNullOrEmpty(searchTerm))
{
Reifenstapel einlagern
}
}
else
{
@if (selectedStack != null)
{
}
@foreach (var ts in filteredTireStacks)
{
SelectStack(ts)"
role="listitem"
aria-selected="@(selectedStack?.Id == ts.Id)">
@if (ts.IsInventory)
{
📦 @(ts.CatalogItem?.Name ?? "Lagerbestand")
Lager
}
else
{
@ts.Customer?.FullName
@if (ts.Vehicle != null)
{
@ts.Vehicle.Make @ts.Vehicle.Model
}
}
@if (ts.StorageLocation != null)
{
@ts.StorageLocation.Area.GetDisplayName()
Regal @ts.StorageLocation.Row
@ts.StorageLocation.Position.GetShortName()
P@(ts.StorageLocation.SlotNumber)
}
else
{
-
}
@(ts.Season == TireSeason.Sommer ? "☀️" : ts.Season == TireSeason.Winter ? "❄️" : "🔄")
@ts.ItemCount Reifen @(ts.TireSize != null ? $"| {ts.TireSize}" : "") @(ts.TireModel != null ? $"| {ts.TireModel}" : "") @(ts.WithRims ? "| mit Felgen" : "")
}
}
@if (showEditModal && editStack != null)
{
@if (!string.IsNullOrEmpty(editError))
{
@editError
}
}
@* Expiring Pickups Warning (only for customer stacks) *@
@if (expiringPickups.Count > 0)
{
}
}
@code {
private static string CheckinUrl(TireStack stack) => $"/tire-checkin?customerId={stack.CustomerId}";
private static string CheckoutUrl(TireStack stack) => $"/tire-checkout?stackId={stack.Id}";
private RenderFragment