Files
moadiran/TaxPayerFull/Pages/Verification.razor
mmrbnjd 6fe0cee3ef ...
2024-11-15 18:38:55 +03:30

224 lines
8.4 KiB
Plaintext

@using Shared.DTOs
@page "/Verification/{ID:int}"
@inject HttpClient _hc
@inject NavigationManager nav
@inject UserAuthenticationDTO userinfo
<PageTitle>مودیران / احراز هویت</PageTitle>
<Toasts class="p-3" Messages="messages" AutoHide="true" Delay="5000" Placement="ToastsPlacement.BottomLeft" />
<main>
<!-- tp-banner-area-start -->
<div class="signin-banner-area signin-banner-main-wrap d-flex align-items-center">
<div class="signin-banner-left-box signin-banner-bg p-relative">
<div class="signin-banner-bottom-shape">
<img src="img/login/login-shape-1.png" alt="">
</div>
<div class="signin-banner-left-wrap">
<div class="signin-banner-title-box mb-100">
<br />
<h4 class="signin-banner-title" style="color:black">
لطفا کد ارسالی را وارد نمایید
</h4>
</div>
<div class="signin-banner-img-box position-relative">
<div class="signin-banner-img signin-img-1 d-none d-md-block z-index-3">
<img src="img/login/login-2.png" alt="">
</div>
<div class="signin-banner-img signin-img-2 d-none d-md-block">
<img src="img/login/login-1.png" alt="">
</div>
<div class="signin-banner-img signin-img-3 d-none d-md-block z-index-5">
<img src="img/login/login-3.png" alt="">
</div>
<div class="signin-banner-img signin-img-4 d-none d-sm-block">
<img src="img/login/login-4.png" alt="">
</div>
</div>
</div>
</div>
<div class="signin-banner-from d-flex justify-content-center align-items-center">
<div class="signin-banner-from-wrap">
<div class="signin-banner-title-box">
<h4 class="signin-banner-from-title">احراز هویت</h4>
</div>
<div class="signin-banner-from-box">
<EditForm Model="VerificationCodeModel" OnSubmit="SubmitVerificationCode" FormName="VerificationCodeDto">
<div class="row">
<div class="col-10">
<div class="postbox__comment-input mb-30">
<InputText @bind-Value="valueCode" style="text-align: center" id="Code" type="number" class="inputText" required="" />
<span class="floating-label">کد تائید</span>
</div>
</div>
<div class="col-md-2" style="align-content:center">
<Spinner Visible="SpinnerVisible" Color="SpinnerColor.Primary" />
</div>
<div class="signin-banner-from-btn mb-20">
<button hidden="@hidden" type="submit" class="signin-btn">احراز</button>
</div>
</div>
</EditForm>
<div class="row">
<Alert hidden="@Hidealert" Color="@alertColor" Dismissable="false">
<Icon Name="@alertIconName" class="me-2"></Icon>
@alertMessage
<Button Color="ButtonColor.Primary" @onclick="EndForm">اتمام عملیات</Button>
</Alert>
</div>
<div class="signin-banner-from-register">
<NavLink hidden="@hidden" style="cursor:pointer" @onclick="ReSend">کد ارسال نشد؟ <span>ارسال مجدد</span></NavLink>
</div>
</div>
</div>
</div>
</div>
<!-- tp-banner-area-end -->
</main>
@code {
List<ToastMessage> messages = new List<ToastMessage>();
public string hidden { get; set; }
public bool SpinnerVisible { get; set; } = false;
public string valueCode { get; set; }
bool successfull = false;
// alert
AlertColor alertColor = AlertColor.Primary;
IconName alertIconName = IconName.CheckCircleFill;
bool Hidealert = true;
string alertMessage = "";
private void ShowMessage(ToastType toastType, string Message) => messages.Add(CreateToastMessage(toastType, Message));
[Parameter]
public int ID { get; set; }
[SupplyParameterFromForm]
public VerificationCodeDto? VerificationCodeModel { get; set; } = new VerificationCodeDto();
protected override async Task OnParametersSetAsync()
{
var request = await _hc.GetAsync($"Verification/GetVerification/{ID}");
if (request.IsSuccessStatusCode)
{
VerificationCodeModel = await request.Content.ReadFromJsonAsync<VerificationCodeDto>();
}
else
{
nav.NavigateTo($"/");
}
hidden = null;
SpinnerVisible = false;
await base.OnParametersSetAsync();
}
}
@functions {
private async Task ReSend()
{
hidden = "hidden";
SpinnerVisible = !SpinnerVisible;
var request = await _hc.GetAsync($"Verification/ReSend/{VerificationCodeModel?.ID}");
if (request.IsSuccessStatusCode)
{
ShowSuccessAlert("کد مجدد ارسال شد");
}
else
{
var listerror = await request.Content.ReadFromJsonAsync<List<string>>();
ShowDangerAlert(listerror[0]);
}
SpinnerVisible = !SpinnerVisible;
hidden = null;
}
private async Task SubmitVerificationCode()
{
hidden = "hidden";
SpinnerVisible = !SpinnerVisible;
if (!int.TryParse(valueCode, out int code))
return;
VerificationCodeModel.Code = code;
if (VerificationCodeModel.Code < 1000 || VerificationCodeModel.Code > 9000)
{
ShowDangerAlert("کد احراز صحیح نمی باشد");
}
else
{
var request = await _hc.PostAsJsonAsync($"Verification/Submit", VerificationCodeModel);
if (request.IsSuccessStatusCode)
{
var status = await request.Content.ReadFromJsonAsync<bool>();
if (status)
{
if (VerificationCodeModel.Type == "CompanyRegistration")
nav.NavigateTo("/Sign-in/VerificationRegister");
else if (VerificationCodeModel.Type == "ForgetPassword")
nav.NavigateTo("/Sign-in/VerificationFrogetPass");
else if (VerificationCodeModel.Type == "ChangeUserName")
{
userinfo.UserName = VerificationCodeModel.val;
nav.NavigateTo("/Profile/Verification");
}
else
nav.NavigateTo("/");
}
else
{
ShowDangerAlert("خطای سیستمی رخ داده");
}
}
else
{
var listerror = await request.Content.ReadFromJsonAsync<List<string>>();
ShowDangerAlert(listerror[0]);
}
}
SpinnerVisible = !SpinnerVisible;
hidden = null;
}
private void ShowSuccessAlert(string msg)
{
Hidealert = false;
alertColor = AlertColor.Success;
alertIconName = IconName.CheckCircleFill;
alertMessage = msg;
}
private void ShowDangerAlert(string msg)
{
Hidealert = false;
alertColor = AlertColor.Danger;
alertIconName = IconName.ExclamationTriangleFill;
alertMessage = msg;
}
private async Task EndForm()
{
if (!successfull)
await _hc.DeleteAsync($"Verification/Remove/{VerificationCodeModel?.ID}");
if (VerificationCodeModel.Type == "ChangeUserName")
nav.NavigateTo("/Profile");
nav.NavigateTo("/");
}
private ToastMessage CreateToastMessage(ToastType toastType, string Message)
=> new ToastMessage
{
Type = toastType,
Message = Message,
};
}