fix small cosmetics v.0.50.2
This commit is contained in:
parent
1184247c4d
commit
096aa9201e
12 changed files with 193 additions and 183 deletions
|
@ -2,7 +2,8 @@
|
||||||
|
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<label class="col-form-label me-2" for="kmMorning">KmStart</label>
|
<label class="col-form-label me-2" for="kmMorning">KmStart</label>
|
||||||
<input type="number" id="kmMorning" class="form-control" @bind-Value="KmMorning" @bind-Value:event="oninput" @onchange="OnKmChanged"/>
|
<input type="number" id="kmMorning" class="form-control"
|
||||||
|
@bind-Value="KmMorning" @bind-Value:event="oninput" @onchange="OnKmChanged"/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|
|
@ -15,28 +15,28 @@
|
||||||
//
|
//
|
||||||
*@
|
*@
|
||||||
|
|
||||||
@if (ReportList.Any())
|
<div class="list-group list-group-flush">
|
||||||
{
|
<div class="list-group-item px-3 bg-black text-white opacity-75">
|
||||||
<div class="list-group list-group-flush">
|
<div class="row">
|
||||||
<div class="list-group-item px-3 bg-black text-white opacity-75">
|
<div class="fw-bold col">
|
||||||
<div class="row">
|
Dato
|
||||||
<div class="fw-bold col">
|
</div>
|
||||||
Dato
|
<div class="fw-bold col">
|
||||||
</div>
|
Dag
|
||||||
<div class="fw-bold col">
|
</div>
|
||||||
Dag
|
<div class="fw-bold col">
|
||||||
</div>
|
Start
|
||||||
<div class="fw-bold col">
|
</div>
|
||||||
Start
|
<div class="fw-bold col">
|
||||||
</div>
|
Slut
|
||||||
<div class="fw-bold col">
|
</div>
|
||||||
Slut
|
<div class="fw-bold col text-end">
|
||||||
</div>
|
Resultat
|
||||||
<div class="fw-bold col text-end">
|
|
||||||
Resultat
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
@if (_reports.Any())
|
||||||
|
{
|
||||||
@foreach (var report in ReportList)
|
@foreach (var report in ReportList)
|
||||||
{
|
{
|
||||||
<a class="list-group-item list-group-item-action" href="/sales-reports/view/@report.ReportDate">
|
<a class="list-group-item list-group-item-action" href="/sales-reports/view/@report.ReportDate">
|
||||||
|
@ -81,9 +81,9 @@
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
}
|
}
|
||||||
</div>
|
}
|
||||||
}
|
</div>
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
<LoaderThreeDots />
|
<LoaderThreeDots/>
|
||||||
}
|
}
|
|
@ -22,4 +22,9 @@ namespace Wonky.Client.Components;
|
||||||
public partial class ReportTableComponent
|
public partial class ReportTableComponent
|
||||||
{
|
{
|
||||||
[Parameter] public List<NgSalesReportListView> ReportList { get; set; } = new();
|
[Parameter] public List<NgSalesReportListView> ReportList { get; set; } = new();
|
||||||
|
private List<NgSalesReportListView> _reports { get; set; } = new();
|
||||||
|
protected override void OnParametersSet()
|
||||||
|
{
|
||||||
|
_reports = ReportList;
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -288,6 +288,7 @@ public partial class CrmActivityNewPage : IDisposable
|
||||||
DraftStateProvider.Draft.Items.Count == 0 ? "Besøg er oprettet" : "Bestilling er oprettet");
|
DraftStateProvider.Draft.Items.Count == 0 ? "Besøg er oprettet" : "Bestilling er oprettet");
|
||||||
await DeleteDraft();
|
await DeleteDraft();
|
||||||
Navigator.NavigateTo($"/companies");
|
Navigator.NavigateTo($"/companies");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
PoFormInvalid = false;
|
PoFormInvalid = false;
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
<AdvisorActivityKmStartComponent />
|
<AdvisorActivityKmStartComponent />
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-2">
|
<div class="col-md-2">
|
||||||
@if (_reportExist)
|
@if (ReportExist)
|
||||||
{
|
{
|
||||||
<a class="btn btn-primary" href="/sales-reports/view/@($"{SelectedDate:yyyy-MM-dd}")">RAPPORT</a>
|
<a class="btn btn-primary" href="/sales-reports/view/@($"{SelectedDate:yyyy-MM-dd}")">RAPPORT</a>
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,45 +27,47 @@ namespace Wonky.Client.Pages;
|
||||||
|
|
||||||
public partial class CrmActivityTodayPage : IDisposable
|
public partial class CrmActivityTodayPage : IDisposable
|
||||||
{
|
{
|
||||||
[Inject] public PreferenceService _preferenceService { get; set; }
|
[Inject] public PreferenceService PreferenceService { get; set; }
|
||||||
[Inject] public ILogger<CrmActivityTodayPage> _logger { get; set; }
|
[Inject] public ILogger<CrmActivityTodayPage> Logger { get; set; }
|
||||||
[Inject] public HttpInterceptorService _interceptor { get; set; }
|
[Inject] public HttpInterceptorService Interceptor { get; set; }
|
||||||
[Inject] public NavigationManager _navigator { get; set; }
|
[Inject] public NavigationManager Navigator { get; set; }
|
||||||
[Inject] public ICrmActivityHttpRepository CrmActivityRepo { get; set; }
|
[Inject] public ICrmActivityHttpRepository CrmActivityRepo { get; set; }
|
||||||
[Inject] public ICrmReportHttpRepository CrmReportRepo { get; set; }
|
[Inject] public ICrmReportHttpRepository CrmReportRepo { get; set; }
|
||||||
[Inject] public IToastService Toaster { get; set; }
|
[Inject] public IToastService Toaster { get; set; }
|
||||||
private ReportStatusView? ReportStatusView { get; set; } = new();
|
private ReportStatusView? ReportStatusView { get; set; } = new();
|
||||||
private Preferences _prefs { get; set; } = new();
|
private Preferences Preferences { get; set; } = new();
|
||||||
private DateTime SelectedDate { get; set; }
|
private DateTime SelectedDate { get; set; }
|
||||||
private bool _reportExist = false;
|
private bool ReportExist { get; set; }
|
||||||
private bool Loading { get; set; } = true;
|
private bool Loading { get; set; } = true;
|
||||||
|
|
||||||
protected override async Task OnInitializedAsync()
|
protected override async Task OnInitializedAsync()
|
||||||
{
|
{
|
||||||
_prefs = await _preferenceService.GetPreferences();
|
Interceptor.RegisterEvent();
|
||||||
SelectedDate = string.IsNullOrWhiteSpace(_prefs.WorkDate) ? DateTime.Now : DateTime.Parse(_prefs.WorkDate);
|
Interceptor.RegisterBeforeSendEvent();
|
||||||
|
|
||||||
_interceptor.RegisterEvent();
|
Preferences = await PreferenceService.GetPreferences();
|
||||||
_interceptor.RegisterBeforeSendEvent();
|
|
||||||
|
SelectedDate = string.IsNullOrWhiteSpace(Preferences.WorkDate) ? DateTime.Now : DateTime.Parse(Preferences.WorkDate);
|
||||||
|
|
||||||
|
ReportExist = await CrmReportRepo.ReportExist($"{SelectedDate:yyyy-MM-dd}");
|
||||||
|
|
||||||
_reportExist = await CrmReportRepo.ReportExist($"{SelectedDate:yyyy-MM-dd}");
|
|
||||||
await GetActivities($"{SelectedDate:yyyy-MM-dd}");
|
await GetActivities($"{SelectedDate:yyyy-MM-dd}");
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task GetActivities(string workDate)
|
private async Task GetActivities(string workDate)
|
||||||
{
|
{
|
||||||
Toaster.ShowInfo("Vent nogle sekunder for data");
|
Toaster.ShowInfo("Vent nogle sekunder for data", "HENTER DATA");
|
||||||
SelectedDate = DateTime.Parse(workDate);
|
SelectedDate = DateTime.Parse(workDate);
|
||||||
ReportStatusView = new ReportStatusView();
|
ReportStatusView = new ReportStatusView();
|
||||||
ReportStatusView = await CrmActivityRepo.GetActivities($"{SelectedDate:yyyy-MM-dd}");
|
ReportStatusView = await CrmActivityRepo.GetActivities($"{SelectedDate:yyyy-MM-dd}");
|
||||||
_logger.LogDebug("Activities => {}", JsonSerializer.Serialize(ReportStatusView));
|
Logger.LogDebug("Activities => {}", JsonSerializer.Serialize(ReportStatusView));
|
||||||
Loading = false;
|
Loading = false;
|
||||||
Toaster.ClearAll();
|
Toaster.ClearAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
_interceptor.DisposeEvent();
|
Interceptor.DisposeEvent();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -17,15 +17,10 @@
|
||||||
|
|
||||||
@using Wonky.Client.Components
|
@using Wonky.Client.Components
|
||||||
@page "/sales-reports"
|
@page "/sales-reports"
|
||||||
<div class="card">
|
|
||||||
<div class="card-header">
|
<div class="alert text-black border border-1">
|
||||||
<div class="row">
|
<div class="col">
|
||||||
<div class="col">
|
<h3>Rapport Arkiv</h3>
|
||||||
<h3>Rapport Arkiv</h3>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body">
|
<ReportTableComponent ReportList="_reports" />
|
||||||
<ReportTableComponent ReportList="_reports"></ReportTableComponent>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
|
@ -22,7 +22,7 @@ using Wonky.Entity.Views;
|
||||||
|
|
||||||
namespace Wonky.Client.Pages;
|
namespace Wonky.Client.Pages;
|
||||||
|
|
||||||
public partial class CrmActivityReportListPage : IDisposable
|
public partial class CrmReportListPage : IDisposable
|
||||||
{
|
{
|
||||||
[Inject] public ICrmReportHttpRepository CrmReportRepo { get; set; }
|
[Inject] public ICrmReportHttpRepository CrmReportRepo { get; set; }
|
||||||
[Inject] public HttpInterceptorService _interceptor { get; set; }
|
[Inject] public HttpInterceptorService _interceptor { get; set; }
|
|
@ -24,15 +24,18 @@
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<WorkDateComponent OnChangedCallback="SetWorkDate"/>
|
<WorkDateComponent OnChangedCallback="SetWorkDate"/>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col">
|
||||||
|
<AdvisorActivityKmStartComponent />
|
||||||
|
</div>
|
||||||
<div class="col-3 justify-content-center">
|
<div class="col-3 justify-content-center">
|
||||||
@if (_working)
|
@if (Working)
|
||||||
{
|
{
|
||||||
<LoaderThreeDots/>
|
<LoaderThreeDots/>
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<EditForm EditContext="_editContext">
|
<EditForm EditContext="ReportContext">
|
||||||
<div class="sticky-top bg-success bg-opacity-50 rounded-2 px-3">
|
<div class="sticky-top bg-success bg-opacity-50 rounded-2 px-3">
|
||||||
<table class="table">
|
<table class="table">
|
||||||
<thead>
|
<thead>
|
||||||
|
@ -48,7 +51,7 @@
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<select id="dayType" class="col-md-3 form-select"
|
<select id="dayType" class="col-md-3 form-select"
|
||||||
@bind-Value="_report.DayTypeEnum" @bind-Value:event="oninput">
|
@bind-Value="Report.DayTypeEnum" @bind-Value:event="oninput">
|
||||||
<option value="">→ TAG MIG ←</option>
|
<option value="">→ TAG MIG ←</option>
|
||||||
<option value="sales">Salgsdag</option>
|
<option value="sales">Salgsdag</option>
|
||||||
<option value="meeting">Salgsmøde</option>
|
<option value="meeting">Salgsmøde</option>
|
||||||
|
@ -57,9 +60,9 @@
|
||||||
<option value="sickLeave">Sygdom</option>
|
<option value="sickLeave">Sygdom</option>
|
||||||
<option value="leave">Ferie</option>
|
<option value="leave">Ferie</option>
|
||||||
</select>
|
</select>
|
||||||
<ValidationMessage For="@(() => _report.DayTypeEnum)"/>
|
<ValidationMessage For="@(() => Report.DayTypeEnum)"/>
|
||||||
</td>
|
</td>
|
||||||
@if (_report.DayTypeEnum.ToLower().Contains("leave"))
|
@if (Report.DayTypeEnum.ToLower().Contains("leave"))
|
||||||
{
|
{
|
||||||
<td>
|
<td>
|
||||||
<InputDate class="form-control" @bind-Value="_leaveBegin"/>
|
<InputDate class="form-control" @bind-Value="_leaveBegin"/>
|
||||||
|
@ -81,14 +84,14 @@
|
||||||
}
|
}
|
||||||
<th>
|
<th>
|
||||||
<button type="button" class="btn btn-warning"
|
<button type="button" class="btn btn-warning"
|
||||||
@onclick="GetKeyFigures" disabled="@(!_noFigures)">
|
@onclick="GetKeyFigures" disabled="@(!NoFigures)">
|
||||||
Nøgletal
|
Nøgletal
|
||||||
</button>
|
</button>
|
||||||
</th>
|
</th>
|
||||||
<td>
|
<td>
|
||||||
@* <div style="display:@(_working ? "none" : "block");"> *@
|
@* <div style="display:@(_working ? "none" : "block");"> *@
|
||||||
<button type="button" class="btn btn-success"
|
<button type="button" class="btn btn-success"
|
||||||
@onclick="SubmitReport" disabled="@(_noFigures || _working)">
|
@onclick="SubmitReport" disabled="@(NoFigures || Working)">
|
||||||
Gem Rapport
|
Gem Rapport
|
||||||
</button>
|
</button>
|
||||||
@* </div> *@
|
@* </div> *@
|
||||||
|
@ -96,7 +99,7 @@
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
@if (!_report.DayTypeEnum.ToLower().Contains("leave"))
|
@if (!Report.DayTypeEnum.ToLower().Contains("leave"))
|
||||||
{
|
{
|
||||||
<table class="table">
|
<table class="table">
|
||||||
<thead>
|
<thead>
|
||||||
|
@ -108,12 +111,12 @@
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<InputTextArea id="description" class="form-control" @bind-Value="_report.Description"/>
|
<InputTextArea id="description" class="form-control" @bind-Value="Report.Description"/>
|
||||||
<ValidationMessage For="@(() => _report.Description)"/>
|
<ValidationMessage For="@(() => Report.Description)"/>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<InputText id="supervisedBy" class="form-control" @bind-Value="_report.SupervisedBy"/>
|
<InputText id="supervisedBy" class="form-control" @bind-Value="Report.SupervisedBy"/>
|
||||||
<ValidationMessage For="@(() => _report.SupervisedBy)"/>
|
<ValidationMessage For="@(() => Report.SupervisedBy)"/>
|
||||||
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -131,16 +134,16 @@
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<InputNumber class="form-control" @bind-Value="@_report.Figures.KmEvening"
|
<InputNumber class="form-control" @bind-Value="@Report.Figures.KmEvening"
|
||||||
disabled="@(_noFigures)"/>
|
disabled="@(NoFigures)"/>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<InputNumber class="form-control" @bind-Value="@_report.Figures.KmMorning"
|
<InputNumber class="form-control" @bind-Value="@Report.Figures.KmMorning"
|
||||||
disabled="@(_noFigures)"/>
|
disabled="@(NoFigures)"/>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<InputNumber class="form-control" @bind-Value="@_report.Figures.DistancePrivate"
|
<InputNumber class="form-control" @bind-Value="@Report.Figures.DistancePrivate"
|
||||||
disabled="@(_noFigures)"/>
|
disabled="@(NoFigures)"/>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
|
@ -150,7 +153,7 @@
|
||||||
<thead>
|
<thead>
|
||||||
<tr class="bg-dark text-white opacity-75">
|
<tr class="bg-dark text-white opacity-75">
|
||||||
<th></th>
|
<th></th>
|
||||||
<th class="text-center" colspan="2" scope="col">Dagens Demo @(_report.Figures.NewDemoCount + _report.Figures.RecallDemoCount)</th>
|
<th class="text-center" colspan="2" scope="col">Dagens Demo @(Report.Figures.NewDemoCount + Report.Figures.RecallDemoCount)</th>
|
||||||
<th class="text-center border-end" colspan="2" scope="col">Dagens Resultat</th>
|
<th class="text-center border-end" colspan="2" scope="col">Dagens Resultat</th>
|
||||||
<th class="text-center" colspan="4" scope="col">Måneds Resultat</th>
|
<th class="text-center" colspan="4" scope="col">Måneds Resultat</th>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -169,52 +172,52 @@
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="row">N</th>
|
<th scope="row">N</th>
|
||||||
<td class="text-end">@_report.Figures.NewVisitCount</td>
|
<td class="text-end">@Report.Figures.NewVisitCount</td>
|
||||||
<td class="text-end">@_report.Figures.NewDemoCount</td>
|
<td class="text-end">@Report.Figures.NewDemoCount</td>
|
||||||
<td class="text-end">@_report.Figures.NewSaleCount</td>
|
<td class="text-end">@Report.Figures.NewSaleCount</td>
|
||||||
<td class="text-end border-end">@_report.Figures.NewTurnover</td>
|
<td class="text-end border-end">@Report.Figures.NewTurnover</td>
|
||||||
<td class="text-end">@_report.Figures.NewVisitCountMonth</td>
|
<td class="text-end">@Report.Figures.NewVisitCountMonth</td>
|
||||||
<td class="text-end">@_report.Figures.NewDemoCountMonth</td>
|
<td class="text-end">@Report.Figures.NewDemoCountMonth</td>
|
||||||
<td class="text-end">@_report.Figures.NewSaleCountMonth</td>
|
<td class="text-end">@Report.Figures.NewSaleCountMonth</td>
|
||||||
<td class="text-end">@_report.Figures.NewTurnoverMonth</td>
|
<td class="text-end">@Report.Figures.NewTurnoverMonth</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="row">R</th>
|
<th scope="row">R</th>
|
||||||
<td class="text-end">@_report.Figures.RecallVisitCount</td>
|
<td class="text-end">@Report.Figures.RecallVisitCount</td>
|
||||||
<td class="text-end">@_report.Figures.RecallDemoCount</td>
|
<td class="text-end">@Report.Figures.RecallDemoCount</td>
|
||||||
<td class="text-end">@_report.Figures.RecallSaleCount</td>
|
<td class="text-end">@Report.Figures.RecallSaleCount</td>
|
||||||
<td class="text-end border-end">@_report.Figures.RecallTurnover</td>
|
<td class="text-end border-end">@Report.Figures.RecallTurnover</td>
|
||||||
<td class="text-end">@_report.Figures.RecallVisitCountMonth</td>
|
<td class="text-end">@Report.Figures.RecallVisitCountMonth</td>
|
||||||
<td class="text-end">@_report.Figures.RecallDemoCountMonth</td>
|
<td class="text-end">@Report.Figures.RecallDemoCountMonth</td>
|
||||||
<td class="text-end">@_report.Figures.RecallSaleCountMonth</td>
|
<td class="text-end">@Report.Figures.RecallSaleCountMonth</td>
|
||||||
<td class="text-end">@_report.Figures.RecallTurnoverMonth</td>
|
<td class="text-end">@Report.Figures.RecallTurnoverMonth</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="row">SAS</th>
|
<th scope="row">SAS</th>
|
||||||
<td class="bg-light"></td>
|
<td class="bg-light"></td>
|
||||||
<td class="bg-light"></td>
|
<td class="bg-light"></td>
|
||||||
<td class="text-end">@_report.Figures.SasCount</td>
|
<td class="text-end">@Report.Figures.SasCount</td>
|
||||||
<td class="text-end border-end">@_report.Figures.SasTurnover</td>
|
<td class="text-end border-end">@Report.Figures.SasTurnover</td>
|
||||||
<td class="bg-light"></td>
|
<td class="bg-light"></td>
|
||||||
<td class="bg-light"></td>
|
<td class="bg-light"></td>
|
||||||
<td class="text-end">@_report.Figures.SasCountMonth</td>
|
<td class="text-end">@Report.Figures.SasCountMonth</td>
|
||||||
<td class="text-end">@_report.Figures.SasTurnoverMonth</td>
|
<td class="text-end">@Report.Figures.SasTurnoverMonth</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="row">TOTAL</th>
|
<th scope="row">TOTAL</th>
|
||||||
<td class="text-end">@_report.Figures.TotalVisitCount</td>
|
<td class="text-end">@Report.Figures.TotalVisitCount</td>
|
||||||
<td class="text-end">@_report.Figures.TotalDemoCount</td>
|
<td class="text-end">@Report.Figures.TotalDemoCount</td>
|
||||||
<td class="text-end">@_report.Figures.TotalSaleCount</td>
|
<td class="text-end">@Report.Figures.TotalSaleCount</td>
|
||||||
<td class="text-end border-end">@_report.Figures.TotalTurnover</td>
|
<td class="text-end border-end">@Report.Figures.TotalTurnover</td>
|
||||||
<td class="text-end">@_report.Figures.TotalVisitCountMonth</td>
|
<td class="text-end">@Report.Figures.TotalVisitCountMonth</td>
|
||||||
<td class="text-end">@_report.Figures.TotalDemoCountMonth</td>
|
<td class="text-end">@Report.Figures.TotalDemoCountMonth</td>
|
||||||
<td class="text-end">@_report.Figures.TotalSaleCountMonth</td>
|
<td class="text-end">@Report.Figures.TotalSaleCountMonth</td>
|
||||||
<td class="text-end">@_report.Figures.TotalTurnoverMonth</td>
|
<td class="text-end">@Report.Figures.TotalTurnoverMonth</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
@if (_activities != null)
|
@if (Activities != null)
|
||||||
{
|
{
|
||||||
<table class="table">
|
<table class="table">
|
||||||
<thead>
|
<thead>
|
||||||
|
@ -238,7 +241,7 @@
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
@foreach (var activity in _activities)
|
@foreach (var activity in Activities)
|
||||||
{
|
{
|
||||||
<tr>
|
<tr>
|
||||||
<td class="text-sm-start">@activity.Company.Name</td>
|
<td class="text-sm-start">@activity.Company.Name</td>
|
||||||
|
@ -271,7 +274,7 @@
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="5"></td>
|
<td colspan="5"></td>
|
||||||
<td class="text-end">Total</td>
|
<td class="text-end">Total</td>
|
||||||
<td class="text-end">@_activities.Where(x => x.StatusTypeEnum != "Quote").Sum(x => x.OrderAmount)</td>
|
<td class="text-end">@Activities.Where(x => x.StatusTypeEnum != "Quote").Sum(x => x.OrderAmount)</td>
|
||||||
<td colspan="2"></td>
|
<td colspan="2"></td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
|
@ -280,4 +283,4 @@
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
</EditForm>
|
</EditForm>
|
||||||
<ConfirmationModal BodyMessage="@_prompt" OnOkClicked="ReportSaveConfirmed" @ref="_confirmReport"/>
|
<ConfirmationModal BodyMessage="@Prompt" OnOkClicked="ReportSaveConfirmed" @ref="ConfirmReportModal"/>
|
|
@ -15,6 +15,7 @@
|
||||||
|
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.Runtime.Intrinsics;
|
using System.Runtime.Intrinsics;
|
||||||
|
using System.Text.Encodings.Web;
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
using Blazored.Toast.Services;
|
using Blazored.Toast.Services;
|
||||||
using Microsoft.AspNetCore.Authentication;
|
using Microsoft.AspNetCore.Authentication;
|
||||||
|
@ -34,103 +35,104 @@ namespace Wonky.Client.Pages;
|
||||||
public partial class CrmReportNewPage : IDisposable
|
public partial class CrmReportNewPage : IDisposable
|
||||||
{
|
{
|
||||||
[Inject] public HttpInterceptorService Interceptor { get; set; }
|
[Inject] public HttpInterceptorService Interceptor { get; set; }
|
||||||
[Inject] public PreferenceService PrefsService { get; set; }
|
[Inject] public PreferenceService PreferenceService { get; set; }
|
||||||
[Inject] public ICrmActivityHttpRepository CrmActivityRepo { get; set; }
|
[Inject] public ICrmActivityHttpRepository CrmActivityRepo { get; set; }
|
||||||
[Inject] public ICrmReportHttpRepository CrmReportRepo { get; set; }
|
[Inject] public ICrmReportHttpRepository CrmReportRepo { get; set; }
|
||||||
[Inject] public NavigationManager _navigator { get; set; }
|
[Inject] public NavigationManager Navigator { get; set; }
|
||||||
[Inject] public ILogger<CrmReportNewPage> _logger { get; set; }
|
[Inject] public ILogger<CrmReportNewPage> Logger { get; set; }
|
||||||
[Inject] public IToastService _toast { get; set; }
|
[Inject] public IToastService Toaster { get; set; }
|
||||||
private EditContext _editContext { get; set; }
|
private EditContext ReportContext { get; set; }
|
||||||
private ReportDto _report { get; set; } = new();
|
private ReportDto Report { get; set; } = new();
|
||||||
private List<ReportItemView> _activities { get; set; } = new();
|
private List<ReportItemView> Activities { get; set; } = new();
|
||||||
private ReportFiguresDto _init { get; set; }
|
private ReportFiguresDto InitialValues { get; set; }
|
||||||
private Preferences _prefs { get; set; } = new();
|
private Preferences Preferences { get; set; } = new();
|
||||||
private bool _formInvalid = true;
|
private bool FormInvalid = true;
|
||||||
private bool _noFigures = true;
|
private bool NoFigures = true;
|
||||||
private bool _working;
|
private bool Working;
|
||||||
private DateTime _workDate { get; set; } = DateTime.Now;
|
private DateTime _workDate { get; set; } = DateTime.Now;
|
||||||
private TimeOnly _checkIn { get; set; } = new(12, 0);
|
private TimeOnly _checkIn { get; set; } = new(12, 0);
|
||||||
private TimeOnly _checkOut { get; set; } = new(12, 0);
|
private TimeOnly _checkOut { get; set; } = new(12, 0);
|
||||||
private DateTime _leaveBegin { get; set; } = DateTime.Now;
|
private DateTime _leaveBegin { get; set; } = DateTime.Now;
|
||||||
private DateTime _leaveEnd { get; set; } = DateTime.Now;
|
private DateTime _leaveEnd { get; set; } = DateTime.Now;
|
||||||
private ConfirmationModal _confirmReport { get; set; }
|
private ConfirmationModal ConfirmReportModal { get; set; }
|
||||||
private string _prompt { get; set; } = "";
|
private string Prompt { get; set; } = "";
|
||||||
|
|
||||||
protected override async Task OnInitializedAsync()
|
protected override async Task OnInitializedAsync()
|
||||||
{
|
{
|
||||||
Interceptor.RegisterEvent();
|
Interceptor.RegisterEvent();
|
||||||
Interceptor.RegisterBeforeSendEvent();
|
Interceptor.RegisterBeforeSendEvent();
|
||||||
_editContext = new EditContext(_report);
|
ReportContext = new EditContext(Report);
|
||||||
_editContext.OnFieldChanged += HandleFieldChanged;
|
ReportContext.OnFieldChanged += HandleFieldChanged;
|
||||||
_editContext.OnValidationStateChanged += ValidationChanged;
|
ReportContext.OnValidationStateChanged += ValidationChanged;
|
||||||
|
|
||||||
_prefs = await PrefsService.GetPreferences();
|
Preferences = await PreferenceService.GetPreferences();
|
||||||
if (!string.IsNullOrWhiteSpace(_prefs.WorkDate))
|
if (!string.IsNullOrWhiteSpace(Preferences.WorkDate))
|
||||||
_workDate = DateTime.Parse(_prefs.WorkDate);
|
_workDate = DateTime.Parse(Preferences.WorkDate);
|
||||||
|
|
||||||
if(await CrmReportRepo.ReportExist(_prefs.WorkDate))
|
if(await CrmReportRepo.ReportExist(Preferences.WorkDate))
|
||||||
_navigator.NavigateTo($"/sales-reports/view/{_prefs.WorkDate}");
|
Navigator.NavigateTo($"/sales-reports/view/{Preferences.WorkDate}");
|
||||||
|
|
||||||
_leaveBegin = _workDate;
|
_leaveBegin = _workDate;
|
||||||
_leaveEnd = _workDate;
|
_leaveEnd = _workDate;
|
||||||
|
|
||||||
_report.FromDateTime = $"{_workDate:yyyy-MM-dd'T'12:00:00}";
|
Report.FromDateTime = $"{_workDate:yyyy-MM-dd'T'12:00:00}";
|
||||||
_report.ToDateTime = $"{_workDate:yyyy-MM-dd'T'12:00:00}";
|
Report.ToDateTime = $"{_workDate:yyyy-MM-dd'T'12:00:00}";
|
||||||
|
|
||||||
_report.Figures.Distance = 0;
|
Report.Figures.Distance = 0;
|
||||||
_report.Figures.DistancePrivateMonth = 0;
|
Report.Figures.DistancePrivateMonth = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void HandleFieldChanged(object sender, FieldChangedEventArgs e)
|
private void HandleFieldChanged(object sender, FieldChangedEventArgs e)
|
||||||
{
|
{
|
||||||
_formInvalid = !_editContext.Validate();
|
FormInvalid = !ReportContext.Validate();
|
||||||
StateHasChanged();
|
StateHasChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ValidationChanged(object sender, ValidationStateChangedEventArgs e)
|
private void ValidationChanged(object sender, ValidationStateChangedEventArgs e)
|
||||||
{
|
{
|
||||||
_formInvalid = false;
|
FormInvalid = false;
|
||||||
_editContext.OnFieldChanged -= HandleFieldChanged;
|
ReportContext.OnFieldChanged -= HandleFieldChanged;
|
||||||
_editContext = new EditContext(_report);
|
ReportContext = new EditContext(Report);
|
||||||
_editContext.OnFieldChanged += HandleFieldChanged;
|
ReportContext.OnFieldChanged += HandleFieldChanged;
|
||||||
_editContext.OnValidationStateChanged += ValidationChanged;
|
ReportContext.OnValidationStateChanged += ValidationChanged;
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task ReportSaveConfirmed()
|
private async Task ReportSaveConfirmed()
|
||||||
{
|
{
|
||||||
// attempt to eliminate doubled click on submit button
|
// attempt to eliminate doubled click on submit button
|
||||||
if (_working)
|
if (Working)
|
||||||
return;
|
return;
|
||||||
_working = true;
|
Working = true;
|
||||||
|
|
||||||
var result = await CrmReportRepo.PostReport($"{_workDate:yyyy-MM-dd}", _report);
|
var result = await CrmReportRepo.PostReport($"{_workDate:yyyy-MM-dd}", Report);
|
||||||
// reset km and date confirmation
|
// reset km and date confirmation
|
||||||
await PrefsService.SetKmMorning(0);
|
// await PreferenceService.SetKmMorning(0);
|
||||||
await PrefsService.SetDateConfirmed(false);
|
// reset date confirmed
|
||||||
_navigator.NavigateTo($"/sales-reports/view/{_workDate:yyyy-MM-dd}");
|
await PreferenceService.SetDateConfirmed(false);
|
||||||
|
Navigator.NavigateTo($"/sales-reports/view/{_workDate:yyyy-MM-dd}");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SubmitReport()
|
private void SubmitReport()
|
||||||
{
|
{
|
||||||
// attempt to eliminate doubled click on submit button
|
// attempt to eliminate doubled click on submit button
|
||||||
if (_working)
|
if (Working)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (string.IsNullOrWhiteSpace(_report.DayTypeEnum))
|
if (string.IsNullOrWhiteSpace(Report.DayTypeEnum))
|
||||||
{
|
{
|
||||||
_toast.ShowError("Dagtype skal vælges");
|
Toaster.ShowError("Dagtype skal vælges");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_report.Figures.KmMorning > _report.Figures.KmEvening)
|
if (Report.Figures.KmMorning > Report.Figures.KmEvening)
|
||||||
{
|
{
|
||||||
_toast.ShowError("Km udregning er negativ - kontroller venligst km tal");
|
Toaster.ShowError("Km udregning er negativ - kontroller venligst km tal");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
DateTime checkIn;
|
DateTime checkIn;
|
||||||
DateTime checkOut;
|
DateTime checkOut;
|
||||||
if (_report.DayTypeEnum.ToLower().Contains("leave"))
|
if (Report.DayTypeEnum.ToLower().Contains("leave"))
|
||||||
{
|
{
|
||||||
checkIn = new DateTime(_leaveBegin.Year, _leaveBegin.Month, _leaveBegin.Day, 0, 0, 0);
|
checkIn = new DateTime(_leaveBegin.Year, _leaveBegin.Month, _leaveBegin.Day, 0, 0, 0);
|
||||||
checkOut = new DateTime(_leaveEnd.Year, _leaveEnd.Month, _leaveEnd.Day, 0, 0, 0);
|
checkOut = new DateTime(_leaveEnd.Year, _leaveEnd.Month, _leaveEnd.Day, 0, 0, 0);
|
||||||
|
@ -141,66 +143,66 @@ public partial class CrmReportNewPage : IDisposable
|
||||||
checkOut = new DateTime(_workDate.Year, _workDate.Month, _workDate.Day, _checkOut.Hour, _checkOut.Minute, 0);
|
checkOut = new DateTime(_workDate.Year, _workDate.Month, _workDate.Day, _checkOut.Hour, _checkOut.Minute, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
_report.SalesDayNumber = _report.DayTypeEnum == "sales" ? _report.Figures.SalesDayCount + 1 : 0;
|
Report.SalesDayNumber = Report.DayTypeEnum == "sales" ? Report.Figures.SalesDayCount + 1 : 0;
|
||||||
_report.FromDateTime = checkIn.ToString("yyyy-MM-dd'T'HH:mm:ss", CultureInfo.InvariantCulture);
|
Report.FromDateTime = checkIn.ToString("yyyy-MM-dd'T'HH:mm:ss", CultureInfo.InvariantCulture);
|
||||||
_report.ToDateTime = checkOut.ToString("yyyy-MM-dd'T'HH:mm:ss", CultureInfo.InvariantCulture);
|
Report.ToDateTime = checkOut.ToString("yyyy-MM-dd'T'HH:mm:ss", CultureInfo.InvariantCulture);
|
||||||
|
|
||||||
_report.Figures.Distance = _report.Figures.KmEvening - _report.Figures.KmMorning;
|
Report.Figures.Distance = Report.Figures.KmEvening - Report.Figures.KmMorning;
|
||||||
_report.Figures.DistanceMonth += _report.Figures.Distance;
|
Report.Figures.DistanceMonth += Report.Figures.Distance;
|
||||||
_report.Figures.DistancePrivateMonth += _report.Figures.DistancePrivate;
|
Report.Figures.DistancePrivateMonth += Report.Figures.DistancePrivate;
|
||||||
|
|
||||||
_logger.LogDebug("_workDate => {workDate}", $"{_workDate:yyyy-MM-dd}");
|
Logger.LogDebug("_workDate => {workDate}", $"{_workDate:yyyy-MM-dd}");
|
||||||
_logger.LogDebug("_report => {report}", JsonSerializer.Serialize(_report));
|
Logger.LogDebug("_report => {report}", JsonSerializer.Serialize(Report));
|
||||||
|
|
||||||
_prompt = $"Rapport for {_workDate.ToLongDateString()}?";
|
Prompt = Report.Figures.Distance > 1000 ? $"'{Report.Figures.Distance}'km er meget højt. Er du sikker på at det er rigtigt? Gem rapport for {_workDate.ToLongDateString()}?" : $"Rapport for {_workDate.ToLongDateString()}?";
|
||||||
|
|
||||||
_confirmReport.Show();
|
ConfirmReportModal.Show();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnTimeChanged()
|
private void OnTimeChanged()
|
||||||
{
|
{
|
||||||
var f = new DateTime(_workDate.Year, _workDate.Month, _workDate.Day, _checkIn.Hour, _checkIn.Minute,0);
|
var f = new DateTime(_workDate.Year, _workDate.Month, _workDate.Day, _checkIn.Hour, _checkIn.Minute,0);
|
||||||
_report.FromDateTime = $"{f:yyyy-MM-dd'T'HH:mm}";
|
Report.FromDateTime = $"{f:yyyy-MM-dd'T'HH:mm}";
|
||||||
|
|
||||||
var t = new DateTime(_workDate.Year, _workDate.Month, _workDate.Day, _checkOut.Hour, _checkOut.Minute,0);
|
var t = new DateTime(_workDate.Year, _workDate.Month, _workDate.Day, _checkOut.Hour, _checkOut.Minute,0);
|
||||||
_report.ToDateTime = $"{t:yyyy-MM-dd'T'HH:mm}";
|
Report.ToDateTime = $"{t:yyyy-MM-dd'T'HH:mm}";
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SetWorkDate(string workDate)
|
private void SetWorkDate(string workDate)
|
||||||
{
|
{
|
||||||
_workDate = DateTime.Parse(workDate);
|
_workDate = DateTime.Parse(workDate);
|
||||||
_noFigures = true;
|
NoFigures = true;
|
||||||
_report.Figures = new ReportFiguresDto();
|
Report.Figures = new ReportFiguresDto();
|
||||||
_init = new ReportFiguresDto();
|
InitialValues = new ReportFiguresDto();
|
||||||
_activities = new List<ReportItemView>();
|
Activities = new List<ReportItemView>();
|
||||||
_report.Figures.KmEvening = 0;
|
Report.Figures.KmEvening = 0;
|
||||||
_report.Figures.KmMorning = 0;
|
Report.Figures.KmMorning = 0;
|
||||||
_report.Figures.Distance = 0;
|
Report.Figures.Distance = 0;
|
||||||
_report.Figures.DistanceMonth = 0;
|
Report.Figures.DistanceMonth = 0;
|
||||||
_report.Figures.DistancePrivate = 0;
|
Report.Figures.DistancePrivate = 0;
|
||||||
_report.Figures.DistancePrivateMonth = 0;
|
Report.Figures.DistancePrivateMonth = 0;
|
||||||
_report.FromDateTime = $"{_workDate:yyyy-MM-dd'T'12:00}";
|
Report.FromDateTime = $"{_workDate:yyyy-MM-dd'T'12:00}";
|
||||||
_report.ToDateTime = $"{_workDate:yyyy-MM-dd'T'12:00}";
|
Report.ToDateTime = $"{_workDate:yyyy-MM-dd'T'12:00}";
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task GetKeyFigures()
|
private async Task GetKeyFigures()
|
||||||
{
|
{
|
||||||
_working = true;
|
Working = true;
|
||||||
var data = await CrmReportRepo.InitializeReportData($"{_workDate:yyyy-MM-dd}");
|
var data = await CrmReportRepo.InitializeReportData($"{_workDate:yyyy-MM-dd}");
|
||||||
if(data.ReportClosed)
|
if(data.ReportClosed)
|
||||||
_navigator.NavigateTo($"/sales-reports/view/{_workDate:yyyy-MM-dd}");
|
Navigator.NavigateTo($"/sales-reports/view/{_workDate:yyyy-MM-dd}");
|
||||||
_report.Figures = data.ReportData;
|
Report.Figures = data.ReportData;
|
||||||
_init = data.ReportData;
|
InitialValues = data.ReportData;
|
||||||
_activities = data.ReportItems;
|
Activities = data.ReportItems;
|
||||||
_report.Figures.KmMorning = _prefs.KmMorning;
|
Report.Figures.KmMorning = Preferences.KmMorning;
|
||||||
_noFigures = false;
|
NoFigures = false;
|
||||||
_working = false;
|
Working = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
Interceptor.DisposeEvent();
|
Interceptor.DisposeEvent();
|
||||||
_editContext.OnFieldChanged -= HandleFieldChanged;
|
ReportContext.OnFieldChanged -= HandleFieldChanged;
|
||||||
_editContext.OnValidationStateChanged -= ValidationChanged;
|
ReportContext.OnValidationStateChanged -= ValidationChanged;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -42,11 +42,12 @@ public class RefreshTokenService
|
||||||
|
|
||||||
var expClaim = user.FindFirst(c => c.Type.Contains("exp"))?.Value;
|
var expClaim = user.FindFirst(c => c.Type.Contains("exp"))?.Value;
|
||||||
|
|
||||||
|
//var expTime = DateTimeOffset.FromUnixTimeSeconds(Convert.ToInt64(expClaim));
|
||||||
var expTime = DateTimeOffset.FromUnixTimeSeconds(Convert.ToInt64(expClaim));
|
var expTime = DateTimeOffset.FromUnixTimeSeconds(Convert.ToInt64(expClaim));
|
||||||
|
|
||||||
var diff = expTime - DateTime.UtcNow;
|
var diff = expTime - DateTime.UtcNow;
|
||||||
return diff.TotalMinutes <= 2
|
return diff.TotalMinutes <= 2
|
||||||
? await _authService.RefreshToken().ConfigureAwait(true)
|
? await _authService.RefreshToken() //.ConfigureAwait(true)
|
||||||
: string.Empty;
|
: string.Empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
{
|
{
|
||||||
"appInfo": {
|
"appInfo": {
|
||||||
"name": "Wonky Client",
|
"name": "Wonky Client",
|
||||||
"version": "0.48.1",
|
"version": "0.50.2",
|
||||||
"rc": true,
|
"rc": false,
|
||||||
"sandBox": false,
|
"sandBox": false,
|
||||||
"image": "grumpy-coder.png"
|
"image": "grumpy-coder.png"
|
||||||
},
|
},
|
||||||
"apiConfig": {
|
"apiConfig": {
|
||||||
"innoBaseUrl": "https://zeta.innotec.dk",
|
"innoBaseUrl": "https://dev.innotec.dk",
|
||||||
"glsTrackUrl": "https://www.gls-group.eu/276-I-PORTAL-WEB/content/GLS/DK01/DA/5004.htm?txtAction=71000&txtRefNo=",
|
"glsTrackUrl": "https://www.gls-group.eu/276-I-PORTAL-WEB/content/GLS/DK01/DA/5004.htm?txtAction=71000&txtRefNo=",
|
||||||
"glsId": "",
|
"glsId": "",
|
||||||
"serviceVirk": "api/v2/services/virk",
|
"serviceVirk": "api/v2/services/virk",
|
||||||
|
|
Loading…
Reference in a new issue