diff --git a/Wonky.Client/Components/AppVersion.razor b/Wonky.Client/Components/AppVersion.razor index 4ef36c6c..eca9c56d 100644 --- a/Wonky.Client/Components/AppVersion.razor +++ b/Wonky.Client/Components/AppVersion.razor @@ -17,7 +17,7 @@ @Name @Version@if(IsBeta){-beta} @code { - private const string Version = "0.2.24"; + private const string Version = "0.2.25"; private const string Name = "wwo"; private const bool IsBeta = true; } diff --git a/Wonky.Client/Components/ItemTable.razor b/Wonky.Client/Components/ItemTable.razor index 345f758b..60f7569a 100644 --- a/Wonky.Client/Components/ItemTable.razor +++ b/Wonky.Client/Components/ItemTable.razor @@ -20,10 +20,10 @@ - - - - + + + + @@ -38,19 +38,15 @@ @salesItem.Sku } diff --git a/Wonky.Client/Components/ItemTable.razor.cs b/Wonky.Client/Components/ItemTable.razor.cs index 77174e3b..202e8ef6 100644 --- a/Wonky.Client/Components/ItemTable.razor.cs +++ b/Wonky.Client/Components/ItemTable.razor.cs @@ -23,7 +23,6 @@ namespace Wonky.Client.Components; public partial class ItemTable { [Parameter] public List SalesItems { get; set; } = new(); - [Parameter] public string PoDraftAccount { get; set; } = ""; [Inject] private IToastService ToastService { get; set; } private void AddToDraft() { diff --git a/Wonky.Client/Components/RegInfoCompany.razor.cs b/Wonky.Client/Components/RegInfoCompany.razor.cs index 3e2b3dd1..b4c19574 100644 --- a/Wonky.Client/Components/RegInfoCompany.razor.cs +++ b/Wonky.Client/Components/RegInfoCompany.razor.cs @@ -22,7 +22,7 @@ namespace Wonky.Client.Components; public partial class RegInfoCompany { - [Inject] public VatOwnerLookupService VatOwnerLookupService { get; set; } = null!; + [Inject] public VatInfoLookupService VatInfoLookupService { get; set; } = null!; [Parameter] public string VatNumber { get; set; } = ""; private VirkRegInfo VirkRegInfo { get; set; } = new(); private bool _hideMe = true; @@ -34,7 +34,7 @@ public partial class RegInfoCompany _virkParams.VatNumber = VatNumber; if (string.IsNullOrWhiteSpace(VirkRegInfo.VatNumber)) { - var result = await VatOwnerLookupService.QueryVirkRegistry(_virkParams); + var result = await VatInfoLookupService.QueryVirkRegistry(_virkParams); if (result.Any()) { _currentState = VirkRegInfo.States[^1].State; diff --git a/Wonky.Client/Models/PurchaseOrder.cs b/Wonky.Client/Models/ActivityHead.cs similarity index 97% rename from Wonky.Client/Models/PurchaseOrder.cs rename to Wonky.Client/Models/ActivityHead.cs index e72ef170..f5bca016 100644 --- a/Wonky.Client/Models/PurchaseOrder.cs +++ b/Wonky.Client/Models/ActivityHead.cs @@ -19,7 +19,7 @@ using Wonky.Entity.DTO; namespace Wonky.Client.Models { - public class PurchaseOrder + public class ActivityHead { public string ActivityId { get; set; } = ""; public string CrmCompanyKey { get; set; } = ""; @@ -50,6 +50,6 @@ namespace Wonky.Client.Models [MaxLength(20, ErrorMessage = "Du kan højst bruge 20 tegn")] public string DlvZipCode { get; set; } = ""; [MaxLength(30, ErrorMessage = "Du kan højst bruge 30 tegn")] public string DlvCity { get; set; } = ""; // Lines - public List Lines { get; set; } = new(); + public List Lines { get; set; } = new(); } } diff --git a/Wonky.Client/Models/PurchaseOrderLine.cs b/Wonky.Client/Models/ActivityLine.cs similarity index 86% rename from Wonky.Client/Models/PurchaseOrderLine.cs rename to Wonky.Client/Models/ActivityLine.cs index b14871a5..6cafa7d9 100644 --- a/Wonky.Client/Models/PurchaseOrderLine.cs +++ b/Wonky.Client/Models/ActivityLine.cs @@ -14,15 +14,13 @@ // namespace Wonky.Client.Models; -public class PurchaseOrderLine +public class ActivityLine { - public int ActivityLineId { get; set; } - public int ActivityId { get; set; } public string Sku { get; set; } = ""; public string Text { get; set; } = ""; public int Qty { get; set; } public decimal Price { get; set; } public decimal Discount { get; set; } public decimal LineAmount { get; set; } - public int LineNumber { get; set; } + public int LineNumber { get; set; } } \ No newline at end of file diff --git a/Wonky.Client/Pages/CompanyCreate.razor b/Wonky.Client/Pages/CompanyCreate.razor index 040605ca..3a8c7e21 100644 --- a/Wonky.Client/Pages/CompanyCreate.razor +++ b/Wonky.Client/Pages/CompanyCreate.razor @@ -55,7 +55,7 @@ }
- +
NavnForkVarenrStk / PrisNavnForkVarenrStk / Pris
-
    - @foreach (var rate in salesItem.Rates) - { -
  • -
    @rate.Quantity
    -
    @rate.Rate
    - @if (PoDraftAccount != "") +
      + @foreach (var rate in salesItem.Rates) { - +
    • +
      @rate.Quantity
      +
      @rate.Rate
      +
    • } - - } -
    +
diff --git a/Wonky.Client/Pages/CompanyCreate.razor.cs b/Wonky.Client/Pages/CompanyCreate.razor.cs index 2f8f8a1c..3cf67bd7 100644 --- a/Wonky.Client/Pages/CompanyCreate.razor.cs +++ b/Wonky.Client/Pages/CompanyCreate.razor.cs @@ -35,24 +35,24 @@ namespace Wonky.Client.Pages { public partial class CompanyCreate : IDisposable { - private List VInfos { get; set; } = new(); - [Inject] public ICompanyHttpRepository CompanyRepo { get; set; } - [Inject] public HttpInterceptorService Interceptor { get; set; } [Inject] public IToastService ToastService { get; set; } [Inject] public ILogger Logger { get; set; } - [Inject] public VatOwnerLookupService VatOwnerLookupService { get; set; } [Inject] public ILocalStorageService StorageService { get; set; } [Inject] public NavigationManager Navigation { get; set; } + [Inject] public ICompanyHttpRepository CompanyRepo { get; set; } + [Inject] public HttpInterceptorService Interceptor { get; set; } + [Inject] public VatInfoLookupService VatInfoLookupService { get; set; } + private List VInfos { get; set; } = new(); private CompanyDto _companyDto = new(); private VirkRegInfo _virkRegInfo = new(); - private EditContext _editContext; + private EditContext _createCompany; private bool _formInvalid = true; private string RegState { get; set; } = ""; protected override async Task OnInitializedAsync() { - _editContext = new EditContext(_companyDto); - _editContext.OnFieldChanged += HandleFieldChanged; + _createCompany = new EditContext(_companyDto); + _createCompany.OnFieldChanged += HandleFieldChanged; var ux = await StorageService.GetItemAsync("_ux"); _companyDto.SalesRepId = ux.Id; @@ -63,7 +63,7 @@ namespace Wonky.Client.Pages private async Task GetInfoFromAddress(VatAddress address) { - VInfos = await VatOwnerLookupService.QueryVirkRegistry( + VInfos = await VatInfoLookupService.QueryVirkRegistry( new VirkParams { StreetName = address.StreetName, @@ -77,7 +77,7 @@ namespace Wonky.Client.Pages } private async Task GetInfoFromVat(string vatNumber) { - VInfos = await VatOwnerLookupService + VInfos = await VatInfoLookupService .QueryVirkRegistry(new VirkParams {VatNumber = vatNumber}); if (!VInfos.Any()) { @@ -113,24 +113,24 @@ namespace Wonky.Client.Pages } else { - _formInvalid = !_editContext.Validate(); + _formInvalid = !_createCompany.Validate(); } StateHasChanged(); } private void ValidationChanged(object sender, ValidationStateChangedEventArgs e) { _formInvalid = true; - _editContext.OnFieldChanged -= HandleFieldChanged; - _editContext = new EditContext(_companyDto); - _editContext.OnFieldChanged += HandleFieldChanged; - _editContext.OnValidationStateChanged -= ValidationChanged; + _createCompany.OnFieldChanged -= HandleFieldChanged; + _createCompany = new EditContext(_companyDto); + _createCompany.OnFieldChanged += HandleFieldChanged; + _createCompany.OnValidationStateChanged -= ValidationChanged; } public void Dispose() { Interceptor.DisposeEvent(); - _editContext.OnFieldChanged -= HandleFieldChanged; - _editContext.OnValidationStateChanged -= ValidationChanged; + _createCompany.OnFieldChanged -= HandleFieldChanged; + _createCompany.OnValidationStateChanged -= ValidationChanged; } } } diff --git a/Wonky.Client/Pages/CompanyList.razor.cs b/Wonky.Client/Pages/CompanyList.razor.cs index 0f91fbaa..60759e02 100644 --- a/Wonky.Client/Pages/CompanyList.razor.cs +++ b/Wonky.Client/Pages/CompanyList.razor.cs @@ -28,14 +28,14 @@ namespace Wonky.Client.Pages { public partial class CompanyList : IDisposable { + [Inject] public ILocalStorageService LocalStorage { get; set; } + [Inject] private UserPreferenceService UserPrefService { get; set; } + [Inject] public ICompanyHttpRepository CompanyRepo { get; set; } + [Inject] public HttpInterceptorService Interceptor { get; set; } public List? Companies { get; set; } = new(); public MetaData? MetaData { get; set; } = new(); private CompanyPagingParams _paging = new(); private Preferences _preferences { get; set; } = new(); - [Inject] private UserPreferenceService UserPrefService { get; set; } - [Inject] public ICompanyHttpRepository CompanyRepo { get; set; } - [Inject] public HttpInterceptorService Interceptor { get; set; } - [Inject] public ILocalStorageService LocalStorage { get; set; } protected override async Task OnInitializedAsync() { diff --git a/Wonky.Client/Pages/CompanyUpdate.razor b/Wonky.Client/Pages/CompanyUpdate.razor index 811a4390..d153448d 100644 --- a/Wonky.Client/Pages/CompanyUpdate.razor +++ b/Wonky.Client/Pages/CompanyUpdate.razor @@ -55,7 +55,7 @@ }
- +
@@ -98,13 +98,13 @@
- +
- +
@@ -134,7 +134,7 @@
- +
diff --git a/Wonky.Client/Pages/CompanyUpdate.razor.cs b/Wonky.Client/Pages/CompanyUpdate.razor.cs index 43f4c0fb..64182ea6 100644 --- a/Wonky.Client/Pages/CompanyUpdate.razor.cs +++ b/Wonky.Client/Pages/CompanyUpdate.razor.cs @@ -31,16 +31,16 @@ namespace Wonky.Client.Pages; public partial class CompanyUpdate : IDisposable { - [Inject] public ICompanyHttpRepository CompanyRepo { get; set; } - [Inject] public HttpInterceptorService Interceptor { get; set; } [Inject] public IToastService ToastService { get; set; } [Inject] public ILogger Logger { get; set; } [Inject] public NavigationManager Navigation { get; set; } - [Inject] public VatOwnerLookupService VatOwnerLookupService { get; set; } + [Inject] public ICompanyHttpRepository CompanyRepo { get; set; } + [Inject] public HttpInterceptorService Interceptor { get; set; } + [Inject] public VatInfoLookupService VatInfoLookupService { get; set; } [Parameter] public string Account { get; set; } = ""; [Parameter] public string CompanyId { get; set; } = ""; private CompanyDto _company { get; set; } - private EditContext _editContext { get; set; } + private EditContext _updateCompany { get; set; } private List VInfos { get; set; } = new(); private VirkRegInfo _virkRegInfo { get; set; } = new(); private DateTime LastVisit { get; set; } @@ -55,7 +55,7 @@ public partial class CompanyUpdate : IDisposable LastVisit = DateTime.Parse(_company.LastVisit); NextVisit = DateTime.Parse(_company.NextVisit); - _editContext = new EditContext(_company); + _updateCompany = new EditContext(_company); if(_company.HasFolded == 1) { @@ -90,7 +90,7 @@ public partial class CompanyUpdate : IDisposable ToastService.ShowError($"CVR er ugyldigt eller mangler"); return; } - VInfos = await VatOwnerLookupService + VInfos = await VatInfoLookupService .QueryVirkRegistry( new VirkParams { @@ -105,7 +105,7 @@ public partial class CompanyUpdate : IDisposable private async Task GetInfoFromAddress(VatAddress address) { - VInfos = await VatOwnerLookupService.QueryVirkRegistry( + VInfos = await VatInfoLookupService.QueryVirkRegistry( new VirkParams { StreetName = address.StreetName, diff --git a/Wonky.Client/Pages/CompanyView.razor.cs b/Wonky.Client/Pages/CompanyView.razor.cs index ab53601c..b6f2580e 100644 --- a/Wonky.Client/Pages/CompanyView.razor.cs +++ b/Wonky.Client/Pages/CompanyView.razor.cs @@ -28,12 +28,12 @@ namespace Wonky.Client.Pages; public partial class CompanyView : IDisposable { - [Inject] public ICompanyHttpRepository CompanyRepo { get; set; } - [Inject] public HttpInterceptorService Interceptor { get; set; } - [Inject] public VatOwnerLookupService VatOwnerLookup { get; set; } [Inject] public ILogger Logger { get; set; } [Inject] public IToastService ToastService { get; set; } [Inject] public NavigationManager NavManager { get; set; } + [Inject] public ICompanyHttpRepository CompanyRepo { get; set; } + [Inject] public HttpInterceptorService Interceptor { get; set; } + [Inject] public VatInfoLookupService VatInfoLookup { get; set; } [Parameter] public string CompanyId { get; set; } = ""; private CompanyDto _company { get; set; } = new (); private string _vatState { get; set; } = "the-dead"; diff --git a/Wonky.Client/Pages/CrmActivityCreate.razor b/Wonky.Client/Pages/CrmActivityCreate.razor index c93aaaeb..6d0e7e2d 100644 --- a/Wonky.Client/Pages/CrmActivityCreate.razor +++ b/Wonky.Client/Pages/CrmActivityCreate.razor @@ -21,326 +21,325 @@ @using Wonky.Client.Components @if (_company != null) { -

@_purchaseOrder.Name

- - -
- @* Section for activity header *@ -
-

- -

-
-
-
- -
- -
-
- -
-
- - -
-
-
- -
- - -
+

@_poDraft.Name

+ + +
- -
- - -
-
-
- -
- -
-
-
- -
- - -
-
-
- -
- - -
-
-
- -
- - -
-
-
- -
- -
-
-
-
-
- @* Catalog selection for draft *@ -
-

- -

-
-
- @* ---------------------------------------------- *@ - @* collapse product selection and draft line *@ - @* ---------------------------------------------- *@ - @* display product filter options *@ -
-
- -
-
- -
-
- -
-
- -
-
- @* ---------------------------------------------- *@ - @* display catalog *@ - @if (SalesItems.Any()) - { -
- - - - - - - - - @foreach (var item in SalesItems) - { - - - - - - } - -
NavnVarenrStk / Pris
@item.Name@item.Sku -
    - @foreach (var rate in item.Rates) - { -
  • -
    @rate.Quantity
    -
    @rate.Rate
    - -
  • - } -
-
- } - else - { - - } - @* ---------------------------------------------- *@ - @* Display draft line *@ - @if (_selectedItem != null && ShowItem) - { -
-
Kladdelinje
-
-
-
- Varenavn -
-
- Varenr -
-
- Antal -
-
- Pris -
-
- Rabat -
-
- -
+ +
+

+ +

+
+
+
+ +
+
-
-
- @_selectedItem.Name -
-
- @_selectedItem.Sku -
-
- -
-
- -
-
- -
-
- -
+
+ +
+
+ + +
+
+
+ +
+ + +
+ + +
+ + +
+
+
+ +
+ +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+
- } +
-
-
- @* Draft lines *@ -
-

- -

-
-
- - - - - - - - - - - - - @* ---------------------------------------------- *@ - @* Display draft content *@ - @if (DraftStateProvider != null && DraftStateProvider.Draft.Items.Count > 0) - { - @foreach (var cItem in DraftStateProvider.Draft.Items) + + +
+

+ +

+
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+ @if (SalesItems.Any()) { -
- - - - - - - +
NavnVarenrAntalEnhedsprisLinjesum 
@cItem.Item.Name@cItem.Item.Sku@cItem.Quantity@cItem.Price@cItem.Total - -
+ + + + + + + + + @foreach (var item in SalesItems) + { + + + + + + } + +
NavnVarenrStk / Pris
@item.Name@item.Sku +
    + @foreach (var rate in item.Rates) + { +
  • +
    @rate.Quantity
    +
    @rate.Rate
    + +
  • + } +
+
} - - - - - Total - @DraftStateProvider.Draft.Total - - - } - - -
-
- + else + { + + } + @if (_selectedItem != null && ShowItem) + { +
+
Kladdelinje
+
+
+
+ Varenavn +
+
+ Varenr +
+
+ Antal +
+
+ Pris +
+
+ Rabat +
+
+ +
+
+
+
+ @_selectedItem.Name +
+
+ @_selectedItem.Sku +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+
+ } +
+
+
+ + +
+

+ +

+
+
+ + + + + + + + + + + + + @if (DraftStateProvider != null && DraftStateProvider.Draft.Items.Count > 0) + { + @foreach (var cItem in DraftStateProvider.Draft.Items) + { + + + + + + + + + } + + + + + + + + + } + +
NavnVarenrAntalEnhedsprisLinjesum 
@cItem.Item.Name@cItem.Item.Sku@cItem.Quantity@cItem.Price@cItem.Total + +
Total@DraftStateProvider.Draft.Total
+
+
+ +
+
+
+
+
+ + +
+

+ +

+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
-
- @* Section for delivery address *@ -
-

- -

-
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
+ +
+
+ Tilbage +
+
+ +
+
+ +
+
+
-
-
- @* ---------------------------------------------- *@ - @* Display action buttons *@ -
-
- Tilbage - - - -
-
} \ No newline at end of file diff --git a/Wonky.Client/Pages/CrmActivityCreate.razor.cs b/Wonky.Client/Pages/CrmActivityCreate.razor.cs index 1c5aa776..4662c143 100644 --- a/Wonky.Client/Pages/CrmActivityCreate.razor.cs +++ b/Wonky.Client/Pages/CrmActivityCreate.razor.cs @@ -30,33 +30,32 @@ namespace Wonky.Client.Pages; public partial class CrmActivityCreate : IDisposable { + [Inject] public IToastService ToastService { get; set; } + [Inject] public NavigationManager NavigationManager { get; set; } + [Inject] public ILocalStorageService StorageService { get; set; } [Inject] private ISalesItemHttpRepository ItemRepo { get; set; } [Inject] private ICompanyHttpRepository CompanyRepo { get; set; } [Inject] private HttpInterceptorService Interceptor { get; set; } [Inject] private UserPreferenceService UserPrefs { get; set; } - [Inject] public IToastService ToastService { get; set; } - [Inject] public NavigationManager NavigationManager { get; set; } - [Inject] public ILocalStorageService StorageService { get; set; } - [Inject] public ISalesItemHttpRepository SalesItemRepo { get; set; } - [Parameter] public string CompanyId { get; set; } [CascadingParameter] DraftStateProvider DraftStateProvider { get; set; } + [Parameter] public string CompanyId { get; set; } private SalesItemDto _selectedItem { get; set; } = new(); private List SalesItems { get; set; } = new(); - private MetaData _meta { get; set; } = new(); + // private MetaData _meta { get; set; } = new(); private Preferences _prefs { get; set; } = new(); - private PurchaseOrder _purchaseOrder = new (); + private ActivityHead _poDraft { get; set; } = new(); private CompanyDto _company = new(); - private EditContext _editContext { get; set; } - private MetaData? MetaData { get; set; } = new(); private CatalogPagingParams _paging = new(); + private EditContext _createActivity { get; set; } private bool _poFormInvalid { get; set; } = true; private bool ShowItem { get; set; } - private bool ShowSearchView { get; set; } private string Quantity = "1"; private string Price = "0"; private string Discount = "0"; + private bool InvalidActivityType { get; set; } = true; private bool InvalidActivity { get; set; } = true; private bool InvalidCanvas { get; set; } = true; + private bool InvalidDate { get; set; } = true; protected override async Task OnInitializedAsync() { @@ -67,32 +66,81 @@ public partial class CrmActivityCreate : IDisposable await GetSalesItems(); var ux = await StorageService.GetItemAsync("_ux"); _company = await CompanyRepo.GetCompanyById(CompanyId); - _editContext = new EditContext(_purchaseOrder); - _editContext.OnFieldChanged += HandleFieldChanged; + + _createActivity = new EditContext(_poDraft); + _createActivity.OnFieldChanged += HandleFieldChanged; // set up indexdb identification - _purchaseOrder.ActivityId = CompanyId; - _purchaseOrder.CrmCompanyKey = CompanyId; - _purchaseOrder.ActivityDate = DateTime.Now; + _poDraft.ActivityId = CompanyId; + _poDraft.CrmCompanyKey = CompanyId; + _poDraft.ActivityDate = string.IsNullOrWhiteSpace(_prefs.WorkDate) + ? DateTime.Now + : DateTime.Parse(_prefs.WorkDate); + // permanent identifications - _purchaseOrder.SalesRep = ux.Adviser; - _purchaseOrder.Account = _company.Account; - _purchaseOrder.VatNumber = _company.VatNumber; - _purchaseOrder.EMail = _company.Email; - _purchaseOrder.Phone = _company.Phone; - _purchaseOrder.OurRef = ux.FullName.Split(" ")[0]; + _poDraft.SalesRep = ux.Adviser; + _poDraft.Account = _company.Account; + _poDraft.VatNumber = _company.VatNumber; + _poDraft.EMail = _company.Email; + _poDraft.Phone = _company.Phone; + _poDraft.OurRef = ux.FullName.Split(" ")[0]; - _purchaseOrder.Name = _company.Name; - _purchaseOrder.Address = _company.Address1; - _purchaseOrder.Address2 = _company.Address2; - _purchaseOrder.ZipCode = _company.ZipCode; - _purchaseOrder.City = _company.City; + _poDraft.Name = _company.Name; + _poDraft.Address = _company.Address1; + _poDraft.Address2 = _company.Address2; + _poDraft.ZipCode = _company.ZipCode; + _poDraft.City = _company.City; - _purchaseOrder.DlvName = _company.Name; - _purchaseOrder.DlvAddress1 = _company.Address1; - _purchaseOrder.DlvAddress2 = _company.Address2; - _purchaseOrder.DlvZipCode = _company.ZipCode; - _purchaseOrder.DlvCity = _company.City; + _poDraft.DlvName = ""; + _poDraft.DlvAddress1 = ""; + _poDraft.DlvAddress2 = ""; + _poDraft.DlvZipCode = ""; + _poDraft.DlvCity = ""; + } + private async Task CreateOffer() + { + await CreateActivity(); + // post to create offer endpoint + } + private async Task CreateOrder() + { + await CreateActivity(); + // post to create order endpoint + } + private async Task CreateActivity() + { + // write work date to preference + await UserPrefs.SetWorkDate(_poDraft.ActivityDate); + + var ln = 0; + // post to create activity endpoint + foreach (var line in DraftStateProvider.Draft.Items.Select(item => new ActivityLine + { + Price = item.Price, + Discount = item.Discount, + Qty = item.Quantity, + Sku = item.Item.Sku, + Text = item.Item.Name, + LineAmount = item.Total, + LineNumber = ++ln + })) + { + _poDraft.Lines.Add(line); + } + await StorageService.SetItemAsync(CompanyId, _poDraft); + //ToastService.ShowSuccess($"Aktivitet oprettet."); + } + + private void CheckActivity() + { + InvalidActivityType = string.IsNullOrWhiteSpace(_poDraft.ActivityType); + Console.WriteLine($"invalidType => {InvalidActivityType}"); + } + + private void CheckDate() + { + InvalidDate = _poDraft.CheckDate; + Console.WriteLine($"invalidDate => {InvalidDate}"); } private async Task DeleteDraft() @@ -157,68 +205,37 @@ public partial class CrmActivityCreate : IDisposable _paging.PageSize = 5; var response = await ItemRepo.GetSalesItemsPaged(_paging); SalesItems = response.Items!; - _meta = response.MetaData; - } - private async Task CreateActivity() - { - foreach (var item in DraftStateProvider.Draft.Items) - { - var ln = 1; - var line = new CrmSalesLines - { - Price = item.Price, - Discount = 0, - Qty = item.Quantity, - Sku = item.Item.Sku, - Text = item.Item.Name, - LineAmount = item.Total, - LineNumber = ++ln - }; - _purchaseOrder.Lines.Add(line); - } - await StorageService.SetItemAsync(CompanyId, _purchaseOrder); - //ToastService.ShowSuccess($"Aktivitet oprettet."); - } - - private async Task CreateActivityOrder() - { - await CreateActivity(); - // send to api -> send to bc - } - private async Task CreateActivityOffer() - { - await CreateActivity(); - // send to api -> as email + // _meta = response.MetaData; } private void HandleFieldChanged(object sender, FieldChangedEventArgs e) { - _poFormInvalid = !_editContext.Validate(); - InvalidActivity = string.IsNullOrWhiteSpace(_purchaseOrder.ActivityType) || _poFormInvalid || DraftStateProvider.Draft.Items.Count == 0 || !_purchaseOrder.CheckDate; - InvalidCanvas = string.IsNullOrWhiteSpace(_purchaseOrder.ActivityType) || _poFormInvalid || !_purchaseOrder.CheckDate; + _poFormInvalid = !_createActivity.Validate(); + InvalidCanvas = InvalidActivityType || InvalidDate; + InvalidActivity = InvalidActivityType || _poFormInvalid || DraftStateProvider.Draft.Items.Count == 0 || InvalidDate; StateHasChanged(); } private void ValidationChanged(object sender, ValidationStateChangedEventArgs e) { - if (!string.IsNullOrEmpty(_purchaseOrder.VatNumber)) + if (!string.IsNullOrEmpty(_poDraft.VatNumber)) { - if(!VatUtils.ValidateFormat(_company.CountryCode, _purchaseOrder.VatNumber)) + if(!VatUtils.ValidateFormat(_company.CountryCode, _poDraft.VatNumber)) ToastService.ShowWarning("CVR / ORG nummer er ikke et gyldigt registreringsnummer"); } - if (string.IsNullOrEmpty(_purchaseOrder.ActivityType)) + if (string.IsNullOrEmpty(_poDraft.ActivityType)) ToastService.ShowWarning("Aktivitet type kan ikke være tom"); _poFormInvalid = false; - _editContext.OnFieldChanged -= HandleFieldChanged; - _editContext = new EditContext(_purchaseOrder); - _editContext.OnFieldChanged += HandleFieldChanged; - _editContext.OnValidationStateChanged -= ValidationChanged; + _createActivity.OnFieldChanged -= HandleFieldChanged; + _createActivity = new EditContext(_poDraft); + _createActivity.OnFieldChanged += HandleFieldChanged; + _createActivity.OnValidationStateChanged -= ValidationChanged; } public void Dispose() { Interceptor.DisposeEvent(); - _editContext.OnFieldChanged -= HandleFieldChanged; - _editContext.OnValidationStateChanged -= ValidationChanged; + _createActivity.OnFieldChanged -= HandleFieldChanged; + _createActivity.OnValidationStateChanged -= ValidationChanged; } } \ No newline at end of file diff --git a/Wonky.Client/Pages/Login.razor.cs b/Wonky.Client/Pages/Login.razor.cs index 2158a8c8..acc9be5d 100644 --- a/Wonky.Client/Pages/Login.razor.cs +++ b/Wonky.Client/Pages/Login.razor.cs @@ -22,14 +22,10 @@ namespace Wonky.Client.Pages; public partial class Login { - private UserAuthenticationDto _userAuthenticationDto = new (); - - [Inject] - public IAuthenticationService AuthenticationService { get; set; } - [Inject] public NavigationManager NavigationManager { get; set; } - + [Inject] public IAuthenticationService AuthenticationService { get; set; } [Parameter] public string ReturnUrl { get; set; } = ""; + private UserAuthenticationDto _userAuthenticationDto = new (); private bool ShowAuthError { get; set; } private string? Error { get; set; } private bool execLogin = false; diff --git a/Wonky.Client/Pages/Page404.razor.cs b/Wonky.Client/Pages/Page404.razor.cs index 343c6357..396a6a03 100644 --- a/Wonky.Client/Pages/Page404.razor.cs +++ b/Wonky.Client/Pages/Page404.razor.cs @@ -19,8 +19,7 @@ namespace Wonky.Client.Pages; public partial class Page404 { - [Inject] - public NavigationManager NavigationManager { get; set; } + [Inject] public NavigationManager NavigationManager { get; set; } public void NavigateToHome() { diff --git a/Wonky.Client/Pages/SalesItemCatalog.razor b/Wonky.Client/Pages/SalesItemCatalog.razor index 0a3b11ca..e5bf5c4f 100644 --- a/Wonky.Client/Pages/SalesItemCatalog.razor +++ b/Wonky.Client/Pages/SalesItemCatalog.razor @@ -45,6 +45,6 @@
- +
\ No newline at end of file diff --git a/Wonky.Client/Pages/SalesItemCatalog.razor.cs b/Wonky.Client/Pages/SalesItemCatalog.razor.cs index 50b60019..16aaf1a3 100644 --- a/Wonky.Client/Pages/SalesItemCatalog.razor.cs +++ b/Wonky.Client/Pages/SalesItemCatalog.razor.cs @@ -29,14 +29,14 @@ namespace Wonky.Client.Pages; public partial class SalesItemCatalog : IDisposable { + [Inject] public ILocalStorageService LocalStorage { get; set; } + [Inject] public ISalesItemHttpRepository SalesItemRepo { get; set; } + [Inject] public HttpInterceptorService Interceptor { get; set; } [Inject] private UserPreferenceService UserPreferenceService { get; set; } - private List SalesItemList { get; set; } = new(); + private List SalesItems { get; set; } = new(); private MetaData? MetaData { get; set; } = new(); private CatalogPagingParams _paging = new(); private Preferences _preferences = new(); - [Inject] public ISalesItemHttpRepository SalesItemRepo { get; set; } - [Inject] public HttpInterceptorService Interceptor { get; set; } - [Inject] public ILocalStorageService LocalStorage { get; set; } protected override async Task OnInitializedAsync() { @@ -52,7 +52,7 @@ public partial class SalesItemCatalog : IDisposable private async Task SelectedPage(int page) { - SalesItemList = new List(); + SalesItems = new List(); _paging.PageNumber = page; await GetSalesItems(); } @@ -60,13 +60,13 @@ public partial class SalesItemCatalog : IDisposable private async Task GetSalesItems() { var pagingResponse = await SalesItemRepo.GetSalesItemsPaged(_paging); - SalesItemList = pagingResponse.Items!; + SalesItems = pagingResponse.Items!; MetaData = pagingResponse.MetaData; } private async Task SetPageSize(string pageSize) { - SalesItemList = new List(); + SalesItems = new List(); _paging.PageSize = Convert.ToInt32(pageSize); _paging.PageNumber = 1; await GetSalesItems(); @@ -74,21 +74,21 @@ public partial class SalesItemCatalog : IDisposable private async Task SetItemGroup(string groupFilter) { - SalesItemList = new List(); + SalesItems = new List(); _paging.PageNumber = 1; _paging.SelectGroup = groupFilter; await GetSalesItems(); } private async Task SetSearchCol(string columnName) { - SalesItemList = new List(); + SalesItems = new List(); _paging.PageNumber = 1; _paging.SearchColumn = columnName; await GetSalesItems(); } private async Task SetSearchPhrase(string searchTerm) { - SalesItemList = new List(); + SalesItems = new List(); _paging.PageNumber = 1; _paging.SearchTerm = searchTerm; await GetSalesItems(); @@ -96,7 +96,7 @@ public partial class SalesItemCatalog : IDisposable private async Task SetSortCol(string orderBy) { - SalesItemList = new List(); + SalesItems = new List(); _paging.OrderBy = orderBy; await GetSalesItems(); } diff --git a/Wonky.Client/Program.cs b/Wonky.Client/Program.cs index b530ded5..09fd3ae1 100644 --- a/Wonky.Client/Program.cs +++ b/Wonky.Client/Program.cs @@ -21,9 +21,9 @@ using Toolbelt.Blazor.Extensions.DependencyInjection; using Blazored.LocalStorage; using Blazored.Toast; using Wonky.Client; -using Wonky.Client.AuthProviders; using Wonky.Client.HttpInterceptors; using Wonky.Client.HttpRepository; +using Wonky.Client.Providers; using Wonky.Client.Services; using Wonky.Entity.Configuration; @@ -57,7 +57,7 @@ builder.Services.AddAuthorizationCore(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); -builder.Services.AddScoped(); +builder.Services.AddScoped(); builder.Services.AddScoped(); diff --git a/Wonky.Client/AuthProviders/AuthStateProvider.cs b/Wonky.Client/Providers/AuthStateProvider.cs similarity index 97% rename from Wonky.Client/AuthProviders/AuthStateProvider.cs rename to Wonky.Client/Providers/AuthStateProvider.cs index 778faa8e..8a8cfbae 100644 --- a/Wonky.Client/AuthProviders/AuthStateProvider.cs +++ b/Wonky.Client/Providers/AuthStateProvider.cs @@ -13,17 +13,13 @@ // along with this program. If not, see [https://www.gnu.org/licenses/agpl-3.0.en.html] // -using System.Collections.Generic; -using System.Linq; -using System.Net.Http; using System.Net.Http.Headers; using System.Security.Claims; -using System.Threading.Tasks; using Blazored.LocalStorage; using Microsoft.AspNetCore.Components.Authorization; using Wonky.Entity.DTO; -namespace Wonky.Client.AuthProviders +namespace Wonky.Client.Providers { public class AuthStateProvider : AuthenticationStateProvider { diff --git a/Wonky.Client/Services/AuthenticationService.cs b/Wonky.Client/Services/AuthenticationService.cs index c3106813..2532f1da 100644 --- a/Wonky.Client/Services/AuthenticationService.cs +++ b/Wonky.Client/Services/AuthenticationService.cs @@ -17,9 +17,9 @@ using System.Net.Http.Headers; using System.Net.Http.Json; using System.Text.Json; using Blazored.LocalStorage; -using Wonky.Client.AuthProviders; using Microsoft.AspNetCore.Components.Authorization; using Microsoft.Extensions.Options; +using Wonky.Client.Providers; using Wonky.Entity.Configuration; using Wonky.Entity.DTO; diff --git a/Wonky.Client/Services/UserPreferenceService.cs b/Wonky.Client/Services/UserPreferenceService.cs index bbb2c284..ff40ff74 100644 --- a/Wonky.Client/Services/UserPreferenceService.cs +++ b/Wonky.Client/Services/UserPreferenceService.cs @@ -9,6 +9,7 @@ public record Preferences public string? ItemSearch { get; set; } = "name"; public string? ItemSort { get; set; } = "name"; public string PageSize { get; set; } = "10"; + public string WorkDate { get; set; } = ""; } public class UserPreferenceService { @@ -18,6 +19,18 @@ public class UserPreferenceService { _localStorageService = localStorageService; } + + public async Task SetWorkDate(DateTime workDate) + { + var preferences = await GetPreferences(); + var newPreferences = preferences + with + { + WorkDate = $"{workDate:yyyy-MM-dd}" + }; + await _localStorageService.SetItemAsync("preferences", newPreferences); + OnChange?.Invoke(newPreferences); + } public async Task SetCompanySearch(string companySearch) { var preferences = await GetPreferences(); @@ -66,5 +79,4 @@ public class UserPreferenceService return await _localStorageService.GetItemAsync("preferences") ?? new Preferences(); } - } \ No newline at end of file diff --git a/Wonky.Client/Services/VatOwnerLookupService.cs b/Wonky.Client/Services/VatInfoLookupService.cs similarity index 96% rename from Wonky.Client/Services/VatOwnerLookupService.cs rename to Wonky.Client/Services/VatInfoLookupService.cs index 0a284743..82fe951f 100644 --- a/Wonky.Client/Services/VatOwnerLookupService.cs +++ b/Wonky.Client/Services/VatInfoLookupService.cs @@ -22,14 +22,14 @@ using Wonky.Entity.Requests; namespace Wonky.Client.Services; -public class VatOwnerLookupService +public class VatInfoLookupService { private readonly JsonSerializerOptions _options = new() { PropertyNameCaseInsensitive = true }; private readonly HttpClient _client; private readonly IOptions _apiConfig; private readonly List _noData = new() { new VirkRegInfo { Name = "INGEN DATA" } }; - public VatOwnerLookupService(HttpClient client, IOptions apiConfig) + public VatInfoLookupService(HttpClient client, IOptions apiConfig) { _client = client; _apiConfig = apiConfig; diff --git a/Wonky.Client/Shared/DraftStateProvider.razor.cs b/Wonky.Client/Shared/DraftStateProvider.razor.cs index c96500df..4c186821 100644 --- a/Wonky.Client/Shared/DraftStateProvider.razor.cs +++ b/Wonky.Client/Shared/DraftStateProvider.razor.cs @@ -13,11 +13,9 @@ // along with this program. If not, see [https://www.gnu.org/licenses/agpl-3.0.en.html] // -using System.Threading.Tasks; using Blazored.LocalStorage; using Wonky.Client.Models; using Microsoft.AspNetCore.Components; -using Wonky.Entity.Models; namespace Wonky.Client.Shared; diff --git a/Wonky.Client/Wonky.Client.csproj b/Wonky.Client/Wonky.Client.csproj index 5914eb79..c8dcecbe 100644 --- a/Wonky.Client/Wonky.Client.csproj +++ b/Wonky.Client/Wonky.Client.csproj @@ -33,6 +33,7 @@ + diff --git a/Wonky.Entity/DTO/CompanyDto.cs b/Wonky.Entity/DTO/CompanyDto.cs index 5e684bc9..308f935c 100644 --- a/Wonky.Entity/DTO/CompanyDto.cs +++ b/Wonky.Entity/DTO/CompanyDto.cs @@ -21,7 +21,7 @@ namespace Wonky.Entity.DTO; public class CompanyDto { - [Required(ErrorMessage = "Navn skal udyldes")] [MaxLength(100, ErrorMessage = "Du kan højst bruge 100 tegn")] public string Name { get; set; } + [Required(ErrorMessage = "Navn skal udfyldes")] [MaxLength(100, ErrorMessage = "Du kan højst bruge 100 tegn")] public string Name { get; set; } [Required(ErrorMessage = "Postnummer skal udfyldes")] [MaxLength(20, ErrorMessage = "Du kan højst bruge 20 tegn")] public string ZipCode { get; set; } [Required(ErrorMessage = "Bynavn skal udfyldes")] [MaxLength(30, ErrorMessage = "Du kan højst bruge 30 tegn")] public string City { get; set; } [Required(ErrorMessage = "ORG/VAT/CVR er ikke et gyldigt nummer")] public string VatNumber { get; set; } diff --git a/Wonky.Entity/DTO/CrmDocumentDto.cs b/Wonky.Entity/DTO/CrmActivityHeadDto.cs similarity index 97% rename from Wonky.Entity/DTO/CrmDocumentDto.cs rename to Wonky.Entity/DTO/CrmActivityHeadDto.cs index 74e54724..d663d47d 100644 --- a/Wonky.Entity/DTO/CrmDocumentDto.cs +++ b/Wonky.Entity/DTO/CrmActivityHeadDto.cs @@ -3,7 +3,7 @@ using System.ComponentModel.DataAnnotations; namespace Wonky.Entity.DTO; -public class CrmDocumentDto +public class CrmActivityHeadDto { // Base account info public string CompanyId { get; set; } = ""; diff --git a/Wonky.Entity/DTO/CrmSalesLineDto.cs b/Wonky.Entity/DTO/CrmActivityLineDto.cs similarity index 100% rename from Wonky.Entity/DTO/CrmSalesLineDto.cs rename to Wonky.Entity/DTO/CrmActivityLineDto.cs