@page "/management/shop"
@attribute [Microsoft.AspNetCore.Authorization.Authorize]

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

<MudStack class="h-full w-full p-8">
    <MudGrid>
        <MudItem xs="12">
            <MudPaper class="px-5 py-5">
                <MudStack Row="true">
                    <MudStack class="mx-2 mb-5">
                        <MudText Typo="Typo.h4">فروشـــــگاه من</MudText>
                        <MudText Typo="Typo.caption">شما می توانید اطلاعات فروشگاه خود را ویرایش نمایید</MudText>
                    </MudStack>
                    <MudSpacer/>
                    <BaseButtonUi Size="Size.Large"
                                  OnClickCallback="ViewModel.SubmitShopSettingAsync"
                                  class="mb-8 mt-2 w-64 rounded-md" 
                                  IsProcessing="@ViewModel.IsProcessing"
                                  Icon="@Icons.Material.Outlined.Check" 
                                  Content="ثبتـــ اطلاعات" Variant="Variant.Filled" Color="Color.Success" />
                </MudStack>
                <MudGrid>
                    <MudItem xs="12" sm="4">
                        <MudTextField T="string" @bind-Value="@ViewModel.ShopSetting.Name" Variant="Variant.Outlined" Label="نام فروشاه"></MudTextField>
                    </MudItem>

                    <MudItem xs="12" sm="4">
                        <MudTextField T="string" @bind-Value="@ViewModel.ShopSetting.Slogan" Variant="Variant.Outlined" Label="شعار فروشگاه"></MudTextField>
                    </MudItem>


                    <MudItem xs="12" sm="4">
                        <MudTextField T="string" @bind-Value="@ViewModel.ShopSetting.Description" Variant="Variant.Outlined" Label="توضیحات"></MudTextField>
                    </MudItem>

                    <MudItem xs="12" sm="5">
                        <MudTextField T="double" @bind-Value="@ViewModel.ShopSetting.TaxesFee" Variant="Variant.Outlined" Label="مقدار مالیات"></MudTextField>
                    </MudItem>

                    <MudItem xs="12" sm="5">
                        <MudTextField T="double" @bind-Value="@ViewModel.ShopSetting.ServiceFee" Variant="Variant.Outlined" Label="مقدار سرویس"></MudTextField>
                    </MudItem>

                    <MudItem xs="12" sm="2">
                        <MudSelect T="bool" Variant="Variant.Outlined" Label="سرویس درصدی می باشد ؟">
                            <MudSelectItem T="bool" Value="true">بلی</MudSelectItem>
                            <MudSelectItem T="bool" Value="true">خیر</MudSelectItem>
                        </MudSelect>
                    </MudItem>

                    <MudItem xs="12" sm="3">
                        <MudAutocomplete Required="true" ToStringFunc="dto => dto.Name" @bind-Value="@ViewModel.SelectedProvince"
                                         SearchFunc="@ViewModel.SearchProvinceAsync"
                                         T="Province"
                                         Label="استان"
                                         Variant="Variant.Outlined">
                            <ProgressIndicatorInPopoverTemplate>
                                <MudList Clickable="false">
                                    <MudListItem>
                                        <div class="mx-auto flex w-full flex-row">
                                            <MudProgressCircular class="my-auto -ml-4 mr-1" Size="Size.Small" Indeterminate="true" />
                                            <p class="text-md mx-auto my-1 font-bold">منتظر بمانید</p>
                                        </div>
                                    </MudListItem>
                                </MudList>
                            </ProgressIndicatorInPopoverTemplate>
                            <ItemTemplate Context="e">
                                <p>@e.Name</p>
                            </ItemTemplate>
                        </MudAutocomplete>
                    </MudItem>

                    <MudItem xs="12" sm="3">
                        <MudAutocomplete Required="true" ToStringFunc="dto => dto.Name" @bind-Value="@ViewModel.SelectedCity"
                                         SearchFunc="@ViewModel.SearchCityAsync"
                                         T="City"
                                         Label="شهر"
                                         Variant="Variant.Outlined">
                            <ProgressIndicatorInPopoverTemplate>
                                <MudList Clickable="false">
                                    <MudListItem>
                                        <div class="mx-auto flex w-full flex-row">
                                            <MudProgressCircular class="my-auto -ml-4 mr-1" Size="Size.Small" Indeterminate="true" />
                                            <p class="text-md mx-auto my-1 font-bold">منتظر بمانید</p>
                                        </div>
                                    </MudListItem>
                                </MudList>
                            </ProgressIndicatorInPopoverTemplate>
                            <ItemTemplate Context="e">
                                <p>@e.Name</p>
                            </ItemTemplate>
                        </MudAutocomplete>
                    </MudItem>

                    <MudItem xs="12" sm="6">
                        <MudTextField T="string" @bind-Value="@ViewModel.ShopSetting.Address" Variant="Variant.Outlined" Label="آدرس فروشگاه"></MudTextField>
                    </MudItem>

                    <MudItem xs="12" sm="6">
                        <MudTextField T="string" @bind-Value="@ViewModel.ShopSetting.ENamad" Variant="Variant.Outlined" Label="آدرس نماد اعتماد"></MudTextField>
                    </MudItem>
                    <MudItem xs="12" sm="12">
                        <MudStack Row="true">
                            <MudStack>
                                <MudText Typo="Typo.h4">لوگو وب سایت</MudText>
                                <MudText Typo="Typo.body1">سایز لوگو شما باید 512 * 512 باشد و به شکل مربع ، تا جایگیری مناسبی داشته باشد</MudText>
                                <BaseButtonUi Variant="Variant.Outlined" Content="اپلود و تغییر لوگو" OnClickCallback="async () => await ViewModel.SelectFileAsync()" />
                            </MudStack>
                            <MudImage Src="@ViewModel.ShopSetting.LogoUrl" Width="150" Height="150" Elevation="25" Class="ma-4 rounded-lg" />
                        </MudStack>
                    </MudItem>
                </MudGrid>
            </MudPaper>

            <MudPaper class="mt-8 px-5 py-5">
                <MudStack Row="true">
                    <MudStack class="mx-2 mb-5">
                        <MudText Typo="Typo.h4">تنظیمات درگاه پرداخت</MudText>
                        <MudText Typo="Typo.caption">شما می توانید اطلاعات درگاه پرداخت خود را ویرایش نمایید</MudText>
                    </MudStack>
                    <MudSpacer />
                    <BaseButtonUi Size="Size.Large" class="mb-8 mt-2 w-64 rounded-md"
                                  OnClickCallback="ViewModel.SubmitPaymentSettingAsync"
                                  IsProcessing="@ViewModel.IsProcessing"
                                  Icon="@Icons.Material.Outlined.Check" Content="ثبتـــ اطلاعات" 
                                  Variant="Variant.Filled" Color="Color.Success" />
                </MudStack>
                <MudGrid>
                    <MudItem xs="12" sm="6">
                        <MudTextField T="string" @bind-Value="@ViewModel.PaymentSetting.ZarinPalApiKey" Variant="Variant.Outlined" Label="کد مرچنت زرین پال"></MudTextField>
                    </MudItem>

                    <MudItem xs="12" sm="6">
                        <MudTextField T="string" @bind-Value="@ViewModel.PaymentSetting.Shaba" Variant="Variant.Outlined" Label="شماره شبا پشتیبانی"></MudTextField>
                    </MudItem>

                </MudGrid>
            </MudPaper>
        </MudItem>
    </MudGrid>
</MudStack>

@code
{
    public ShopManagementPageViewModel ViewModel { get; set; }
    protected override async Task OnInitializedAsync()
    {
        ViewModel = new ShopManagementPageViewModel(NavigationManager, Snackbar, UserUtility, RestWrapper, DialogService);
        await ViewModel.InitializeAsync();
        await base.OnInitializedAsync();
    }
}
