@* EN: Dialog requiring the user to type the shop name to confirm permanent closure. *@
@* VI: Dialog yêu cầu người dùng nhập tên cửa hàng để xác nhận đóng vĩnh viễn. *@

<MudDialog>
    <DialogContent>
        <MudAlert Severity="Severity.Error" Variant="Variant.Outlined" Dense="true" Class="mb-4">
            Thao tác này không thể hoàn tác. Cửa hàng sẽ bị khóa vĩnh viễn.
        </MudAlert>
        <MudText Typo="Typo.body2" Class="mb-3">
            Để xác nhận, vui lòng nhập tên cửa hàng <strong>@ShopName</strong> vào ô bên dưới:
        </MudText>
        <MudTextField @bind-Value="_confirmText"
                      Label="Nhập tên cửa hàng"
                      Variant="Variant.Outlined"
                      Immediate="true"
                      FullWidth="true"
                      Placeholder="@ShopName" />
    </DialogContent>
    <DialogActions>
        <MudButton OnClick="Cancel" Variant="Variant.Text" Style="text-transform: none;">Hủy</MudButton>
        <MudButton OnClick="Confirm" Variant="Variant.Filled" Color="Color.Error"
                   Disabled="@(!IsConfirmValid)" Style="text-transform: none;">
            Đóng cửa hàng vĩnh viễn
        </MudButton>
    </DialogActions>
</MudDialog>

@code {
    [CascadingParameter] private IMudDialogInstance MudDialog { get; set; } = default!;

    /// <summary>
    /// EN: The shop name the user must type to confirm.
    /// VI: Tên cửa hàng mà người dùng phải nhập để xác nhận.
    /// </summary>
    [Parameter] public string ShopName { get; set; } = "";

    private string _confirmText = "";

    /// <summary>
    /// EN: Check if the typed text matches the shop name (case-insensitive).
    /// VI: Kiểm tra xem text nhập vào có khớp tên shop không (không phân biệt hoa thường).
    /// </summary>
    private bool IsConfirmValid =>
        !string.IsNullOrWhiteSpace(_confirmText) &&
        string.Equals(_confirmText.Trim(), ShopName.Trim(), StringComparison.OrdinalIgnoreCase);

    private void Cancel() => MudDialog.Cancel();
    private void Confirm() => MudDialog.Close(DialogResult.Ok(true));
}
