wip
This commit is contained in:
parent
b3cd44431e
commit
afe2dd024e
14 changed files with 248 additions and 84 deletions
|
@ -15,12 +15,9 @@
|
||||||
//
|
//
|
||||||
*@
|
*@
|
||||||
|
|
||||||
<select class="form-control" @bind-value="GroupFilter" @bind-value:event="oninput" @onchange="OnGroupFilterChange">
|
<select class="form-control" @bind-value="Selection" @bind-value:event="oninput" @onchange="OnSelectionChanged">
|
||||||
<option value="all" selected>Alle</option>
|
@foreach (var (key, value) in Items)
|
||||||
<option value="1">Lim / Sealer / Rep</option>
|
{
|
||||||
<option value="2">Maling / Primer</option>
|
<option value="@key">@value</option>
|
||||||
<option value="3">Smøremidler</option>
|
}
|
||||||
<option value="4">Polish / Cleaner</option>
|
|
||||||
<option value="5">Tape</option>
|
|
||||||
<option value="6">Diverse</option>
|
|
||||||
</select>
|
</select>
|
|
@ -14,18 +14,40 @@
|
||||||
//
|
//
|
||||||
|
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
|
using Blazored.LocalStorage;
|
||||||
using Microsoft.AspNetCore.Components;
|
using Microsoft.AspNetCore.Components;
|
||||||
|
using Wonky.Client.Services;
|
||||||
|
|
||||||
namespace Wonky.Client.Components;
|
namespace Wonky.Client.Components;
|
||||||
|
|
||||||
public partial class ItemGroupFilter
|
public partial class ItemGroupFilter
|
||||||
{
|
{
|
||||||
[Parameter] public EventCallback<string> OnGroupFilterChanged { get; set; }
|
[Inject] private ILocalStorageService LocalStorage { get; set; }
|
||||||
private string GroupFilter { get; set; } = "all";
|
[Inject] private ProfileService ProfileService { get; set; }
|
||||||
private async Task OnGroupFilterChange(ChangeEventArgs eventArgs)
|
private Dictionary<string, string> Items { get; set; } = new();
|
||||||
|
private Preferences _preferences = new();
|
||||||
|
private string Selection { get; set; } = "all";
|
||||||
|
protected override async Task OnInitializedAsync()
|
||||||
{
|
{
|
||||||
if (GroupFilter == "all")
|
ProfileService.OnChange += ProfileServiceOnOnChange;
|
||||||
GroupFilter = "";
|
_preferences = await ProfileService.GetPreferences();
|
||||||
await OnGroupFilterChanged.InvokeAsync(GroupFilter);
|
|
||||||
|
Items.Add("name", "Varenavn");
|
||||||
|
Items.Add("sku", "Varenr");
|
||||||
|
Selection = (from x in Items where x.Key == _preferences.ItemGroup select x.Value).First();
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task OnColumnChanged(ChangeEventArgs args)
|
||||||
|
{
|
||||||
|
await ProfileService.SetItemSort(args.Value.ToString());
|
||||||
|
}
|
||||||
|
private void ProfileServiceOnOnChange(Preferences newPreferences)
|
||||||
|
{
|
||||||
|
_preferences = newPreferences;
|
||||||
|
StateHasChanged();
|
||||||
|
}
|
||||||
|
public void Dispose()
|
||||||
|
{
|
||||||
|
ProfileService.OnChange -= ProfileServiceOnOnChange;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -15,7 +15,7 @@
|
||||||
//
|
//
|
||||||
*@
|
*@
|
||||||
|
|
||||||
<select id="search-column" class="form-control" @bind-value="@SearchColumn" @bind-value:event="oninput" @onchange="OnSearchColumnChange">
|
<select id="search-column" class="form-control" @bind-value="@Selection" @bind-value:event="oninput" @onchange="OnSelectChanged">
|
||||||
@foreach (var (key, value) in Items)
|
@foreach (var (key, value) in Items)
|
||||||
{
|
{
|
||||||
<option value="@key">@value</option>
|
<option value="@key">@value</option>
|
||||||
|
|
|
@ -15,22 +15,37 @@
|
||||||
|
|
||||||
using Blazored.LocalStorage;
|
using Blazored.LocalStorage;
|
||||||
using Microsoft.AspNetCore.Components;
|
using Microsoft.AspNetCore.Components;
|
||||||
|
using Wonky.Client.Services;
|
||||||
|
|
||||||
namespace Wonky.Client.Components;
|
namespace Wonky.Client.Components;
|
||||||
|
|
||||||
public partial class ItemSearchColumn
|
public partial class ItemSearchColumn
|
||||||
{
|
{
|
||||||
[Parameter] public EventCallback<string> OnColumnChanged { get; set; }
|
[Inject] private ILocalStorageService LocalStorage { get; set; }
|
||||||
private string SearchColumn { get; set; } = "name";
|
[Inject] private ProfileService ProfileService { get; set; }
|
||||||
private Dictionary<string, string> Items { get; set; } = new();
|
private Dictionary<string, string> Items { get; set; } = new();
|
||||||
protected override void OnInitialized()
|
private Preferences _preferences = new();
|
||||||
|
private string Selection { get; set; } = "name";
|
||||||
|
protected override async Task OnInitializedAsync()
|
||||||
{
|
{
|
||||||
|
ProfileService.OnChange += ProfileServiceOnOnChange;
|
||||||
|
_preferences = await ProfileService.GetPreferences();
|
||||||
Items.Add("name", "Varenavn");
|
Items.Add("name", "Varenavn");
|
||||||
Items.Add("sku", "Varenr");
|
Items.Add("sku", "Varenr");
|
||||||
Items.Add("shortName", "Forkortelse");
|
Items.Add("shortName", "Forkortelse");
|
||||||
|
Selection = (from x in Items where x.Key == _preferences.ItemSearch select x.Value).First();
|
||||||
}
|
}
|
||||||
private async Task OnSearchColumnChange(ChangeEventArgs eventArgs)
|
private async Task OnSelectChanged(ChangeEventArgs e)
|
||||||
{
|
{
|
||||||
await OnColumnChanged.InvokeAsync(SearchColumn);
|
await ProfileService.SetItemSort(e.Value.ToString());
|
||||||
|
}
|
||||||
|
private void ProfileServiceOnOnChange(Preferences newPreferences)
|
||||||
|
{
|
||||||
|
_preferences = newPreferences;
|
||||||
|
StateHasChanged();
|
||||||
|
}
|
||||||
|
public void Dispose()
|
||||||
|
{
|
||||||
|
ProfileService.OnChange -= ProfileServiceOnOnChange;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -15,7 +15,7 @@
|
||||||
//
|
//
|
||||||
*@
|
*@
|
||||||
|
|
||||||
<select class="form-control" @bind-value="@SortColumn" @bind-value:event="oninput" @onchange="OnSortColumnChange">
|
<select class="form-control" @bind-value="@Selection" @bind-value:event="oninput" @onchange="OnSelectChanged">
|
||||||
@foreach (var (key, value) in Items)
|
@foreach (var (key, value) in Items)
|
||||||
{
|
{
|
||||||
<option value="@key">@value</option>
|
<option value="@key">@value</option>
|
||||||
|
|
|
@ -15,24 +15,36 @@
|
||||||
|
|
||||||
using Blazored.LocalStorage;
|
using Blazored.LocalStorage;
|
||||||
using Microsoft.AspNetCore.Components;
|
using Microsoft.AspNetCore.Components;
|
||||||
|
using Wonky.Client.Services;
|
||||||
|
|
||||||
namespace Wonky.Client.Components;
|
namespace Wonky.Client.Components;
|
||||||
|
|
||||||
public partial class ItemSortColumn
|
public partial class ItemSortColumn : IDisposable
|
||||||
{
|
{
|
||||||
[Parameter] public EventCallback<string> OnColumnChanged { get; set; }
|
[Inject] private ILocalStorageService LocalStorage { get; set; }
|
||||||
private string SortColumn { get; set; } = "name";
|
[Inject] private ProfileService ProfileService { get; set; }
|
||||||
private Dictionary<string, string> Items { get; set; } = new();
|
private Dictionary<string, string> Items { get; set; } = new();
|
||||||
|
private Preferences _preferences = new();
|
||||||
protected override void OnInitialized()
|
private string Selection { get; set; } = "name";
|
||||||
|
protected override async Task OnInitializedAsync()
|
||||||
{
|
{
|
||||||
|
ProfileService.OnChange += ProfileServiceOnOnChange;
|
||||||
|
_preferences = await ProfileService.GetPreferences();
|
||||||
Items.Add("name", "Varenavn");
|
Items.Add("name", "Varenavn");
|
||||||
Items.Add("sku", "Varenr");
|
Items.Add("sku", "Varenr");
|
||||||
|
Selection = (from x in Items where x.Key == _preferences.ItemSort select x.Value).First();
|
||||||
}
|
}
|
||||||
|
private async Task OnSelectChanged(ChangeEventArgs e)
|
||||||
private async Task OnSortColumnChange(ChangeEventArgs eventArgs)
|
|
||||||
{
|
{
|
||||||
await OnColumnChanged.InvokeAsync(SortColumn);
|
await ProfileService.SetItemSort(e.Value.ToString());
|
||||||
|
}
|
||||||
|
private void ProfileServiceOnOnChange(Preferences newPreferences)
|
||||||
|
{
|
||||||
|
_preferences = newPreferences;
|
||||||
|
StateHasChanged();
|
||||||
|
}
|
||||||
|
public void Dispose()
|
||||||
|
{
|
||||||
|
ProfileService.OnChange -= ProfileServiceOnOnChange;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -15,12 +15,11 @@
|
||||||
//
|
//
|
||||||
*@
|
*@
|
||||||
|
|
||||||
<div class="form-group">
|
<select class="form-control" @bind-value="@Selection" @bind-value:event="oninput" @onchange="OnSelectChanged">
|
||||||
<select class="form-control" @bind-value="@PageSize" @bind-value:event="oninput" @onchange="OnPageSizeChange">
|
@foreach (var (key, value) in Items)
|
||||||
<option value="5">5</option>
|
{
|
||||||
<option value="10">10</option>
|
<option value="@key">@value</option>
|
||||||
<option value="15">15</option>
|
}
|
||||||
<option value="30">30</option>
|
|
||||||
<option value="50">50</option>
|
|
||||||
</select>
|
</select>
|
||||||
</div>
|
|
||||||
|
|
|
@ -17,17 +17,41 @@
|
||||||
|
|
||||||
using Blazored.LocalStorage;
|
using Blazored.LocalStorage;
|
||||||
using Microsoft.AspNetCore.Components;
|
using Microsoft.AspNetCore.Components;
|
||||||
|
using Wonky.Client.Services;
|
||||||
|
|
||||||
namespace Wonky.Client.Components
|
namespace Wonky.Client.Components
|
||||||
{
|
{
|
||||||
public partial class PageSizeDropDown
|
public partial class PageSizeDropDown : IDisposable
|
||||||
{
|
{
|
||||||
[Parameter] public EventCallback<string> OnPageSizeChanged { get; set; }
|
[Inject] private ILocalStorageService LocalStorage { get; set; }
|
||||||
private string PageSize { get; set; } = "5";
|
[Inject] private ProfileService ProfileService { get; set; }
|
||||||
|
private Dictionary<string, string> Items { get; set; } = new();
|
||||||
|
private Preferences _preferences = new();
|
||||||
|
private string? Selection { get; set; }
|
||||||
|
protected override async Task OnInitializedAsync()
|
||||||
|
{
|
||||||
|
ProfileService.OnChange += ProfileServiceOnOnChange;
|
||||||
|
_preferences = await ProfileService.GetPreferences();
|
||||||
|
|
||||||
private async Task OnPageSizeChange(ChangeEventArgs eventArgs)
|
Items.Add("5", "5");
|
||||||
|
Items.Add("10", "10");
|
||||||
|
Items.Add("15", "15");
|
||||||
|
Items.Add("30", "30");
|
||||||
|
Items.Add("50", "50");
|
||||||
|
Selection = (from x in Items where x.Key == _preferences.PageSize select x.Value).First();
|
||||||
|
}
|
||||||
|
private async Task OnSelectChanged(ChangeEventArgs e)
|
||||||
{
|
{
|
||||||
await OnPageSizeChanged.InvokeAsync(PageSize);
|
await ProfileService.SetPageSize(e.Value?.ToString());
|
||||||
|
}
|
||||||
|
private void ProfileServiceOnOnChange(Preferences newPreferences)
|
||||||
|
{
|
||||||
|
_preferences = newPreferences;
|
||||||
|
StateHasChanged();
|
||||||
|
}
|
||||||
|
public void Dispose()
|
||||||
|
{
|
||||||
|
ProfileService.OnChange -= ProfileServiceOnOnChange;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,6 +45,6 @@ namespace Wonky.Client.Models
|
||||||
public string DlvAddress2 { get; set; } = "";
|
public string DlvAddress2 { get; set; } = "";
|
||||||
public string DlvZipCode { get; set; } = "";
|
public string DlvZipCode { get; set; } = "";
|
||||||
public string DlvCity { get; set; } = "";
|
public string DlvCity { get; set; } = "";
|
||||||
public List<CrmActivityLine> Lines { get; set; } = new();
|
public List<CrmSalesLines> Lines { get; set; } = new();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -48,7 +48,7 @@ public partial class PurchaseOrderCreate : IDisposable
|
||||||
[Inject] public ISalesItemHttpRepository SalesItemRepo { get; set; }
|
[Inject] public ISalesItemHttpRepository SalesItemRepo { get; set; }
|
||||||
[Parameter] public string Account { get; set; }
|
[Parameter] public string Account { get; set; }
|
||||||
|
|
||||||
public List<CrmActivityLine> Lines { get; set; } = new();
|
public List<CrmSalesLines> Lines { get; set; } = new();
|
||||||
protected override async Task OnInitializedAsync()
|
protected override async Task OnInitializedAsync()
|
||||||
{
|
{
|
||||||
Interceptor.RegisterEvent();
|
Interceptor.RegisterEvent();
|
||||||
|
|
98
Wonky.Client/Services/ProfileService.cs
Normal file
98
Wonky.Client/Services/ProfileService.cs
Normal file
|
@ -0,0 +1,98 @@
|
||||||
|
using Blazored.LocalStorage;
|
||||||
|
|
||||||
|
namespace Wonky.Client.Services;
|
||||||
|
|
||||||
|
public record Preferences
|
||||||
|
{
|
||||||
|
public bool DisplayIgnored { get; set; } = false;
|
||||||
|
public bool DisplayAll { get; set; } = false;
|
||||||
|
public string CompanySearch { get; set; } = "name";
|
||||||
|
public string CompanySort { get; set; } = "name";
|
||||||
|
public string ItemSearch { get; set; } = "name";
|
||||||
|
public string ItemSort { get; set; } = "name";
|
||||||
|
public string PageSize { get; set; } = "5";
|
||||||
|
public string ItemGroup { get; set; } = "all";
|
||||||
|
}
|
||||||
|
public class ProfileService
|
||||||
|
{
|
||||||
|
private readonly ILocalStorageService _localStorageService;
|
||||||
|
public event Action<Preferences>? OnChange;
|
||||||
|
public ProfileService(ILocalStorageService localStorageService)
|
||||||
|
{
|
||||||
|
_localStorageService = localStorageService;
|
||||||
|
}
|
||||||
|
public async Task ToggleIgnored(bool toggle)
|
||||||
|
{
|
||||||
|
var preferences = await GetPreferences();
|
||||||
|
var newPreferences = preferences
|
||||||
|
with { DisplayIgnored = toggle };
|
||||||
|
await _localStorageService.SetItemAsync("preferences", newPreferences);
|
||||||
|
OnChange?.Invoke(newPreferences);
|
||||||
|
}
|
||||||
|
public async Task ToggleAll(bool toggle)
|
||||||
|
{
|
||||||
|
var preferences = await GetPreferences();
|
||||||
|
var newPreferences = preferences
|
||||||
|
with { DisplayAll = toggle };
|
||||||
|
await _localStorageService.SetItemAsync("preferences", newPreferences);
|
||||||
|
OnChange?.Invoke(newPreferences);
|
||||||
|
}
|
||||||
|
public async Task SetCompanySearch(string column)
|
||||||
|
{
|
||||||
|
var preferences = await GetPreferences();
|
||||||
|
var newPreferences = preferences
|
||||||
|
with { CompanySearch = column };
|
||||||
|
await _localStorageService.SetItemAsync("preferences", newPreferences);
|
||||||
|
OnChange?.Invoke(newPreferences);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task SetCompanySort(string column)
|
||||||
|
{
|
||||||
|
var preferences = await GetPreferences();
|
||||||
|
var newPreferences = preferences
|
||||||
|
with { CompanySort = column };
|
||||||
|
await _localStorageService.SetItemAsync("preferences", newPreferences);
|
||||||
|
OnChange?.Invoke(newPreferences);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task SetItemSearch(string column)
|
||||||
|
{
|
||||||
|
var preferences = await GetPreferences();
|
||||||
|
var newPreferences = preferences
|
||||||
|
with { ItemSearch = column };
|
||||||
|
await _localStorageService.SetItemAsync("preferences", newPreferences);
|
||||||
|
OnChange?.Invoke(newPreferences);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task SetItemSort(string column)
|
||||||
|
{
|
||||||
|
var preferences = await GetPreferences();
|
||||||
|
var newPreferences = preferences
|
||||||
|
with { ItemSort = column };
|
||||||
|
await _localStorageService.SetItemAsync("preferences", newPreferences);
|
||||||
|
OnChange?.Invoke(newPreferences);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task SetPageSize(string pageSize)
|
||||||
|
{
|
||||||
|
var preferences = await GetPreferences();
|
||||||
|
var newPreferences = preferences
|
||||||
|
with { PageSize = pageSize };
|
||||||
|
await _localStorageService.SetItemAsync("preferences", newPreferences);
|
||||||
|
OnChange?.Invoke(newPreferences);
|
||||||
|
}
|
||||||
|
public async Task SetItemGroup(string group)
|
||||||
|
{
|
||||||
|
var preferences = await GetPreferences();
|
||||||
|
var newPreferences = preferences
|
||||||
|
with { ItemGroup = group };
|
||||||
|
await _localStorageService.SetItemAsync("preferences", newPreferences);
|
||||||
|
OnChange?.Invoke(newPreferences);
|
||||||
|
}
|
||||||
|
public async Task<Preferences> GetPreferences()
|
||||||
|
{
|
||||||
|
return await _localStorageService.GetItemAsync<Preferences>("preferences")
|
||||||
|
?? new Preferences();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -1,34 +0,0 @@
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.ComponentModel.DataAnnotations;
|
|
||||||
|
|
||||||
namespace Wonky.Entity.DTO;
|
|
||||||
|
|
||||||
public class CrmActivity
|
|
||||||
{
|
|
||||||
public int ActivityId { get; set; }
|
|
||||||
|
|
||||||
public string CompanyId { get; set; } = "";
|
|
||||||
// From company row
|
|
||||||
[Required(ErrorMessage = "Konto skal udfyldes")] public string Account { get; set; } = "";
|
|
||||||
[Required(ErrorMessage = "Moms nummer skal udfyldes")] public string VatNumber { get; set; } = "";
|
|
||||||
[Required(ErrorMessage = "Navn skal udfyldes")] public string Name { get; set; } = "";
|
|
||||||
public string Address { get; set; } = "";
|
|
||||||
public string Address2 { get; set; } = "";
|
|
||||||
[Required(ErrorMessage = "Bynavn skal udfyldes")] public string City { get; set; }= "";
|
|
||||||
[Required(ErrorMessage = "Postnummer skal udfyldes")] public string ZipCode { get; set; } = "";
|
|
||||||
[Required(ErrorMessage = "Salgskonsulent skal udfyldes")] public string SalesRep { get; set; } = "";
|
|
||||||
public string Phone { get; set; } = "";
|
|
||||||
public string EMail { get; set; } = "";
|
|
||||||
// Form entries
|
|
||||||
public string ReferenceNumber { get; set; } = "";
|
|
||||||
[Required(ErrorMessage = "Reference skal udfyldes")] public string YourRef { get; set; } = "";
|
|
||||||
public string OurRef { get; set; } = "";
|
|
||||||
[MaxLength(255, ErrorMessage = "Du kan h<>jst bruge 255 tegn")] public string OrderMessage { get; set; } = "";
|
|
||||||
// From company or form entry
|
|
||||||
public string DlvName { get; set; } = "";
|
|
||||||
public string DlvAddress1 { get; set; } = "";
|
|
||||||
public string DlvAddress2 { get; set; } = "";
|
|
||||||
public string DlvZipCode { get; set; } = "";
|
|
||||||
public string DlvCity { get; set; } = "";
|
|
||||||
public List<CrmActivityLine> Lines { get; set; } = new();
|
|
||||||
}
|
|
31
Wonky.Entity/DTO/CrmDocumentDto.cs
Normal file
31
Wonky.Entity/DTO/CrmDocumentDto.cs
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
|
namespace Wonky.Entity.DTO;
|
||||||
|
|
||||||
|
public class CrmDocumentDto
|
||||||
|
{
|
||||||
|
// Base account info
|
||||||
|
public string CompanyId { get; set; } = "";
|
||||||
|
public string Account { get; set; } = "";
|
||||||
|
public string VatNumber { get; set; } = "";
|
||||||
|
public string Name { get; set; } = "";
|
||||||
|
public string Address { get; set; } = "";
|
||||||
|
public string Address2 { get; set; } = "";
|
||||||
|
public string City { get; set; }= "";
|
||||||
|
public string ZipCode { get; set; } = "";
|
||||||
|
public string SalesRep { get; set; } = "";
|
||||||
|
public string Phone { get; set; } = "";
|
||||||
|
public string EMail { get; set; } = "";
|
||||||
|
// Form entries
|
||||||
|
public string ReferenceNumber { get; set; } = "";
|
||||||
|
public string YourRef { get; set; } = "";
|
||||||
|
public string OurRef { get; set; } = "";
|
||||||
|
public string OrderMessage { get; set; } = "";
|
||||||
|
// From company or form entry
|
||||||
|
public string DlvName { get; set; } = "";
|
||||||
|
public string DlvAddress1 { get; set; } = "";
|
||||||
|
public string DlvAddress2 { get; set; } = "";
|
||||||
|
public string DlvZipCode { get; set; } = "";
|
||||||
|
public string DlvCity { get; set; } = "";
|
||||||
|
}
|
|
@ -15,7 +15,7 @@
|
||||||
//
|
//
|
||||||
namespace Wonky.Entity.DTO;
|
namespace Wonky.Entity.DTO;
|
||||||
|
|
||||||
public class CrmActivityLine
|
public class CrmSalesLines
|
||||||
{
|
{
|
||||||
public int ActivityLineId { get; set; }
|
public int ActivityLineId { get; set; }
|
||||||
public int ActivityId { get; set; }
|
public int ActivityId { get; set; }
|
Loading…
Reference in a new issue