using System.Linq; using System; using Microsoft.AspNetCore.Components; using Microsoft.Extensions.Primitives; using System.Collections.Generic; using System.IO; using System.Net; using System.Net.Http; using System.Threading.Tasks; namespace FastReport.Web.Blazor.Components.Internal { public partial class ModalContainer { [Inject] internal NavigationManager NavManager { get; set; } private string ExportParametersToString() { if (!ExportParameters.Any()) return ""; var uri = string.Join('&', ExportParameters.Select(kvp => $"{kvp.Key}={kvp.Value}")); #if DEBUG Console.WriteLine(uri); #endif return uri; } private async Task OkClick() { if (WebReport.ExportType == Exports.Email) { if (string.IsNullOrEmpty(ExportParameters["Address"])) return; await SendEmailAsync(); } else { var href = $"{ExportsHelper.GetHref(WebReport)}&{ExportParametersToString()}"; if (WebReport.HasValidationError) return; ExportParameters.Clear(); WebReport.EnableModalDialog = false; NavManager.NavigateTo(href, true); } } private async Task SendEmailAsync() { var href = $"{WebReport.templte_email_export_url}"; var formContent = new FormUrlEncodedContent(new Dictionary { {"Address", ExportParameters["Address"]}, {"Subject", ExportParameters["Subject"]}, {"MessageBody", ExportParameters["MessageBody"]}, {"ExportFormat", ExportParameters["ExportFormat"]}, {"NameAttachmentFile", ExportParameters["NameAttachmentFile"]} }); ExportParameters.Clear(); WebReport.EnableModalDialog = false; var baseUri = new Uri(NavManager.BaseUri); var absoluteUri = new Uri(baseUri, href); using var httpClient = new HttpClient(); var response = await httpClient.PostAsync(absoluteUri, formContent); if (response.IsSuccessStatusCode) { await ShowPositivePopup(); } else if (response.StatusCode == HttpStatusCode.BadRequest) { await ShowNegativePopup(); } } } }