Eddie 2023-08-14 - reject future date on activity creating and report
This commit is contained in:
parent
e30acdb005
commit
d70f59628b
9 changed files with 188 additions and 127 deletions
|
@ -175,7 +175,15 @@ public partial class AdvisorActivityCreatePage : IDisposable
|
||||||
SelectedDate = string.IsNullOrWhiteSpace(_userPref.WorkDate)
|
SelectedDate = string.IsNullOrWhiteSpace(_userPref.WorkDate)
|
||||||
? DateTime.Now
|
? DateTime.Now
|
||||||
: DateTime.Parse(_userPref.WorkDate);
|
: DateTime.Parse(_userPref.WorkDate);
|
||||||
|
|
||||||
|
// 2023-08-14 - reject orders for past or future dates
|
||||||
|
if (SelectedDate.Date != DateTime.Now.Date)
|
||||||
|
{
|
||||||
|
Toaster.ShowError($"Aktivitetsdato er ikke dagens dato. Dato ændres til {DateTime.Now.Date}");
|
||||||
|
SelectedDate = DateTime.Now;
|
||||||
|
await PreferenceService.SetWorkDate(SelectedDate);
|
||||||
|
}
|
||||||
|
|
||||||
// raise flag if report is closed
|
// raise flag if report is closed
|
||||||
ReportClosed = await ReportRepo.ReportExist($"{SelectedDate:yyyy-MM-dd}");
|
ReportClosed = await ReportRepo.ReportExist($"{SelectedDate:yyyy-MM-dd}");
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
@attribute [Authorize(Roles = "Advisor,Supervisor")]
|
@attribute [Authorize(Roles = "Advisor,Supervisor")]
|
||||||
@page "/advisor/reports/new"
|
@page "/advisor/reports/new"
|
||||||
|
|
||||||
<PageTitle>Opret Dagsrapport for @ThisWorkDate</PageTitle>
|
<PageTitle>Opret Dagsrapport for @_thisWorkDate</PageTitle>
|
||||||
|
|
||||||
@* report header *@
|
@* report header *@
|
||||||
<div class="row sticky-top bg-dark text-white rounded-2 mb-2 py-2 align-items-center">
|
<div class="row sticky-top bg-dark text-white rounded-2 mb-2 py-2 align-items-center">
|
||||||
|
@ -54,7 +54,7 @@
|
||||||
<option value="sales">Salgsdag</option>
|
<option value="sales">Salgsdag</option>
|
||||||
<option value="meeting">Salgsmøde</option>
|
<option value="meeting">Salgsmøde</option>
|
||||||
<option value="office">Kontordag</option>
|
<option value="office">Kontordag</option>
|
||||||
@if (IsSupervisor)
|
@if (_isSupervisor)
|
||||||
{
|
{
|
||||||
<option value="supervisor">Medkørende Supervisor</option>
|
<option value="supervisor">Medkørende Supervisor</option>
|
||||||
}
|
}
|
||||||
|
@ -62,39 +62,38 @@
|
||||||
<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"))
|
||||||
{
|
{
|
||||||
Report.Figures.KmMorning = 0;
|
Report.Figures.KmMorning = 0;
|
||||||
<td>
|
<td>
|
||||||
<InputDate class="form-control" @bind-Value="BeginLeave"/>
|
<InputDate class="form-control" @bind-Value="_beginLeave"/>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<InputDate class="form-control" @bind-Value="EndLeave"/>
|
<InputDate class="form-control" @bind-Value="_endLeave"/>
|
||||||
</td>
|
</td>
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Report.Figures.KmMorning = KmMorning;
|
Report.Figures.KmMorning = _kmMorning;
|
||||||
<td>
|
<td>
|
||||||
<input type="time" id="checkIn" class="form-control"
|
<input type="time" id="checkIn" class="form-control"
|
||||||
@bind-Value="CheckIn" @bind-Value:event="oninput" onchange="@OnTimeChanged"/>
|
@bind-Value="_checkIn" @bind-Value:event="oninput" onchange="@OnTimeChanged"/>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<input type="time" id="checkOut" class="form-control"
|
<input type="time" id="checkOut" class="form-control"
|
||||||
@bind-Value="CheckOut" @bind-Value:event="oninput" onchange="@OnTimeChanged"/>
|
@bind-Value="_checkOut" @bind-Value:event="oninput" onchange="@OnTimeChanged"/>
|
||||||
</td>
|
</td>
|
||||||
}
|
}
|
||||||
<td class="text-end">
|
<td class="text-end">
|
||||||
<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>
|
||||||
</td>
|
</td>
|
||||||
<td class="text-end">
|
<td class="text-end">
|
||||||
<button type="button" class="btn btn-primary"
|
<button type="button" class="btn btn-primary"
|
||||||
@onclick="@SubmitReport" disabled="@(NoFigures || Working)">
|
@onclick="@SubmitReport" disabled="@(_noFigures || _working)">
|
||||||
Gem Rapport
|
Gem Rapport
|
||||||
</button>
|
</button>
|
||||||
</td>
|
</td>
|
||||||
|
@ -145,11 +144,11 @@
|
||||||
<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.Distance"
|
<InputNumber class="form-control" @bind-Value="@Report.Figures.Distance"
|
||||||
|
@ -173,7 +172,7 @@
|
||||||
<tr>
|
<tr>
|
||||||
<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>
|
||||||
<td>
|
<td>
|
||||||
<InputNumber class="form-control" @bind-Value="@Report.Figures.DistancePrivateMonth"
|
<InputNumber class="form-control" @bind-Value="@Report.Figures.DistancePrivateMonth"
|
||||||
|
@ -183,10 +182,10 @@
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
@if (Activities.Any())
|
@if (_activities.Any())
|
||||||
{
|
{
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<AdvisorActivityListComponent ActivityList="Activities"/>
|
<AdvisorActivityListComponent ActivityList="_activities"/>
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -196,9 +195,9 @@
|
||||||
</div>
|
</div>
|
||||||
</EditForm>
|
</EditForm>
|
||||||
|
|
||||||
@if (Working)
|
@if (_working)
|
||||||
{
|
{
|
||||||
<WorkingThreeDots/>
|
<WorkingThreeDots/>
|
||||||
}
|
}
|
||||||
|
|
||||||
<ConfirmationModal BodyMessage="@Prompt" OnOkClicked="ConfirmReportCallback" OnCancelClicked="OnCancelCallback" @ref="ConfirmReportModal"/>
|
<ConfirmationModal BodyMessage="@_prompt" OnOkClicked="ConfirmReportCallback" OnCancelClicked="OnCancelCallback" @ref="_confirmModal"/>
|
|
@ -44,24 +44,24 @@ public partial class AdvisorReportCreatePage : IDisposable
|
||||||
// ##########################################################################
|
// ##########################################################################
|
||||||
private EditContext ReportContext { 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 = new();
|
||||||
private ReportFiguresDto InitialValues { get; set; } = new();
|
private ReportFiguresDto _initialValues = new();
|
||||||
private UserPreference Preference { get; set; } = new();
|
private UserPreference _preference = new();
|
||||||
private bool FormInvalid { get; set; } = true;
|
private bool _formInvalid = true;
|
||||||
private bool NoFigures { get; set; } = true;
|
private bool _noFigures = true;
|
||||||
private bool Working { get; set; }
|
private bool _working;
|
||||||
private DateTime ThisWorkDate { get; set; }
|
private DateTime _thisWorkDate;
|
||||||
private TimeOnly CheckIn { get; set; } = new(12, 0);
|
private TimeOnly _checkIn = new(12, 0);
|
||||||
private TimeOnly CheckOut { get; set; } = new(12, 0);
|
private TimeOnly _checkOut = new(12, 0);
|
||||||
private DateTime BeginLeave { get; set; } = DateTime.Now;
|
private DateTime _beginLeave = DateTime.Now;
|
||||||
private DateTime EndLeave { get; set; } = DateTime.Now;
|
private DateTime _endLeave = DateTime.Now;
|
||||||
private ConfirmationModal ConfirmReportModal { get; set; }
|
private ConfirmationModal _confirmModal;
|
||||||
private string Prompt { get; set; } = "";
|
private string _prompt = "";
|
||||||
private string WorkDate { get; set; } = "";
|
private string _workDate = "";
|
||||||
private int CurrKmMonth { get; set; }
|
private int _currKmMonth;
|
||||||
private int CurrKmPrivate { get; set; }
|
private int _currKmPrivate;
|
||||||
private bool IsSupervisor { get; set; }
|
private bool _isSupervisor;
|
||||||
private int KmMorning { get; set; }
|
private int _kmMorning;
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -69,46 +69,46 @@ public partial class AdvisorReportCreatePage : IDisposable
|
||||||
/// </summary>
|
/// </summary>
|
||||||
protected override async Task OnInitializedAsync()
|
protected override async Task OnInitializedAsync()
|
||||||
{
|
{
|
||||||
Interceptor.RegisterEvent();
|
|
||||||
Interceptor.RegisterBeforeSendEvent();
|
|
||||||
|
|
||||||
IsSupervisor = await UserInfo.IsSupervisor();
|
|
||||||
|
|
||||||
ReportContext = new EditContext(Report);
|
ReportContext = new EditContext(Report);
|
||||||
|
|
||||||
ReportContext.OnFieldChanged += HandleFieldChanged;
|
ReportContext.OnFieldChanged += HandleFieldChanged;
|
||||||
ReportContext.OnValidationStateChanged += ValidationChanged;
|
ReportContext.OnValidationStateChanged += ValidationChanged;
|
||||||
|
|
||||||
|
Interceptor.RegisterEvent();
|
||||||
|
Interceptor.RegisterBeforeSendEvent();
|
||||||
|
|
||||||
|
_isSupervisor = await UserInfo.IsSupervisor();
|
||||||
|
|
||||||
PreferenceService.OnChange += ProfileServiceOnOnChange;
|
PreferenceService.OnChange += ProfileServiceOnOnChange;
|
||||||
|
|
||||||
Preference = await PreferenceService.GetPreference();
|
_preference = await PreferenceService.GetPreference();
|
||||||
|
|
||||||
KmMorning = await PreferenceService.GetKmMorning();
|
_kmMorning = await PreferenceService.GetKmMorning();
|
||||||
|
|
||||||
Logger.LogDebug("{}", JsonSerializer.Serialize(Preference));
|
Logger.LogDebug("{}", JsonSerializer.Serialize(_preference));
|
||||||
|
|
||||||
WorkDate = Preference.WorkDate;
|
_workDate = _preference.WorkDate;
|
||||||
if (string.IsNullOrWhiteSpace(WorkDate))
|
if (string.IsNullOrWhiteSpace(_workDate))
|
||||||
{
|
{
|
||||||
ThisWorkDate = DateTime.Now;
|
_thisWorkDate = DateTime.Now;
|
||||||
WorkDate = $"{ThisWorkDate:yyyy-MM-dd}";
|
_workDate = $"{_thisWorkDate:yyyy-MM-dd}";
|
||||||
await PreferenceService.SetWorkDate(ThisWorkDate);
|
await PreferenceService.SetWorkDate(_thisWorkDate);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ThisWorkDate = DateTime.Parse(WorkDate);
|
_thisWorkDate = DateTime.Parse(_workDate);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (await AdvisorSalesReportRepo.ReportExist(WorkDate))
|
if (await AdvisorSalesReportRepo.ReportExist(_workDate))
|
||||||
{
|
{
|
||||||
Navigator.NavigateTo($"/advisor/reports/view/{ThisWorkDate:yyyy-MM-dd}");
|
Navigator.NavigateTo($"/advisor/reports/view/{_thisWorkDate:yyyy-MM-dd}");
|
||||||
}
|
}
|
||||||
|
|
||||||
BeginLeave = ThisWorkDate;
|
_beginLeave = _thisWorkDate;
|
||||||
EndLeave = ThisWorkDate;
|
_endLeave = _thisWorkDate;
|
||||||
|
|
||||||
Report.FromDateTime = $"{ThisWorkDate:yyyy-MM-dd'T'12:00:00}";
|
Report.FromDateTime = $"{_thisWorkDate:yyyy-MM-dd'T'12:00:00}";
|
||||||
Report.ToDateTime = $"{ThisWorkDate:yyyy-MM-dd'T'12:00:00}";
|
Report.ToDateTime = $"{_thisWorkDate:yyyy-MM-dd'T'12:00:00}";
|
||||||
|
|
||||||
Report.Figures.KmMorning = 0;
|
Report.Figures.KmMorning = 0;
|
||||||
Report.Figures.KmEvening = 0;
|
Report.Figures.KmEvening = 0;
|
||||||
|
@ -122,30 +122,30 @@ public partial class AdvisorReportCreatePage : IDisposable
|
||||||
|
|
||||||
private void ProfileServiceOnOnChange(UserPreference userPreference)
|
private void ProfileServiceOnOnChange(UserPreference userPreference)
|
||||||
{
|
{
|
||||||
Preference = userPreference;
|
_preference = userPreference;
|
||||||
WorkDate = Preference.WorkDate;
|
_workDate = _preference.WorkDate;
|
||||||
StateHasChanged();
|
StateHasChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task GetKeyFigures()
|
private async Task GetKeyFigures()
|
||||||
{
|
{
|
||||||
if (Working)
|
if (_working)
|
||||||
return;
|
return;
|
||||||
Working = true;
|
_working = true;
|
||||||
|
|
||||||
Report.Figures = new ReportFiguresDto();
|
Report.Figures = new ReportFiguresDto();
|
||||||
InitialValues = new ReportFiguresDto();
|
_initialValues = new ReportFiguresDto();
|
||||||
Activities = new List<ReportItemView>();
|
_activities = new List<ReportItemView>();
|
||||||
|
|
||||||
var data = await AdvisorSalesReportRepo.InitializeReportData(WorkDate);
|
var data = await AdvisorSalesReportRepo.InitializeReportData(_workDate);
|
||||||
if(data.ReportClosed)
|
if(data.ReportClosed)
|
||||||
Navigator.NavigateTo($"/advisor/reports/view/{ThisWorkDate:yyyy-MM-dd}");
|
Navigator.NavigateTo($"/advisor/reports/view/{_thisWorkDate:yyyy-MM-dd}");
|
||||||
|
|
||||||
Report.Figures = data.ReportData;
|
Report.Figures = data.ReportData;
|
||||||
InitialValues = data.ReportData;
|
_initialValues = data.ReportData;
|
||||||
Activities = data.ReportItems;
|
_activities = data.ReportItems;
|
||||||
CurrKmMonth = data.ReportData.DistanceMonth;
|
_currKmMonth = data.ReportData.DistanceMonth;
|
||||||
CurrKmPrivate = data.ReportData.DistancePrivate;
|
_currKmPrivate = data.ReportData.DistancePrivate;
|
||||||
|
|
||||||
if (Report.DayTypeEnum.ToLower().Contains("leave"))
|
if (Report.DayTypeEnum.ToLower().Contains("leave"))
|
||||||
{
|
{
|
||||||
|
@ -156,28 +156,25 @@ public partial class AdvisorReportCreatePage : IDisposable
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Report.Figures.KmMorning = KmMorning;
|
Report.Figures.KmMorning = _kmMorning;
|
||||||
}
|
}
|
||||||
|
|
||||||
NoFigures = false;
|
_noFigures = false;
|
||||||
Working = false;
|
_working = false;
|
||||||
}
|
}
|
||||||
/// <summary>
|
|
||||||
/// Field data change event
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="sender"></param>
|
|
||||||
/// <param name="e"></param>
|
|
||||||
private void HandleFieldChanged(object sender, FieldChangedEventArgs e)
|
private void HandleFieldChanged(object sender, FieldChangedEventArgs e)
|
||||||
{
|
{
|
||||||
// Console.WriteLine($"e FieldName => {e.FieldIdentifier.FieldName}");
|
// Console.WriteLine($"e FieldName => {e.FieldIdentifier.FieldName}");
|
||||||
FormInvalid = !ReportContext.Validate();
|
_formInvalid = !ReportContext.Validate();
|
||||||
if (KmMorning == 0)
|
if (_kmMorning == 0)
|
||||||
{
|
{
|
||||||
KmMorning = Report.Figures.KmMorning;
|
_kmMorning = Report.Figures.KmMorning;
|
||||||
}
|
}
|
||||||
Report.Figures.Distance = Report.Figures.KmEvening - Report.Figures.KmMorning;
|
Report.Figures.Distance = Report.Figures.KmEvening - Report.Figures.KmMorning;
|
||||||
Report.Figures.DistanceMonth = Report.Figures.Distance + CurrKmMonth;
|
Report.Figures.DistanceMonth = Report.Figures.Distance + _currKmMonth;
|
||||||
Report.Figures.DistancePrivateMonth = Report.Figures.DistancePrivate + CurrKmPrivate;
|
Report.Figures.DistancePrivateMonth = Report.Figures.DistancePrivate + _currKmPrivate;
|
||||||
if (Report.Figures.Distance is > 1000 or < 0 && Report.Figures.KmMorning > 0)
|
if (Report.Figures.Distance is > 1000 or < 0 && Report.Figures.KmMorning > 0)
|
||||||
{
|
{
|
||||||
Toaster.ShowError($"Kørte km for rapporten er '{Report.Figures.Distance}'. Er du sikker på at det er rigtigt?");
|
Toaster.ShowError($"Kørte km for rapporten er '{Report.Figures.Distance}'. Er du sikker på at det er rigtigt?");
|
||||||
|
@ -185,14 +182,10 @@ public partial class AdvisorReportCreatePage : IDisposable
|
||||||
StateHasChanged();
|
StateHasChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Validation change event
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="sender"></param>
|
|
||||||
/// <param name="e"></param>
|
|
||||||
private void ValidationChanged(object sender, ValidationStateChangedEventArgs e)
|
private void ValidationChanged(object sender, ValidationStateChangedEventArgs e)
|
||||||
{
|
{
|
||||||
FormInvalid = false;
|
_formInvalid = false;
|
||||||
ReportContext.OnFieldChanged -= HandleFieldChanged;
|
ReportContext.OnFieldChanged -= HandleFieldChanged;
|
||||||
ReportContext.OnValidationStateChanged -= ValidationChanged;
|
ReportContext.OnValidationStateChanged -= ValidationChanged;
|
||||||
ReportContext = new EditContext(Report);
|
ReportContext = new EditContext(Report);
|
||||||
|
@ -200,76 +193,88 @@ public partial class AdvisorReportCreatePage : IDisposable
|
||||||
ReportContext.OnValidationStateChanged += ValidationChanged;
|
ReportContext.OnValidationStateChanged += ValidationChanged;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Save report confirmed callback
|
|
||||||
/// </summary>
|
|
||||||
private async Task ConfirmReportCallback()
|
private async Task ConfirmReportCallback()
|
||||||
{
|
{
|
||||||
// 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 AdvisorSalesReportRepo.CreateReport(WorkDate, Report);
|
// post report to backend
|
||||||
|
var result = await AdvisorSalesReportRepo.CreateReport(_workDate, Report);
|
||||||
|
|
||||||
Logger.LogDebug("CreateReport.result => {}", JsonSerializer.Serialize(result));
|
Logger.LogDebug("CreateReport.result => {}", JsonSerializer.Serialize(result));
|
||||||
|
|
||||||
// reset km and date confirmation
|
// reset km and date confirmation
|
||||||
await PreferenceService.SetKmMorning(0);
|
await PreferenceService.SetKmMorning(0);
|
||||||
|
|
||||||
// reset date confirmed
|
// reset date confirmed
|
||||||
await PreferenceService.SetDateConfirmed(false);
|
await PreferenceService.SetDateConfirmed(false);
|
||||||
Navigator.NavigateTo($"/advisor/reports/view/{ThisWorkDate:yyyy-MM-dd}");
|
Navigator.NavigateTo($"/advisor/reports/view/{_thisWorkDate:yyyy-MM-dd}");
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Submit report
|
|
||||||
/// </summary>
|
|
||||||
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;
|
||||||
|
|
||||||
|
// 2023-08-14 - reject report for a future date
|
||||||
|
if (_endLeave.Date > DateTime.Now.Date)
|
||||||
|
{
|
||||||
|
Toaster.ShowError("Du har rod i ferie datoer. Prøver du at lave ferierapport før ferien er færdig?");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// check day type
|
// check day type
|
||||||
if (string.IsNullOrWhiteSpace(Report.DayTypeEnum))
|
if (string.IsNullOrWhiteSpace(Report.DayTypeEnum))
|
||||||
{
|
{
|
||||||
Toaster.ShowError("Dagtype skal vælges");
|
Toaster.ShowError("Dagtype skal vælges");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// distance day check - only if not leave
|
// distance day check - only if not leave
|
||||||
if (Report.Figures.KmMorning > Report.Figures.KmEvening && !Report.DayTypeEnum.ToLower().Contains("leave"))
|
if (Report.Figures.KmMorning > Report.Figures.KmEvening && !Report.DayTypeEnum.ToLower().Contains("leave"))
|
||||||
{
|
{
|
||||||
Toaster.ShowError("Km udregning er negativ - kontroller venligst km tal");
|
Toaster.ShowError("Km udregning er negativ - kontroller venligst km tal");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// local working variables
|
// local working variables
|
||||||
DateTime checkIn;
|
DateTime checkIn;
|
||||||
DateTime checkOut;
|
DateTime checkOut;
|
||||||
|
|
||||||
// create a date time object using workDate and workHour input
|
// create a date time object using workDate and workHour input
|
||||||
if (Report.DayTypeEnum.ToLower().Contains("leave"))
|
if (Report.DayTypeEnum.ToLower().Contains("leave"))
|
||||||
{
|
{
|
||||||
checkIn = new DateTime(BeginLeave.Year, BeginLeave.Month, BeginLeave.Day, 0, 0, 0);
|
checkIn = new DateTime(_beginLeave.Year, _beginLeave.Month, _beginLeave.Day, 0, 0, 0);
|
||||||
checkOut = new DateTime(EndLeave.Year, EndLeave.Month, EndLeave.Day, 0, 0, 0);
|
checkOut = new DateTime(_endLeave.Year, _endLeave.Month, _endLeave.Day, 0, 0, 0);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
checkIn = new DateTime(ThisWorkDate.Year, ThisWorkDate.Month, ThisWorkDate.Day, CheckIn.Hour, CheckIn.Minute, 0);
|
checkIn = new DateTime(_thisWorkDate.Year, _thisWorkDate.Month, _thisWorkDate.Day, _checkIn.Hour, _checkIn.Minute, 0);
|
||||||
checkOut = new DateTime(ThisWorkDate.Year, ThisWorkDate.Month, ThisWorkDate.Day, CheckOut.Hour, CheckOut.Minute, 0);
|
checkOut = new DateTime(_thisWorkDate.Year, _thisWorkDate.Month, _thisWorkDate.Day, _checkOut.Hour, _checkOut.Minute, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
// assign a workday number if the day is marked as salesDay
|
// assign a workday number if the day is marked as salesDay
|
||||||
Report.SalesDayNumber = Report.DayTypeEnum == "sales" ? Report.Figures.SalesDayCount + 1 : 0;
|
Report.SalesDayNumber = Report.DayTypeEnum == "sales" ? Report.Figures.SalesDayCount + 1 : 0;
|
||||||
|
|
||||||
// format report date time input
|
// format report date time input
|
||||||
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);
|
||||||
|
|
||||||
Logger.LogDebug("_workDate => {workDate}", $"{ThisWorkDate:yyyy-MM-dd}");
|
Logger.LogDebug("_workDate => {workDate}", $"{_thisWorkDate:yyyy-MM-dd}");
|
||||||
Logger.LogDebug("_report => {report}", JsonSerializer.Serialize(Report));
|
Logger.LogDebug("Report => {report}", JsonSerializer.Serialize(Report));
|
||||||
|
|
||||||
if (Report.DayTypeEnum is "leave" or "sickLeave")
|
if (Report.DayTypeEnum is "leave" or "sickLeave")
|
||||||
{
|
{
|
||||||
// reset distance calculation
|
// reset distance calculation
|
||||||
Report.Figures.KmEvening = 0;
|
Report.Figures.KmEvening = 0;
|
||||||
Report.Figures.KmMorning = 0;
|
Report.Figures.KmMorning = 0;
|
||||||
Report.Figures.DistanceMonth = CurrKmMonth;
|
Report.Figures.DistanceMonth = _currKmMonth;
|
||||||
Report.Figures.DistancePrivateMonth = CurrKmPrivate;
|
Report.Figures.DistancePrivateMonth = _currKmPrivate;
|
||||||
}
|
}
|
||||||
|
|
||||||
// pop confirmation
|
// pop confirmation
|
||||||
|
@ -278,36 +283,31 @@ public partial class AdvisorReportCreatePage : IDisposable
|
||||||
? $"Kørte km for rapporten er <strong>'{Report.Figures.KmEvening - Report.Figures.KmMorning}'</strong>. Er du sikker på at det er rigtigt?<br/>"
|
? $"Kørte km for rapporten er <strong>'{Report.Figures.KmEvening - Report.Figures.KmMorning}'</strong>. Er du sikker på at det er rigtigt?<br/>"
|
||||||
: "";
|
: "";
|
||||||
|
|
||||||
Prompt = $"{warning}<br/>Gem rapport for {ThisWorkDate.ToLongDateString()}?";
|
_prompt = $"{warning}<br/>Gem rapport for {_thisWorkDate.ToLongDateString()}?";
|
||||||
|
|
||||||
ConfirmReportModal.Show();
|
_confirmModal.Show();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// On Time changed - update the Report Date fields
|
|
||||||
/// </summary>
|
|
||||||
private void OnTimeChanged()
|
private void OnTimeChanged()
|
||||||
{
|
{
|
||||||
var f = new DateTime(ThisWorkDate.Year, ThisWorkDate.Month, ThisWorkDate.Day, CheckIn.Hour, CheckIn.Minute,0);
|
var f = new DateTime(_thisWorkDate.Year, _thisWorkDate.Month, _thisWorkDate.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(ThisWorkDate.Year, ThisWorkDate.Month, ThisWorkDate.Day, CheckOut.Hour, CheckOut.Minute,0);
|
var t = new DateTime(_thisWorkDate.Year, _thisWorkDate.Month, _thisWorkDate.Day, _checkOut.Hour, _checkOut.Minute,0);
|
||||||
Report.ToDateTime = $"{t:yyyy-MM-dd'T'HH:mm}";
|
Report.ToDateTime = $"{t:yyyy-MM-dd'T'HH:mm}";
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Set workDate callback
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="workDate"></param>
|
|
||||||
private void SetWorkDateCallback(string workDate)
|
private void SetWorkDateCallback(string workDate)
|
||||||
{
|
{
|
||||||
WorkDate = workDate;
|
_workDate = workDate;
|
||||||
ThisWorkDate = DateTime.Parse(workDate);
|
_thisWorkDate = DateTime.Parse(workDate);
|
||||||
|
|
||||||
NoFigures = true;
|
_noFigures = true;
|
||||||
Report.Figures = new ReportFiguresDto();
|
Report.Figures = new ReportFiguresDto();
|
||||||
InitialValues = 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;
|
||||||
|
@ -315,14 +315,17 @@ public partial class AdvisorReportCreatePage : IDisposable
|
||||||
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 = $"{ThisWorkDate:yyyy-MM-dd'T'12:00}";
|
Report.FromDateTime = $"{_thisWorkDate:yyyy-MM-dd'T'12:00}";
|
||||||
Report.ToDateTime = $"{ThisWorkDate:yyyy-MM-dd'T'12:00}";
|
Report.ToDateTime = $"{_thisWorkDate:yyyy-MM-dd'T'12:00}";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void OnCancelCallback()
|
private void OnCancelCallback()
|
||||||
{
|
{
|
||||||
ConfirmReportModal.Hide();
|
_confirmModal.Hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
Interceptor.DisposeEvent();
|
Interceptor.DisposeEvent();
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
{
|
{
|
||||||
"appInfo": {
|
"appInfo": {
|
||||||
"name": "Wonky Online",
|
"name": "Wonky Online",
|
||||||
"version": "213.0",
|
"version": "222.0",
|
||||||
"rc": false,
|
"rc": true,
|
||||||
"sandBox": true,
|
"sandBox": true,
|
||||||
"image": "grumpy-coder.png",
|
"image": "grumpy-coder.png",
|
||||||
"sdk": "dotnet 7.0"
|
"sdk": "dotnet 7.0"
|
||||||
|
|
10
Wonky.Entity/DTO/WebShopLineDto.cs
Normal file
10
Wonky.Entity/DTO/WebShopLineDto.cs
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
namespace Wonky.Entity.DTO;
|
||||||
|
|
||||||
|
public class WebShopLineDto
|
||||||
|
{
|
||||||
|
public string Discount { get; set; } = "";
|
||||||
|
public string Quantity { get; set; } = "";
|
||||||
|
public string Sku { get; set; } = "";
|
||||||
|
public string Text { get; set; } = "";
|
||||||
|
public string UnitPrice { get; set; } = "";
|
||||||
|
}
|
11
Wonky.Entity/DTO/WebShopOrderDto.cs
Normal file
11
Wonky.Entity/DTO/WebShopOrderDto.cs
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
|
namespace Wonky.Entity.DTO;
|
||||||
|
|
||||||
|
public class WebShopOrderDto
|
||||||
|
{
|
||||||
|
[MaxLength(20)] public string ReferenceNumber { get; set; } = "";
|
||||||
|
[MaxLength(255)] public string OrderNote { get; set; } = "";
|
||||||
|
[Required] public bool ConditionsAccepted { get; set; }
|
||||||
|
[Required] public List<WebShopLineDto> Lines { get; set; } = new();
|
||||||
|
}
|
8
Wonky.Entity/Views/WebShopLIneView.cs
Normal file
8
Wonky.Entity/Views/WebShopLIneView.cs
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
namespace Wonky.Entity.Views;
|
||||||
|
|
||||||
|
public class WebShopLineView
|
||||||
|
{
|
||||||
|
public string Sku { get; set; } = "";
|
||||||
|
public string Quantity { get; set; } = "";
|
||||||
|
public string Text { get; set; } = "";
|
||||||
|
}
|
9
Wonky.Entity/Views/WebShopOrderListView.cs
Normal file
9
Wonky.Entity/Views/WebShopOrderListView.cs
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
namespace Wonky.Entity.Views;
|
||||||
|
|
||||||
|
public class WebShorOrderListView
|
||||||
|
{
|
||||||
|
public string SalesHeadId { get; set; } = "";
|
||||||
|
public string ReferenceNumber { get; set; } = "";
|
||||||
|
public string YourRef { get; set; } = "";
|
||||||
|
public string OrderDate { get; set; } = "";
|
||||||
|
}
|
13
Wonky.Entity/Views/WebShopOrderView.cs
Normal file
13
Wonky.Entity/Views/WebShopOrderView.cs
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
namespace Wonky.Entity.Views;
|
||||||
|
|
||||||
|
public class WebShopOrderView
|
||||||
|
{
|
||||||
|
public string OurRef { get; set; } = "";
|
||||||
|
public string ReferenceNumber { get; set; } = "";
|
||||||
|
public string YourRef { get; set; } = "";
|
||||||
|
public string OrderNote { get; set; } = "";
|
||||||
|
public bool Closed { get; set; }
|
||||||
|
public string OrderDate { get; set; } = "";
|
||||||
|
public List<WebShopLineView> Lines { get; set; } = new();
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue