diff --git a/Wonky.Client/Components/ActivityButton.razor b/Wonky.Client/Components/ActivityButton.razor index b6c6dbe1..012c2c53 100644 --- a/Wonky.Client/Components/ActivityButton.razor +++ b/Wonky.Client/Components/ActivityButton.razor @@ -36,5 +36,4 @@ else if (!string.IsNullOrWhiteSpace(CompanyId)) ActionLink = ActionLink.Replace("$ID$", CompanyId); } - } \ No newline at end of file diff --git a/Wonky.Client/Components/AdvisorActivityListComponent.razor.cs b/Wonky.Client/Components/AdvisorActivityListComponent.razor.cs index c7c528e9..047c15d9 100644 --- a/Wonky.Client/Components/AdvisorActivityListComponent.razor.cs +++ b/Wonky.Client/Components/AdvisorActivityListComponent.razor.cs @@ -21,6 +21,6 @@ namespace Wonky.Client.Components; public partial class AdvisorActivityListComponent { [Parameter] public List ActivityList { get; set; } = new(); - [Inject] private NavigationManager Navigator { get; set; } + // [Inject] private NavigationManager Navigator { get; set; } } \ No newline at end of file diff --git a/Wonky.Client/Components/AdvisorCustomerListComponent.razor b/Wonky.Client/Components/AdvisorCustomerListComponent.razor index db093cce..48bf0887 100644 --- a/Wonky.Client/Components/AdvisorCustomerListComponent.razor +++ b/Wonky.Client/Components/AdvisorCustomerListComponent.razor @@ -70,4 +70,5 @@ else {
Ingen data
} + \ No newline at end of file diff --git a/Wonky.Client/Components/AdvisorCustomerListComponent.razor.cs b/Wonky.Client/Components/AdvisorCustomerListComponent.razor.cs index 4cfb03fb..b2463918 100644 --- a/Wonky.Client/Components/AdvisorCustomerListComponent.razor.cs +++ b/Wonky.Client/Components/AdvisorCustomerListComponent.razor.cs @@ -24,6 +24,7 @@ using Wonky.Client.Shared; using Wonky.Entity.DTO; using Wonky.Entity.Views; +#pragma warning disable CS8618 namespace Wonky.Client.Components { @@ -33,9 +34,9 @@ namespace Wonky.Client.Components [Parameter] public EventCallback OnDelete { get; set; } [Parameter] public EventCallback OnSelect { get; set; } [Inject] private NavigationManager Navigator { get; set; } - [Inject] private IJSRuntime Js { get; set; } + [Inject] private IJSRuntime JsRuntime { get; set; } - private Lazy BsTooltip = new(); + private Lazy BsTooltip { get; set; } = new(); private InformationModal InformationModal { get; set; } = new(); private string InfoMessage { get; set; } = ""; diff --git a/Wonky.Client/Components/LandingComponentAdvisor.razor b/Wonky.Client/Components/AdvisorLandingComponent.razor similarity index 100% rename from Wonky.Client/Components/LandingComponentAdvisor.razor rename to Wonky.Client/Components/AdvisorLandingComponent.razor diff --git a/Wonky.Client/Components/LandingComponentAdvisor.razor.cs b/Wonky.Client/Components/AdvisorLandingComponent.razor.cs similarity index 97% rename from Wonky.Client/Components/LandingComponentAdvisor.razor.cs rename to Wonky.Client/Components/AdvisorLandingComponent.razor.cs index a757f940..36de18ce 100644 --- a/Wonky.Client/Components/LandingComponentAdvisor.razor.cs +++ b/Wonky.Client/Components/AdvisorLandingComponent.razor.cs @@ -30,7 +30,7 @@ using Wonky.Entity.Models; using Wonky.Entity.Views; namespace Wonky.Client.Components; -public partial class LandingComponentAdvisor +public partial class AdvisorLandingComponent { [Inject] private UserProfileService ProfileService { get; set; } diff --git a/Wonky.Client/Components/LandingComponentAdvisor.razor.css b/Wonky.Client/Components/AdvisorLandingComponent.razor.css similarity index 100% rename from Wonky.Client/Components/LandingComponentAdvisor.razor.css rename to Wonky.Client/Components/AdvisorLandingComponent.razor.css diff --git a/Wonky.Client/Components/CatalogGroupComponent.razor.cs b/Wonky.Client/Components/CatalogGroupComponent.razor.cs index 671937ec..92c50900 100644 --- a/Wonky.Client/Components/CatalogGroupComponent.razor.cs +++ b/Wonky.Client/Components/CatalogGroupComponent.razor.cs @@ -13,10 +13,10 @@ // along with this program. If not, see [https://www.gnu.org/licenses/agpl-3.0.en.html] // -using System.Text.RegularExpressions; using Blazored.LocalStorage; using Microsoft.AspNetCore.Components; using Wonky.Client.Services; +#pragma warning disable CS8618 namespace Wonky.Client.Components; diff --git a/Wonky.Client/Components/CatalogPrintComponent.razor.cs b/Wonky.Client/Components/CatalogPrintComponent.razor.cs index b92ff6e7..38d36fd1 100644 --- a/Wonky.Client/Components/CatalogPrintComponent.razor.cs +++ b/Wonky.Client/Components/CatalogPrintComponent.razor.cs @@ -13,10 +13,7 @@ // along with this program. If not, see [https://www.gnu.org/licenses/agpl-3.0.en.html] // -using Blazored.Toast.Services; using Microsoft.AspNetCore.Components; -using Wonky.Entity.DTO; -using Wonky.Entity.Models; using Wonky.Entity.Views; namespace Wonky.Client.Components; diff --git a/Wonky.Client/Components/CatalogSearchComponent.razor.cs b/Wonky.Client/Components/CatalogSearchComponent.razor.cs index b85933ae..98dfe834 100644 --- a/Wonky.Client/Components/CatalogSearchComponent.razor.cs +++ b/Wonky.Client/Components/CatalogSearchComponent.razor.cs @@ -13,9 +13,9 @@ // along with this program. If not, see [https://www.gnu.org/licenses/agpl-3.0.en.html] // -using Blazored.LocalStorage; using Microsoft.AspNetCore.Components; using Wonky.Client.Services; +#pragma warning disable CS8618 namespace Wonky.Client.Components; diff --git a/Wonky.Client/Components/CatalogSortComponent.razor.cs b/Wonky.Client/Components/CatalogSortComponent.razor.cs index ce6d0e82..e402a7ea 100644 --- a/Wonky.Client/Components/CatalogSortComponent.razor.cs +++ b/Wonky.Client/Components/CatalogSortComponent.razor.cs @@ -13,9 +13,9 @@ // along with this program. If not, see [https://www.gnu.org/licenses/agpl-3.0.en.html] // -using Blazored.LocalStorage; using Microsoft.AspNetCore.Components; using Wonky.Client.Services; +#pragma warning disable CS8618 namespace Wonky.Client.Components; diff --git a/Wonky.Client/Components/CustomerVisitListComponent.razor b/Wonky.Client/Components/CustomerActivityListComponent.razor similarity index 95% rename from Wonky.Client/Components/CustomerVisitListComponent.razor rename to Wonky.Client/Components/CustomerActivityListComponent.razor index 2d50f39f..3c21482f 100644 --- a/Wonky.Client/Components/CustomerVisitListComponent.razor +++ b/Wonky.Client/Components/CustomerActivityListComponent.razor @@ -14,7 +14,7 @@ // along with this program. If not, see [https://www.gnu.org/licenses/agpl-3.0.en.html] // *@ - +@using Wonky.Client.OverlayCustomer
@@ -72,4 +72,4 @@ }
- \ No newline at end of file + \ No newline at end of file diff --git a/Wonky.Client/Components/CustomerVisitListComponent.razor.cs b/Wonky.Client/Components/CustomerActivityListComponent.razor.cs similarity index 77% rename from Wonky.Client/Components/CustomerVisitListComponent.razor.cs rename to Wonky.Client/Components/CustomerActivityListComponent.razor.cs index e33aaf63..f1a926fa 100644 --- a/Wonky.Client/Components/CustomerVisitListComponent.razor.cs +++ b/Wonky.Client/Components/CustomerActivityListComponent.razor.cs @@ -13,22 +13,16 @@ // along with this program. If not, see [https://www.gnu.org/licenses/agpl-3.0.en.html] // -using System.Globalization; -using System.Runtime.InteropServices; -using Blazored.LocalStorage; using Microsoft.AspNetCore.Components; -using Wonky.Client.HttpInterfaces; -using Wonky.Client.Models; -using Wonky.Client.Shared; -using Wonky.Entity.DTO; +using Wonky.Client.OverlayCustomer; using Wonky.Entity.Views; namespace Wonky.Client.Components; -public partial class CustomerVisitListComponent +public partial class CustomerActivityListComponent { [Parameter] public List Activities { get; set; } = new(); - private CustomerActivityViewModalOverlay ActivityViewOverlay { get; set; } = new(); + private CustomerActivityViewOverlay ActivityViewOverlay { get; set; } = new(); private ReportItemView Activity { get; set; } = new(); @@ -37,5 +31,4 @@ public partial class CustomerVisitListComponent Activity = Activities.First(x => x.ActivityId == activityId); ActivityViewOverlay.Show(); } - } \ No newline at end of file diff --git a/Wonky.Client/Components/CustomerInventoryListComponent.razor b/Wonky.Client/Components/CustomerInventoryListComponent.razor index 9e6e646d..307a84f8 100644 --- a/Wonky.Client/Components/CustomerInventoryListComponent.razor +++ b/Wonky.Client/Components/CustomerInventoryListComponent.razor @@ -23,7 +23,7 @@ @if (Inventory.Any()) {
-
+
Navn
Varenr
@@ -45,7 +45,6 @@ Produktet er udgået }
- @* @product.Description @(product.Discontinued ? "(UDGÅET)" : "") *@
@product.Sku @@ -54,7 +53,7 @@ @product.Quantity
diff --git a/Wonky.Client/Components/CustomerInventoryListComponent.razor.cs b/Wonky.Client/Components/CustomerInventoryListComponent.razor.cs index 173b1a55..aa8c03f0 100644 --- a/Wonky.Client/Components/CustomerInventoryListComponent.razor.cs +++ b/Wonky.Client/Components/CustomerInventoryListComponent.razor.cs @@ -13,17 +13,13 @@ // along with this program. If not, see [https://www.gnu.org/licenses/agpl-3.0.en.html] // -using System.Globalization; -using System.Runtime.InteropServices; using Blazored.LocalStorage; using Microsoft.AspNetCore.Components; -using Wonky.Client.HttpInterfaces; using Wonky.Client.Models; -using Wonky.Client.Shared; -using Wonky.Entity.DTO; using Wonky.Entity.Views; namespace Wonky.Client.Components; +#pragma warning disable CS8618 public partial class CustomerInventoryListComponent { diff --git a/Wonky.Client/Components/CustomerInvoiceListComponent.razor.cs b/Wonky.Client/Components/CustomerInvoiceListComponent.razor.cs index a84686ff..d5ce9568 100644 --- a/Wonky.Client/Components/CustomerInvoiceListComponent.razor.cs +++ b/Wonky.Client/Components/CustomerInvoiceListComponent.razor.cs @@ -15,7 +15,6 @@ // using Microsoft.AspNetCore.Components; -using Wonky.Client.Shared; using Wonky.Entity.Views; namespace Wonky.Client.Components; diff --git a/Wonky.Client/Components/CustomerProductCheckListComponent.razor b/Wonky.Client/Components/CustomerProductCheckListComponent.razor index 8c6826c2..7228d5cc 100644 --- a/Wonky.Client/Components/CustomerProductCheckListComponent.razor +++ b/Wonky.Client/Components/CustomerProductCheckListComponent.razor @@ -22,7 +22,7 @@ @if (ProductList.Any()) {
-
+
Navn
Varenr
diff --git a/Wonky.Client/Components/CustomerProductCheckListComponent.razor.cs b/Wonky.Client/Components/CustomerProductCheckListComponent.razor.cs index 9559e57a..5bf37b9c 100644 --- a/Wonky.Client/Components/CustomerProductCheckListComponent.razor.cs +++ b/Wonky.Client/Components/CustomerProductCheckListComponent.razor.cs @@ -13,15 +13,11 @@ // along with this program. If not, see [https://www.gnu.org/licenses/agpl-3.0.en.html] // -using System.Globalization; -using System.Runtime.InteropServices; using Blazored.LocalStorage; using Microsoft.AspNetCore.Components; -using Wonky.Client.HttpInterfaces; using Wonky.Client.Models; -using Wonky.Client.Shared; -using Wonky.Entity.DTO; using Wonky.Entity.Views; +#pragma warning disable CS8618 namespace Wonky.Client.Components; public partial class CustomerProductCheckListComponent diff --git a/Wonky.Client/Components/CustomerProductLineListComponent.razor b/Wonky.Client/Components/CustomerProductLineListComponent.razor index 0a30ea7d..f57980fb 100644 --- a/Wonky.Client/Components/CustomerProductLineListComponent.razor +++ b/Wonky.Client/Components/CustomerProductLineListComponent.razor @@ -19,7 +19,7 @@ { - + diff --git a/Wonky.Client/Components/CustomerSearchColumnComponent.razor.cs b/Wonky.Client/Components/CustomerSearchColumnComponent.razor.cs index ba435914..54249ce8 100644 --- a/Wonky.Client/Components/CustomerSearchColumnComponent.razor.cs +++ b/Wonky.Client/Components/CustomerSearchColumnComponent.razor.cs @@ -15,10 +15,10 @@ // -using System.Security.AccessControl; using Blazored.LocalStorage; using Microsoft.AspNetCore.Components; using Wonky.Client.Services; +#pragma warning disable CS8618 namespace Wonky.Client.Components; diff --git a/Wonky.Client/Components/CustomerSearchPhraseComponent.razor.cs b/Wonky.Client/Components/CustomerSearchPhraseComponent.razor.cs index 7769d262..e43a01e0 100644 --- a/Wonky.Client/Components/CustomerSearchPhraseComponent.razor.cs +++ b/Wonky.Client/Components/CustomerSearchPhraseComponent.razor.cs @@ -17,6 +17,7 @@ using System.Timers; using Microsoft.AspNetCore.Components; using Wonky.Client.Services; using Timer = System.Timers.Timer; +#pragma warning disable CS8618 namespace Wonky.Client.Components { diff --git a/Wonky.Client/Components/CustomerSortComponent.razor.cs b/Wonky.Client/Components/CustomerSortComponent.razor.cs index 52c0c22d..3655e334 100644 --- a/Wonky.Client/Components/CustomerSortComponent.razor.cs +++ b/Wonky.Client/Components/CustomerSortComponent.razor.cs @@ -18,6 +18,7 @@ using Blazored.LocalStorage; using Microsoft.AspNetCore.Components; using Wonky.Client.Services; +#pragma warning disable CS8618 namespace Wonky.Client.Components { diff --git a/Wonky.Client/Components/OfficeCountryAdvisorListComponent.razor.cs b/Wonky.Client/Components/OfficeCountryAdvisorListComponent.razor.cs index 33e03f8b..c56454b8 100644 --- a/Wonky.Client/Components/OfficeCountryAdvisorListComponent.razor.cs +++ b/Wonky.Client/Components/OfficeCountryAdvisorListComponent.razor.cs @@ -15,7 +15,6 @@ using Microsoft.AspNetCore.Components; using Wonky.Entity.DTO; -using Wonky.Entity.Views; namespace Wonky.Client.Components; diff --git a/Wonky.Client/Components/OfficeCountryCustomerListComponent.razor b/Wonky.Client/Components/OfficeCountryCustomerListComponent.razor index cfed0aa4..23afd814 100644 --- a/Wonky.Client/Components/OfficeCountryCustomerListComponent.razor +++ b/Wonky.Client/Components/OfficeCountryCustomerListComponent.razor @@ -17,7 +17,7 @@ @using Wonky.Client.Components; @using Wonky.Client.Helpers; - +@using Wonky.Client.OverlayOffice @if (CompanyList.Any()) {
@@ -52,16 +52,16 @@ @@ -74,12 +74,8 @@ else {
Ingen data
} -@* - - - - - *@ + + + diff --git a/Wonky.Client/Components/OfficeCountryCustomerListComponent.razor.cs b/Wonky.Client/Components/OfficeCountryCustomerListComponent.razor.cs index 9ebce072..296cddc4 100644 --- a/Wonky.Client/Components/OfficeCountryCustomerListComponent.razor.cs +++ b/Wonky.Client/Components/OfficeCountryCustomerListComponent.razor.cs @@ -1,4 +1,3 @@ - // 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 @@ -14,13 +13,12 @@ // along with this program. If not, see [https://www.gnu.org/licenses/agpl-3.0.en.html] // -using Blazored.LocalStorage; using Microsoft.AspNetCore.Components; -using Wonky.Client.Helpers; -using Wonky.Client.Services; -using Wonky.Client.Shared; +using Wonky.Client.HttpInterfaces; +using Wonky.Client.OverlayOffice; using Wonky.Entity.DTO; using Wonky.Entity.Views; +#pragma warning disable CS8618 namespace Wonky.Client.Components { @@ -29,19 +27,54 @@ namespace Wonky.Client.Components [Parameter] public List CompanyList { get; set; } = new(); [Parameter] public string CountryCode { get; set; } = ""; - private CustomerInvoiceListModalOverlay InvoiceListOverlay { get; set; } = new(); - private CustomerInventoryListModalOverlay InventoryListOverlay { get; set; } = new(); - private CustomerActivityListModalOverlay ActivityListOverlay { get; set; } = new(); + [Inject] public ICountryCustomerHistoryRepository HistoryRepo { get; set; } + [Inject] public ICountryActivityRepository ActivityRepo { get; set; } + + private OfficeCustomerInvoiceListOverlay InvoiceListOverlay { get; set; } = new(); + private OfficeCustomerActivityListOverlay ActivityListOverlay { get; set; } = new(); + private OfficeCustomerProductListOverlay ProductListOverlay { get; set; } = new(); private string CompanyName { get; set; } = ""; private string CompanyId { get; set; } = ""; - private InvoiceListView Invoices { get; set; } = new(); - private List Activities { get; set; } = new(); - private List Inventory { get; set; } = new(); + private string LastSync { get; set; } = ""; + + private InvoiceListView InvoiceViewList { get; set; } = new(); + private List ActivityList { get; set; } = new(); + private List ProductList { get; set; } = new(); + private CompanyDto SelectedCompany { get; set; } = new(); private void OnInventoryCallback() { - + } + + private async Task ShowInvoiceList(string companyId) + { + // call erp to crm sync before requesting invoices + // get company last sync from company list + SelectedCompany = CompanyList.Find(x => x.CompanyId == companyId); + var newSyncDate = await HistoryRepo.InvoiceErpToCrmRpc(CountryCode, companyId, SelectedCompany.HistorySync); + await Task.Delay(500); + InvoiceViewList = await HistoryRepo.FetchInvoiceList(CountryCode, companyId); + SelectedCompany.HistorySync = newSyncDate; + InvoiceListOverlay.Show(); + } + + private async Task ShowActivityList(string companyId) + { + // call erp to crm sync before requesting invoices + // get company last sync from company list + SelectedCompany = CompanyList.Find(x => x.CompanyId == companyId); + ActivityList = await ActivityRepo.GetCustomerActivities(companyId); + ActivityListOverlay.Show(); + } + + private async Task ShowProductList(string companyId) + { + // call erp to crm sync before requesting invoices + // get company last sync from company list + SelectedCompany = CompanyList.Find(x => x.CompanyId == companyId); + ProductList = await HistoryRepo.FetchInventory(SelectedCompany.CountryCode, SelectedCompany.CompanyId); + ProductListOverlay.Show(); } } -} +} \ No newline at end of file diff --git a/Wonky.Client/Components/OfficeCustomerActivityListComponent.razor b/Wonky.Client/Components/OfficeCustomerActivityListComponent.razor new file mode 100644 index 00000000..4878f621 --- /dev/null +++ b/Wonky.Client/Components/OfficeCustomerActivityListComponent.razor @@ -0,0 +1,75 @@ +@* +// 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.OverlayOffice +
+
+
+
+

Dato

+
+
+

Demo

+
+
+

Salg

+
+
+

Ordre Note

+
+
+

Ordre Note

+
+
+
+ @if (Activities.Any()) + { + @foreach (var activity in Activities) + { +
+
+
+ @activity.OrderDate +
+
+ @activity.Demo +
+
+ @activity.Sales +
+
+ @activity.OfficeNote +
+
+ @activity.CrmNote +
+
+
+ } + } + else + { +
+
+
+ Ingen data +
+
+
+ } +
+ + \ No newline at end of file diff --git a/Wonky.Client/Components/OfficeCustomerActivityListComponent.razor.cs b/Wonky.Client/Components/OfficeCustomerActivityListComponent.razor.cs new file mode 100644 index 00000000..cb05c384 --- /dev/null +++ b/Wonky.Client/Components/OfficeCustomerActivityListComponent.razor.cs @@ -0,0 +1,34 @@ +// 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 Microsoft.AspNetCore.Components; +using Wonky.Client.OverlayOffice; +using Wonky.Entity.Views; + +namespace Wonky.Client.Components; + +public partial class OfficeCustomerActivityListComponent +{ + [Parameter] public List Activities { get; set; } = new(); + private OfficeCustomerActivityViewOverlay ActivityViewOverlay { get; set; } = new(); + + private ReportItemView Activity { get; set; } = new(); + + private void ShowVisitOverlay(string activityId) + { + Activity = Activities.First(x => x.ActivityId == activityId); + ActivityViewOverlay.Show(); + } +} \ No newline at end of file diff --git a/Wonky.Client/Components/OfficeCustomerInventoryListComponent.razor b/Wonky.Client/Components/OfficeCustomerInventoryListComponent.razor new file mode 100644 index 00000000..48babec6 --- /dev/null +++ b/Wonky.Client/Components/OfficeCustomerInventoryListComponent.razor @@ -0,0 +1,82 @@ + +@* +// 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.Models +@using System.ComponentModel.Design +
+ + @if (Inventory.Any()) + { +
+
+
+
Navn
+
Varenr
+
Antal
+
+
+
+
+ @foreach (var product in Inventory) + { +
+
+
+
+ @product.Description + @if (product.Discontinued) + { + Udgået + Produktet er udgået + } +
+
+
+ @product.Sku +
+
+ @product.Quantity +
+ +
+ + @if (product.Check) + { + + } + else + { + + } +
+
+
+ } +
+ } + else + { +
Ingen data
+ } +
\ No newline at end of file diff --git a/Wonky.Client/Components/OfficeCustomerInventoryListComponent.razor.cs b/Wonky.Client/Components/OfficeCustomerInventoryListComponent.razor.cs new file mode 100644 index 00000000..e45c915b --- /dev/null +++ b/Wonky.Client/Components/OfficeCustomerInventoryListComponent.razor.cs @@ -0,0 +1,86 @@ +// 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 Blazored.LocalStorage; +using Microsoft.AspNetCore.Components; +using Wonky.Client.Models; +using Wonky.Entity.Views; +#pragma warning disable CS8618 + +namespace Wonky.Client.Components; + +public partial class OfficeCustomerInventoryListComponent +{ + [Inject] private ILocalStorageService Storage { get; set; } + // Parameters + [Parameter] public List Inventory { get; set; } = new(); + [Parameter] public string CompanyId { get; set; } = ""; + [Parameter] public EventCallback OnReorderSelected { get; set; } + + // private variables + private bool Descending { get; set; } + + private void SortProducts(PSort column) + { + Descending = !Descending; + switch (column) + { + case PSort.Desc: + if (Descending) + { + Inventory = Inventory.OrderByDescending(x => x.Description).ToList(); + break; + } + Inventory = Inventory.OrderBy(x => x.Description).ToList(); + break; + case PSort.Sku: + if (Descending) + { + Inventory = Inventory.OrderByDescending(x => x.Sku).ToList(); + break; + } + Inventory = Inventory.OrderBy(x => x.Sku).ToList(); + break; + case PSort.Qty: + if (Descending) + { + Inventory = Inventory.OrderByDescending(x => x.Quantity).ToList(); + break; + } + Inventory = Inventory.OrderBy(x => x.Quantity).ToList(); + break; + case PSort.None: + break; + case PSort.Abbr: + break; + default: + Inventory = Inventory.OrderByDescending(x => x.Quantity).ToList(); + break; + } + } + + private async Task CallShowReorderModal(string sku) + { + await ProductCheck(sku); + await OnReorderSelected.InvokeAsync(sku); + } + + private async Task ProductCheck(string sku) + { + var x = Inventory.First(x => x.Sku == sku); + x.Check = !x.Check; + await Storage.SetItemAsync($"{CompanyId}-products", Inventory); + } +} \ No newline at end of file diff --git a/Wonky.Client/Components/LandingComponentOffice.razor b/Wonky.Client/Components/OfficeLandingComponent.razor similarity index 96% rename from Wonky.Client/Components/LandingComponentOffice.razor rename to Wonky.Client/Components/OfficeLandingComponent.razor index 8cd7ab49..e09d3e21 100644 --- a/Wonky.Client/Components/LandingComponentOffice.razor +++ b/Wonky.Client/Components/OfficeLandingComponent.razor @@ -29,11 +29,9 @@ Sælgere - @* Tlf.Ordre - *@ Priser @@ -52,11 +50,9 @@ Sælgere - @* Tlf.Ordre - *@ Priser @@ -75,11 +71,9 @@ Sælgere - @* Tlf.Ordre - *@ Priser diff --git a/Wonky.Client/Components/LandingComponentOffice.razor.cs b/Wonky.Client/Components/OfficeLandingComponent.razor.cs similarity index 96% rename from Wonky.Client/Components/LandingComponentOffice.razor.cs rename to Wonky.Client/Components/OfficeLandingComponent.razor.cs index 857674b2..3999ed25 100644 --- a/Wonky.Client/Components/LandingComponentOffice.razor.cs +++ b/Wonky.Client/Components/OfficeLandingComponent.razor.cs @@ -28,9 +28,10 @@ using Wonky.Client.Shared; using Wonky.Entity.DTO; using Wonky.Entity.Models; using Wonky.Entity.Views; +#pragma warning disable CS8618 namespace Wonky.Client.Components; -public partial class LandingComponentOffice +public partial class OfficeLandingComponent { [Inject] private UserProfileService ProfileService { get; set; } diff --git a/Wonky.Client/Components/OfficeReportActivityListComponent.razor.cs b/Wonky.Client/Components/OfficeReportActivityListComponent.razor.cs index ba5e64e5..dacc0d81 100644 --- a/Wonky.Client/Components/OfficeReportActivityListComponent.razor.cs +++ b/Wonky.Client/Components/OfficeReportActivityListComponent.razor.cs @@ -15,6 +15,7 @@ using Microsoft.AspNetCore.Components; using Wonky.Entity.Views; +#pragma warning disable CS8618 namespace Wonky.Client.Components; diff --git a/Wonky.Client/Components/PageSizeComponent.razor.cs b/Wonky.Client/Components/PageSizeComponent.razor.cs index 473992a8..f25763d5 100644 --- a/Wonky.Client/Components/PageSizeComponent.razor.cs +++ b/Wonky.Client/Components/PageSizeComponent.razor.cs @@ -18,6 +18,7 @@ using Blazored.LocalStorage; using Microsoft.AspNetCore.Components; using Wonky.Client.Services; +#pragma warning disable CS8618 namespace Wonky.Client.Components { diff --git a/Wonky.Client/Components/ProcessStateComponent.razor b/Wonky.Client/Components/ProcessStateComponent.razor index 11b9d7eb..52da3cb9 100644 --- a/Wonky.Client/Components/ProcessStateComponent.razor +++ b/Wonky.Client/Components/ProcessStateComponent.razor @@ -15,15 +15,15 @@ // *@ - + @code{ [Parameter] public string StateClass { get; set; } = ""; - private string _icon { get; set; } = ""; + private string Icon { get; set; } = ""; protected override void OnParametersSet() { - _icon = StateClass switch + Icon = StateClass switch { "the-fast" => "lightning-charge", "the-good" => "file-earmark", diff --git a/Wonky.Client/Components/CatalogListComponent.razor b/Wonky.Client/Components/ProductPriceListComponent.razor similarity index 100% rename from Wonky.Client/Components/CatalogListComponent.razor rename to Wonky.Client/Components/ProductPriceListComponent.razor diff --git a/Wonky.Client/Components/CatalogListComponent.razor.cs b/Wonky.Client/Components/ProductPriceListComponent.razor.cs similarity index 91% rename from Wonky.Client/Components/CatalogListComponent.razor.cs rename to Wonky.Client/Components/ProductPriceListComponent.razor.cs index 1f173552..677f3fa2 100644 --- a/Wonky.Client/Components/CatalogListComponent.razor.cs +++ b/Wonky.Client/Components/ProductPriceListComponent.razor.cs @@ -15,13 +15,12 @@ using Blazored.Toast.Services; using Microsoft.AspNetCore.Components; -using Wonky.Entity.DTO; -using Wonky.Entity.Models; using Wonky.Entity.Views; +#pragma warning disable CS8618 namespace Wonky.Client.Components; -public partial class CatalogListComponent +public partial class ProductPriceListComponent { [Parameter] public List ItemList { get; set; } = new(); [Inject] private IToastService ToastService { get; set; } diff --git a/Wonky.Client/Components/QuoteListComponent.razor b/Wonky.Client/Components/QuoteListComponent.razor index 224fedff..f0869a68 100644 --- a/Wonky.Client/Components/QuoteListComponent.razor +++ b/Wonky.Client/Components/QuoteListComponent.razor @@ -42,44 +42,56 @@ foreach (var quote in Quotes) {
+
+
@quote.Company.Name
- +
@quote.OrderDate - +
- - - + + + @if (quote.QuoteStatusEnum == "None") { - + }
@switch (quote.QuoteStatusEnum) { case "None": - + break; case "Lose": - + break; case "Note": - + break; case "Archive": - + break; default: - + break; }
@if (!string.IsNullOrWhiteSpace(quote.OfficeNote)) { @@ -103,5 +115,4 @@ {
Ingen data
} -
- +
\ No newline at end of file diff --git a/Wonky.Client/Components/QuoteListComponent.razor.cs b/Wonky.Client/Components/QuoteListComponent.razor.cs index c37f9738..07fa4b3e 100644 --- a/Wonky.Client/Components/QuoteListComponent.razor.cs +++ b/Wonky.Client/Components/QuoteListComponent.razor.cs @@ -23,11 +23,11 @@ public partial class QuoteListComponent { [Parameter] public List Quotes { get; set; } = new(); - [Parameter] public EventCallback OnChangedCallback { get; set; } + [Parameter] public EventCallback OnChangedCallback { get; set; } private async Task SetQuote(string eSalesNumber, QStatus status) { - var args = new QCallbackArgs() + var args = new QuoteCallbackArgs() { ESalesNumber = eSalesNumber, Status = status diff --git a/Wonky.Client/Components/VatAddressInputComponent.razor b/Wonky.Client/Components/VatAddressInputComponent.razor index 2057fe70..70d1c899 100644 --- a/Wonky.Client/Components/VatAddressInputComponent.razor +++ b/Wonky.Client/Components/VatAddressInputComponent.razor @@ -15,7 +15,7 @@ // *@ - +
diff --git a/Wonky.Client/Components/VatAddressInputComponent.razor.cs b/Wonky.Client/Components/VatAddressInputComponent.razor.cs index e2daca0d..0bf14f11 100644 --- a/Wonky.Client/Components/VatAddressInputComponent.razor.cs +++ b/Wonky.Client/Components/VatAddressInputComponent.razor.cs @@ -17,22 +17,24 @@ using System.ComponentModel.DataAnnotations; using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components.Forms; using Wonky.Client.Models; +#pragma warning disable CS8618 namespace Wonky.Client.Components; public partial class VatAddressInputComponent { - [Parameter] public VatAddress Address { get; set; } - private EditContext _editContext { get; set; } - private VatAddress _address { get; set; } + [Parameter] public VatAddress Address { get; set; } = new(); [Parameter] public EventCallback OnValidSubmit { get; set; } + private EditContext VatAddressContext { get; set; } + private VatAddress VatAddress { get; set; } = new(); + protected override void OnParametersSet() { - _address = Address; - _editContext = new EditContext(_address); + VatAddress = Address; + VatAddressContext = new EditContext(VatAddress); } private async Task SubmitForm() { - await OnValidSubmit.InvokeAsync(_address); + await OnValidSubmit.InvokeAsync(VatAddress); } } \ No newline at end of file diff --git a/Wonky.Client/Components/VatCompanyNameInputComponent.razor b/Wonky.Client/Components/VatCompanyNameInputComponent.razor index 2176fc38..49c7426b 100644 --- a/Wonky.Client/Components/VatCompanyNameInputComponent.razor +++ b/Wonky.Client/Components/VatCompanyNameInputComponent.razor @@ -15,13 +15,13 @@ // *@ - +
- - + +
diff --git a/Wonky.Client/Components/VatCompanyNameInputComponent.razor.cs b/Wonky.Client/Components/VatCompanyNameInputComponent.razor.cs index 6613c0ad..a761d069 100644 --- a/Wonky.Client/Components/VatCompanyNameInputComponent.razor.cs +++ b/Wonky.Client/Components/VatCompanyNameInputComponent.razor.cs @@ -22,15 +22,15 @@ namespace Wonky.Client.Components; public partial class VatCompanyNameInputComponent { [Parameter] public string CompanyName { get; set; } = ""; - [Required(ErrorMessage = "Navn kan ikke være tomt")] private string _companyName { get; set; } = ""; + [Required(ErrorMessage = "Navn kan ikke være tomt")] private string ThisCompanyName { get; set; } = ""; [Parameter] public EventCallback OnValidSubmit { get; set; } protected override void OnParametersSet() { - _companyName = CompanyName; + ThisCompanyName = CompanyName; } private async Task SubmitForm() { - await OnValidSubmit.InvokeAsync(_companyName); + await OnValidSubmit.InvokeAsync(ThisCompanyName); } } \ No newline at end of file diff --git a/Wonky.Client/Components/WarehouseListComponent.razor.cs b/Wonky.Client/Components/WarehouseListComponent.razor.cs index 54aeaa61..87d82552 100644 --- a/Wonky.Client/Components/WarehouseListComponent.razor.cs +++ b/Wonky.Client/Components/WarehouseListComponent.razor.cs @@ -22,7 +22,7 @@ namespace Wonky.Client.Components; public partial class WarehouseListComponent { [Parameter] public string Header { get; set; } = ""; - [Parameter] public List? OrderList { get; set; } + [Parameter] public List OrderList { get; set; } = new(); [Parameter] public bool ReadyToShip { get; set; } [Parameter] public EventCallback OnGetStatus { get; set; } [Parameter] public EventCallback OnSetShipped { get; set; } diff --git a/Wonky.Client/Components/WorkDateComponent.razor.cs b/Wonky.Client/Components/WorkDateComponent.razor.cs index adb7e575..c198b0e1 100644 --- a/Wonky.Client/Components/WorkDateComponent.razor.cs +++ b/Wonky.Client/Components/WorkDateComponent.razor.cs @@ -19,6 +19,7 @@ using Blazored.LocalStorage; using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components.Forms; using Wonky.Client.Services; +#pragma warning disable CS8618 namespace Wonky.Client.Components; @@ -27,14 +28,12 @@ public partial class WorkDateComponent : IDisposable /// /// User preference service /// - [Inject] - public UserProfileService Profiles { get; set; } + [Inject] public UserProfileService Profiles { get; set; } /// /// OnChanged callback function /// - [Parameter] - public EventCallback OnChangedCallback { get; set; } + [Parameter] public EventCallback OnChangedCallback { get; set; } /// /// work date context holding the edit value @@ -49,7 +48,7 @@ public partial class WorkDateComponent : IDisposable /// /// user preferences /// - private UserProfile _profiles = new(); + private UserProfile Profile { get; set; } = new(); /// /// Component Initialization @@ -58,10 +57,10 @@ public partial class WorkDateComponent : IDisposable { WorkDateContext = new EditContext(SelectedDate); Profiles.OnChange += ProfileServiceOnOnChange; - _profiles = await Profiles.GetPreferences(); - SelectedDate = string.IsNullOrWhiteSpace(_profiles.WorkDate) + Profile = await Profiles.GetPreferences(); + SelectedDate = string.IsNullOrWhiteSpace(Profile.WorkDate) ? DateTime.Now - : DateTime.Parse(_profiles.WorkDate); + : DateTime.Parse(Profile.WorkDate); } /// @@ -84,7 +83,7 @@ public partial class WorkDateComponent : IDisposable /// private void ProfileServiceOnOnChange(UserProfile newUserProfile) { - _profiles = newUserProfile; + Profile = newUserProfile; StateHasChanged(); } diff --git a/Wonky.Client/Helpers/Utils.cs b/Wonky.Client/Helpers/Utils.cs index 2ab59d30..c1897f50 100644 --- a/Wonky.Client/Helpers/Utils.cs +++ b/Wonky.Client/Helpers/Utils.cs @@ -1,5 +1,4 @@ - -// Copyright (C) 2022 FCS Frede's Computer Services. +// 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 @@ -23,6 +22,35 @@ namespace Wonky.Client.Helpers; /// public static class Utils { + /// + /// validate password to contain a-z and A-Z and 0-9 + /// + /// + /// + public static bool ValidatePasswd(string toValidate, int length) + { + if (toValidate.Length < length) + return false; + + var validConditions = 0; + if (toValidate.Any(c => c is >= 'a' and <= 'z')) + { + validConditions++; + } + + if (toValidate.Any(c => c is >= 'A' and <= 'Z')) + { + validConditions++; + } + + if (toValidate.Any(c => c is >= '0' and <= '9')) + { + validConditions++; + } + + return validConditions == 3; + } + /// /// return Country Name from countryCode /// diff --git a/Wonky.Client/HttpInterfaces/ICountryActivityRepository.cs b/Wonky.Client/HttpInterfaces/ICountryActivityRepository.cs new file mode 100644 index 00000000..4880dbd9 --- /dev/null +++ b/Wonky.Client/HttpInterfaces/ICountryActivityRepository.cs @@ -0,0 +1,40 @@ + +// 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.Entity.DTO; +using Wonky.Entity.Views; + +namespace Wonky.Client.HttpInterfaces; + +/// +/// Interface Activity CRM Http repository +/// +public interface ICountryActivityRepository +{ + /// + /// Get activity data by id + /// + /// + /// + Task GetActivity(string activityId); + + /// + /// Get activities for customer Id + /// + /// + /// + Task> GetCustomerActivities(string customerId); +} \ No newline at end of file diff --git a/Wonky.Client/HttpInterfaces/ISystemUserRepository.cs b/Wonky.Client/HttpInterfaces/ISystemUserRepository.cs index a0e8d976..839608d7 100644 --- a/Wonky.Client/HttpInterfaces/ISystemUserRepository.cs +++ b/Wonky.Client/HttpInterfaces/ISystemUserRepository.cs @@ -28,43 +28,36 @@ public interface ISystemUserRepository /// Get Advisors (Office) /// /// - Task> GetAdvisors(); + Task> GetUsers(); /// /// Get Advisor Info for given userId /// /// /// - Task GetAdvisorInfo(string userId); + Task GetUserInfo(string userId); + /// + /// Update Advisor using userId and updated data + /// + /// + /// + Task CreateUser(UserManagerEditView model); + /// /// Update Advisor using userId and updated data /// /// /// /// - Task UpdateAdvisor(string userId, UserUpdateDto model); + Task UpdateUserInfo(string userId, UserManagerEditView model); /// - /// Get Administrative Users - /// - /// - Task> GetAdminUsers(); - - /// - /// Get Admin Info for giver userId + /// Delete the user with id /// /// /// - Task GetAdminUserInfo(string userId); - - /// - /// Update Admin user using userId and updated data - /// - /// - /// - /// - Task UpdateAdminUser(string userId, UserUpdateDto model); + Task DeleteUser(string userId); /// /// Set new user password diff --git a/Wonky.Client/HttpInterfaces/ISystemUserRepositoryGen1.cs b/Wonky.Client/HttpInterfaces/ISystemUserRepositoryGen1.cs new file mode 100644 index 00000000..b47b6249 --- /dev/null +++ b/Wonky.Client/HttpInterfaces/ISystemUserRepositoryGen1.cs @@ -0,0 +1,77 @@ + +// 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.Entity.DTO; +using Wonky.Entity.Views; + +namespace Wonky.Client.HttpInterfaces; + +/// +/// Interface for User handling over http +/// +public interface ISystemUserRepositoryGen1 +{ + /// + /// Get Advisors (Office) + /// + /// + Task> GetUsers(); + + /// + /// Get Advisor Info for given userId + /// + /// + /// + Task GetAdvisorInfo(string userId); + + /// + /// Update Advisor using userId and updated data + /// + /// + /// + /// + Task UpdateAdvisor(string userId, UserUpdateDto model); + + /// + /// Get Administrative Users + /// + /// + Task> GetAdminUsers(); + + /// + /// Get Admin Info for giver userId + /// + /// + /// + Task GetAdminUserInfo(string userId); + + /// + /// Update Admin user using userId and updated data + /// + /// + /// + /// + Task UpdateAdminUser(string userId, UserUpdateDto model); + + /// + /// Set new user password + /// + /// + /// + /// + /// + Task ResetUserPassword(string userId, string newPasswd, string confirmPasswd); +} \ No newline at end of file diff --git a/Wonky.Client/HttpRepository/CountryActivityRepository.cs b/Wonky.Client/HttpRepository/CountryActivityRepository.cs new file mode 100644 index 00000000..12a27a3a --- /dev/null +++ b/Wonky.Client/HttpRepository/CountryActivityRepository.cs @@ -0,0 +1,80 @@ + +// 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 System.Net.Http.Json; +using System.Text.Json; +using Microsoft.AspNetCore.Components; +using Microsoft.Extensions.Options; +using Wonky.Client.HttpInterfaces; +using Wonky.Entity.Configuration; +using Wonky.Entity.DTO; +using Wonky.Entity.Views; + +namespace Wonky.Client.HttpRepository; + +/// +/// Implementing Interface Activity CRM Http repository +/// +public class CountryActivityRepository : ICountryActivityRepository +{ + private readonly JsonSerializerOptions? _options = new JsonSerializerOptions + { + PropertyNameCaseInsensitive = true + }; + + private readonly NavigationManager _navigation; + private readonly ILogger _logger; + private readonly HttpClient _client; + private readonly ApiConfig _api; + + public CountryActivityRepository(HttpClient client, + ILogger logger, + NavigationManager navigation, IOptions configuration) + { + _client = client; + _logger = logger; + _navigation = navigation; + _api = configuration.Value; + } + + /// + /// Get activity data by id + /// + /// + /// + public async Task GetActivity(string activityId) + { + var activity = await _client + .GetFromJsonAsync($"{_api.CrmActivities}/{activityId}"); + return activity ?? new ActivityDto(); + } + + /// + /// Get activities for customer Id + /// + /// + /// + public async Task> GetCustomerActivities(string customerId) + { + var response = await _client.GetAsync($"{_api.CrmActivities}/company/{customerId}"); + var content = await response.Content.ReadAsStringAsync(); + if (!response.IsSuccessStatusCode) + return new List(); + return string.IsNullOrWhiteSpace(content) + ? new List() + : JsonSerializer.Deserialize>(content, _options); + } +} \ No newline at end of file diff --git a/Wonky.Client/HttpRepository/OfficeCustomerHistoryRepository.cs b/Wonky.Client/HttpRepository/CountryCustomerHistoryRepository.cs similarity index 90% rename from Wonky.Client/HttpRepository/OfficeCustomerHistoryRepository.cs rename to Wonky.Client/HttpRepository/CountryCustomerHistoryRepository.cs index 2a49b0d5..d6726060 100644 --- a/Wonky.Client/HttpRepository/OfficeCustomerHistoryRepository.cs +++ b/Wonky.Client/HttpRepository/CountryCustomerHistoryRepository.cs @@ -73,13 +73,20 @@ public class CountryCustomerHistoryRepository : ICountryCustomerHistoryRepositor /// public async Task FetchInvoice(string countryCode, string companyId, string invoiceId) { - return await _client - .GetFromJsonAsync($"{_api.OfficeCustomers}/{countryCode}/{companyId}/invoices/{invoiceId}", _options); + var response = await _client + .GetAsync($"{_api.OfficeCustomers}/{countryCode}/{companyId}/invoices/{invoiceId}"); + if (!response.IsSuccessStatusCode) return new InvoiceView(); + var content = await response.Content.ReadAsStringAsync(); + + return response.IsSuccessStatusCode + ? JsonSerializer.Deserialize(content, _options) + : new InvoiceView(); } - + /// /// Fetch inventory from given customer /// + /// /// /// public async Task> FetchInventory(string countryCode, string companyId) @@ -92,10 +99,11 @@ public class CountryCustomerHistoryRepository : ICountryCustomerHistoryRepositor ? new List() : JsonSerializer.Deserialize>(content, _options); } - + /// /// Fetch History for given customer /// + /// /// /// public async Task> FetchHistory(string countryCode, string companyId) @@ -113,6 +121,7 @@ public class CountryCustomerHistoryRepository : ICountryCustomerHistoryRepositor /// /// Fetch history for given customer and a given product /// + /// /// /// /// @@ -130,6 +139,7 @@ public class CountryCustomerHistoryRepository : ICountryCustomerHistoryRepositor /// /// RPC call to initiate remote server sync for given customer /// + /// /// /// /// diff --git a/Wonky.Client/HttpRepository/OfficeCustomerRepository.cs b/Wonky.Client/HttpRepository/CountryCustomerRepository.cs similarity index 100% rename from Wonky.Client/HttpRepository/OfficeCustomerRepository.cs rename to Wonky.Client/HttpRepository/CountryCustomerRepository.cs diff --git a/Wonky.Client/HttpRepository/SystemUserRepository.cs b/Wonky.Client/HttpRepository/SystemUserRepository.cs index a67006e3..9e5acfb7 100644 --- a/Wonky.Client/HttpRepository/SystemUserRepository.cs +++ b/Wonky.Client/HttpRepository/SystemUserRepository.cs @@ -50,60 +50,58 @@ public class SystemUserRepository : ISystemUserRepository /// Get Advisors (Office) /// /// - public async Task> GetAdvisors() + public async Task> GetUsers() { - return await _client.GetFromJsonAsync>(_api.OfficeAdvisors); + return await _client.GetFromJsonAsync>(_api.UserManager); } - + /// /// Get Advisor Info for given userId /// /// /// - public async Task GetAdvisorInfo(string userId) + public async Task GetUserInfo(string userId) { - return await _client.GetFromJsonAsync($"{_api.OfficeAdvisors}/{userId}"); + return await _client.GetFromJsonAsync($"{_api.UserManager}/{userId}"); } + /// + /// Update Advisor using userId and updated data + /// + /// + /// + public async Task CreateUser(UserManagerEditView model) + { + var result = await _client.PostAsJsonAsync($"{_api.UserManager}", model, _options); + if (!result.IsSuccessStatusCode) + return new UserManagerEditView(); + try + { + return await result.Content.ReadFromJsonAsync(); + } + catch + { + return new UserManagerEditView(); + } + } + /// /// Update Advisor using userId and updated data /// /// /// /// - public async Task UpdateAdvisor(string userId, UserUpdateDto model) + public async Task UpdateUserInfo(string userId, UserManagerEditView model) { - await _client.PutAsJsonAsync($"{_api.OfficeAdvisors}/{userId}", model, _options); + await _client.PutAsJsonAsync($"{_api.UserManager}/{userId}", model, _options); } /// - /// Get Administrative Users - /// - /// - public async Task> GetAdminUsers() - { - return await _client.GetFromJsonAsync>(_api.OfficeUsers); - } - - /// - /// Get Admin Info for giver userId /// /// - /// - public async Task GetAdminUserInfo(string userId) + public async Task DeleteUser(string userId) { - return await _client.GetFromJsonAsync($"{_api.OfficeUsers}/{userId}"); - } - - /// - /// Update Admin user using userId and updated data - /// - /// - /// - /// - public async Task UpdateAdminUser(string userId, UserUpdateDto model) - { - await _client.PutAsJsonAsync($"{_api.OfficeUsers}/{userId}", model, _options); + await _client.DeleteAsync($"{_api.UserManager}/{userId}"); } /// @@ -117,6 +115,6 @@ public class SystemUserRepository : ISystemUserRepository { var passwd = new Dictionary { { "newPassword", newPasswd }, { "confirmPassword", confirmPasswd } }; - await _client.PostAsJsonAsync($"{_api.OfficeUserPasswd}/{userId}", passwd, _options); + await _client.PostAsJsonAsync($"{_api.UserManager}/passwd/{userId}", passwd, _options); } } \ No newline at end of file diff --git a/Wonky.Client/HttpRepository/SystemUserRepositoryGen1.cs b/Wonky.Client/HttpRepository/SystemUserRepositoryGen1.cs new file mode 100644 index 00000000..9e309ff6 --- /dev/null +++ b/Wonky.Client/HttpRepository/SystemUserRepositoryGen1.cs @@ -0,0 +1,122 @@ + +// 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 System.Net.Http.Json; +using System.Text.Json; +using Microsoft.AspNetCore.Components; +using Microsoft.Extensions.Options; +using Wonky.Client.HttpInterfaces; +using Wonky.Entity.Configuration; +using Wonky.Entity.DTO; +using Wonky.Entity.Views; + +namespace Wonky.Client.HttpRepository; + +public class SystemUserRepositoryGen1 : ISystemUserRepositoryGen1 +{ + private readonly JsonSerializerOptions? _options = new JsonSerializerOptions + { + PropertyNameCaseInsensitive = true + }; + + private readonly NavigationManager _navigation; + private ILogger _logger; + private readonly HttpClient _client; + private readonly ApiConfig _api; + + public SystemUserRepositoryGen1(HttpClient client, ILogger logger, + NavigationManager navigation, IOptions configuration) + { + _client = client; + _logger = logger; + _navigation = navigation; + _api = configuration.Value; + } + + /// + /// Get Advisors (Office) + /// + /// + public async Task> GetUsers() + { + return await _client.GetFromJsonAsync>(_api.OfficeAdvisors); + } + + /// + /// Get Advisor Info for given userId + /// + /// + /// + public async Task GetAdvisorInfo(string userId) + { + return await _client.GetFromJsonAsync($"{_api.OfficeAdvisors}/{userId}"); + } + + /// + /// Update Advisor using userId and updated data + /// + /// + /// + /// + public async Task UpdateAdvisor(string userId, UserUpdateDto model) + { + await _client.PutAsJsonAsync($"{_api.OfficeAdvisors}/{userId}", model, _options); + } + + /// + /// Get Administrative Users + /// + /// + public async Task> GetAdminUsers() + { + return await _client.GetFromJsonAsync>(_api.OfficeUsers); + } + + /// + /// Get Admin Info for giver userId + /// + /// + /// + public async Task GetAdminUserInfo(string userId) + { + return await _client.GetFromJsonAsync($"{_api.OfficeUsers}/{userId}"); + } + + /// + /// Update Admin user using userId and updated data + /// + /// + /// + /// + public async Task UpdateAdminUser(string userId, UserUpdateDto model) + { + await _client.PutAsJsonAsync($"{_api.OfficeUsers}/{userId}", model, _options); + } + + /// + /// Set new user password + /// + /// + /// + /// + /// + public async Task ResetUserPassword(string userId, string newPasswd, string confirmPasswd) + { + var passwd = new Dictionary + { { "newPassword", newPasswd }, { "confirmPassword", confirmPasswd } }; + await _client.PostAsJsonAsync($"{_api.UserManagerSetPasswd}/{userId}", passwd, _options); + } +} \ No newline at end of file diff --git a/Wonky.Client/Models/QCallbackArgs.cs b/Wonky.Client/Models/QCallbackArgs.cs index fe0d7d4e..75c19ea1 100644 --- a/Wonky.Client/Models/QCallbackArgs.cs +++ b/Wonky.Client/Models/QCallbackArgs.cs @@ -16,7 +16,7 @@ namespace Wonky.Client.Models; -public class QCallbackArgs +public class QuoteCallbackArgs { /// /// ESalesNumber diff --git a/Wonky.Client/Shared/CustomerActivityListModalOverlay.razor b/Wonky.Client/OverlayCustomer/CustomerActivityListOverlay.razor similarity index 95% rename from Wonky.Client/Shared/CustomerActivityListModalOverlay.razor rename to Wonky.Client/OverlayCustomer/CustomerActivityListOverlay.razor index 0afd582e..372770b9 100644 --- a/Wonky.Client/Shared/CustomerActivityListModalOverlay.razor +++ b/Wonky.Client/OverlayCustomer/CustomerActivityListOverlay.razor @@ -15,7 +15,6 @@ // *@ @using Wonky.Client.Components - diff --git a/Wonky.Client/Shared/CustomerActivityListModalOverlay.razor.cs b/Wonky.Client/OverlayCustomer/CustomerActivityListOverlay.razor.cs similarity index 83% rename from Wonky.Client/Shared/CustomerActivityListModalOverlay.razor.cs rename to Wonky.Client/OverlayCustomer/CustomerActivityListOverlay.razor.cs index 28e5a360..c71bd310 100644 --- a/Wonky.Client/Shared/CustomerActivityListModalOverlay.razor.cs +++ b/Wonky.Client/OverlayCustomer/CustomerActivityListOverlay.razor.cs @@ -14,18 +14,12 @@ // along with this program. If not, see [https://www.gnu.org/licenses/agpl-3.0.en.html] // -using System.Text.Json; using Microsoft.AspNetCore.Components; -using Wonky.Client.HttpInterceptors; -using Wonky.Client.HttpInterfaces; -using Wonky.Client.Models; -using Wonky.Client.Shared; -using Wonky.Entity.DTO; using Wonky.Entity.Views; -namespace Wonky.Client.Shared; +namespace Wonky.Client.OverlayCustomer; -public partial class CustomerActivityListModalOverlay +public partial class CustomerActivityListOverlay { [Parameter] public string CompanyName { get; set; } = ""; [Parameter] public List Activities { get; set; } = new(); diff --git a/Wonky.Client/Shared/CustomerActivityViewModalOverlay.razor b/Wonky.Client/OverlayCustomer/CustomerActivityViewOverlay.razor similarity index 100% rename from Wonky.Client/Shared/CustomerActivityViewModalOverlay.razor rename to Wonky.Client/OverlayCustomer/CustomerActivityViewOverlay.razor diff --git a/Wonky.Client/Shared/CustomerActivityViewModalOverlay.razor.cs b/Wonky.Client/OverlayCustomer/CustomerActivityViewOverlay.razor.cs similarity index 80% rename from Wonky.Client/Shared/CustomerActivityViewModalOverlay.razor.cs rename to Wonky.Client/OverlayCustomer/CustomerActivityViewOverlay.razor.cs index dd54dd49..7b8fc057 100644 --- a/Wonky.Client/Shared/CustomerActivityViewModalOverlay.razor.cs +++ b/Wonky.Client/OverlayCustomer/CustomerActivityViewOverlay.razor.cs @@ -14,19 +14,12 @@ // along with this program. If not, see [https://www.gnu.org/licenses/agpl-3.0.en.html] // -using System.Text.Json; using Microsoft.AspNetCore.Components; -using Wonky.Client.HttpInterceptors; -using Wonky.Client.HttpInterfaces; -using Wonky.Client.HttpRepository; -using Wonky.Client.Models; -using Wonky.Client.Services; -using Wonky.Entity.Requests; using Wonky.Entity.Views; -namespace Wonky.Client.Shared; +namespace Wonky.Client.OverlayCustomer; -public partial class CustomerActivityViewModalOverlay +public partial class CustomerActivityViewOverlay { [Parameter] public ReportItemView ReportItem { get; set; } = new(); private string _modalDisplay = ""; diff --git a/Wonky.Client/Shared/CustomerInventoryListModalOverlay.razor b/Wonky.Client/OverlayCustomer/CustomerInventoryListOverlay.razor similarity index 90% rename from Wonky.Client/Shared/CustomerInventoryListModalOverlay.razor rename to Wonky.Client/OverlayCustomer/CustomerInventoryListOverlay.razor index 6d21c268..d1f7ad4a 100644 --- a/Wonky.Client/Shared/CustomerInventoryListModalOverlay.razor +++ b/Wonky.Client/OverlayCustomer/CustomerInventoryListOverlay.razor @@ -33,4 +33,5 @@ { } - \ No newline at end of file + + \ No newline at end of file diff --git a/Wonky.Client/OverlayCustomer/CustomerInventoryListOverlay.razor.cs b/Wonky.Client/OverlayCustomer/CustomerInventoryListOverlay.razor.cs new file mode 100644 index 00000000..366d2c91 --- /dev/null +++ b/Wonky.Client/OverlayCustomer/CustomerInventoryListOverlay.razor.cs @@ -0,0 +1,86 @@ + +// 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 Microsoft.AspNetCore.Components; +using Wonky.Client.HttpInterceptors; +using Wonky.Client.HttpInterfaces; +using Wonky.Client.Models; +using Wonky.Entity.DTO; +using Wonky.Entity.Views; +#pragma warning disable CS8618 + +namespace Wonky.Client.OverlayCustomer; + +public partial class CustomerInventoryListOverlay : IDisposable +{ + [Inject] private HttpInterceptorService Interceptor { get; set; } + [Inject] private ICountryCatalogRepository CatalogRepo { get; set; } + [Inject] private ILogger Logger { get; set; } + + [Parameter] public string CompanyName { get; set; } = ""; + [Parameter] public string CompanyId { get; set; } = ""; + [Parameter] public string CountryCode { get; set; } = ""; + [Parameter] public List Inventory { get; set; } = new(); + + [Parameter] public EventCallback OnInventorySelected { get; set; } + + private string _modalDisplay = ""; + private bool _showBackdrop; + private CompanyDto Company { get; set; } = new(); + private List ProductList { get; set; } = new(); + private DraftItem DraftItem { get; set; } = new(); + private SalesItemView SalesItem { get; set; } = new(); + private CustomerInventoryReorderOverlay ReorderOverlay { get; set; } = new(); + + protected override void OnInitialized() + { + Interceptor.RegisterEvent(); + Interceptor.RegisterBeforeSendEvent(); + StateHasChanged(); + } + + private async Task OnReorderCallback(string sku) + { + SalesItem = await CatalogRepo.GetSalesItemSku(CountryCode.ToLower(), sku); + ReorderOverlay.Show(); + } + + private async Task OnSelectedItem(DraftItem draftItem) + { + await OnInventorySelected.InvokeAsync(draftItem); + Hide(); + } + + public void Show() + { + _modalDisplay = "block;"; + _showBackdrop = true; + StateHasChanged(); + } + + private void Hide() + { + _modalDisplay = "none;"; + _showBackdrop = false; + StateHasChanged(); + } + + public void Dispose() + { + Interceptor.DisposeEvent(); + } + +} \ No newline at end of file diff --git a/Wonky.Client/Shared/CustomerInventoryReorderModalOverlay.razor b/Wonky.Client/OverlayCustomer/CustomerInventoryReorderOverlay.razor similarity index 100% rename from Wonky.Client/Shared/CustomerInventoryReorderModalOverlay.razor rename to Wonky.Client/OverlayCustomer/CustomerInventoryReorderOverlay.razor diff --git a/Wonky.Client/Shared/CustomerInventoryReorderModalOverlay.razor.cs b/Wonky.Client/OverlayCustomer/CustomerInventoryReorderOverlay.razor.cs similarity index 93% rename from Wonky.Client/Shared/CustomerInventoryReorderModalOverlay.razor.cs rename to Wonky.Client/OverlayCustomer/CustomerInventoryReorderOverlay.razor.cs index aa314538..09b49a1b 100644 --- a/Wonky.Client/Shared/CustomerInventoryReorderModalOverlay.razor.cs +++ b/Wonky.Client/OverlayCustomer/CustomerInventoryReorderOverlay.razor.cs @@ -16,17 +16,14 @@ using System.Globalization; using Microsoft.AspNetCore.Components; -using Wonky.Client.HttpInterceptors; using Wonky.Client.HttpInterfaces; -using Wonky.Client.HttpRepository; using Wonky.Client.Models; -using Wonky.Client.Services; -using Wonky.Entity.Requests; using Wonky.Entity.Views; +#pragma warning disable CS8618 -namespace Wonky.Client.Shared; +namespace Wonky.Client.OverlayCustomer; -public partial class CustomerInventoryReorderModalOverlay +public partial class CustomerInventoryReorderOverlay { [Parameter] public string CompanyId { get; set; } = ""; [Parameter] public SalesItemView SalesItem { get; set; } = new(); diff --git a/Wonky.Client/Shared/CustomerInvoiceListModalOverlay.razor b/Wonky.Client/OverlayCustomer/CustomerInvoiceListOverlay.razor similarity index 92% rename from Wonky.Client/Shared/CustomerInvoiceListModalOverlay.razor rename to Wonky.Client/OverlayCustomer/CustomerInvoiceListOverlay.razor index 9f59a195..822491a3 100644 --- a/Wonky.Client/Shared/CustomerInvoiceListModalOverlay.razor +++ b/Wonky.Client/OverlayCustomer/CustomerInvoiceListOverlay.razor @@ -32,7 +32,6 @@
-
@@ -40,4 +39,6 @@ @if (_showBackdrop) { -} \ No newline at end of file +} + + \ No newline at end of file diff --git a/Wonky.Client/Shared/CustomerInvoiceListModalOverlay.razor.cs b/Wonky.Client/OverlayCustomer/CustomerInvoiceListOverlay.razor.cs similarity index 88% rename from Wonky.Client/Shared/CustomerInvoiceListModalOverlay.razor.cs rename to Wonky.Client/OverlayCustomer/CustomerInvoiceListOverlay.razor.cs index 02e35e69..15449850 100644 --- a/Wonky.Client/Shared/CustomerInvoiceListModalOverlay.razor.cs +++ b/Wonky.Client/OverlayCustomer/CustomerInvoiceListOverlay.razor.cs @@ -16,17 +16,17 @@ using System.Text.Json; using Microsoft.AspNetCore.Components; -using Wonky.Entity.DTO; using Wonky.Entity.Views; +#pragma warning disable CS8618 -namespace Wonky.Client.Shared; +namespace Wonky.Client.OverlayCustomer; -public partial class CustomerInvoiceListModalOverlay +public partial class CustomerInvoiceListOverlay { [Parameter] public InvoiceListView CustomerInvoices { get; set; } = new(); - [Inject] private ILogger Logger { get; set; } - private CustomerInvoiceViewModalOverlay CustomerInvoiceView { get; set; } = new(); + [Inject] private ILogger Logger { get; set; } + private CustomerInvoiceViewOverlay CustomerInvoiceView { get; set; } = new(); private string InvoiceId { get; set; } = ""; private string _modalDisplay = ""; private bool _showBackdrop; diff --git a/Wonky.Client/Shared/CustomerInvoiceViewModalOverlay.razor b/Wonky.Client/OverlayCustomer/CustomerInvoiceViewOverlay.razor similarity index 100% rename from Wonky.Client/Shared/CustomerInvoiceViewModalOverlay.razor rename to Wonky.Client/OverlayCustomer/CustomerInvoiceViewOverlay.razor diff --git a/Wonky.Client/Shared/CustomerInvoiceViewModalOverlay.razor.cs b/Wonky.Client/OverlayCustomer/CustomerInvoiceViewOverlay.razor.cs similarity index 88% rename from Wonky.Client/Shared/CustomerInvoiceViewModalOverlay.razor.cs rename to Wonky.Client/OverlayCustomer/CustomerInvoiceViewOverlay.razor.cs index 657fbc47..0939f561 100644 --- a/Wonky.Client/Shared/CustomerInvoiceViewModalOverlay.razor.cs +++ b/Wonky.Client/OverlayCustomer/CustomerInvoiceViewOverlay.razor.cs @@ -14,19 +14,15 @@ // along with this program. If not, see [https://www.gnu.org/licenses/agpl-3.0.en.html] // -using System.Text.Json; using Microsoft.AspNetCore.Components; using Wonky.Client.HttpInterceptors; using Wonky.Client.HttpInterfaces; -using Wonky.Client.HttpRepository; -using Wonky.Client.Models; -using Wonky.Client.Services; -using Wonky.Entity.Requests; using Wonky.Entity.Views; +#pragma warning disable CS8618 -namespace Wonky.Client.Shared; +namespace Wonky.Client.OverlayCustomer; -public partial class CustomerInvoiceViewModalOverlay : IDisposable +public partial class CustomerInvoiceViewOverlay : IDisposable { [Parameter] public string CompanyId { get; set; } = ""; [Parameter] public string InvoiceId { get; set; } = ""; diff --git a/Wonky.Client/OverlayOffice/OfficeCustomerActivityListOverlay.razor b/Wonky.Client/OverlayOffice/OfficeCustomerActivityListOverlay.razor new file mode 100644 index 00000000..7d48b883 --- /dev/null +++ b/Wonky.Client/OverlayOffice/OfficeCustomerActivityListOverlay.razor @@ -0,0 +1,36 @@ +@* +// 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 + + +@if (_showBackdrop) +{ + +} diff --git a/Wonky.Client/OverlayOffice/OfficeCustomerActivityListOverlay.razor.cs b/Wonky.Client/OverlayOffice/OfficeCustomerActivityListOverlay.razor.cs new file mode 100644 index 00000000..00cf24ec --- /dev/null +++ b/Wonky.Client/OverlayOffice/OfficeCustomerActivityListOverlay.razor.cs @@ -0,0 +1,44 @@ + +// 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 Microsoft.AspNetCore.Components; +using Wonky.Entity.DTO; +using Wonky.Entity.Views; + +namespace Wonky.Client.OverlayOffice; + +public partial class OfficeCustomerActivityListOverlay +{ + [Parameter] public CompanyDto Company { get; set; } = new(); + [Parameter] public List Activities { get; set; } = new(); + + private string _modalDisplay = ""; + private bool _showBackdrop; + + public void Show() + { + _modalDisplay = "block;"; + _showBackdrop = true; + StateHasChanged(); + } + + private void Hide() + { + _modalDisplay = "none;"; + _showBackdrop = false; + StateHasChanged(); + } +} \ No newline at end of file diff --git a/Wonky.Client/OverlayOffice/OfficeCustomerActivityViewOverlay.razor b/Wonky.Client/OverlayOffice/OfficeCustomerActivityViewOverlay.razor new file mode 100644 index 00000000..5fc80d9c --- /dev/null +++ b/Wonky.Client/OverlayOffice/OfficeCustomerActivityViewOverlay.razor @@ -0,0 +1,109 @@ +@* +// 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] +// +*@ + +
Dato