diff --git a/Wonky.Client/Components/OfficeCountryCustomerListComponent.razor b/Wonky.Client/Components/OfficeCountryCustomerListComponent.razor index b525b86f..cc83d675 100644 --- a/Wonky.Client/Components/OfficeCountryCustomerListComponent.razor +++ b/Wonky.Client/Components/OfficeCountryCustomerListComponent.razor @@ -25,16 +25,25 @@ {
-
- @company.Name @(company.HasFolded == 1 ? "(OPHØRT)" : "") -
+ @if (string.IsNullOrWhiteSpace(company.Blocked)) + { +
+ @company.Name @(company.HasFolded == 1 ? "(OPHØRT)" : "") +
+ } + else + { +
+ @company.Name (spærret med kode '@company.Blocked') +
+ }
- + diff --git a/Wonky.Client/Helpers/Utils.cs b/Wonky.Client/Helpers/Utils.cs index 7ffd286f..88c938dc 100644 --- a/Wonky.Client/Helpers/Utils.cs +++ b/Wonky.Client/Helpers/Utils.cs @@ -47,7 +47,7 @@ public static class Utils } - public static List GenerateVariantListDto(IEnumerable items) + public static List GenerateVariantListDto(IEnumerable items) { return items.Select(item => new ProductVariant { @@ -57,23 +57,24 @@ public static class Utils }) .ToList(); } - - - public static List GenerateRevListView(IEnumerable products) + + public static List GenerateRevListView(IEnumerable workplaceProducts) { - var result = new List(); + var result = new List(); - var docProducts = products.OrderBy(x => x.TradingName).ToList(); + var products = workplaceProducts.OrderBy(x => x.TradingName).ToList(); - foreach (var product in docProducts) + foreach (var product in products) { foreach (var variant in product.Variants) { - var newDoc = new DocView + var docDataView = new DocDataView { ProductId = product.ProductId, VariantId = variant.VariantId, VariantName = variant.VariantName, + ApprovedBy = variant.Docs[0].ApprovedBy, + DocumentDate = variant.Docs[0].ApprovedBy, }; var docs = variant.Docs.OrderBy(x => x.DocumentTypeEnum).ToList(); @@ -82,17 +83,17 @@ public static class Utils switch (doc.DocumentTypeEnum.ToLower()) { case "apb": - newDoc.ApbDocId = doc.DocumentId; + docDataView.ApbDocId = doc.DocumentId; break; case "apv": - newDoc.ApvDocId = doc.DocumentId; - newDoc.S5A = doc.S5A; - newDoc.S9A = doc.S9A; + docDataView.ApvDocId = doc.DocumentId; + docDataView.S5A = doc.S5A; + docDataView.S9A = doc.S9A; break; } } - result.Add(newDoc); + result.Add(docDataView); } } @@ -100,9 +101,9 @@ public static class Utils } - public static List GenerateDocListView(IEnumerable products, ApiConfig config) + public static List GenerateDocListView(IEnumerable products, ApiConfig config) { - var result = new List(); + var result = new List(); var docProducts = products.OrderBy(x => x.TradingName).ToList(); @@ -110,7 +111,7 @@ public static class Utils { foreach (var variant in product.Variants) { - var newDoc = new DocView + var newDoc = new DocDataView { ProductId = product.ProductId, VariantId = variant.VariantId, diff --git a/Wonky.Client/HttpRepository/IAdvisorWorkplaceRepository.cs b/Wonky.Client/HttpRepository/IWorkplaceRepository.cs similarity index 97% rename from Wonky.Client/HttpRepository/IAdvisorWorkplaceRepository.cs rename to Wonky.Client/HttpRepository/IWorkplaceRepository.cs index c0f89129..6c919ae7 100644 --- a/Wonky.Client/HttpRepository/IAdvisorWorkplaceRepository.cs +++ b/Wonky.Client/HttpRepository/IWorkplaceRepository.cs @@ -18,7 +18,7 @@ using Wonky.Entity.Views; namespace Wonky.Client.HttpRepository; -public interface IAdvisorWorkplaceRepository +public interface IWorkplaceRepository { Task> GetWorkplaces(string companyId); diff --git a/Wonky.Client/HttpRepository/AdvisorWorkplaceRepository.cs b/Wonky.Client/HttpRepository/WorkplaceRepository.cs similarity index 96% rename from Wonky.Client/HttpRepository/AdvisorWorkplaceRepository.cs rename to Wonky.Client/HttpRepository/WorkplaceRepository.cs index 6ee73bf5..38ca153b 100644 --- a/Wonky.Client/HttpRepository/AdvisorWorkplaceRepository.cs +++ b/Wonky.Client/HttpRepository/WorkplaceRepository.cs @@ -23,7 +23,7 @@ using Wonky.Entity.Views; namespace Wonky.Client.HttpRepository; -public class AdvisorWorkplaceRepository : IAdvisorWorkplaceRepository +public class WorkplaceRepository : IWorkplaceRepository { private readonly JsonSerializerOptions? _options = new JsonSerializerOptions { @@ -31,13 +31,13 @@ public class AdvisorWorkplaceRepository : IAdvisorWorkplaceRepository }; private readonly NavigationManager _navigation; - private ILogger _logger; + private ILogger _logger; private readonly HttpClient _client; private readonly ApiConfig _api; - public AdvisorWorkplaceRepository(HttpClient client, - ILogger logger, + public WorkplaceRepository(HttpClient client, + ILogger logger, NavigationManager navigation, IOptions configuration) { diff --git a/Wonky.Client/Models/DocView.cs b/Wonky.Client/Models/DocDataView.cs similarity index 90% rename from Wonky.Client/Models/DocView.cs rename to Wonky.Client/Models/DocDataView.cs index 0f5dff37..085e144f 100644 --- a/Wonky.Client/Models/DocView.cs +++ b/Wonky.Client/Models/DocDataView.cs @@ -2,11 +2,12 @@ using System.ComponentModel.DataAnnotations; namespace Wonky.Client.Models; -public class DocView +public class DocDataView { public bool Added { get; set; } public string ApbDocId { get; set; } = ""; public string ApbDocLink { get; set; } = ""; + public string ApprovedBy { get; set; } = ""; public string ApvDocId { get; set; } = ""; public string ApvDocLink { get; set; } = ""; public string DocumentDate { get; set; } = ""; diff --git a/Wonky.Client/OverlayDocuments/ProductSelectionOverlay.razor.cs b/Wonky.Client/OverlayDocuments/ProductSelectionOverlay.razor.cs index c02ab6b1..7aa28594 100644 --- a/Wonky.Client/OverlayDocuments/ProductSelectionOverlay.razor.cs +++ b/Wonky.Client/OverlayDocuments/ProductSelectionOverlay.razor.cs @@ -22,13 +22,13 @@ namespace Wonky.Client.OverlayDocuments; public partial class ProductSelectionOverlay { //############################################################### - [Parameter] public List NewItems { get; set; } = new(); - [Parameter] public EventCallback OnSelectItem { get; set; } + [Parameter] public List NewItems { get; set; } = new(); + [Parameter] public EventCallback OnSelectItem { get; set; } //############################################################### private string _modalDisplay = ""; private bool _showBackdrop; - private List FilteredList { get; set; } = new(); + private List FilteredList { get; set; } = new(); private string SearchTerm { get; set; } = ""; @@ -38,7 +38,7 @@ public partial class ProductSelectionOverlay } - private async Task SelectItem(DocView item) + private async Task SelectItem(DocDataView item) { item.Added = !item.Added; await OnSelectItem.InvokeAsync(item); diff --git a/Wonky.Client/Pages/AdvisorActivityCreatePage.razor b/Wonky.Client/Pages/AdvisorActivityCreatePage.razor index 1c363339..7b765bfb 100644 --- a/Wonky.Client/Pages/AdvisorActivityCreatePage.razor +++ b/Wonky.Client/Pages/AdvisorActivityCreatePage.razor @@ -384,7 +384,7 @@ else
diff --git a/Wonky.Client/Pages/AdvisorCustomerViewEditPage.razor.cs b/Wonky.Client/Pages/AdvisorCustomerViewEditPage.razor.cs index 444bb1df..67e83236 100644 --- a/Wonky.Client/Pages/AdvisorCustomerViewEditPage.razor.cs +++ b/Wonky.Client/Pages/AdvisorCustomerViewEditPage.razor.cs @@ -244,7 +244,6 @@ public partial class AdvisorCustomerViewEditPage : IDisposable if (!string.IsNullOrWhiteSpace(newSync)) { - Toaster.ShowSuccess($"{forceBackend} {newSync} ERP hitorik synkroniseret til CRM."); _company.HistorySync = newSync; if (!_company.Account.StartsWith("NY")) { diff --git a/Wonky.Client/Pages/AdvisorCustomerWorkplaceListPage.razor.cs b/Wonky.Client/Pages/AdvisorCustomerWorkplaceListPage.razor.cs index e697df9f..c35db08a 100644 --- a/Wonky.Client/Pages/AdvisorCustomerWorkplaceListPage.razor.cs +++ b/Wonky.Client/Pages/AdvisorCustomerWorkplaceListPage.razor.cs @@ -28,7 +28,7 @@ namespace Wonky.Client.Pages; public partial class AdvisorCustomerWorkplaceListPage : IDisposable { // ############################################################### - [Inject] public IAdvisorWorkplaceRepository WorkplaceRepo { get; set; } + [Inject] public IWorkplaceRepository WorkplaceRepo { get; set; } [Inject] public IAdvisorCustomerRepository CustomerRepo { get; set; } [Inject] public HttpInterceptorService Interceptor { get; set; } [Inject] public NavigationManager Navigator { get; set; } diff --git a/Wonky.Client/Pages/AdvisorCustomerWorkplaceNewPage.razor.cs b/Wonky.Client/Pages/AdvisorCustomerWorkplaceNewPage.razor.cs index 867e8868..74b26347 100644 --- a/Wonky.Client/Pages/AdvisorCustomerWorkplaceNewPage.razor.cs +++ b/Wonky.Client/Pages/AdvisorCustomerWorkplaceNewPage.razor.cs @@ -30,7 +30,7 @@ public partial class AdvisorCustomerWorkplaceNewPage : IDisposable // ############################################################### [Inject] public HttpInterceptorService Interceptor { get; set; } [Inject] public IAdvisorCustomerRepository CustomerRepo { get; set; } - [Inject] public IAdvisorWorkplaceRepository WorkplaceRepo { get; set; } + [Inject] public IWorkplaceRepository WorkplaceRepo { get; set; } [Inject] public IToastService Toaster { get; set; } [Inject] public ILogger Logger { get; set; } [Inject] public NavigationManager Navigator { get; set; } diff --git a/Wonky.Client/Pages/AdvisorCustomerWorkplaceRevisionPage.razor b/Wonky.Client/Pages/AdvisorCustomerWorkplaceRevisionPage.razor index c7c9f567..41732cd5 100644 --- a/Wonky.Client/Pages/AdvisorCustomerWorkplaceRevisionPage.razor +++ b/Wonky.Client/Pages/AdvisorCustomerWorkplaceRevisionPage.razor @@ -65,6 +65,20 @@
+
+
+
+ @foreach (var approvedByName in _approvedBy) + { +
+ + +
+ } +
+
diff --git a/Wonky.Client/Pages/AdvisorCustomerWorkplaceRevisionPage.razor.cs b/Wonky.Client/Pages/AdvisorCustomerWorkplaceRevisionPage.razor.cs index 0dfc167c..49863539 100644 --- a/Wonky.Client/Pages/AdvisorCustomerWorkplaceRevisionPage.razor.cs +++ b/Wonky.Client/Pages/AdvisorCustomerWorkplaceRevisionPage.razor.cs @@ -36,7 +36,7 @@ namespace Wonky.Client.Pages; public partial class AdvisorCustomerWorkplaceRevisionPage : IDisposable { // ############################################################# - [Inject] public IAdvisorWorkplaceRepository WorkplaceRepo { get; set; } + [Inject] public IWorkplaceRepository WorkplaceRepo { get; set; } [Inject] public IExternalProductRepository PublicProductRepo { get; set; } [Inject] public HttpInterceptorService Interceptor { get; set; } [Inject] public NavigationManager Navigator { get; set; } @@ -52,15 +52,16 @@ public partial class AdvisorCustomerWorkplaceRevisionPage : IDisposable private UserManagerEditView UserInfo { get; set; } private EditContext FormContext { get; set; } private WorkplaceDto Workplace { get; set; } = new(); - private WorkplaceDocInfo WorkplaceInfo { get; set; } = new(); + private WorkplaceDocInfo WorkplaceData { get; set; } = new(); private List AvailableProducts { get; set; } = new(); private DocRevision Revision { get; set; } = new(); private bool Working { get; set; } = true; private bool FormInvalid { get; set; } = true; - private List CurrentItems { get; set; } = new(); - private List AvailableItems { get; set; } = new(); - private List AppendItems { get; set; } = new(); + private List CurrentItems { get; set; } = new(); + private List AvailableItems { get; set; } = new(); + private List AppendItems { get; set; } = new(); private ProductSelectionOverlay SelectionOverlay { get; set; } + private List _approvedBy = new(); protected override async Task OnInitializedAsync() @@ -76,31 +77,36 @@ public partial class AdvisorCustomerWorkplaceRevisionPage : IDisposable UserInfo = await UserService.GetUserInfo(); Workplace = await WorkplaceRepo.GetWorkplace(CompanyId, WorkplaceId); - Logger.LogDebug("Workplace {}", JsonSerializer.Serialize(Workplace, new JsonSerializerOptions(JsonSerializerDefaults.Web))); AvailableProducts = await PublicProductRepo.GetProducts(); - WorkplaceInfo = await WorkplaceRepo.GetRevisionList(CompanyId, WorkplaceId); - - CurrentItems = Utils.GenerateRevListView(WorkplaceInfo.Products); + WorkplaceData = await WorkplaceRepo.GetRevisionList(CompanyId, WorkplaceId); + Logger.LogDebug("Workplace Info => {}", + JsonSerializer.Serialize(WorkplaceData, new JsonSerializerOptions(JsonSerializerDefaults.Web))); + + Logger.LogDebug("Workplace Products => {}", + JsonSerializer.Serialize(WorkplaceData.Products, new JsonSerializerOptions(JsonSerializerDefaults.Web))); + + CurrentItems = Utils.GenerateRevListView(WorkplaceData.Products); Logger.LogDebug("Current Items List {}", JsonSerializer.Serialize(CurrentItems, new JsonSerializerOptions(JsonSerializerDefaults.Web))); - + + _approvedBy = CurrentItems.Select(x => x.ApprovedBy).Distinct().ToList(); + Logger.LogDebug("_approved by {}", + JsonSerializer.Serialize(_approvedBy, new JsonSerializerOptions(JsonSerializerDefaults.Web))); + // create list with variants not in the current variant list foreach (var variant in AvailableProducts.SelectMany(product => product.Variants)) { var v = CurrentItems.FirstOrDefault(v => v.VariantId == variant.VariantId); if (v == null) { - AvailableItems.Add(new DocView { VariantName = variant.Name, VariantId = variant.VariantId }); + AvailableItems.Add(new DocDataView { VariantName = variant.Name, VariantId = variant.VariantId }); } } - Logger.LogDebug("New Products List {}", - JsonSerializer.Serialize(AvailableItems, new JsonSerializerOptions(JsonSerializerDefaults.Web))); - Revision.ApprovedDate = $"{DateTime.Now:yyyy-MM-dd}"; Revision.AuthoredBy = $"{UserInfo.FirstName} {UserInfo.LastName}"; Revision.FollowupDate = $"{DateTime.Now.AddMonths(24):yyyy-MM-dd}"; @@ -151,13 +157,20 @@ public partial class AdvisorCustomerWorkplaceRevisionPage : IDisposable } + private void OnApprovedChange(string approvedBy) + { + Revision.ApprovedBy = approvedBy; + FormInvalid = !FormContext.Validate(); + StateHasChanged(); + } + private void CancelNewProducts() { AppendItems.Clear(); } - private void AddSelectedItem(DocView item) + private void AddSelectedItem(DocDataView item) { if (item.Added) { diff --git a/Wonky.Client/Pages/AdvisorCustomerWorkplaceViewEditPage.razor b/Wonky.Client/Pages/AdvisorCustomerWorkplaceViewEditPage.razor index d44c6abb..ff7df122 100644 --- a/Wonky.Client/Pages/AdvisorCustomerWorkplaceViewEditPage.razor +++ b/Wonky.Client/Pages/AdvisorCustomerWorkplaceViewEditPage.razor @@ -22,7 +22,7 @@
- @Workplace.CompanyName +

@Workplace.CompanyName

Stamkort @@ -38,7 +38,7 @@ }
- @Workplace.Name @(!string.IsNullOrWhiteSpace(Workplace.Description) ? $" ({Workplace.Description})" : "") + @Workplace.Name @(!string.IsNullOrWhiteSpace(Workplace.Description) ? $" ({Workplace.Description})" : "")
diff --git a/Wonky.Client/Pages/AdvisorCustomerWorkplaceViewEditPage.razor.cs b/Wonky.Client/Pages/AdvisorCustomerWorkplaceViewEditPage.razor.cs index 164ebaad..6ebe08a5 100644 --- a/Wonky.Client/Pages/AdvisorCustomerWorkplaceViewEditPage.razor.cs +++ b/Wonky.Client/Pages/AdvisorCustomerWorkplaceViewEditPage.razor.cs @@ -35,9 +35,9 @@ namespace Wonky.Client.Pages; public partial class AdvisorCustomerWorkplaceViewEditPage : IDisposable { // ############################################################# - [Inject] public IAdvisorWorkplaceRepository Workplaces { get; set; } + [Inject] public IWorkplaceRepository Workplaces { get; set; } [Inject] public IAdvisorCustomerRepository CustomerRepo { get; set; } - [Inject] public IAdvisorWorkplaceRepository WorkplaceRepo { get; set; } + [Inject] public IWorkplaceRepository WorkplaceRepo { get; set; } [Inject] public HttpInterceptorService Interceptor { get; set; } [Inject] public NavigationManager Navigator { get; set; } [Inject] public ILogger Logger { get; set; } @@ -56,7 +56,7 @@ public partial class AdvisorCustomerWorkplaceViewEditPage : IDisposable private EditContext WorkplaceContext { get; set; } private bool Working { get; set; } = true; private WorkplaceDocInfo WorkplaceDocInfo { get; set; } = new(); - private List DocViews { get; set; } = new(); + private List DocViews { get; set; } = new(); private ConfirmationModal ConfirmActionWorkplace { get; set; } private string DeleteMessage { get; set; } = ""; private string LinkRecipients { get; set; } = ""; @@ -79,7 +79,7 @@ public partial class AdvisorCustomerWorkplaceViewEditPage : IDisposable private ApiConfig _config = new(); private ConfirmationModal ConfirmActionVariant { get; set; } - private DocView SelectedItem { get; set; } = new(); + private DocDataView SelectedItem { get; set; } = new(); private bool OnlyOne { get; set; } = true; @@ -94,11 +94,13 @@ public partial class AdvisorCustomerWorkplaceViewEditPage : IDisposable var x = await Workplaces.GetWorkplaces(CompanyId); OnlyOne = x.Count is 1; await Task.Delay(250); - Workplace = await Workplaces.GetWorkplace(CompanyId, WorkplaceId); + WorkplaceDocInfo = await WorkplaceRepo.GetDocuments(CompanyId, WorkplaceId); - + // Logger.LogDebug("WorkplaceDocInfo => {}", JsonSerializer.Serialize(WorkplaceDocInfo, JsonSerializerOptions.Default)); + DocViews = Utils.GenerateDocListView(WorkplaceDocInfo.Products, _config); + // Logger.LogDebug("docViews => {}", JsonSerializer.Serialize(DocViews, JsonSerializerOptions.Default)); Working = false; } @@ -182,12 +184,13 @@ public partial class AdvisorCustomerWorkplaceViewEditPage : IDisposable private async Task OnSubmitUpdate() { Working = true; + Toaster.ShowWarning("HUSK REVISION AF DOKUMENTER."); await Workplaces.PutWorkplace(CompanyId, Workplace); Working = false; - Toaster.ShowSuccess("Arbejdssted er opdateret"); + Toaster.ShowSuccess("Arbejdssted er opdateret."); } @@ -215,7 +218,7 @@ public partial class AdvisorCustomerWorkplaceViewEditPage : IDisposable } - private void OnConfirmDeleteVariant(DocView selectedItem) + private void OnConfirmDeleteVariant(DocDataView selectedItem) { SelectedItem = selectedItem; DeleteMessage = @@ -241,7 +244,7 @@ public partial class AdvisorCustomerWorkplaceViewEditPage : IDisposable // update browser WorkplaceDocInfo.Products.Remove(item); DocViews = Utils.GenerateDocListView(WorkplaceDocInfo.Products, _config); - SelectedItem = new DocView(); + SelectedItem = new DocDataView(); Working = false; } diff --git a/Wonky.Client/Program.cs b/Wonky.Client/Program.cs index 36d5cf7a..7a6255c3 100644 --- a/Wonky.Client/Program.cs +++ b/Wonky.Client/Program.cs @@ -66,7 +66,7 @@ builder.Services.AddScoped( builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); -builder.Services.AddScoped(); +builder.Services.AddScoped(); builder.Services.AddScoped(); // administrative repositories builder.Services.AddScoped(); diff --git a/Wonky.Client/Shared/MainLayout.razor b/Wonky.Client/Shared/MainLayout.razor index 38313958..a20d0075 100644 --- a/Wonky.Client/Shared/MainLayout.razor +++ b/Wonky.Client/Shared/MainLayout.razor @@ -34,7 +34,7 @@
@Body
- +
diff --git a/Wonky.Client/wwwroot/appsettings.json b/Wonky.Client/wwwroot/appsettings.json index e631870d..bcde5ec2 100644 --- a/Wonky.Client/wwwroot/appsettings.json +++ b/Wonky.Client/wwwroot/appsettings.json @@ -1,7 +1,7 @@ { "appInfo": { "name": "Wonky Online", - "version": "303.0", + "version": "306.0", "rc": false, "sandBox": true, "image": "grumpy-coder.png", diff --git a/Wonky.Entity/Views/WorkplaceProductVariantDoc.cs b/Wonky.Entity/Views/WorkplaceProductVariantDoc.cs index 498632a2..d59cf716 100644 --- a/Wonky.Entity/Views/WorkplaceProductVariantDoc.cs +++ b/Wonky.Entity/Views/WorkplaceProductVariantDoc.cs @@ -3,8 +3,8 @@ namespace Wonky.Entity.Views; public class WorkplaceProductVariantDoc { public string ApprovedBy { get; set; } = ""; - public string DocumentDescription { get; set; } = ""; public string DocumentDate { get; set; } = ""; + public string DocumentDescription { get; set; } = ""; public string DocumentId { get; set; } = ""; public string DocumentLink { get; set; } = ""; public string DocumentTypeEnum { get; set; } = "";
Konto @company.Account Org Nr.@(string.IsNullOrWhiteSpace(@company.VatNumber) ? "mangler" : @company.VatNumber) @(string.IsNullOrWhiteSpace(company.VatNumber) ? "mangler" : company.VatNumber)
Telefon