@inject NavigationManager NavigationManager
@inject IRestWrapper RestWrapper
@inject IUserUtility UserUtility
@inject ISnackbar Snackbar

<MudStack class="bg-[--mud-palette-background] h-screen w-full pt-4">

    <MudNavMenu Rounded="true" Margin="Margin.Dense" Color="Color.Warning" Bordered="true">
        <MudNavLink Href="home" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.Dashboard">داشبورد</MudNavLink>
        @if (isShop)
        {
            <MudNavLink Href="orders" Icon="@Icons.Material.Outlined.ShoppingBag">فروش</MudNavLink>
        }
        @if (isShop)
        {
            <MudNavGroup Title="محصولاتــ" Expanded="false"
                         Icon="@Icons.Material.Outlined.CenterFocusStrong">

                <MudNavLink Href="products"
                            Icon="@Icons.Material.Outlined.CenterFocusStrong">محصولاتــ فروشگاه</MudNavLink>
                <MudNavLink Href="product/categories"
                            Icon="@Icons.Material.Outlined.AllInbox">دسته بندی محصولاتـــ</MudNavLink>
                <MudNavLink Href="product/brands"
                            Icon="@Icons.Custom.Brands.Facebook">برند محصولاتــــ</MudNavLink>

                <MudNavLink Href="product/shipping"
                            Icon="@Icons.Material.Outlined.AirportShuttle">روش های ارسال</MudNavLink>
            </MudNavGroup>
        }

        <MudNavGroup Title="نظرات و امتیازاتـــ" Expanded="false"
                     Icon="@Icons.Material.Outlined.Comment">
            <MudNavLink Href="reviews"
                        Icon="@Icons.Material.Filled.Comment">مدیریت نظراتـــ</MudNavLink>
        </MudNavGroup>

        <MudNavGroup Title="وبلاگــــ" Expanded="false"
                     Icon="@Icons.Material.Outlined.Web">

            <MudNavLink Href="blogs"
                        Icon="@Icons.Material.Outlined.WebStories">بلاگـــ ها</MudNavLink>
            <MudNavLink Href="blog/categories"
                        Icon="@Icons.Material.Outlined.WebAsset">دسته بندی های بلاگـــ</MudNavLink>
        </MudNavGroup>

        <MudNavGroup Title="مدیریت برگه ها" Expanded="false"
                     Icon="@Icons.Material.Outlined.Pages">
            <MudNavLink Href="management/pages" Icon="@Icons.Material.Filled.Pageview">برگه ها</MudNavLink>
            <MudNavLink Href="setting/faq" Icon="@Icons.Material.Filled.ManageAccounts">سوالات متداول</MudNavLink>
            <MudNavLink Href="setting/pages" Icon="@Icons.Material.Outlined.Folder">تنظیماتــ برگه ها</MudNavLink>
        </MudNavGroup>

        <MudNavGroup Title="شخصی سازی" Expanded="false" Icon="@Icons.Material.Filled.SettingsSystemDaydream">
            <MudNavLink Href="personaliztion/main" Icon="@Icons.Material.Filled.SettingsBrightness">کاتالوگ و بنرها</MudNavLink>
        </MudNavGroup>

        @if (isShop)
        {
            <MudNavGroup Title="حسابداری" Expanded="false"
                         Icon="@Icons.Material.Outlined.BusinessCenter">

                <MudNavLink Href="discounts"
                            Icon="@Icons.Material.Outlined.LocalOffer">تخفیفـــ ها</MudNavLink>
                <MudNavLink Href="payments"
                            Icon="@Icons.Material.Outlined.AccountBalance">پرداختـــ ها</MudNavLink>
            </MudNavGroup>
        }

        @if (isShop)
        {
            <MudNavGroup Title="باشگاه مشتریانـــ" Expanded="false"
                         Icon="@Icons.Material.Outlined.AccountBalance">

                <MudNavLink Href="customers"
                            Icon="@Icons.Material.Outlined.PeopleAlt">مشترکین</MudNavLink>
                <MudNavLink Href="newsletler"
                            Icon="@Icons.Material.Outlined.Newspaper">خبرنامه</MudNavLink>
            </MudNavGroup>
        }
        @if (isShop)
        {
            <MudNavGroup Title="فروشگاه من" Expanded="false" Icon="@Icons.Material.Outlined.Settings">
                <MudNavLink Href="management/shop" Icon="@Icons.Material.Filled.Shop2">فروشگاه</MudNavLink>
                <MudNavLink Href="management/marketer" Icon="@Icons.Material.Filled.Person4">بازاریاب ها</MudNavLink>
                <MudNavLink Href="personalization/nav" Icon="@Icons.Material.Filled.MenuOpen">فهرست ها</MudNavLink>
            </MudNavGroup>
        }
        else
        {

            <MudNavGroup Title="وب سایتــ من" Expanded="false" Icon="@Icons.Material.Outlined.Settings">
                <MudNavLink Href="management/shop" Icon="@Icons.Material.Filled.Shop2">وب سایتــ</MudNavLink>
            </MudNavGroup>
        }

        <MudNavGroup Title="تنظیماتـــ" Expanded="false" Icon="@Icons.Material.Outlined.Settings">
            <MudNavLink Href="setting/users" Icon="@Icons.Material.Filled.ManageAccounts">نقش ها و کاربران</MudNavLink>
        </MudNavGroup>
    </MudNavMenu>
    <p class="bottom-0 mx-auto align-bottom">Version : @version</p>
</MudStack>

@code
{
    private bool isShop = true;
    private List<string> _permissions;
    protected override async Task OnInitializedAsync()
    {
        try
        {
            try
            {
                _permissions = await UserUtility.GetPermissionsAsync() ?? new List<string>();
                var token = await UserUtility.GetBearerTokenAsync();
                if (token == null)
                {
                    await UserUtility.LogoutAsync();
                    NavigationManager.NavigateTo("login", true, true);
                    return;
                }

                var rest = await RestWrapper.SettingRestApi.GetSettingAsync<NetinaSetting>(nameof(NetinaSetting), token);
                if (rest.WebSiteType == 0)
                    isShop = true;
                else
                    isShop = false;
            }
            catch (Exception e)
            {
                Snackbar.Add("در دریافت اطلاعات مشکلی رخ داده است", Severity.Error);
            }
            await base.OnInitializedAsync();

        }
        catch (ApiException e)
        {
            var exe = await e.GetContentAsAsync<ApiResult>();
            if (e.StatusCode == HttpStatusCode.Unauthorized)
            {
                await UserUtility.LogoutAsync();
                NavigationManager.NavigateTo("login", true, true);
            }
        }
    }

    string? version = typeof(Program)?.Assembly.GetName()?.Version?.ToString();
}