@using Shared.DTOs @using System.Text @inject HttpClient _hc @inject IJSRuntime JS
ابزار/سامانه مودیان
نام شرکت به حالت فینگلیش
شناسه ملی شرکت
نام شرکت به فارسی
موبایل
@* *@


@code { private long maxFileSize = 1024 * 15; public string ErrorReadpublickey { get; set; } private EditContext? editContext; [SupplyParameterFromForm] private CsrPrivateKeyDto? modelTaxTools { get; set; } = new CsrPrivateKeyDto(); private ValidationMessageStore? messageStore; protected override void OnInitialized() { // modelTaxTools ??= new(); // editContext = new(modelTaxTools); // editContext.OnValidationRequested += HandleValidationRequested; // messageStore = new(editContext); editContext = new EditContext(modelTaxTools); messageStore = new(editContext); base.OnInitialized(); } // private void HandleValidationRequested(object? sender, // ValidationRequestedEventArgs args) // { // messageStore?.Clear(); // // messageStore?.Add(() => modelTaxTools.Mobile, "Select at least one."); // } } @functions { private async Task CreateCsrAndPrivateKey() { var request = await _hc.PostAsJsonAsync("Base/CreateCsrAndPrivateKey", modelTaxTools); if (request.IsSuccessStatusCode) { messageStore?.Clear(); var res = await request.Content.ReadFromJsonAsync(); await DownloadFileFromStream(res.Base64csr, $"{modelTaxTools.cn}.{res.typecsr}"); await DownloadFileFromStream(res.Base64key, $"{modelTaxTools.cn}.{res.typekey}"); } else { var error = await request.Content.ReadFromJsonAsync>(); messageStore?.Add(() => modelTaxTools.Mobile, error); } } private async Task ReadPublicKeyFromCER(InputFileChangeEventArgs e) { ErrorReadpublickey = ""; if (e.GetMultipleFiles()[0].Size <= maxFileSize) { string Base64Str = ""; using (MemoryStream stream = new MemoryStream()) { await e.GetMultipleFiles()[0].OpenReadStream(maxFileSize).CopyToAsync(stream); byte[] Array = stream.ToArray(); Base64Str = Convert.ToBase64String(Array); } if (!string.IsNullOrEmpty(Base64Str)) { var request = await _hc.PostAsJsonAsync("Base/ReadPublicKeyFromCER", Base64Str); if (request.IsSuccessStatusCode) { var res = await request.Content.ReadFromJsonAsync(); await DownloadFileFromStream(res.PublicKeyBase64, $"{modelTaxTools.cn}.{res.type}"); } else { ErrorReadpublickey = "خطایی در اجرای عملیات رخ داده"; } } } else { ErrorReadpublickey = "حجم فایل بیشتر از حد مجاز می باشد"; } } private Stream GetFileStream(byte[] bytes) { var fileStream = new MemoryStream(bytes); return fileStream; } private async Task DownloadFileFromStream(string Base64, string FileName) { byte[] bytes = System.Convert.FromBase64String(Base64); var fileStream = GetFileStream(bytes); // var fileName = "log.bin"; using var streamRef = new DotNetStreamReference(stream: fileStream); await JS.InvokeVoidAsync("downloadFileFromStream", FileName, streamRef); } }