@using BackOffice.Services.AppVersion
@using Tizzani.MudBlazor.HtmlEditor
@inject ISnackbar Snackbar

<MudDialog>
    <DialogContent>
        <MudForm @ref="_form" @bind-IsValid="_isValid">
            <MudStack Spacing="3">
                @if (IsNew)
                {
                    <MudSelect @bind-Value="Model.AppName"
                               Label="نام اپلیکیشن"
                               Variant="Variant.Outlined"
                               Required="true"
                               RequiredError="انتخاب اپلیکیشن اجباری است">
                        <MudSelectItem T="string" Value="@("KaraBazarApp")">کارابازار</MudSelectItem>
                        <MudSelectItem T="string" Value="@("KaraBazarAdminApp")">ادمین کارابازار</MudSelectItem>
                    </MudSelect>
                }
                else
                {
                    <MudTextField @bind-Value="Model.AppName" 
                                  Label="نام اپلیکیشن"
                                  Variant="Variant.Outlined"
                                  ReadOnly="true"
                                  Disabled="true" />
                }
                
                <MudTextField @bind-Value="Model.CurrentVersion" 
                              Label="نسخه فعلی"
                              Variant="Variant.Outlined"
                              Required="true"
                              RequiredError="نسخه فعلی اجباری است"
                              HelperText="مثال: 1.2.0" />
                
                <MudTextField @bind-Value="Model.MinRequiredVersion" 
                              Label="حداقل نسخه مورد نیاز"
                              Variant="Variant.Outlined"
                              HelperText="کاربران با نسخه‌های پایین‌تر مجبور به آپدیت می‌شوند" />
                
                <MudSwitch @bind-Value="Model.RequiresFullCacheClear" 
                           Color="Color.Warning"
                           Label="نیاز به پاکسازی کامل کش" />
                
                <MudTextField @bind-Value="Model.UpdateMessage" 
                              Label="پیام به‌روزرسانی"
                              Variant="Variant.Outlined"
                              Lines="2"
                              HelperText="پیامی که به کاربر نمایش داده می‌شود" />
                
                <MudText Typo="Typo.subtitle2" Class="mt-2">یادداشت‌های انتشار (HTML)</MudText>
                <MudHtmlEditor @bind-Html="Model.ReleaseNotes" 
                               Placeholder="توضیحات تغییرات این نسخه..."
                               MinHeight="150px">
                </MudHtmlEditor>
                
                <MudDivider Class="my-2" />
                
                <MudTextField @bind-Value="Model.UpdateReason" 
                              Label="دلیل تغییر (برای لاگ)"
                              Variant="Variant.Outlined"
                              Required="true"
                              RequiredError="دلیل تغییر اجباری است"
                              Lines="2"
                              HelperText="این متن در لاگ ذخیره می‌شود" />
            </MudStack>
        </MudForm>
    </DialogContent>
    <DialogActions>
        <MudButton OnClick="Cancel" Color="Color.Default" Variant="Variant.Text">
            انصراف
        </MudButton>
        <MudButton OnClick="Submit" Color="Color.Primary" Variant="Variant.Filled" Disabled="@(!_isValid)">
            ذخیره
        </MudButton>
    </DialogActions>
</MudDialog>

@code {
    [CascadingParameter] 
    private IMudDialogInstance MudDialog { get; set; } = null!;
    
    [Parameter]
    public UpdateAppVersionDto Model { get; set; } = new();

    [Parameter]
    public bool IsNew { get; set; } = false;

    private MudForm? _form;
    private bool _isValid;

    private void Cancel() => MudDialog.Cancel();

    private void Submit()
    {
        if (_isValid)
        {
            MudDialog.Close(DialogResult.Ok(Model));
        }
    }
}
