wip
This commit is contained in:
parent
d4eb8f94a8
commit
6685aad32d
19 changed files with 53 additions and 104 deletions
|
@ -23,6 +23,7 @@
|
|||
<th scope="col">Besøg</th>
|
||||
<th scope="col">Demo</th>
|
||||
<th scope="col">Salg</th>
|
||||
<th scope="col">Notat</th>
|
||||
<th></th>
|
||||
<th class="text-end" scope="col">Beløb</th>
|
||||
</tr>
|
||||
|
@ -34,6 +35,7 @@
|
|||
<td>@activity.Company.Name, @activity.Company.ZipCity</td>
|
||||
<td>@activity.Demo</td>
|
||||
<td>@activity.SalesResume</td>
|
||||
<td>@activity.OfficeNote</td>
|
||||
<td>@(activity.StatusTypeEnum == "Quote" ? "Tilbud" : "Salg")</td>
|
||||
<td class="text-end">@(activity.Closed ? @activity.OrderAmount : 0)</td>
|
||||
</tr>
|
||||
|
|
|
@ -5,5 +5,5 @@ namespace Wonky.Client.Components;
|
|||
|
||||
public partial class ActivityTableComponent
|
||||
{
|
||||
[Parameter] public List<NgReportActivityView> Activities { get; set; }
|
||||
[Parameter] public List<NgActivityReportView> Activities { get; set; }
|
||||
}
|
|
@ -83,7 +83,7 @@ namespace Wonky.Client.HttpInterceptors
|
|||
if (e.Response == null || e.Response.IsSuccessStatusCode)
|
||||
return;
|
||||
|
||||
string message;
|
||||
string message = "An error happened";
|
||||
var currDoc = _navigation.ToBaseRelativePath(_navigation.Uri);
|
||||
if (currDoc.Contains("login"))
|
||||
currDoc = "/";
|
||||
|
@ -91,7 +91,6 @@ namespace Wonky.Client.HttpInterceptors
|
|||
switch (e.Response.StatusCode)
|
||||
{
|
||||
case HttpStatusCode.NotFound:
|
||||
//_navigation.NavigateTo("/404");
|
||||
message = "Der var ingen data ...";
|
||||
_toast.ShowInfo(message);
|
||||
break;
|
||||
|
@ -102,66 +101,7 @@ namespace Wonky.Client.HttpInterceptors
|
|||
message = "Login info skal fornyes ...";
|
||||
_toast.ShowInfo(message);
|
||||
break;
|
||||
case HttpStatusCode.Continue:
|
||||
case HttpStatusCode.SwitchingProtocols:
|
||||
case HttpStatusCode.Processing:
|
||||
case HttpStatusCode.EarlyHints:
|
||||
case HttpStatusCode.OK:
|
||||
case HttpStatusCode.Created:
|
||||
case HttpStatusCode.Accepted:
|
||||
case HttpStatusCode.NonAuthoritativeInformation:
|
||||
case HttpStatusCode.NoContent:
|
||||
case HttpStatusCode.ResetContent:
|
||||
case HttpStatusCode.PartialContent:
|
||||
case HttpStatusCode.MultiStatus:
|
||||
case HttpStatusCode.AlreadyReported:
|
||||
case HttpStatusCode.IMUsed:
|
||||
case HttpStatusCode.Ambiguous:
|
||||
case HttpStatusCode.Moved:
|
||||
case HttpStatusCode.Found:
|
||||
case HttpStatusCode.RedirectMethod:
|
||||
case HttpStatusCode.NotModified:
|
||||
case HttpStatusCode.UseProxy:
|
||||
case HttpStatusCode.Unused:
|
||||
case HttpStatusCode.RedirectKeepVerb:
|
||||
case HttpStatusCode.PermanentRedirect:
|
||||
case HttpStatusCode.PaymentRequired:
|
||||
case HttpStatusCode.Forbidden:
|
||||
case HttpStatusCode.MethodNotAllowed:
|
||||
case HttpStatusCode.NotAcceptable:
|
||||
case HttpStatusCode.ProxyAuthenticationRequired:
|
||||
case HttpStatusCode.RequestTimeout:
|
||||
case HttpStatusCode.Conflict:
|
||||
case HttpStatusCode.Gone:
|
||||
case HttpStatusCode.LengthRequired:
|
||||
case HttpStatusCode.PreconditionFailed:
|
||||
case HttpStatusCode.RequestEntityTooLarge:
|
||||
case HttpStatusCode.RequestUriTooLong:
|
||||
case HttpStatusCode.UnsupportedMediaType:
|
||||
case HttpStatusCode.RequestedRangeNotSatisfiable:
|
||||
case HttpStatusCode.ExpectationFailed:
|
||||
case HttpStatusCode.MisdirectedRequest:
|
||||
case HttpStatusCode.UnprocessableEntity:
|
||||
case HttpStatusCode.Locked:
|
||||
case HttpStatusCode.FailedDependency:
|
||||
case HttpStatusCode.UpgradeRequired:
|
||||
case HttpStatusCode.PreconditionRequired:
|
||||
case HttpStatusCode.TooManyRequests:
|
||||
case HttpStatusCode.RequestHeaderFieldsTooLarge:
|
||||
case HttpStatusCode.UnavailableForLegalReasons:
|
||||
case HttpStatusCode.InternalServerError:
|
||||
case HttpStatusCode.NotImplemented:
|
||||
case HttpStatusCode.BadGateway:
|
||||
case HttpStatusCode.ServiceUnavailable:
|
||||
case HttpStatusCode.GatewayTimeout:
|
||||
case HttpStatusCode.HttpVersionNotSupported:
|
||||
case HttpStatusCode.VariantAlsoNegotiates:
|
||||
case HttpStatusCode.InsufficientStorage:
|
||||
case HttpStatusCode.LoopDetected:
|
||||
case HttpStatusCode.NotExtended:
|
||||
case HttpStatusCode.NetworkAuthenticationRequired:
|
||||
default: _navigation.NavigateTo("/500");
|
||||
message = "500 - Intern server fejl";
|
||||
break;
|
||||
}
|
||||
throw new HttpResponseException(message);
|
||||
|
|
|
@ -54,14 +54,14 @@ public class ActivityHttpRepository : IActivityHttpRepository
|
|||
_apiConfig = configuration.Value;
|
||||
}
|
||||
|
||||
public async Task<NgActivityListView> GetActivities(string activityDate)
|
||||
public async Task<NgActivityListReportView> GetActivities(string activityDate)
|
||||
{
|
||||
var response = await _client
|
||||
.GetAsync($"{_apiConfig.ActivityUri}/date/{activityDate}");
|
||||
var content = await response.Content.ReadAsStringAsync();
|
||||
return string.IsNullOrWhiteSpace(content)
|
||||
? new NgActivityListView()
|
||||
: JsonSerializer.Deserialize<NgActivityListView>(content, _options);
|
||||
? new NgActivityListReportView()
|
||||
: JsonSerializer.Deserialize<NgActivityListReportView>(content, _options);
|
||||
}
|
||||
public async Task<PagingResponse<ActivityDto>> GetActivityPaged(ActivityPagingParams pagingParameters)
|
||||
{
|
||||
|
|
|
@ -28,5 +28,5 @@ public interface IActivityHttpRepository
|
|||
Task<ActivityDto> GetActivity(string id);
|
||||
Task<ApiResponse> CreateActivity(ActivityDto model);
|
||||
Task<ApiResponse> AcceptOffer(string id);
|
||||
Task<NgActivityListView> GetActivities(string activityDate);
|
||||
Task<NgActivityListReportView> GetActivities(string activityDate);
|
||||
}
|
|
@ -44,5 +44,5 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<ActivityTableComponent Activities="_view.Activities"></ActivityTableComponent>
|
||||
<ActivityTableComponent Activities="ReportView.Activities"></ActivityTableComponent>
|
||||
</div>
|
||||
|
|
|
@ -17,7 +17,7 @@ public partial class ActivityToday
|
|||
[Inject] private IActivityHttpRepository _activityRepo { get; set; }
|
||||
[Inject] private IReportHttpRepository _reportRepo { get; set; }
|
||||
[Inject] private IToastService _toast { get; set; }
|
||||
private NgActivityListView _view { get; set; } = new();
|
||||
private NgActivityListReportView ReportView { get; set; } = new();
|
||||
private Preferences _prefs { get; set; } = new();
|
||||
private string _workDate { get; set; } = $"{DateTime.Now:yyyy-MM-dd}";
|
||||
private bool _reportExist = false;
|
||||
|
@ -38,8 +38,8 @@ public partial class ActivityToday
|
|||
{
|
||||
_toast.ShowInfo("Vent nogle sekunder for data");
|
||||
_workDate = workDate;
|
||||
_view = new NgActivityListView();
|
||||
_view = await _activityRepo.GetActivities(workDate);
|
||||
ReportView = new NgActivityListReportView();
|
||||
ReportView = await _activityRepo.GetActivities(workDate);
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
|
|
|
@ -52,7 +52,7 @@
|
|||
<div class="col-md-4">
|
||||
<InputSelect id="statusType" class="form-select" @bind-Value="@_draft.ActivityStatusEnum">
|
||||
<option value="noSale" selected>Ingen salg</option>
|
||||
@if (!string.IsNullOrEmpty(_draft.VatNumber))
|
||||
@if (!string.IsNullOrEmpty(_draft.VatNumber) && !string.IsNullOrEmpty(_draft.Account) && _draft.Account != "NY")
|
||||
{
|
||||
<option value="order">Bestilling</option>
|
||||
<option value="quote">Tilbud</option>
|
||||
|
|
|
@ -46,7 +46,7 @@ public partial class Login
|
|||
else
|
||||
{
|
||||
Logger.LogInformation($"returnUrl={ReturnUrl}");
|
||||
var returnUrl = string.IsNullOrWhiteSpace(ReturnUrl) ? "/companies" : ReturnUrl;
|
||||
var returnUrl = string.IsNullOrWhiteSpace(ReturnUrl) ? "/" : ReturnUrl;
|
||||
NavigationManager.NavigateTo(returnUrl);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,12 +25,4 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
Der er opstået en fejl - det hjælper ikke at prøve igen.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -78,11 +78,11 @@
|
|||
{
|
||||
<td>
|
||||
<input type="time" id="checkIn" class="form-control"
|
||||
@bind-Value="_timestampIn" @bind-Value:event="oninput" @onchange="OnTimeChanged"/>
|
||||
@bind-Value="_checkIn" @bind-Value:event="oninput" @onchange="OnTimeChanged"/>
|
||||
</td>
|
||||
<td>
|
||||
<input type="time" id="checkOut" class="form-control"
|
||||
@bind-Value="_timestampOut" @bind-Value:event="oninput" @onchange="OnTimeChanged"/>
|
||||
@bind-Value="_checkOut" @bind-Value:event="oninput" @onchange="OnTimeChanged"/>
|
||||
</td>
|
||||
}
|
||||
<th>
|
||||
|
|
|
@ -46,13 +46,14 @@ public partial class SalesReportNew : IDisposable
|
|||
private bool _noFigures = true;
|
||||
private bool _working = false;
|
||||
private DateTime _workDate { get; set; } = DateTime.Now;
|
||||
private TimeOnly _timestampIn { get; set; } = new(12, 0);
|
||||
private TimeOnly _timestampOut { get; set; } = new(12, 0);
|
||||
private TimeOnly _checkIn { get; set; } = new(12, 0);
|
||||
private TimeOnly _checkOut { get; set; } = new(12, 0);
|
||||
private DateTime _leaveBegin { get; set; } = DateTime.Now;
|
||||
private DateTime _leaveEnd { get; set; } = DateTime.Now;
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
_working = true;
|
||||
_interceptor.RegisterEvent();
|
||||
_interceptor.RegisterBeforeSendEvent();
|
||||
_editContext = new EditContext(_report);
|
||||
|
@ -62,6 +63,9 @@ public partial class SalesReportNew : IDisposable
|
|||
_prefs = await _userPrefs.GetPreferences();
|
||||
if (!string.IsNullOrWhiteSpace(_prefs.WorkDate))
|
||||
_workDate = DateTime.Parse(_prefs.WorkDate);
|
||||
|
||||
_working = false;
|
||||
|
||||
if(await _reportRepo.ReportExist(_prefs.WorkDate))
|
||||
_navigator.NavigateTo($"/sales-reports/view/{_prefs.WorkDate}");
|
||||
|
||||
|
@ -98,6 +102,8 @@ public partial class SalesReportNew : IDisposable
|
|||
return;
|
||||
}
|
||||
|
||||
_working = true;
|
||||
|
||||
DateTime checkIn;
|
||||
DateTime checkOut;
|
||||
if (_report.DayTypeEnum.ToLower().Contains("leave"))
|
||||
|
@ -107,30 +113,35 @@ public partial class SalesReportNew : IDisposable
|
|||
}
|
||||
else
|
||||
{
|
||||
checkIn = new DateTime(_workDate.Year, _workDate.Month, _workDate.Day, _timestampIn.Hour, _timestampIn.Minute, 0);
|
||||
checkOut = new DateTime(_workDate.Year, _workDate.Month, _workDate.Day, _timestampOut.Hour, _timestampOut.Minute, 0);
|
||||
checkIn = new DateTime(_workDate.Year, _workDate.Month, _workDate.Day, _checkIn.Hour, _checkIn.Minute, 0);
|
||||
checkOut = new DateTime(_workDate.Year, _workDate.Month, _workDate.Day, _checkOut.Hour, _checkOut.Minute, 0);
|
||||
}
|
||||
|
||||
_report.FromDateTime = $"{checkIn:yyyy-MM-dd hh:mm}";
|
||||
_report.ToDateTime = $"{checkOut:yyyy-MM-dd hh:mm}";
|
||||
|
||||
_report.Figures.Distance = _report.Figures.KmEvening - _report.Figures.KmMorning;
|
||||
_report.Figures.DistanceMonth += _report.Figures.Distance;
|
||||
_report.Figures.DistancePrivateMonth += _report.Figures.DistancePrivate;
|
||||
|
||||
_working = true;
|
||||
_logger.LogDebug("_workDate => {workDate}", $"{_workDate:yyyyy-MM-dd}");
|
||||
_logger.LogDebug("_report => {report}", JsonSerializer.Serialize(_report));
|
||||
|
||||
var result = await _reportRepo.PostReport($"{_workDate:yyyy-MM-dd}", _report);
|
||||
|
||||
|
||||
_toast.ShowInfo($"Rapport oprettet {_workDate}");
|
||||
_working = false;
|
||||
_navigator.NavigateTo("/home");
|
||||
}
|
||||
|
||||
private void OnTimeChanged()
|
||||
{
|
||||
var x = new DateTime(_workDate.Year, _workDate.Month, _workDate.Day, _timestampIn.Hour, _timestampIn.Minute,0);
|
||||
_report.FromDateTime = $"{x:yyyy-MM-dd hh:mm}";
|
||||
x = new DateTime(_workDate.Year, _workDate.Month, _workDate.Day, _timestampOut.Hour, _timestampOut.Minute,0);
|
||||
_report.ToDateTime = $"{x:yyyy-MM-dd hh:mm}";
|
||||
var f = new DateTime(_workDate.Year, _workDate.Month, _workDate.Day, _checkIn.Hour, _checkIn.Minute,0);
|
||||
_report.FromDateTime = $"{f:yyyy-MM-dd hh:mm}";
|
||||
|
||||
var t = new DateTime(_workDate.Year, _workDate.Month, _workDate.Day, _checkOut.Hour, _checkOut.Minute,0);
|
||||
_report.ToDateTime = $"{t:yyyy-MM-dd hh:mm}";
|
||||
}
|
||||
|
||||
private void SetWorkDate(string workDate)
|
||||
|
|
|
@ -43,7 +43,7 @@
|
|||
<AuthorizeView Roles="Admin">
|
||||
<div class="nav-item px-3">
|
||||
<NavLink class="nav-link ps-2" href="/admin/users/advisers">
|
||||
<span class="oi oi-people" aria-hidden="true"></span> Sælgere
|
||||
<span class="oi oi-people" aria-hidden="true"></span> Sælgere
|
||||
</NavLink>
|
||||
</div>
|
||||
<div class="nav-item px-3">
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"appInfo": {
|
||||
"name": "Wonky Client",
|
||||
"version": "0.8.51",
|
||||
"version": "0.8.57",
|
||||
"isBeta": true,
|
||||
"image": "grumpy-coder.png"
|
||||
},
|
||||
|
|
|
@ -2,15 +2,18 @@
|
|||
<html lang="da">
|
||||
|
||||
<head>
|
||||
<title>Inno Web CRM</title>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
||||
<!-- <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />-->
|
||||
<!-- <meta http-equiv="Pragma" content="no-cache" />-->
|
||||
<!-- <meta http-equiv="Expires" content="3600" />-->
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="favicon-16x16.png">
|
||||
<link rel="mask-icon" href="safari-pinned-tab.svg" color="#5bbad5">
|
||||
<meta name="msapplication-TileColor" content="#ffaa00">
|
||||
<meta name="theme-color" content="#000">
|
||||
<title>Inno Web CRM</title>
|
||||
<base href="/" />
|
||||
<link href="/bootstrap/css/bootstrap.min.css" rel="stylesheet">
|
||||
<link href="css/app.css" rel="stylesheet" />
|
||||
|
|
7
Wonky.Entity/Views/NgActivityListReportView.cs
Normal file
7
Wonky.Entity/Views/NgActivityListReportView.cs
Normal file
|
@ -0,0 +1,7 @@
|
|||
namespace Wonky.Entity.Views;
|
||||
|
||||
public class NgActivityListReportView
|
||||
{
|
||||
public bool ReportClosed { get; set; }
|
||||
public List<NgActivityReportView> Activities { get; set; } = new();
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
namespace Wonky.Entity.Views;
|
||||
|
||||
public class NgActivityListView
|
||||
{
|
||||
public bool ReportClosed { get; set; }
|
||||
public List<NgReportActivityView> Activities { get; set; } = new();
|
||||
}
|
|
@ -1,9 +1,10 @@
|
|||
namespace Wonky.Entity.Views;
|
||||
|
||||
public class NgReportActivityView
|
||||
public class NgActivityReportView
|
||||
{
|
||||
public ActivityCompanyView Company { get; set; } = new();
|
||||
public string SalesHeadId { get; set; } = "";
|
||||
public string OfficeNote { get; set; } = "";
|
||||
public string StatusTypeEnum { get; set; } = "";
|
||||
public bool Closed { get; set; }
|
||||
public string OrderDate { get; set; } = "";
|
|
@ -3,5 +3,5 @@ namespace Wonky.Entity.Views;
|
|||
public class NgSalesReportView
|
||||
{
|
||||
public NgSalesReport Report { get; set; } = new();
|
||||
public List<NgReportActivityView> Activities { get; set; } = new ();
|
||||
public List<NgActivityReportView> Activities { get; set; } = new ();
|
||||
}
|
Loading…
Reference in a new issue