wip
This commit is contained in:
parent
b88a5a37a5
commit
76ea8d8fba
17 changed files with 164 additions and 142 deletions
|
@ -59,13 +59,3 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
@code {
|
|
||||||
[Parameter] public SalesReportListView Report { get; set; } = new();
|
|
||||||
[Parameter] public EventCallback<string> OnShowReport { get; set; }
|
|
||||||
|
|
||||||
private void ShowThisReport()
|
|
||||||
{
|
|
||||||
OnShowReport.InvokeAsync(Report.ReportDate);
|
|
||||||
}
|
|
||||||
}
|
|
15
Wonky.Client/Components/ReportListItemComponent.razor.cs
Normal file
15
Wonky.Client/Components/ReportListItemComponent.razor.cs
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
using Microsoft.AspNetCore.Components;
|
||||||
|
using Wonky.Entity.Views;
|
||||||
|
|
||||||
|
namespace Wonky.Client.Components;
|
||||||
|
|
||||||
|
public partial class ReportListItemComponent
|
||||||
|
{
|
||||||
|
[Parameter] public SalesReportListView Report { get; set; } = new();
|
||||||
|
[Parameter] public EventCallback<string> OnShowReport { get; set; }
|
||||||
|
|
||||||
|
private void ShowThisReport()
|
||||||
|
{
|
||||||
|
OnShowReport.InvokeAsync(Report.ReportDate);
|
||||||
|
}
|
||||||
|
}
|
|
@ -40,50 +40,6 @@
|
||||||
@foreach (var report in ReportList)
|
@foreach (var report in ReportList)
|
||||||
{
|
{
|
||||||
<ReportListItemComponent Report="report" OnShowReport="ShowThisReport" />
|
<ReportListItemComponent Report="report" OnShowReport="ShowThisReport" />
|
||||||
|
|
||||||
@*
|
|
||||||
<a class="list-group-item list-group-item-action" href="/sales-reports/view/@report.ReportDate">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col">
|
|
||||||
@report.ReportDate
|
|
||||||
</div>
|
|
||||||
<div class="col">
|
|
||||||
@{
|
|
||||||
switch (report.DayTypeEnum)
|
|
||||||
{
|
|
||||||
case "Sales":
|
|
||||||
<span>Salgsdag</span>
|
|
||||||
break;
|
|
||||||
case "SickLeave":
|
|
||||||
<span>Sygdom</span>
|
|
||||||
break;
|
|
||||||
case "Office":
|
|
||||||
<span>Kontordag</span>
|
|
||||||
break;
|
|
||||||
case "Meeting":
|
|
||||||
<span>Salgsmøde</span>
|
|
||||||
break;
|
|
||||||
case "Leave":
|
|
||||||
<span>Ferie</span>
|
|
||||||
break;
|
|
||||||
case "Supervisor":
|
|
||||||
<span>Medkørende Supervisor</span>
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</div>
|
|
||||||
<div class="col">
|
|
||||||
@(report.DayTypeEnum == "Sales" ? report.FromDateTime.Split(" ")[1] : report.FromDateTime.Split(" ")[0])
|
|
||||||
</div>
|
|
||||||
<div class="col">
|
|
||||||
@(report.DayTypeEnum == "Sales" ? report.ToDateTime.Split(" ")[1] : report.ToDateTime.Split(" ")[0])
|
|
||||||
</div>
|
|
||||||
<div class="col text-end">
|
|
||||||
@report.Turnover
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
*@
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -23,7 +23,9 @@ public partial class ReportTableComponent
|
||||||
{
|
{
|
||||||
[Parameter] public List<SalesReportListView> ReportList { get; set; } = new();
|
[Parameter] public List<SalesReportListView> ReportList { get; set; } = new();
|
||||||
[Parameter] public EventCallback<string> OnShowReport { get; set; }
|
[Parameter] public EventCallback<string> OnShowReport { get; set; }
|
||||||
|
|
||||||
private List<SalesReportListView> Reports { get; set; } = new();
|
private List<SalesReportListView> Reports { get; set; } = new();
|
||||||
|
|
||||||
protected override void OnParametersSet()
|
protected override void OnParametersSet()
|
||||||
{
|
{
|
||||||
Reports = ReportList;
|
Reports = ReportList;
|
||||||
|
@ -33,5 +35,4 @@ public partial class ReportTableComponent
|
||||||
{
|
{
|
||||||
OnShowReport.InvokeAsync(reportDate);
|
OnShowReport.InvokeAsync(reportDate);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -4,6 +4,6 @@ public enum PTarget
|
||||||
{
|
{
|
||||||
None,
|
None,
|
||||||
All,
|
All,
|
||||||
Report,
|
FrontPage,
|
||||||
Order
|
OrderPage
|
||||||
}
|
}
|
|
@ -18,14 +18,13 @@
|
||||||
@using Wonky.Client.Components
|
@using Wonky.Client.Components
|
||||||
@page "/sales-reports"
|
@page "/sales-reports"
|
||||||
|
|
||||||
<div class="alert text-black border border-1">
|
<div class="row bg-dark text-white rounded-2">
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<h3>Rapport Arkiv</h3>
|
<h3>Rapport Arkiv --- crmreportlistpage</h3>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<ReportTableComponent ReportList="ReportList" />
|
<ReportTableComponent ReportList="ReportList" OnShowReport="ShowThisReport" />
|
||||||
|
|
||||||
|
|
||||||
@if (Working)
|
@if (Working)
|
||||||
{
|
{
|
||||||
|
|
|
@ -26,6 +26,8 @@ public partial class CrmReportListPage : IDisposable
|
||||||
{
|
{
|
||||||
[Inject] public ICrmReportHttpRepository ReportRepo { get; set; }
|
[Inject] public ICrmReportHttpRepository ReportRepo { get; set; }
|
||||||
[Inject] public HttpInterceptorService Interceptor { get; set; }
|
[Inject] public HttpInterceptorService Interceptor { get; set; }
|
||||||
|
[Inject] public NavigationManager Navigator { get; set; }
|
||||||
|
[Inject] public ILogger<CrmReportListPage> Logger { get; set; }
|
||||||
|
|
||||||
private List<SalesReportListView> ReportList { get; set; } = new();
|
private List<SalesReportListView> ReportList { get; set; } = new();
|
||||||
private bool Working { get; set; } = true;
|
private bool Working { get; set; } = true;
|
||||||
|
@ -34,11 +36,20 @@ public partial class CrmReportListPage : IDisposable
|
||||||
{
|
{
|
||||||
Interceptor.RegisterEvent();
|
Interceptor.RegisterEvent();
|
||||||
Interceptor.RegisterBeforeSendEvent();
|
Interceptor.RegisterBeforeSendEvent();
|
||||||
await Task.Delay(1000);
|
|
||||||
ReportList = await ReportRepo.GetReports();
|
ReportList = await ReportRepo.GetReports();
|
||||||
|
if (ReportList.Any())
|
||||||
|
ReportList = ReportList.OrderByDescending(x => x.ReportDate).ToList();
|
||||||
|
|
||||||
Working = false;
|
Working = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void ShowThisReport(string reportDate)
|
||||||
|
{
|
||||||
|
Logger.LogDebug("crmreportlistpage => showthisreport <= {}", reportDate);
|
||||||
|
Navigator.NavigateTo($"/sales-reports/view/{reportDate}");
|
||||||
|
}
|
||||||
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
Interceptor.DisposeEvent();
|
Interceptor.DisposeEvent();
|
||||||
|
|
|
@ -26,10 +26,10 @@
|
||||||
<WorkDateComponent OnChangedCallback="FetchReport"/>
|
<WorkDateComponent OnChangedCallback="FetchReport"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-2 d-grid">
|
<div class="col-sm-2 d-grid">
|
||||||
<button class="btn btn-warning" @onclick="() => Print(PTarget.Report)"><i class="bi-printer"></i> Forside</button>
|
<button class="btn btn-warning" @onclick="() => Print(PTarget.FrontPage)"><i class="bi-printer"></i> Forside</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-2 d-grid">
|
<div class="col-sm-2 d-grid">
|
||||||
<button class="btn btn-success" @onclick="() => Print(PTarget.Order)"><i class="bi-printer"></i> Ordrer</button>
|
<button class="btn btn-success" @onclick="() => Print(PTarget.OrderPage)"><i class="bi-printer"></i> Ordrer</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-2 d-grid">
|
<div class="col-sm-2 d-grid">
|
||||||
<button class="btn btn-primary" type="button" onclick="window.print();"><i class="bi-printer"></i> Rapport</button>
|
<button class="btn btn-primary" type="button" onclick="window.print();"><i class="bi-printer"></i> Rapport</button>
|
||||||
|
|
|
@ -18,6 +18,7 @@ using Microsoft.AspNetCore.Components;
|
||||||
using Wonky.Client.HttpInterceptors;
|
using Wonky.Client.HttpInterceptors;
|
||||||
using Wonky.Client.HttpInterfaces;
|
using Wonky.Client.HttpInterfaces;
|
||||||
using Wonky.Client.Models;
|
using Wonky.Client.Models;
|
||||||
|
using Wonky.Client.Services;
|
||||||
using Wonky.Entity.Views;
|
using Wonky.Entity.Views;
|
||||||
|
|
||||||
namespace Wonky.Client.Pages;
|
namespace Wonky.Client.Pages;
|
||||||
|
@ -30,30 +31,40 @@ public partial class CrmReportViewPage : IDisposable
|
||||||
[Inject] public ILocalStorageService Storage { get; set; }
|
[Inject] public ILocalStorageService Storage { get; set; }
|
||||||
[Inject] public HttpInterceptorService Interceptor { get; set; }
|
[Inject] public HttpInterceptorService Interceptor { get; set; }
|
||||||
[Inject] public ILogger<CrmReportViewPage> Logger { get; set; }
|
[Inject] public ILogger<CrmReportViewPage> Logger { get; set; }
|
||||||
|
[Inject] public UserProfileService ProfileService { get; set; }
|
||||||
|
|
||||||
|
private UserPref Prefs { get; set; } = new();
|
||||||
private ReportView Report { get; set; } = new();
|
private ReportView Report { get; set; } = new();
|
||||||
private List<ReportItemView> Activities { get; set; } = new ();
|
private List<ReportItemView> Activities { get; set; } = new ();
|
||||||
private bool Working { get; set; }
|
private bool Working { get; set; }
|
||||||
private UserInfoView UserInfo { get; set; } = new();
|
private UserInfoView UserInfo { get; set; } = new();
|
||||||
|
private string ReturnUrl = "";
|
||||||
|
|
||||||
protected override async Task OnInitializedAsync()
|
protected override async Task OnInitializedAsync()
|
||||||
{
|
{
|
||||||
Interceptor.RegisterEvent();
|
Interceptor.RegisterEvent();
|
||||||
Interceptor.RegisterBeforeSendEvent();
|
Interceptor.RegisterBeforeSendEvent();
|
||||||
|
|
||||||
UserInfo = await Storage.GetItemAsync<UserInfoView>("_xu");
|
UserInfo = await Storage.GetItemAsync<UserInfoView>("_xu");
|
||||||
|
|
||||||
|
ProfileService.OnChange += ProfileServiceOnOnChange;
|
||||||
|
await ProfileService.SetWorkDate(DateTime.Parse(ReportDate));
|
||||||
|
|
||||||
if(!string.IsNullOrWhiteSpace(ReportDate))
|
if(!string.IsNullOrWhiteSpace(ReportDate))
|
||||||
await FetchReport(ReportDate);
|
await FetchReport(ReportDate);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Print(PTarget target)
|
private void Print(PTarget target)
|
||||||
{
|
{
|
||||||
var returnUrl = new Uri(Navigator.Uri).AbsolutePath;
|
ReturnUrl = new Uri(Navigator.Uri).AbsolutePath;
|
||||||
|
|
||||||
switch (target)
|
switch (target)
|
||||||
{
|
{
|
||||||
case PTarget.Order:
|
case PTarget.OrderPage:
|
||||||
Navigator.NavigateTo($"/print/orders/{UserInfo.CountryCode.ToLower()}/{UserInfo.Id}/{ReportDate}?returnUrl={returnUrl}");
|
Navigator.NavigateTo($"/print/orders/{UserInfo.CountryCode.ToLower()}/{UserInfo.Id}/{ReportDate}?returnUrl={ReturnUrl}");
|
||||||
break;
|
break;
|
||||||
case PTarget.Report:
|
case PTarget.FrontPage:
|
||||||
Navigator.NavigateTo($"/print/report/{UserInfo.CountryCode.ToLower()}/{UserInfo.Id}/{ReportDate}?returnUrl={returnUrl}");
|
Navigator.NavigateTo($"/print/report/{UserInfo.CountryCode.ToLower()}/{UserInfo.Id}/{ReportDate}?returnUrl={ReturnUrl}");
|
||||||
break;
|
break;
|
||||||
case PTarget.None:
|
case PTarget.None:
|
||||||
break;
|
break;
|
||||||
|
@ -69,8 +80,13 @@ public partial class CrmReportViewPage : IDisposable
|
||||||
|
|
||||||
// remove busy signal if report is empty
|
// remove busy signal if report is empty
|
||||||
if (string.IsNullOrWhiteSpace(Report.ReportData.ReportDate))
|
if (string.IsNullOrWhiteSpace(Report.ReportData.ReportDate))
|
||||||
|
{
|
||||||
Working = false;
|
Working = false;
|
||||||
ReportDate = workDate;
|
}
|
||||||
|
|
||||||
|
// ensure the browser address bar contains the correct link
|
||||||
|
Navigator.NavigateTo($"/sales-reports/view/{workDate}", false, true);
|
||||||
|
|
||||||
// return if we are already at it
|
// return if we are already at it
|
||||||
if (Working)
|
if (Working)
|
||||||
{
|
{
|
||||||
|
@ -80,24 +96,36 @@ public partial class CrmReportViewPage : IDisposable
|
||||||
// reset variables
|
// reset variables
|
||||||
Report = new ReportView();
|
Report = new ReportView();
|
||||||
Activities = new List<ReportItemView>();
|
Activities = new List<ReportItemView>();
|
||||||
|
|
||||||
// set busy signal
|
// set busy signal
|
||||||
Working = true;
|
Working = true;
|
||||||
|
|
||||||
// fetch report
|
// fetch report
|
||||||
Report = await ReportRepo.GetReport(workDate);
|
Report = await ReportRepo.GetReport(workDate);
|
||||||
|
|
||||||
// extract activities
|
// extract activities
|
||||||
Activities = Report.ReportItems.Where(x => x.Lines.Any()).ToList();
|
Activities = Report.ReportItems.Where(x => x.Lines.Any()).ToList();
|
||||||
|
|
||||||
// store the report locally
|
// store the report locally
|
||||||
if (!string.IsNullOrWhiteSpace(Report.ReportData.ReportDate))
|
if (!string.IsNullOrWhiteSpace(Report.ReportData.ReportDate))
|
||||||
{
|
{
|
||||||
await Storage.SetItemAsync($"{UserInfo.Id}-{Report.ReportData.ReportDate}", Report);
|
await Storage.SetItemAsync($"{UserInfo.Id}-{Report.ReportData.ReportDate}", Report);
|
||||||
}
|
}
|
||||||
|
|
||||||
// remove busy signal
|
// remove busy signal
|
||||||
Working = false;
|
Working = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void ProfileServiceOnOnChange(UserPref userPref)
|
||||||
|
{
|
||||||
|
Prefs = userPref;
|
||||||
|
ReportDate = Prefs.WorkDate;
|
||||||
|
StateHasChanged();
|
||||||
|
}
|
||||||
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
|
ProfileService.OnChange -= ProfileServiceOnOnChange;
|
||||||
Interceptor.DisposeEvent();
|
Interceptor.DisposeEvent();
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -41,9 +41,11 @@ public partial class OfficeReportListPage : IDisposable
|
||||||
Interceptor.RegisterBeforeSendEvent();
|
Interceptor.RegisterBeforeSendEvent();
|
||||||
|
|
||||||
UserInfo = await UserRepo.GetAdvisorInfo(UserId);
|
UserInfo = await UserRepo.GetAdvisorInfo(UserId);
|
||||||
|
|
||||||
var reports = await ReportRepo.GetReports(UserId);
|
var reports = await ReportRepo.GetReports(UserId);
|
||||||
if (reports.Any())
|
if (reports.Any())
|
||||||
ActivityReports = reports.OrderByDescending(x => x.ReportDate).ToList();
|
ActivityReports = reports.OrderByDescending(x => x.ReportDate).ToList();
|
||||||
|
|
||||||
Working = false;
|
Working = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -26,10 +26,10 @@
|
||||||
<WorkDateComponent OnChangedCallback="FetchUserReport"/>
|
<WorkDateComponent OnChangedCallback="FetchUserReport"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-2 d-grid">
|
<div class="col-sm-2 d-grid">
|
||||||
<button class="btn btn-warning" @onclick="() => Print(PTarget.Report)"><i class="bi-printer"></i> Forside</button>
|
<button class="btn btn-warning" @onclick="() => Print(PTarget.FrontPage)"><i class="bi-printer"></i> Forside</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-2 d-grid">
|
<div class="col-sm-2 d-grid">
|
||||||
<button class="btn btn-success" @onclick="() => Print(PTarget.Order)"><i class="bi-printer"></i> Ordrer</button>
|
<button class="btn btn-success" @onclick="() => Print(PTarget.OrderPage)"><i class="bi-printer"></i> Ordrer</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-2 d-grid">
|
<div class="col-sm-2 d-grid">
|
||||||
<button class="btn btn-primary" type="button" onclick="window.print();"><i class="bi-printer"></i> Rapport</button>
|
<button class="btn btn-primary" type="button" onclick="window.print();"><i class="bi-printer"></i> Rapport</button>
|
||||||
|
|
|
@ -83,33 +83,28 @@ public partial class OfficeReportViewPage : IDisposable
|
||||||
private bool Working { get; set; } = true;
|
private bool Working { get; set; } = true;
|
||||||
private UserPref Prefs = new();
|
private UserPref Prefs = new();
|
||||||
private string ReturnUrl = "";
|
private string ReturnUrl = "";
|
||||||
|
private string PrintUrl = "";
|
||||||
|
|
||||||
protected override async Task OnParametersSetAsync()
|
protected override async Task OnParametersSetAsync()
|
||||||
{
|
{
|
||||||
Interceptor.RegisterEvent();
|
Interceptor.RegisterEvent();
|
||||||
Interceptor.RegisterBeforeSendEvent();
|
Interceptor.RegisterBeforeSendEvent();
|
||||||
|
|
||||||
await ProfileService.SetWorkDate(DateTime.Parse(ReportDate));
|
|
||||||
|
|
||||||
ProfileService.OnChange += ProfileServiceOnOnChange;
|
ProfileService.OnChange += ProfileServiceOnOnChange;
|
||||||
|
await ProfileService.SetWorkDate(DateTime.Parse(ReportDate));
|
||||||
//ReturnUrl = new Uri(Navigator.Uri).AbsolutePath.Replace($"/{ReportDate}", "");
|
|
||||||
ReturnUrl = new Uri(Navigator.Uri).AbsolutePath;
|
|
||||||
Logger.LogDebug("Print() => returnUrl <= {}", ReturnUrl);
|
|
||||||
|
|
||||||
await FetchUserReport(ReportDate);
|
await FetchUserReport(ReportDate);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Print(PTarget target)
|
private void Print(PTarget target)
|
||||||
{
|
{
|
||||||
|
ReturnUrl = new Uri(Navigator.Uri).AbsolutePath;
|
||||||
Logger.LogDebug("Print() => returnUrl <= {}", ReturnUrl);
|
|
||||||
switch (target)
|
switch (target)
|
||||||
{
|
{
|
||||||
case PTarget.Order:
|
case PTarget.OrderPage:
|
||||||
Navigator.NavigateTo($"/print/orders/{CountryCode}/{UserId}/{ReportDate}?returnUrl={ReturnUrl}");
|
Navigator.NavigateTo($"/print/orders/{CountryCode}/{UserId}/{ReportDate}?returnUrl={ReturnUrl}");
|
||||||
break;
|
break;
|
||||||
case PTarget.Report:
|
case PTarget.FrontPage:
|
||||||
Navigator.NavigateTo($"/print/report/{CountryCode}/{UserId}/{ReportDate}?returnUrl={ReturnUrl}");
|
Navigator.NavigateTo($"/print/report/{CountryCode}/{UserId}/{ReportDate}?returnUrl={ReturnUrl}");
|
||||||
break;
|
break;
|
||||||
case PTarget.None:
|
case PTarget.None:
|
||||||
|
@ -132,34 +127,48 @@ public partial class OfficeReportViewPage : IDisposable
|
||||||
{
|
{
|
||||||
Working = false;
|
Working = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ReportDate = workDate;
|
||||||
|
|
||||||
|
// ensure the browser address bar contains the correct link
|
||||||
Navigator.NavigateTo($"/office/users/advisors/{CountryCode}/{UserId}/reports/{workDate}", false, true);
|
Navigator.NavigateTo($"/office/users/advisors/{CountryCode}/{UserId}/reports/{workDate}", false, true);
|
||||||
|
|
||||||
// return if we are already at it
|
// return if we are already at it
|
||||||
if (Working)
|
if (Working)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// reset variables
|
// reset variables
|
||||||
Report = new ReportView();
|
Report = new ReportView();
|
||||||
Activities = new List<ReportItemView>();
|
Activities = new List<ReportItemView>();
|
||||||
|
|
||||||
// set busy signal
|
// set busy signal
|
||||||
Working = true;
|
Working = true;
|
||||||
// fetch
|
|
||||||
|
// fetch report
|
||||||
Report = await ReportRepo.GetReport(UserId, workDate);
|
Report = await ReportRepo.GetReport(UserId, workDate);
|
||||||
|
|
||||||
// extract activities
|
// extract activities
|
||||||
Activities = Report.ReportItems.Where(x => x.Lines.Any()).ToList();
|
Activities = Report.ReportItems.Where(x => x.Lines.Any()).ToList();
|
||||||
|
|
||||||
// store locally
|
// store locally
|
||||||
if (!string.IsNullOrWhiteSpace(Report.ReportData.ReportDate))
|
if (!string.IsNullOrWhiteSpace(Report.ReportData.ReportDate))
|
||||||
{
|
{
|
||||||
await Storage.SetItemAsync($"{UserId}-{workDate}", Report);
|
await Storage.SetItemAsync($"{UserId}-{workDate}", Report);
|
||||||
}
|
}
|
||||||
|
|
||||||
// remove busy signal
|
// remove busy signal
|
||||||
Working = false;
|
Working = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ProfileServiceOnOnChange(UserPref userPref)
|
private void ProfileServiceOnOnChange(UserPref userPref)
|
||||||
{
|
{
|
||||||
|
Logger.LogDebug("OfficeReportViewPage => ProfileServiceOnOnChange");
|
||||||
Prefs = userPref;
|
Prefs = userPref;
|
||||||
|
Logger.LogDebug("OfficeReportViewPage => ProfileServiceOnOnChange => Prefs.WorkDate <= {}", Prefs.WorkDate);
|
||||||
ReportDate = Prefs.WorkDate;
|
ReportDate = Prefs.WorkDate;
|
||||||
|
|
||||||
StateHasChanged();
|
StateHasChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
|
|
||||||
@using Wonky.Client.Components
|
@using Wonky.Client.Components
|
||||||
@using Microsoft.AspNetCore.Authorization
|
@using Microsoft.AspNetCore.Authorization
|
||||||
@page "/print/orders/{CountryCode}/{UserId}/{ReportDate}"
|
@page "/print/report/{CountryCode}/{UserId}/{ReportDate}"
|
||||||
@attribute [Authorize(Roles = "Admin,Advisor")]
|
@attribute [Authorize(Roles = "Admin,Advisor")]
|
||||||
|
|
||||||
<div class="row mb-3 d-print-none">
|
<div class="row mb-3 d-print-none">
|
||||||
|
@ -29,7 +29,21 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@foreach (var item in Items.Where(item => item.StatusTypeEnum.ToLower() == "order" && item.ProcessStatusEnum.ToLower() == "none"))
|
<div class="report-main d-print-grid">
|
||||||
{
|
<PageTitle>@Report.ReportData.Name</PageTitle>
|
||||||
<ReportItemComponent ReportItem="@item"></ReportItemComponent>
|
<div class="row">
|
||||||
}
|
<div class="col text-center align-content-center">
|
||||||
|
<h3>@Report.ReportData.Name</h3>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="w-75">
|
||||||
|
<ReportSummaryComponent ReportData="Report.ReportData"/>
|
||||||
|
</div>
|
||||||
|
<div class="w-25">
|
||||||
|
<ReportDistanceLedgerComponent ReportData="Report.ReportData"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<OfficeActivityTableComponent ActivityList="Report.ReportItems"/>
|
||||||
|
<ReportActivityLedgerComponent ReportData="Report.ReportData"/>
|
||||||
|
</div>
|
|
@ -13,6 +13,7 @@
|
||||||
// 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;
|
||||||
|
@ -31,9 +32,18 @@ public partial class PrintFrontPage
|
||||||
[Inject] private IJSRuntime JSRuntime { get; set; }
|
[Inject] private IJSRuntime JSRuntime { get; set; }
|
||||||
[Inject] public ILogger<PrintFrontPage> Logger { get; set; }
|
[Inject] public ILogger<PrintFrontPage> Logger { get; set; }
|
||||||
private ReportView Report { get; set; } = new();
|
private ReportView Report { 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; } = "";
|
private string ReturnUrl { get; set; } = "";
|
||||||
|
|
||||||
|
protected override async Task OnInitializedAsync()
|
||||||
|
{
|
||||||
|
var uri = new Uri(Navigator.Uri);
|
||||||
|
var query = Utils.ParseQuery(uri.Query[1..]);
|
||||||
|
ReturnUrl = string.IsNullOrWhiteSpace(query["returnUrl"]) ? "/" : $"{query["returnUrl"]}" ;
|
||||||
|
|
||||||
|
Report = await Storage.GetItemAsync<ReportView>($"{UserId}-{ReportDate}");
|
||||||
|
}
|
||||||
|
|
||||||
protected override async Task OnAfterRenderAsync(bool firstRender)
|
protected override async Task OnAfterRenderAsync(bool firstRender)
|
||||||
{
|
{
|
||||||
if (firstRender)
|
if (firstRender)
|
||||||
|
@ -43,16 +53,6 @@ public partial class PrintFrontPage
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override async Task OnInitializedAsync()
|
|
||||||
{
|
|
||||||
var uri = new Uri(Navigator.Uri);
|
|
||||||
var query = Utils.ParseQuery(uri.Query[1..]);
|
|
||||||
ReturnUrl = string.IsNullOrWhiteSpace(query["returnUrl"]) ? "/" : $"{query["returnUrl"]}/{ReportDate}";
|
|
||||||
|
|
||||||
Report = await Storage.GetItemAsync<ReportView>($"{UserId}-{ReportDate}");
|
|
||||||
Items = Report.ReportItems;
|
|
||||||
}
|
|
||||||
|
|
||||||
private async Task Print()
|
private async Task Print()
|
||||||
{
|
{
|
||||||
await JsModule.InvokeVoidAsync("printInvoke");
|
await JsModule.InvokeVoidAsync("printInvoke");
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
|
|
||||||
@using Wonky.Client.Components
|
@using Wonky.Client.Components
|
||||||
@using Microsoft.AspNetCore.Authorization
|
@using Microsoft.AspNetCore.Authorization
|
||||||
@page "/print/report/{CountryCode}/{UserId}/{ReportDate}"
|
@page "/print/orders/{CountryCode}/{UserId}/{ReportDate}"
|
||||||
@attribute [Authorize(Roles = "Admin,Advisor")]
|
@attribute [Authorize(Roles = "Admin,Advisor")]
|
||||||
|
|
||||||
<div class="row mb-3 d-print-none">
|
<div class="row mb-3 d-print-none">
|
||||||
|
@ -29,21 +29,18 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="report-main d-print-grid">
|
@if (Items.Any(item => item.StatusTypeEnum.ToLower() == "order" && item.ProcessStatusEnum.ToLower() == "none"))
|
||||||
<PageTitle>@Report.ReportData.Name</PageTitle>
|
{
|
||||||
|
foreach (var item in Items.Where(item => item.StatusTypeEnum.ToLower() == "order" && item.ProcessStatusEnum.ToLower() == "none"))
|
||||||
|
{
|
||||||
|
<ReportItemComponent ReportItem="@item"></ReportItemComponent>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col text-center align-content-center">
|
<div class="col">
|
||||||
<h3>@Report.ReportData.Name</h3>
|
<h3 class="text-center fw-bold">Der er ingen ordrer til udskrivning</h3>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
}
|
||||||
<div class="w-75">
|
|
||||||
<ReportSummaryComponent ReportData="Report.ReportData"/>
|
|
||||||
</div>
|
|
||||||
<div class="w-25">
|
|
||||||
<ReportDistanceLedgerComponent ReportData="Report.ReportData"/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<OfficeActivityTableComponent ActivityList="Report.ReportItems"/>
|
|
||||||
<ReportActivityLedgerComponent ReportData="Report.ReportData"/>
|
|
||||||
</div>
|
|
|
@ -13,7 +13,6 @@
|
||||||
// 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;
|
||||||
|
@ -22,7 +21,7 @@ using Wonky.Entity.Views;
|
||||||
|
|
||||||
namespace Wonky.Client.Pages;
|
namespace Wonky.Client.Pages;
|
||||||
|
|
||||||
public partial class PrintReportPage
|
public partial class PrintOrderPage
|
||||||
{
|
{
|
||||||
[Parameter] public string CountryCode { get; set; } = "";
|
[Parameter] public string CountryCode { get; set; } = "";
|
||||||
[Parameter] public string UserId { get; set; } = "";
|
[Parameter] public string UserId { get; set; } = "";
|
||||||
|
@ -30,20 +29,11 @@ public partial class PrintReportPage
|
||||||
[Inject] public ILocalStorageService Storage { get; set; }
|
[Inject] public ILocalStorageService Storage { get; set; }
|
||||||
[Inject] public NavigationManager Navigator { get; set; }
|
[Inject] public NavigationManager Navigator { get; set; }
|
||||||
[Inject] private IJSRuntime JSRuntime { get; set; }
|
[Inject] private IJSRuntime JSRuntime { get; set; }
|
||||||
[Inject] public ILogger<PrintReportPage> Logger { get; set; }
|
[Inject] public ILogger<PrintOrderPage> Logger { get; set; }
|
||||||
private ReportView Report { get; set; } = new();
|
private ReportView Report { 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; } = "";
|
private string ReturnUrl { get; set; } = "";
|
||||||
|
|
||||||
protected override async Task OnInitializedAsync()
|
|
||||||
{
|
|
||||||
var uri = new Uri(Navigator.Uri);
|
|
||||||
var query = Utils.ParseQuery(uri.Query[1..]);
|
|
||||||
ReturnUrl = string.IsNullOrWhiteSpace(query["returnUrl"]) ? "/" : $"{query["returnUrl"]}/{ReportDate}" ;
|
|
||||||
|
|
||||||
Report = await Storage.GetItemAsync<ReportView>($"{UserId}-{ReportDate}");
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override async Task OnAfterRenderAsync(bool firstRender)
|
protected override async Task OnAfterRenderAsync(bool firstRender)
|
||||||
{
|
{
|
||||||
if (firstRender)
|
if (firstRender)
|
||||||
|
@ -53,6 +43,16 @@ public partial class PrintReportPage
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected override async Task OnInitializedAsync()
|
||||||
|
{
|
||||||
|
var uri = new Uri(Navigator.Uri);
|
||||||
|
var query = Utils.ParseQuery(uri.Query[1..]);
|
||||||
|
ReturnUrl = string.IsNullOrWhiteSpace(query["returnUrl"]) ? "/" : $"{query["returnUrl"]}";
|
||||||
|
|
||||||
|
Report = await Storage.GetItemAsync<ReportView>($"{UserId}-{ReportDate}");
|
||||||
|
Items = Report.ReportItems;
|
||||||
|
}
|
||||||
|
|
||||||
private async Task Print()
|
private async Task Print()
|
||||||
{
|
{
|
||||||
await JsModule.InvokeVoidAsync("printInvoke");
|
await JsModule.InvokeVoidAsync("printInvoke");
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"appInfo": {
|
"appInfo": {
|
||||||
"name": "Wonky Client",
|
"name": "Wonky Client",
|
||||||
"version": "0.87.7",
|
"version": "0.90",
|
||||||
"rc": true,
|
"rc": true,
|
||||||
"sandBox": false,
|
"sandBox": false,
|
||||||
"image": "grumpy-coder.png"
|
"image": "grumpy-coder.png"
|
||||||
|
|
Loading…
Reference in a new issue