@using CMSMicroservice.Protobuf.Protos.ClubMembership

<MudDialog>
    <DialogContent>
        <MudStack Spacing="3">
            <MudAlert Severity="Severity.Warning" Dense="true">
                <MudText Typo="Typo.body1">
                    <strong>آیا از غیرفعال کردن عضویت باشگاه کاربر "@UserName" مطمئن هستید؟</strong>
                </MudText>
            </MudAlert>

            <MudText Typo="Typo.body2">
                این عمل باعث می‌شود:
            </MudText>
            <MudList T="string" Dense="true">
                <MudListItem T="string" Icon="@Icons.Material.Filled.Block">
                    کاربر دیگر به مزایای باشگاه دسترسی نخواهد داشت
                </MudListItem>
                <MudListItem T="string" Icon="@Icons.Material.Filled.Warning">
                    Commission های جاری تا پایان هفته ادامه خواهد یافت
                </MudListItem>
            </MudList>

            <MudTextField @bind-Value="_reason" 
                         Label="دلیل غیرفعال‌سازی" 
                         Lines="3"
                         Variant="Variant.Outlined"
                         Placeholder="دلیل خود را وارد کنید..." />
        </MudStack>
    </DialogContent>
    <DialogActions>
        <MudButton OnClick="Cancel">لغو</MudButton>
        <MudButton Color="Color.Error" 
                   Variant="Variant.Filled" 
                   OnClick="Submit"
                   Disabled="_isSubmitting">
            @if (_isSubmitting)
            {
                <MudProgressCircular Size="Size.Small" Indeterminate="true" />
                <MudText Class="ms-2">در حال پردازش...</MudText>
            }
            else
            {
                <text>غیرفعال کردن</text>
            }
        </MudButton>
    </DialogActions>
</MudDialog>

@code {
    [CascadingParameter] IMudDialogInstance MudDialog { get; set; }
    [Inject] public ClubMembershipContract.ClubMembershipContractClient ClubContract { get; set; }

    [Parameter] public long UserId { get; set; }
    [Parameter] public string UserName { get; set; }

    private string _reason;
    private bool _isSubmitting;

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

    private async Task Submit()
    {
        _isSubmitting = true;
        try
        {
            var request = new DeactivateClubMembershipRequest
            {
                UserId = UserId,
                Reason = _reason ?? string.Empty
            };

            var response = await ClubContract.DeactivateClubMembershipAsync(request);
            
            Snackbar.Add("عضویت با موفقیت غیرفعال شد", Severity.Success);
            MudDialog.Close(DialogResult.Ok(true));
        }
        catch (Exception ex)
        {
            Snackbar.Add($"خطا: {ex.Message}", Severity.Error);
        }
        finally
        {
            _isSubmitting = false;
        }
    }
}
