@using FrontOffice.BFF.ClubMembership.Protobuf.Protos.ClubMembership @using Blazored.LocalStorage @using FrontOffice.Main.Utilities @using MudBlazor @inject ClubMembershipContract.ClubMembershipContractClient ClubMembershipClient @inject ILocalStorageService LocalStorage @inject AuthService AuthService @inject ISnackbar Snackbar @inject NavigationManager Navigation @if (_step == ContractStep.ReadContract) { قرارداد باشگاه مشتریان لطفاً قرارداد باشگاه مشتریان را به دقت مطالعه کنید و در صورت موافقت تایید نمایید. @((MarkupString)GetClubContractHtml()) @if (_isLoading) { } ادامه و دریافت کد تایید } else if (_step == ContractStep.EnterOtp) { تایید قرارداد کد تایید به شماره موبایل شما ارسال شد. لطفاً کد را وارد کنید. @if (_remainingSeconds > 0) { زمان باقیمانده: @_remainingSeconds ثانیه } else { ارسال مجدد کد } @if (_isLoading) { } تایید و فعال‌سازی عضویت } else if (_step == ContractStep.Success) {
عضویت شما در باشگاه مشتریان فعال شد! اکنون می‌توانید از لینک دعوت خود استفاده کنید و دوستان‌تان را دعوت کنید. متوجه شدم
}
@code { [CascadingParameter] IMudDialogInstance MudDialog { get; set; } private enum ContractStep { ReadContract, EnterOtp, Success } private ContractStep _step = ContractStep.ReadContract; private bool _acceptedTerms; private string _otpCode = ""; private bool _isLoading; private int _remainingSeconds; private readonly Guid _signGuid = Guid.NewGuid(); private System.Timers.Timer? _timer; private const string TokenStorageKey = "auth:token"; // این Modal غیرقابل بسته شدن است - Options در ShowAsync تنظیم می‌شوند private async Task RequestOtp() { _isLoading = true; try { var response = await ClubMembershipClient.RequestClubContractOtpAsync( new RequestClubContractOtpRequest { SignGuid = _signGuid.ToString() }); if (response.Success) { _step = ContractStep.EnterOtp; _remainingSeconds = response.RemainingSeconds > 0 ? response.RemainingSeconds : 120; StartCountdown(); } else { Snackbar.Add(response.Message, Severity.Error); } } catch (Exception ex) { Snackbar.Add($"خطا در ارسال کد: {ex.Message}", Severity.Error); } finally { _isLoading = false; StateHasChanged(); } } private async Task AcceptContract() { _isLoading = true; try { var response = await ClubMembershipClient.AcceptClubMembershipContractAsync( new AcceptClubMembershipContractRequest { OtpCode = _otpCode, SignGuid = _signGuid.ToString(), ContractHtml = GetClubContractHtml() }); if (response.Success) { // ذخیره توکن جدید if (!string.IsNullOrEmpty(response.Token)) { await LocalStorage.SetItemAsync(TokenStorageKey, response.Token); await AuthService.InitUserAuthInfo(); } _step = ContractStep.Success; StopCountdown(); } else { Snackbar.Add(response.Message, Severity.Error); } } catch (Exception ex) { Snackbar.Add($"خطا در ثبت قرارداد: {ex.Message}", Severity.Error); } finally { _isLoading = false; StateHasChanged(); } } private void CloseAndRefresh() { MudDialog.Close(DialogResult.Ok(true)); Navigation.NavigateTo(Navigation.Uri, forceLoad: true); } private void StartCountdown() { _timer = new System.Timers.Timer(1000); _timer.Elapsed += (s, e) => { _remainingSeconds--; if (_remainingSeconds <= 0) { StopCountdown(); } InvokeAsync(StateHasChanged); }; _timer.Start(); } private void StopCountdown() { _timer?.Stop(); _timer?.Dispose(); _timer = null; } public void Dispose() { StopCountdown(); } private string GetClubContractHtml() { return @"

قرارداد عضویت در باشگاه مشتریان کارابازار

ماده ۱ - تعاریف

۱-۱. باشگاه مشتریان: سامانه‌ای که امکان معرفی دوستان و دریافت پاداش را فراهم می‌کند.

۱-۲. لینک دعوت: لینک اختصاصی هر کاربر برای معرفی دیگران.

۱-۳. پاداش معرفی: مبلغی که به ازای هر معرفی موفق به کاربر تعلق می‌گیرد.

ماده ۲ - شرایط عضویت

۲-۱. کاربر با پرداخت مبلغ ۵۶ میلیون تومان (پکیج پایه)، امکان عضویت در باشگاه مشتریان را خواهد داشت.

۲-۲. پس از امضای این قرارداد، لینک دعوت کاربر فعال خواهد شد.

۲-۳. کاربر می‌تواند حداکثر ۲ نفر را مستقیماً دعوت کند (یک نفر در تیم اول و یک نفر در تیم دوم).

ماده ۳ - تعهدات کاربر

۳-۱. کاربر متعهد است از لینک دعوت فقط برای معرفی افراد واقعی استفاده کند.

۳-۲. هرگونه سوءاستفاده از سیستم منجر به لغو عضویت خواهد شد.

۳-۳. کاربر حق انتقال یا فروش عضویت خود را ندارد.

ماده ۴ - حقوق کاربر

۴-۱. دریافت پاداش معرفی به ازای هر عضو جدید که از طریق تیم کاربر عضو شود.

۴-۲. دسترسی به داشبورد مدیریت تیم و مشاهده وضعیت اعضای تیم.

۴-۳. امکان برداشت موجودی کیف پول طبق قوانین سایت.

ماده ۵ - شرایط فسخ

۵-۱. در صورت نقض هر یک از مفاد این قرارداد، کارابازار حق لغو عضویت کاربر را دارد.

۵-۲. در صورت فسخ قرارداد، موجودی کیف پول طبق قوانین سایت تسویه خواهد شد.

ماده ۶ - حل اختلاف

۶-۱. در صورت بروز اختلاف، طرفین ابتدا از طریق مذاکره اقدام به حل و فصل خواهند کرد.

۶-۲. در صورت عدم توافق، مراجع قضایی صلاحیت‌دار رسیدگی خواهند کرد.

شناسه قرارداد: " + _signGuid + @"

"; } }