fix small cosmetics v.0.50.2

This commit is contained in:
Frede Hundewadt 2022-11-22 13:44:08 +01:00
parent 1184247c4d
commit 096aa9201e
12 changed files with 193 additions and 183 deletions

View file

@ -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 {

View file

@ -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/>
} }

View file

@ -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;
}
} }

View file

@ -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;

View file

@ -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>
} }

View file

@ -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();
Preferences = await PreferenceService.GetPreferences();
_interceptor.RegisterEvent(); SelectedDate = string.IsNullOrWhiteSpace(Preferences.WorkDate) ? DateTime.Now : DateTime.Parse(Preferences.WorkDate);
_interceptor.RegisterBeforeSendEvent();
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();
} }
} }

View file

@ -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>

View file

@ -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; }

View file

@ -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="">&rarr; TAG MIG &larr;</option> <option value="">&rarr; TAG MIG &larr;</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"/>

View file

@ -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;
} }
} }

View file

@ -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;
} }

View file

@ -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",