From 0d7202cdb7dd1d0595ec82c8a092c47cf975cef6 Mon Sep 17 00:00:00 2001 From: Frede Hundewadt <22748698+fhdk@users.noreply.github.com> Date: Mon, 27 Jun 2022 08:48:25 +0200 Subject: [PATCH] wip - admin tasks --- .../AdminReportTableComponent.razor | 73 +++++++++++++++++++ .../AdminReportTableComponent.razor.cs | 10 +++ .../Components/AdviserTableComponent.razor | 64 ++++++++++++++++ ...azor.cs => AdviserTableComponent.razor.cs} | 2 +- .../Components/ReportTableComponent.razor | 4 +- .../Components/UserTableComponent.razor | 67 ----------------- .../AdminReportHttpRepository.cs | 43 +++++++++++ .../IAdminReportHttpRepository.cs | 11 +++ .../HttpRepository/ReportHttpRepository.cs | 4 +- ...rList.razor => AdminAdviserUserList.razor} | 4 +- ...razor.cs => AdminAdviserUserList.razor.cs} | 2 +- ...nUserView.razor => AdminAdviserView.razor} | 7 +- ...iew.razor.cs => AdminAdviserView.razor.cs} | 4 +- Wonky.Client/Pages/AdminSalesReportList.razor | 4 +- Wonky.Client/Pages/AdminSalesReportView.razor | 41 +++++++++++ .../Pages/AdminSalesReportView.razor.cs | 34 +++++++++ Wonky.Client/Program.cs | 4 +- Wonky.Client/wwwroot/appsettings.json | 34 ++++----- 18 files changed, 316 insertions(+), 96 deletions(-) create mode 100644 Wonky.Client/Components/AdminReportTableComponent.razor create mode 100644 Wonky.Client/Components/AdminReportTableComponent.razor.cs create mode 100644 Wonky.Client/Components/AdviserTableComponent.razor rename Wonky.Client/Components/{UserTableComponent.razor.cs => AdviserTableComponent.razor.cs} (82%) delete mode 100644 Wonky.Client/Components/UserTableComponent.razor create mode 100644 Wonky.Client/HttpRepository/AdminReportHttpRepository.cs create mode 100644 Wonky.Client/HttpRepository/IAdminReportHttpRepository.cs rename Wonky.Client/Pages/{AdminUserList.razor => AdminAdviserUserList.razor} (52%) rename Wonky.Client/Pages/{AdminUserList.razor.cs => AdminAdviserUserList.razor.cs} (92%) rename Wonky.Client/Pages/{AdminUserView.razor => AdminAdviserView.razor} (95%) rename Wonky.Client/Pages/{AdminUserView.razor.cs => AdminAdviserView.razor.cs} (94%) create mode 100644 Wonky.Client/Pages/AdminSalesReportView.razor create mode 100644 Wonky.Client/Pages/AdminSalesReportView.razor.cs diff --git a/Wonky.Client/Components/AdminReportTableComponent.razor b/Wonky.Client/Components/AdminReportTableComponent.razor new file mode 100644 index 00000000..bb848dde --- /dev/null +++ b/Wonky.Client/Components/AdminReportTableComponent.razor @@ -0,0 +1,73 @@ +@if (ReportList.Any()) +{ +
+
+
+
+ Dato +
+
+ Dag +
+
+ Start +
+
+ Slut +
+
+ Resultat +
+
+
+ @foreach (var report in ReportList) + { + +
+
+ @report.ReportDate +
+
+ @{ + switch (report.DayTypeEnum) + { + case "Sales": + Salgsdag + break; + case "SickLeave": + Sygdom + break; + case "Office": + Kontordag + break; + case "Meeting": + Salgsmøde + break; + case "Leave": + Ferie + break; + } + } +
+
+ @(report.DayTypeEnum == "Sales" ? report.FromDateTime.Split(" ")[1] : report.FromDateTime.Split(" ")[0]) +
+
+ @(report.DayTypeEnum == "Sales" ? report.ToDateTime.Split(" ")[1] : report.ToDateTime.Split(" ")[0]) +
+
+ @report.Turnover +
+
+
+ } +
+} +else +{ +
+
+ Ingen data +
+
+} \ No newline at end of file diff --git a/Wonky.Client/Components/AdminReportTableComponent.razor.cs b/Wonky.Client/Components/AdminReportTableComponent.razor.cs new file mode 100644 index 00000000..73080e71 --- /dev/null +++ b/Wonky.Client/Components/AdminReportTableComponent.razor.cs @@ -0,0 +1,10 @@ +using Microsoft.AspNetCore.Components; +using Wonky.Entity.Views; + +namespace Wonky.Client.Components; + +public partial class AdminReportTableComponent +{ + [Parameter] public List ReportList { get; set; } = new(); + [Parameter] public string ErpUserId { get; set; } = ""; +} \ No newline at end of file diff --git a/Wonky.Client/Components/AdviserTableComponent.razor b/Wonky.Client/Components/AdviserTableComponent.razor new file mode 100644 index 00000000..ababbd01 --- /dev/null +++ b/Wonky.Client/Components/AdviserTableComponent.razor @@ -0,0 +1,64 @@ +@* +// Copyright (C) 2022 FCS Frede's Computer Services. +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as +// published by the Free Software Foundation, either version 3 of the +// License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see [https://www.gnu.org/licenses/agpl-3.0.en.html] +// +*@ + +@if (UserList.Any()) +{ + + + + + + + + + + + + + + @foreach (var user in UserList) + { + + + + + + + + + } + +
+ Land + + Nr. + + Navn + + Telefon + + Email + + + + +
@user.CountryCode@user.SalesRep@user.FullName@user.PhoneNumber@user.EmailSalg
+} +else +{ + +} \ No newline at end of file diff --git a/Wonky.Client/Components/UserTableComponent.razor.cs b/Wonky.Client/Components/AdviserTableComponent.razor.cs similarity index 82% rename from Wonky.Client/Components/UserTableComponent.razor.cs rename to Wonky.Client/Components/AdviserTableComponent.razor.cs index 315e425a..dd9a4f92 100644 --- a/Wonky.Client/Components/UserTableComponent.razor.cs +++ b/Wonky.Client/Components/AdviserTableComponent.razor.cs @@ -4,7 +4,7 @@ using Wonky.Entity.Views; namespace Wonky.Client.Components; -public partial class UserTableComponent +public partial class AdviserTableComponent { [Parameter] public List UserList { get; set; } } \ No newline at end of file diff --git a/Wonky.Client/Components/ReportTableComponent.razor b/Wonky.Client/Components/ReportTableComponent.razor index 65a5a7f7..df9de0ec 100644 --- a/Wonky.Client/Components/ReportTableComponent.razor +++ b/Wonky.Client/Components/ReportTableComponent.razor @@ -50,10 +50,10 @@ }
- @report.FromDateTime + @(report.DayTypeEnum == "Sales" ? report.FromDateTime.Split(" ")[1] : report.FromDateTime.Split(" ")[0])
- @report.ToDateTime + @(report.DayTypeEnum == "Sales" ? report.ToDateTime.Split(" ")[1] : report.ToDateTime.Split(" ")[0])
@report.Turnover diff --git a/Wonky.Client/Components/UserTableComponent.razor b/Wonky.Client/Components/UserTableComponent.razor deleted file mode 100644 index 1497f6f8..00000000 --- a/Wonky.Client/Components/UserTableComponent.razor +++ /dev/null @@ -1,67 +0,0 @@ -@* -// Copyright (C) 2022 FCS Frede's Computer Services. -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Affero General Public License as -// published by the Free Software Foundation, either version 3 of the -// License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Affero General Public License for more details. -// -// You should have received a copy of the GNU Affero General Public License -// along with this program. If not, see [https://www.gnu.org/licenses/agpl-3.0.en.html] -// -*@ - -@if (UserList.Any()) -{ -
-
-
-
- Land -
-
- Nr. -
-
- Navn -
-
- Telefonnr. -
-
- Email -
-
-
- @foreach (var user in UserList) - { - -
-
- @user.CountryCode -
-
- @user.SalesRep -
-
- @user.FullName -
-
- @user.PhoneNumber -
-
- @user.Email -
-
-
- } -
-} -else -{ - -} \ No newline at end of file diff --git a/Wonky.Client/HttpRepository/AdminReportHttpRepository.cs b/Wonky.Client/HttpRepository/AdminReportHttpRepository.cs new file mode 100644 index 00000000..50423b49 --- /dev/null +++ b/Wonky.Client/HttpRepository/AdminReportHttpRepository.cs @@ -0,0 +1,43 @@ +using System.Net.Http.Json; +using System.Text.Json; +using Microsoft.AspNetCore.Components; +using Microsoft.Extensions.Options; +using Wonky.Entity.Configuration; +using Wonky.Entity.DTO; +using Wonky.Entity.Views; + +namespace Wonky.Client.HttpRepository; + +public class AdminReportHttpRepository : IAdminReportHttpRepository +{ + private readonly JsonSerializerOptions _options = new JsonSerializerOptions + { + PropertyNameCaseInsensitive = true + }; + + private readonly NavigationManager _navigation; + private ILogger _logger; + private readonly HttpClient _client; + private readonly ApiConfig _apiConfig; + + public AdminReportHttpRepository(HttpClient client, + ILogger logger, + NavigationManager navigation, IOptions configuration) + { + _client = client; + _logger = logger; + _navigation = navigation; + _apiConfig = configuration.Value; + } + + public async Task> GetReports(string userId) + { + return await _client.GetFromJsonAsync>($"{_apiConfig.AdminAdviserUri}/{userId}/reports"); + } + + public async Task GetReport(string userId, string workDate) + { + return await _client.GetFromJsonAsync($"{_apiConfig.AdminAdviserUri}/{userId}/reports/{workDate}"); + + } +} \ No newline at end of file diff --git a/Wonky.Client/HttpRepository/IAdminReportHttpRepository.cs b/Wonky.Client/HttpRepository/IAdminReportHttpRepository.cs new file mode 100644 index 00000000..62a99fee --- /dev/null +++ b/Wonky.Client/HttpRepository/IAdminReportHttpRepository.cs @@ -0,0 +1,11 @@ +using Wonky.Client.Pages; +using Wonky.Entity.DTO; +using Wonky.Entity.Views; + +namespace Wonky.Client.HttpRepository; + +public interface IAdminReportHttpRepository +{ + Task> GetReports(string userId); + Task GetReport(string userId, string workDate); +} \ No newline at end of file diff --git a/Wonky.Client/HttpRepository/ReportHttpRepository.cs b/Wonky.Client/HttpRepository/ReportHttpRepository.cs index 55a67da9..5ec17327 100644 --- a/Wonky.Client/HttpRepository/ReportHttpRepository.cs +++ b/Wonky.Client/HttpRepository/ReportHttpRepository.cs @@ -16,12 +16,12 @@ public class ReportHttpRepository :IReportHttpRepository }; private readonly NavigationManager _navigation; - private ILogger _logger; + private ILogger _logger; private readonly HttpClient _client; private readonly ApiConfig _apiConfig; public ReportHttpRepository(HttpClient client, - ILogger logger, + ILogger logger, NavigationManager navigation, IOptions configuration) { _client = client; diff --git a/Wonky.Client/Pages/AdminUserList.razor b/Wonky.Client/Pages/AdminAdviserUserList.razor similarity index 52% rename from Wonky.Client/Pages/AdminUserList.razor rename to Wonky.Client/Pages/AdminAdviserUserList.razor index ceff9089..8c2bb96c 100644 --- a/Wonky.Client/Pages/AdminUserList.razor +++ b/Wonky.Client/Pages/AdminAdviserUserList.razor @@ -1,4 +1,6 @@ @using Wonky.Client.Components +@using Microsoft.AspNetCore.Authorization +@attribute [Authorize(Roles = "Admin")] @page "/admin/users"
@@ -6,6 +8,6 @@

Sælgere

- +
\ No newline at end of file diff --git a/Wonky.Client/Pages/AdminUserList.razor.cs b/Wonky.Client/Pages/AdminAdviserUserList.razor.cs similarity index 92% rename from Wonky.Client/Pages/AdminUserList.razor.cs rename to Wonky.Client/Pages/AdminAdviserUserList.razor.cs index ac850851..77d6144b 100644 --- a/Wonky.Client/Pages/AdminUserList.razor.cs +++ b/Wonky.Client/Pages/AdminAdviserUserList.razor.cs @@ -5,7 +5,7 @@ using Wonky.Entity.DTO; namespace Wonky.Client.Pages; -public partial class AdminUserList : IDisposable +public partial class AdminAdviserUserList : IDisposable { [Inject] private HttpInterceptorService _interceptor { get; set; } [Inject] private IUserHttpRepository _userRepo { get; set; } diff --git a/Wonky.Client/Pages/AdminUserView.razor b/Wonky.Client/Pages/AdminAdviserView.razor similarity index 95% rename from Wonky.Client/Pages/AdminUserView.razor rename to Wonky.Client/Pages/AdminAdviserView.razor index f9a4bd88..44d37f0b 100644 --- a/Wonky.Client/Pages/AdminUserView.razor +++ b/Wonky.Client/Pages/AdminAdviserView.razor @@ -1,4 +1,6 @@ @page "/admin/users/{UserId}" +@using Microsoft.AspNetCore.Authorization +@attribute [Authorize(Roles = "Admin")]

Sælger info

@@ -72,11 +74,14 @@
+
+ +
- + Salg
diff --git a/Wonky.Client/Pages/AdminUserView.razor.cs b/Wonky.Client/Pages/AdminAdviserView.razor.cs similarity index 94% rename from Wonky.Client/Pages/AdminUserView.razor.cs rename to Wonky.Client/Pages/AdminAdviserView.razor.cs index 27440e16..5d34694e 100644 --- a/Wonky.Client/Pages/AdminUserView.razor.cs +++ b/Wonky.Client/Pages/AdminAdviserView.razor.cs @@ -8,12 +8,12 @@ using Wonky.Entity.DTO; namespace Wonky.Client.Pages; -public partial class AdminUserView : IDisposable +public partial class AdminAdviserView : IDisposable { [Parameter] public string UserId { get; set; } = ""; [Inject] private HttpInterceptorService _interceptor { get; set; } [Inject] private IUserHttpRepository _userRepo { get; set; } - [Inject] private ILogger _logger { get; set; } + [Inject] private ILogger _logger { get; set; } [Inject] private NavigationManager _navigator { get; set; } [Inject] private IToastService _toast { get; set; } private AdviserInfoView _adviserInfo { get; set; } = new(); diff --git a/Wonky.Client/Pages/AdminSalesReportList.razor b/Wonky.Client/Pages/AdminSalesReportList.razor index 6dbfdb9a..b7cb3674 100644 --- a/Wonky.Client/Pages/AdminSalesReportList.razor +++ b/Wonky.Client/Pages/AdminSalesReportList.razor @@ -15,7 +15,9 @@ // *@ @using Wonky.Client.Components -@page "/sales-reports" +@using Microsoft.AspNetCore.Authorization +@attribute [Authorize(Roles = "Admin")] +@page "/admin/users/advisers/{UserId}/reports"
diff --git a/Wonky.Client/Pages/AdminSalesReportView.razor b/Wonky.Client/Pages/AdminSalesReportView.razor new file mode 100644 index 00000000..43b94d47 --- /dev/null +++ b/Wonky.Client/Pages/AdminSalesReportView.razor @@ -0,0 +1,41 @@ +@* +// Copyright (C) 2022 FCS Frede's Computer Services. +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as +// published by the Free Software Foundation, either version 3 of the +// License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see [https://www.gnu.org/licenses/agpl-3.0.en.html] +// +*@ + +@using Wonky.Client.Components +@using Microsoft.AspNetCore.Authorization +@page "/admin/users/advisers/{UserId}/reports/{ReportDate}" +@attribute [Authorize(Roles = "Admin")] + +
+
+
+
+ @if (!string.IsNullOrWhiteSpace(ReportDate)) + { +

@DateTime.Parse(ReportDate).ToLongDateString()

+ } +
+
+ +
+
+
+
+ + +
+
\ No newline at end of file diff --git a/Wonky.Client/Pages/AdminSalesReportView.razor.cs b/Wonky.Client/Pages/AdminSalesReportView.razor.cs new file mode 100644 index 00000000..a466e890 --- /dev/null +++ b/Wonky.Client/Pages/AdminSalesReportView.razor.cs @@ -0,0 +1,34 @@ +using Microsoft.AspNetCore.Components; +using Wonky.Client.HttpRepository; +using Wonky.Entity.DTO; +using Wonky.Entity.Views; + +namespace Wonky.Client.Pages; + +public partial class AdminSalesReportView +{ + [Parameter] public string ReportDate { get; set; } + [Parameter] public string UserId { get; set; } + [Inject] private IAdminReportHttpRepository _reportRepo { get; set; } + private NgSalesReportView _report { get; set; } = new(); + + protected override async Task OnInitializedAsync() + { + if (!string.IsNullOrWhiteSpace(ReportDate)) + { + await GetReport(ReportDate); + } + } + + private async Task GetReport(string workDate) + { + ReportDate = workDate; + _report = new NgSalesReportView(); + _report = await GetUserReport(UserId, workDate); + } + + private async Task GetUserReport(string userId, string workDate) + { + return _report = await _reportRepo.GetReport(userId, workDate); + } +} \ No newline at end of file diff --git a/Wonky.Client/Program.cs b/Wonky.Client/Program.cs index f8190127..e855c39e 100644 --- a/Wonky.Client/Program.cs +++ b/Wonky.Client/Program.cs @@ -33,7 +33,8 @@ builder.RootComponents.Add("head::after"); builder.Logging.AddConfiguration(builder.Configuration.GetSection("Logging")); -builder.Services.AddScoped(sp => sp.GetService().CreateClient("InnoAPI")); +builder.Services.AddScoped(sp => + sp.GetService().CreateClient("InnoAPI")); builder.Services.AddHttpClient("InnoAPI", (sp, cl) => { @@ -55,6 +56,7 @@ builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); +builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddBlazoredLocalStorage(); diff --git a/Wonky.Client/wwwroot/appsettings.json b/Wonky.Client/wwwroot/appsettings.json index 8fb6420f..16dd5cd7 100644 --- a/Wonky.Client/wwwroot/appsettings.json +++ b/Wonky.Client/wwwroot/appsettings.json @@ -1,21 +1,4 @@ { - "Logging": { - "LogLevel": { - "Default": "Debug", - "System": "Debug", - "Microsoft": "Information" - }, - "Debug": { - "LogLevel": { - "Default": "Critical" - } - }, - "ActivityHttpRepository": { - "LogLevel": { - "Default": "Error" - } - } - }, "appInfo": { "name": "Wonky Client", "version": "0.8.38", @@ -43,5 +26,22 @@ "adminPasswdUri": "api/v2/admin/users/passwd", "adminReportUri": "reports", "adminCompanyUri": "companies" + }, + "Logging": { + "LogLevel": { + "Default": "Debug", + "System": "Debug", + "Microsoft": "Information" + }, + "Debug": { + "LogLevel": { + "Default": "Critical" + } + }, + "ActivityHttpRepository": { + "LogLevel": { + "Default": "Error" + } + } } } \ No newline at end of file