rework returnUrl - created parser - invalid if contain protocol ref
This commit is contained in:
parent
6a246b1dc5
commit
e85f1c909e
6 changed files with 56 additions and 25 deletions
|
@ -21,6 +21,19 @@ namespace Wonky.Client.Helpers;
|
||||||
|
|
||||||
public static class Utils
|
public static class Utils
|
||||||
{
|
{
|
||||||
|
public static Dictionary<string, string> ParseQueryString(string query)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrWhiteSpace(query) || query.Contains("://"))
|
||||||
|
return new Dictionary<string, string>();
|
||||||
|
|
||||||
|
var elements = query.Split("&");
|
||||||
|
|
||||||
|
return elements.Select(
|
||||||
|
data
|
||||||
|
=> data.Split("="))
|
||||||
|
.ToDictionary(element => element[0], element => element[1]);
|
||||||
|
}
|
||||||
|
|
||||||
public static bool IsValidEmail(string email)
|
public static bool IsValidEmail(string email)
|
||||||
{
|
{
|
||||||
var trimmedEmail = email.Trim();
|
var trimmedEmail = email.Trim();
|
||||||
|
|
|
@ -16,9 +16,7 @@
|
||||||
using Blazored.LocalStorage;
|
using Blazored.LocalStorage;
|
||||||
using Microsoft.AspNetCore.Components;
|
using Microsoft.AspNetCore.Components;
|
||||||
using Wonky.Client.HttpInterfaces;
|
using Wonky.Client.HttpInterfaces;
|
||||||
using Wonky.Client.HttpRepository;
|
|
||||||
using Wonky.Client.Models;
|
using Wonky.Client.Models;
|
||||||
using Wonky.Entity.DTO;
|
|
||||||
using Wonky.Entity.Views;
|
using Wonky.Entity.Views;
|
||||||
|
|
||||||
namespace Wonky.Client.Pages;
|
namespace Wonky.Client.Pages;
|
||||||
|
@ -31,28 +29,38 @@ public partial class CrmReportViewPage
|
||||||
[Inject] public ILocalStorageService Storage { get; set; }
|
[Inject] public ILocalStorageService Storage { get; set; }
|
||||||
private ReportView Report { get; set; } = new();
|
private ReportView Report { get; set; } = new();
|
||||||
private List<ReportItemView> Items { get; set; } = new ();
|
private List<ReportItemView> Items { get; set; } = new ();
|
||||||
|
|
||||||
private bool Working { get; set; } = true;
|
private bool Working { get; set; } = true;
|
||||||
|
private UserInfoView UserInfo { get; set; } = new();
|
||||||
|
private string ReturnUrl { get; set; } = "";
|
||||||
protected override async Task OnInitializedAsync()
|
protected override async Task OnInitializedAsync()
|
||||||
{
|
{
|
||||||
|
UserInfo = await Storage.GetItemAsync<UserInfoView>("_xu");
|
||||||
if (!string.IsNullOrWhiteSpace(ReportDate))
|
if (!string.IsNullOrWhiteSpace(ReportDate))
|
||||||
{
|
{
|
||||||
await GetReport(ReportDate);
|
await GetReport(ReportDate);
|
||||||
}
|
}
|
||||||
|
|
||||||
Working = false;
|
Working = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task Print(PTarget target)
|
private void Print(PTarget target)
|
||||||
{
|
{
|
||||||
var ux = await Storage.GetItemAsync<UserInfoView>("_ux");
|
var returnUrl = new Uri(Navigator.Uri).AbsolutePath;
|
||||||
if (target == PTarget.Order)
|
switch (target)
|
||||||
{
|
{
|
||||||
Navigator.NavigateTo($"/print/orders/{ux.CountryCode}/{ux.Id}/{ReportDate}");
|
case PTarget.Order:
|
||||||
return;
|
Navigator.NavigateTo($"/print/orders/{UserInfo.CountryCode.ToLower()}/{UserInfo.Id}/{ReportDate}?returnUrl={returnUrl}");
|
||||||
|
break;
|
||||||
|
case PTarget.Report:
|
||||||
|
Navigator.NavigateTo($"/print/report/{UserInfo.CountryCode.ToLower()}/{UserInfo.Id}/{ReportDate}?returnUrl={returnUrl}");
|
||||||
|
break;
|
||||||
|
case PTarget.None:
|
||||||
|
break;
|
||||||
|
case PTarget.All:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new ArgumentOutOfRangeException(nameof(target), target, null);
|
||||||
}
|
}
|
||||||
Navigator.NavigateTo($"/print/report/{ux.CountryCode}/{ux.Id}/{ReportDate}");
|
|
||||||
}
|
}
|
||||||
private async Task GetReport(string workDate)
|
private async Task GetReport(string workDate)
|
||||||
{
|
{
|
||||||
|
@ -65,6 +73,7 @@ public partial class CrmReportViewPage
|
||||||
Report = await ReportRepo.GetReport(workDate);
|
Report = await ReportRepo.GetReport(workDate);
|
||||||
|
|
||||||
Items = Report.ReportItems.Where(x => x.Lines.Any()).ToList();
|
Items = Report.ReportItems.Where(x => x.Lines.Any()).ToList();
|
||||||
|
await Storage.SetItemAsync($"{UserInfo.Id}-{Report.ReportData.ReportDate}", Report);
|
||||||
Working = false;
|
Working = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -85,11 +85,10 @@ public partial class OfficeReportViewPage : IDisposable
|
||||||
{
|
{
|
||||||
if (target == PTarget.Order)
|
if (target == PTarget.Order)
|
||||||
{
|
{
|
||||||
Navigator.NavigateTo($"/print/orders/{CountryCode}/{UserId}/{ReportDate}");
|
Navigator.NavigateTo($"/print/orders/{CountryCode}/{UserId}/{ReportDate}?returnUrl={Navigator.Uri}");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Navigator.NavigateTo($"/print/report/{CountryCode}/{UserId}/{ReportDate}");
|
Navigator.NavigateTo($"/print/report/{CountryCode}/{UserId}/{ReportDate}?returnUrl={Navigator.Uri}");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -98,9 +97,10 @@ public partial class OfficeReportViewPage : IDisposable
|
||||||
/// <param name="workDate"></param>
|
/// <param name="workDate"></param>
|
||||||
private async Task FetchReport(string workDate)
|
private async Task FetchReport(string workDate)
|
||||||
{
|
{
|
||||||
|
var returnUrl = new Uri(Navigator.Uri).AbsolutePath;
|
||||||
if (workDate != ReportDate)
|
if (workDate != ReportDate)
|
||||||
{
|
{
|
||||||
Navigator.NavigateTo($"/office/users/advisors/{CountryCode}/{UserId}/reports/{workDate}");
|
Navigator.NavigateTo($"/office/users/advisors/{CountryCode}/{UserId}/reports/{workDate}?returnUrl={returnUrl}");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
using Blazored.LocalStorage;
|
using Blazored.LocalStorage;
|
||||||
using Microsoft.AspNetCore.Components;
|
using Microsoft.AspNetCore.Components;
|
||||||
using Microsoft.JSInterop;
|
using Microsoft.JSInterop;
|
||||||
|
using Wonky.Client.Helpers;
|
||||||
using Wonky.Entity.Views;
|
using Wonky.Entity.Views;
|
||||||
|
|
||||||
namespace Wonky.Client.Pages;
|
namespace Wonky.Client.Pages;
|
||||||
|
@ -32,8 +33,7 @@ public partial class PrintOrdersPage
|
||||||
private ReportView Report { get; set; } = new();
|
private ReportView Report { get; set; } = new();
|
||||||
private List<ReportItemView> Items { get; set; } = new();
|
private List<ReportItemView> Items { get; set; } = new();
|
||||||
private IJSObjectReference JsModule { get; set; }
|
private IJSObjectReference JsModule { get; set; }
|
||||||
|
private string ReturnUrl { get; set; } = "";
|
||||||
|
|
||||||
protected override async Task OnAfterRenderAsync(bool firstRender)
|
protected override async Task OnAfterRenderAsync(bool firstRender)
|
||||||
{
|
{
|
||||||
if (firstRender)
|
if (firstRender)
|
||||||
|
@ -45,6 +45,10 @@ public partial class PrintOrdersPage
|
||||||
|
|
||||||
protected override async Task OnInitializedAsync()
|
protected override async Task OnInitializedAsync()
|
||||||
{
|
{
|
||||||
|
var uri = new Uri(Navigator.Uri);
|
||||||
|
var query = Utils.ParseQueryString(uri.Query[1..]);
|
||||||
|
ReturnUrl = string.IsNullOrWhiteSpace(query["returnUrl"]) ? "/" : query["returnUrl"];
|
||||||
|
|
||||||
Report = await Storage.GetItemAsync<ReportView>($"{UserId}-{ReportDate}");
|
Report = await Storage.GetItemAsync<ReportView>($"{UserId}-{ReportDate}");
|
||||||
Items = Report.ReportItems;
|
Items = Report.ReportItems;
|
||||||
}
|
}
|
||||||
|
@ -53,7 +57,7 @@ public partial class PrintOrdersPage
|
||||||
{
|
{
|
||||||
await JsModule.InvokeVoidAsync("printInvoke");
|
await JsModule.InvokeVoidAsync("printInvoke");
|
||||||
|
|
||||||
Navigator.NavigateTo($"/office/users/advisors/{CountryCode}/{UserId}/reports/{ReportDate}");
|
Navigator.NavigateTo(ReturnUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -13,9 +13,11 @@
|
||||||
// along with this program. If not, see [https://www.gnu.org/licenses/agpl-3.0.en.html]
|
// along with this program. If not, see [https://www.gnu.org/licenses/agpl-3.0.en.html]
|
||||||
//
|
//
|
||||||
|
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
using Blazored.LocalStorage;
|
using Blazored.LocalStorage;
|
||||||
using Microsoft.AspNetCore.Components;
|
using Microsoft.AspNetCore.Components;
|
||||||
using Microsoft.JSInterop;
|
using Microsoft.JSInterop;
|
||||||
|
using Wonky.Client.Helpers;
|
||||||
using Wonky.Entity.Views;
|
using Wonky.Entity.Views;
|
||||||
|
|
||||||
namespace Wonky.Client.Pages;
|
namespace Wonky.Client.Pages;
|
||||||
|
@ -31,10 +33,14 @@ public partial class PrintReportPage
|
||||||
[Inject] public ILogger<PrintReportPage> Logger { get; set; }
|
[Inject] public ILogger<PrintReportPage> Logger { get; set; }
|
||||||
private ReportView Report { get; set; } = new();
|
private ReportView Report { get; set; } = new();
|
||||||
private IJSObjectReference JsModule { get; set; }
|
private IJSObjectReference JsModule { get; set; }
|
||||||
private bool Printed { get; set; }
|
private string ReturnUrl { get; set; } = "";
|
||||||
|
|
||||||
protected override async Task OnInitializedAsync()
|
protected override async Task OnInitializedAsync()
|
||||||
{
|
{
|
||||||
|
var uri = new Uri(Navigator.Uri);
|
||||||
|
var query = Utils.ParseQueryString(uri.Query[1..]);
|
||||||
|
ReturnUrl = string.IsNullOrWhiteSpace(query["returnUrl"]) ? "/" : query["returnUrl"];
|
||||||
|
|
||||||
Report = await Storage.GetItemAsync<ReportView>($"{UserId}-{ReportDate}");
|
Report = await Storage.GetItemAsync<ReportView>($"{UserId}-{ReportDate}");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -49,10 +55,9 @@ public partial class PrintReportPage
|
||||||
|
|
||||||
private async Task Print()
|
private async Task Print()
|
||||||
{
|
{
|
||||||
if(!Printed)
|
|
||||||
Printed = true;
|
|
||||||
await JsModule.InvokeVoidAsync("printInvoke");
|
await JsModule.InvokeVoidAsync("printInvoke");
|
||||||
Navigator.NavigateTo($"/office/users/advisors/{CountryCode}/{UserId}/reports/{ReportDate}");
|
|
||||||
|
Navigator.NavigateTo(ReturnUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"appInfo": {
|
"appInfo": {
|
||||||
"name": "Wonky Client",
|
"name": "Wonky Client",
|
||||||
"version": "0.87.1",
|
"version": "0.87.3",
|
||||||
"rc": true,
|
"rc": true,
|
||||||
"sandBox": false,
|
"sandBox": false,
|
||||||
"image": "grumpy-coder.png"
|
"image": "grumpy-coder.png"
|
||||||
|
|
Loading…
Reference in a new issue