@attribute [Route(RouteConstance.InventoryLowStock)]
@attribute [Authorize]

@using CMSMicroservice.Protobuf.Protos.Inventory

<div>
    <MudStack Row="true" Justify="Justify.SpaceBetween" AlignItems="AlignItems.Center" Class="mb-4">
        <MudStack Spacing="0">
            <MudText Typo="Typo.h4">
                <MudIcon Icon="@Icons.Material.Filled.Warning" Color="Color.Warning" Class="mr-2" />
                محصولات کم‌موجود
            </MudText>
            <MudText Typo="Typo.subtitle1" Color="Color.Secondary">
                لیست محصولاتی که موجودی آنها کمتر از حد هشدار است
            </MudText>
        </MudStack>
        <MudButton Variant="Variant.Outlined"
                   Color="Color.Secondary"
                   StartIcon="@Icons.Material.Filled.ArrowBack"
                   OnClick="GoBack">
            بازگشت به انبار
        </MudButton>
    </MudStack>

    @* Filters Section *@
    <MudPaper Class="pa-4 mb-4" Elevation="2">
        <MudGrid>
            <MudItem xs="12" sm="6" md="4">
                <MudSelect T="long?" @bind-Value="_filterWarehouseId"
                           Label="انبار"
                           Variant="Variant.Outlined"
                           Margin="Margin.Dense"
                           Clearable="true">
                    @foreach (var wh in _warehouses)
                    {
                        <MudSelectItem T="long?" Value="@((long?)wh.Id)">@wh.Name</MudSelectItem>
                    }
                </MudSelect>
            </MudItem>
            <MudItem xs="12" sm="6" md="4">
                <MudSelect T="ProductType" @bind-Value="_filterProductType"
                           Label="نوع محصول"
                           Variant="Variant.Outlined"
                           Margin="Margin.Dense">
                    <MudSelectItem T="ProductType" Value="ProductType.Unspecified">همه</MudSelectItem>
                    <MudSelectItem T="ProductType" Value="ProductType.RegularProduct">محصول عادی</MudSelectItem>
                    <MudSelectItem T="ProductType" Value="ProductType.DiscountProduct">محصول تخفیفی</MudSelectItem>
                </MudSelect>
            </MudItem>
            <MudItem xs="12" sm="6" md="4" Class="d-flex align-end">
                <MudButton Variant="Variant.Filled"
                           Color="Color.Primary"
                           OnClick="LoadData"
                           StartIcon="@Icons.Material.Filled.Refresh"
                           Class="mr-2">
                    بارگذاری
                </MudButton>
            </MudItem>
        </MudGrid>
    </MudPaper>

    @* Stats *@
    <MudAlert Severity="Severity.Warning" Class="mb-4">
        <MudText>
            <strong>@_items.Count</strong> محصول کم‌موجود شناسایی شده است.
            لطفاً برای جلوگیری از کمبود موجودی، اقدام به سفارش مجدد کنید.
        </MudText>
    </MudAlert>

    @if (_isLoading)
    {
        <MudProgressLinear Indeterminate="true" Color="Color.Primary" />
    }
    else
    {
        <MudDataGrid T="InventoryItemDto" Items="_items" Hover="true" Height="calc(100vh - 240px)">
            <Columns>
                <PropertyColumn Property="x => x.Id" Title="شناسه" />
                
                <PropertyColumn Property="x => x.ProductTitle" Title="نام محصول">
                    <CellTemplate>
                        <MudStack Spacing="0">
                            <MudText Typo="Typo.body2"><strong>@context.Item.ProductTitle</strong></MudText>
                            <MudText Typo="Typo.caption" Color="Color.Secondary">
                                @GetProductTypeLabel(context.Item.ProductType)
                            </MudText>
                        </MudStack>
                    </CellTemplate>
                </PropertyColumn>
                
                <PropertyColumn Property="x => x.WarehouseName" Title="انبار">
                    <CellTemplate>
                        <MudChip T="string" Color="Color.Info" Size="Size.Small">
                            @context.Item.WarehouseName
                        </MudChip>
                    </CellTemplate>
                </PropertyColumn>

                <PropertyColumn Property="x => x.Quantity" Title="موجودی فعلی">
                    <CellTemplate>
                        <MudText Color="Color.Error"><strong>@context.Item.Quantity</strong></MudText>
                    </CellTemplate>
                </PropertyColumn>

                <PropertyColumn Property="x => x.AvailableQuantity" Title="قابل فروش">
                    <CellTemplate>
                        <MudText Color="Color.Warning">@context.Item.AvailableQuantity</MudText>
                    </CellTemplate>
                </PropertyColumn>

                <PropertyColumn Property="x => x.LowStockThreshold" Title="حد هشدار" />

                <PropertyColumn Property="x => x.ReorderPoint" Title="نقطه سفارش" />

                <TemplateColumn Title="کمبود">
                    <CellTemplate>
                        @{
                            var shortage = context.Item.LowStockThreshold - context.Item.Quantity;
                        }
                        <MudChip T="string" Color="Color.Error" Size="Size.Small">
                            @shortage عدد
                        </MudChip>
                    </CellTemplate>
                </TemplateColumn>

                <TemplateColumn Title="عملیات" Sortable="false">
                    <CellTemplate>
                        <MudButton Variant="Variant.Filled"
                                   Color="Color.Success"
                                   Size="Size.Small"
                                   StartIcon="@Icons.Material.Filled.Add"
                                   OnClick="@(() => OpenAddStockDialog(context.Item))">
                            ورود کالا
                        </MudButton>
                    </CellTemplate>
                </TemplateColumn>
            </Columns>
            <NoRecordsContent>
                <MudAlert Severity="Severity.Info" Dense="true" Variant="Variant.Text" Class="my-4">موردی یافت نشد.</MudAlert>
            </NoRecordsContent>
            <PagerContent>
                <MudDataGridPager T="InventoryItemDto"
                                  PageSizeOptions="@(new int[] { 20, 50, 100 })"
                                  InfoFormat="سطر {first_item} تا {last_item} از {all_items}"
                                  RowsPerPageString="تعداد در صفحه" />
            </PagerContent>
        </MudDataGrid>
    }
</div>
