diff --git a/Wonky.Client/Components/ActivityTableComponent.razor b/Wonky.Client/Components/ActivityTableComponent.razor index 07cde7d3..c32d8995 100644 --- a/Wonky.Client/Components/ActivityTableComponent.razor +++ b/Wonky.Client/Components/ActivityTableComponent.razor @@ -27,8 +27,9 @@ Note sas Beløb - T - H + + + @@ -44,12 +45,13 @@ @(activity.StatusTypeEnum == "Quote" ? 0 : activity.OrderAmount) @if(activity.OurRef.Contains("T:")){} @if(activity.Express){} + @if(activity.StatusTypeEnum == "Quote"){} } Total - @Activities.Sum(x => x.OrderAmount) + @Activities.Where(x => x.StatusTypeEnum == "Order").Sum(x => x.OrderAmount) diff --git a/Wonky.Client/Components/KmMorningComponent.razor b/Wonky.Client/Components/KmMorningComponent.razor new file mode 100644 index 00000000..36154f8b --- /dev/null +++ b/Wonky.Client/Components/KmMorningComponent.razor @@ -0,0 +1,25 @@ +@using Wonky.Client.Services + +
+ + +
+ +@code { + + [Inject] private UserPreferenceService PreferenceService { get; set; } + private int KmMorning { get; set; } + private Preferences Preferences { get; set; } = new(); + + protected override async Task OnInitializedAsync() + { + Preferences = await PreferenceService.GetPreferences(); + KmMorning = Preferences.KmMorning; + } + + private async Task OnKmChanged() + { + await PreferenceService.SetKmMorning(KmMorning); + } + +} \ No newline at end of file diff --git a/Wonky.Client/Components/LandingComponentAdmin.razor b/Wonky.Client/Components/LandingComponentAdmin.razor index 9fa54b7d..d41367c5 100644 --- a/Wonky.Client/Components/LandingComponentAdmin.razor +++ b/Wonky.Client/Components/LandingComponentAdmin.razor @@ -20,3 +20,42 @@ Inno Web CRM +
+
+
+
+
+ ... +
+ danske sælgere +
+
+
+
+
+ ... +
+ norske sælgere +
+
+
+
+
+ ... +
+ svenske sælgere +
+
+
+
+
+ ... +
+ Produkt prisliste +
+
+
+
+
+
+ diff --git a/Wonky.Client/Components/LandingComponentAdmin.razor.css b/Wonky.Client/Components/LandingComponentAdmin.razor.css index 13f6848f..6d753f3d 100644 --- a/Wonky.Client/Components/LandingComponentAdmin.razor.css +++ b/Wonky.Client/Components/LandingComponentAdmin.razor.css @@ -1,3 +1,4 @@ + .workDate { font-size: 1.2em; font-weight: bold; diff --git a/Wonky.Client/HttpRepository/UserHttpRepository.cs b/Wonky.Client/HttpRepository/UserHttpRepository.cs index 6f1b4b1a..c7467e5a 100644 --- a/Wonky.Client/HttpRepository/UserHttpRepository.cs +++ b/Wonky.Client/HttpRepository/UserHttpRepository.cs @@ -54,7 +54,9 @@ public class UserHttpRepository : IUserHttpRepository public async Task GetAdvisorInfo(string userId) { - return await _client.GetFromJsonAsync($"{_api.AdminUser}/{userId}"); + var user = await _client.GetFromJsonAsync($"{_api.AdminUser}/{userId}"); + Console.WriteLine(JsonSerializer.Serialize(user)); + return user; } public async Task UpdateAdvisor(string userId, UserUpdateDto model) @@ -64,12 +66,16 @@ public class UserHttpRepository : IUserHttpRepository public async Task> GetAdminUsers() { - return await _client.GetFromJsonAsync>(_api.AdminOffice); + var users =await _client.GetFromJsonAsync>(_api.AdminOffice); + Console.WriteLine(JsonSerializer.Serialize(users)); + return users; } public async Task GetAdminUserInfo(string userId) { - return await _client.GetFromJsonAsync($"{_api.AdminOffice}/{userId}"); + var user = await _client.GetFromJsonAsync($"{_api.AdminOffice}/{userId}"); + Console.WriteLine(JsonSerializer.Serialize(user)); + return user; } public async Task UpdateAdminUser(string userId, UserUpdateDto model) diff --git a/Wonky.Client/Pages/ActivityTodayListPage.razor b/Wonky.Client/Pages/ActivityTodayListPage.razor index ddde7266..cbf75b0a 100644 --- a/Wonky.Client/Pages/ActivityTodayListPage.razor +++ b/Wonky.Client/Pages/ActivityTodayListPage.razor @@ -21,11 +21,14 @@ @page "/activity-today"
-
-

@(string.IsNullOrWhiteSpace(_workDate) ? "" : $"{DateTime.Parse(_workDate).ToLongDateString()}")

+
+

@(string.IsNullOrWhiteSpace(_workDate) ? "" : $"{DateTime.Parse(_workDate).ToLongDateString()}")

-
- +
+ +
+
+
@if (_reportExist) @@ -41,7 +44,7 @@ @if (ReportItemListView.ReportItems.Any()) { - + } else { diff --git a/Wonky.Client/Pages/ReportNewPageAdvisor.razor.cs b/Wonky.Client/Pages/ReportNewPageAdvisor.razor.cs index 6b7a3494..bbff187d 100644 --- a/Wonky.Client/Pages/ReportNewPageAdvisor.razor.cs +++ b/Wonky.Client/Pages/ReportNewPageAdvisor.razor.cs @@ -45,7 +45,7 @@ public partial class ReportNewPageAdvisor : IDisposable private Preferences _prefs { get; set; } = new(); private bool _formInvalid = true; private bool _noFigures = true; - private bool _working = false; + private bool _working; private DateTime _workDate { get; set; } = DateTime.Now; private TimeOnly _checkIn { get; set; } = new(12, 0); private TimeOnly _checkOut { get; set; } = new(12, 0); @@ -54,7 +54,6 @@ public partial class ReportNewPageAdvisor : IDisposable protected override async Task OnInitializedAsync() { - _working = true; _interceptor.RegisterEvent(); _interceptor.RegisterBeforeSendEvent(); _editContext = new EditContext(_report); @@ -65,8 +64,6 @@ public partial class ReportNewPageAdvisor : IDisposable 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}"); @@ -103,6 +100,12 @@ public partial class ReportNewPageAdvisor : IDisposable return; } + if (_report.Figures.KmMorning > _report.Figures.KmEvening) + { + _toast.ShowError("Km udregning er negativ - kontroller venligst km tal"); + return; + } + _working = true; DateTime checkIn; @@ -130,7 +133,7 @@ public partial class ReportNewPageAdvisor : IDisposable _logger.LogDebug("_report => {report}", JsonSerializer.Serialize(_report)); var result = await _reportRepo.PostReport($"{_workDate:yyyy-MM-dd}", _report); - + await _userPrefs.SetKmMorning(0); _toast.ShowInfo($"Rapport oprettet {_workDate}"); _working = false; @@ -173,6 +176,7 @@ public partial class ReportNewPageAdvisor : IDisposable _report.Figures = data.ReportData; _init = data.ReportData; _activities = data.ReportItems; + _report.Figures.KmMorning = _prefs.KmMorning; _working = false; } diff --git a/Wonky.Client/Pages/ReportViewPageAdvisor.razor.cs b/Wonky.Client/Pages/ReportViewPageAdvisor.razor.cs index b8f5ed87..9feba4b8 100644 --- a/Wonky.Client/Pages/ReportViewPageAdvisor.razor.cs +++ b/Wonky.Client/Pages/ReportViewPageAdvisor.razor.cs @@ -43,6 +43,8 @@ public partial class ReportViewPageAdvisor if(workDate != ReportDate) _navigator.NavigateTo($"/sales-reports/view/{workDate}"); _report = await _reportRepo.GetReport(workDate); - _items = _report.ReportItems.Where(x => x.OrderAmount > 0).ToList(); + + _items = _report.ReportItems.Where(x => x.Lines.Any()).ToList(); + } } \ No newline at end of file diff --git a/Wonky.Client/Pages/ReportViewPageOffice.razor.cs b/Wonky.Client/Pages/ReportViewPageOffice.razor.cs index 0e6f8707..f5d5f52f 100644 --- a/Wonky.Client/Pages/ReportViewPageOffice.razor.cs +++ b/Wonky.Client/Pages/ReportViewPageOffice.razor.cs @@ -80,7 +80,8 @@ public partial class ReportViewPageOffice : IDisposable _items = new List(); Report = await GetUserReport(UserId, workDate); - _items = Report.ReportItems.Where(x => x.OrderAmount > 0).ToList(); + //_items = Report.ReportItems.Where(x => x.OrderAmount > 0).ToList(); + _items = Report.ReportItems.Where(x => x.Lines.Any()).ToList(); } /// diff --git a/Wonky.Client/Services/AuthenticationService.cs b/Wonky.Client/Services/AuthenticationService.cs index 230b8037..2c65f6eb 100644 --- a/Wonky.Client/Services/AuthenticationService.cs +++ b/Wonky.Client/Services/AuthenticationService.cs @@ -33,15 +33,17 @@ namespace Wonky.Client.Services private readonly AuthenticationStateProvider _authStateProvider; private readonly ILocalStorageService _localStorage; private readonly IOptions _apiConfig; + private readonly ILogger _logger; public AuthenticationService(HttpClient client, AuthenticationStateProvider authStateProvider, - ILocalStorageService localStorage, IOptions apiConfig) + ILocalStorageService localStorage, IOptions apiConfig, ILogger logger) { _client = client; _authStateProvider = authStateProvider; _localStorage = localStorage; _apiConfig = apiConfig; + _logger = logger; } public async Task Login(CredentialDto credentials) @@ -111,13 +113,17 @@ namespace Wonky.Client.Services { ((AuthStateProvider)_authStateProvider).NotifyUserLogout(); _client.DefaultRequestHeaders.Authorization = null; - await _localStorage.ClearAsync(); + await _localStorage.RemoveItemsAsync(new List {"_xa", "_xe", "_xr", "_xu"}); + } public async Task UserInfo(bool write = false) { var infoResponse = await _client.GetAsync(_apiConfig.Value.CrmUser); var infoContent = await infoResponse.Content.ReadAsStringAsync(); + + _logger.LogDebug("UserInfo <= {}", infoContent); + var userInfo = JsonSerializer.Deserialize(infoContent, _options); if(write) await _localStorage.SetItemAsync("_xu", userInfo); diff --git a/Wonky.Client/Services/UserPreferenceService.cs b/Wonky.Client/Services/UserPreferenceService.cs index 47ac9f11..f5f8860d 100644 --- a/Wonky.Client/Services/UserPreferenceService.cs +++ b/Wonky.Client/Services/UserPreferenceService.cs @@ -25,6 +25,7 @@ public record Preferences public string? ItemSort { get; set; } = "name"; public string PageSize { get; set; } = "10"; public string WorkDate { get; set; } = ""; + public int KmMorning { get; set; } } public class UserPreferenceService { @@ -34,6 +35,18 @@ public class UserPreferenceService { _localStorageService = localStorageService; } + + public async Task SetKmMorning(int kmMorning) + { + var preferences = await GetPreferences(); + var newPreferences = preferences + with + { + KmMorning = kmMorning + }; + await _localStorageService.SetItemAsync("preferences", newPreferences); + OnChange?.Invoke(newPreferences); + } public async Task SetCompanyFilterPhrase(string filterPhrase) { @@ -46,6 +59,7 @@ public class UserPreferenceService await _localStorageService.SetItemAsync("preferences", newPreferences); OnChange?.Invoke(newPreferences); } + public async Task SetWorkDate(DateTime workDate) { var preferences = await GetPreferences(); @@ -57,6 +71,7 @@ public class UserPreferenceService await _localStorageService.SetItemAsync("preferences", newPreferences); OnChange?.Invoke(newPreferences); } + public async Task SetCompanySearch(string companySearch) { var preferences = await GetPreferences(); @@ -92,6 +107,7 @@ public class UserPreferenceService await _localStorageService.SetItemAsync("preferences", newPreferences); OnChange?.Invoke(newPreferences); } + public async Task SetPageSize(string pageSize) { var preferences = await GetPreferences(); @@ -100,6 +116,7 @@ public class UserPreferenceService await _localStorageService.SetItemAsync("preferences", newPreferences); OnChange?.Invoke(newPreferences); } + public async Task GetPreferences() { return await _localStorageService.GetItemAsync("preferences").ConfigureAwait(true) diff --git a/Wonky.Client/wwwroot/appsettings.json b/Wonky.Client/wwwroot/appsettings.json index 6b76ca6d..d8c09d21 100644 --- a/Wonky.Client/wwwroot/appsettings.json +++ b/Wonky.Client/wwwroot/appsettings.json @@ -1,9 +1,9 @@ { "appInfo": { "name": "Wonky Client", - "version": "0.10.125", - "rc": true, - "sandBox": false, + "version": "0.11.30", + "rc": false, + "sandBox": true, "image": "grumpy-coder.png" }, "apiConfig": { diff --git a/Wonky.Client/wwwroot/index.html b/Wonky.Client/wwwroot/index.html index c47f9adf..9101c358 100644 --- a/Wonky.Client/wwwroot/index.html +++ b/Wonky.Client/wwwroot/index.html @@ -9,7 +9,7 @@ - + diff --git a/Wonky.Entity/DTO/UserInfoDto.cs b/Wonky.Entity/DTO/UserInfoDto.cs index 22bf08b3..ad50ffa9 100644 --- a/Wonky.Entity/DTO/UserInfoDto.cs +++ b/Wonky.Entity/DTO/UserInfoDto.cs @@ -13,6 +13,7 @@ // along with this program. If not, see [https://www.gnu.org/licenses/agpl-3.0.en.html] // +using System.Collections.Concurrent; using System.ComponentModel.DataAnnotations; namespace Wonky.Entity.DTO; @@ -61,15 +62,20 @@ public class UserInfoDto public string Advisor { get; set; } = ""; /// - /// Country name + /// User Id /// - public string CountryName { get; set; } = ""; + public string UserId { get; set; } = ""; /// /// Lockout flag /// public bool LockoutEnabled { get; set; } + /// + /// Country name + /// + public string CountryName { get; set; } = ""; + /// /// Email confirmed flag /// @@ -84,9 +90,12 @@ public class UserInfoDto /// Admin flag /// public bool IsAdmin { get; set; } - - /// - /// User Id - /// - public string UserId { get; set; } = ""; + + public bool IsEDoc { get; set; } + public bool IsEShop { get; set; } + public bool IsSupervisor { get; set; } + public bool IsOffice { get; set; } + public bool IsWarehouse { get; set; } + public string Roles { get; set; } = ""; + public string ReferenceId { get; set; } = ""; } \ No newline at end of file diff --git a/Wonky.Entity/Views/UserInfoView.cs b/Wonky.Entity/Views/UserInfoView.cs index ed370f64..394118c1 100644 --- a/Wonky.Entity/Views/UserInfoView.cs +++ b/Wonky.Entity/Views/UserInfoView.cs @@ -21,7 +21,7 @@ public class UserInfoView { [JsonPropertyName("id")] public string Id { get; set; } = ""; [JsonPropertyName("advisor")] public string Advisor { get; set; } = ""; - [JsonPropertyName("companyId")] public string CrmCompanyKey { get; set; } = ""; + [JsonPropertyName("companyId")] public string ReferenceId { get; set; } = ""; [JsonPropertyName("countryCode")] public string CountryCode { get; set; } = ""; [JsonPropertyName("countryName")] public string CountryName { get; set; } = ""; [JsonPropertyName("email")] public string Email { get; set; } = "";