@using CMSMicroservice.Protobuf.Protos.ManualPayment
@using BackOffice.Pages.Payment.Components
@using BackOffice.Pages.AutoComplete
@using Microsoft.AspNetCore.Components.Forms

<MudDialog>
    <DialogContent>
        @if (Mode == ManualPaymentDialogMode.Create)
        {
            <MudStack Spacing="2">
                <MudText Typo="Typo.h6">ثبت فعالسازی دستی جدید</MudText>

                <UserAutoComplete Label="انتخاب کاربر" 
                                  @bind-SelectedUserId="_selectedUserId" />

                <MudNumericField T="long"
                                 Label="مبلغ"
                                 Variant="Variant.Outlined"
                                 Adornment="Adornment.End"
                                 AdornmentText="تومان"
                                 Required="true"
                                 RequiredError="مبلغ الزامی است"
                                 Min="1"
                                 @bind-Value="_createModel.Amount" />

                <MudSelect T="int" 
                           Label="نوع پرداخت"
                           Variant="Variant.Outlined"
                           @bind-Value="_selectedType">
                    <MudSelectItem T="int" Value="1">واریز نقدی</MudSelectItem>
                    <MudSelectItem T="int" Value="2">شارژ کیف پول اعتباری</MudSelectItem>
                    <MudSelectItem T="int" Value="3">شارژ پاداش تیمی</MudSelectItem>
                    <MudSelectItem T="int" Value="4">تسویه حساب</MudSelectItem>
                    <MudSelectItem T="int" Value="5">اصلاح خطا</MudSelectItem>
                    <MudSelectItem T="int" Value="6">بازپرداخت</MudSelectItem>
                    <MudSelectItem T="int" Value="99">سایر</MudSelectItem>
                </MudSelect>

                <MudTextField T="string"
                              Label="توضیحات"
                              Variant="Variant.Outlined"
                              Lines="3"
                              Required="true"
                              RequiredError="توضیحات الزامی است"
                              @bind-Value="_description" />

                <MudTextField T="string"
                              Label="شماره مرجع (اختیاری)"
                              Variant="Variant.Outlined"
                              @bind-Value="_createModel.ReferenceNumber" />

                <MudText Typo="Typo.subtitle2">تصویر فیش پرداخت (اختیاری)</MudText>
                <MudFileUpload T="IBrowserFile"
                               FilesChanged="OnImageFileSelected"
                               Accept=".jpg,.jpeg,.png,.gif,.webp"
                               MaximumFileCount="1">
                    <ActivatorContent>
                        <MudButton Variant="Variant.Outlined"
                                   Color="Color.Primary"
                                   StartIcon="@Icons.Material.Filled.CloudUpload">
                            انتخاب تصویر
                        </MudButton>
                    </ActivatorContent>
                </MudFileUpload>

                @if (!string.IsNullOrWhiteSpace(_imagePreview))
                {
                    <MudStack Row="true" AlignItems="AlignItems.Center" Spacing="2">
                        <MudImage Src="@_imagePreview" 
                                  Alt="پیش‌نمایش فیش" 
                                  Width="150" 
                                  Height="150" 
                                  ObjectFit="ObjectFit.Cover"
                                  Class="rounded" />
                        <MudIconButton Icon="@Icons.Material.Filled.Delete"
                                       Color="Color.Error"
                                       OnClick="RemoveImage" />
                    </MudStack>
                }
            </MudStack>
        }
        else if (Model is not null)
        {
            <MudStack Spacing="2">
                <MudText Typo="Typo.h6">جزئیات فعالسازی دستی</MudText>
                <MudText Typo="Typo.body2">شناسه: @Model.Id</MudText>
                <MudText Typo="Typo.body2">کاربر: @Model.UserFullName (@Model.UserId)</MudText>
                <MudText Typo="Typo.body2">مبلغ: @Model.Amount.ToString("N0") تومان</MudText>
                <MudText Typo="Typo.body2">نوع: @Model.TypeDisplay</MudText>
                <MudText Typo="Typo.body2">وضعیت: @Model.StatusDisplay</MudText>

                @if (!string.IsNullOrWhiteSpace(Model.ReferenceNumber))
                {
                    <MudText Typo="Typo.body2">شماره مرجع: @Model.ReferenceNumber</MudText>
                }

                @if (!string.IsNullOrWhiteSpace(Model.ImagePath))
                {
                    <MudText Typo="Typo.body2">تصویر فیش:</MudText>
                    <MudImage Src="@Model.ImagePath" 
                              Alt="تصویر فیش" 
                              Width="200" 
                              ObjectFit="ObjectFit.Contain"
                              Class="rounded" />
                }

                <MudText Typo="Typo.body2">توضیحات: @Model.Description</MudText>

                @if (!string.IsNullOrWhiteSpace(Model.RejectionReason))
                {
                    <MudAlert Severity="Severity.Error">
                        دلیل رد: @Model.RejectionReason
                    </MudAlert>
                }

                @if (Model.Status == (int)ManualPaymentDialogStatus.Pending)
                {
                    <MudTextField T="string"
                                  Label="یادداشت تایید / دلیل رد"
                                  Variant="Variant.Outlined"
                                  Lines="3"
                                  @bind-Value="_adminNote" />
                }
            </MudStack>
        }
    </DialogContent>
    <DialogActions>
        <MudButton Variant="Variant.Outlined" Color="Color.Default" OnClick="Close">
            بستن
        </MudButton>

        @if (Mode == ManualPaymentDialogMode.Create)
        {
            <MudButton Variant="Variant.Filled" Color="Color.Primary" OnClick="CreateAsync" Disabled="@_isSubmitting">
                @if (_isSubmitting)
                {
                    <MudProgressCircular Size="Size.Small" Indeterminate="true" Class="me-2" />
                }
                ثبت
            </MudButton>
        }
        else if (Model is not null && Model.Status == (int)ManualPaymentDialogStatus.Pending)
        {
            <MudButton Variant="Variant.Filled" Color="Color.Success" OnClick="ApproveAsync">
                تایید
            </MudButton>
            <MudButton Variant="Variant.Filled" Color="Color.Error" OnClick="RejectAsync">
                رد
            </MudButton>
        }
    </DialogActions>
</MudDialog>

