end-of-day refactor check components doesn't use repos
This commit is contained in:
parent
a4e9598fa3
commit
dd91890b97
137 changed files with 931 additions and 647 deletions
|
@ -18,13 +18,9 @@ using Wonky.Entity.Views;
|
||||||
|
|
||||||
namespace Wonky.Client.Components;
|
namespace Wonky.Client.Components;
|
||||||
|
|
||||||
public partial class ActivityTableCrmComponent
|
public partial class ActivityListComponent
|
||||||
{
|
{
|
||||||
[Parameter] public List<ReportItemView> ActivityList { get; set; } = new();
|
[Parameter] public List<ReportItemView> ActivityList { get; set; } = new();
|
||||||
[Inject] public NavigationManager Navigator { get; set; }
|
[Inject] public NavigationManager Navigator { get; set; }
|
||||||
|
|
||||||
// private void ShowOrder(string companyId, string orderId)
|
|
||||||
// {
|
|
||||||
// Navigator.NavigateTo($"office/customers/{companyId}/orders/{orderId}");
|
|
||||||
// }
|
|
||||||
}
|
}
|
|
@ -21,12 +21,8 @@ using Wonky.Entity.Views;
|
||||||
|
|
||||||
namespace Wonky.Client.Components;
|
namespace Wonky.Client.Components;
|
||||||
|
|
||||||
public partial class CatalogTableComponent
|
public partial class CatalogListComponent
|
||||||
{
|
{
|
||||||
[Parameter] public List<SalesItemView> ItemList { get; set; } = new();
|
[Parameter] public List<SalesItemView> ItemList { get; set; } = new();
|
||||||
[Inject] public IToastService ToastService { get; set; }
|
[Inject] public IToastService ToastService { get; set; }
|
||||||
private void AddToDraft()
|
|
||||||
{
|
|
||||||
ToastService.ShowInfo("TODO: læg til ordre kladde");
|
|
||||||
}
|
|
||||||
}
|
}
|
|
@ -21,7 +21,7 @@ using Wonky.Entity.Views;
|
||||||
|
|
||||||
namespace Wonky.Client.Components;
|
namespace Wonky.Client.Components;
|
||||||
|
|
||||||
public partial class CatalogTablePrintComponent
|
public partial class CatalogPrintComponent
|
||||||
{
|
{
|
||||||
[Parameter] public List<SalesItemView> ItemList { get; set; } = new();
|
[Parameter] public List<SalesItemView> ItemList { get; set; } = new();
|
||||||
[Parameter] public string CountryName { get; set; } = "";
|
[Parameter] public string CountryName { get; set; } = "";
|
|
@ -24,7 +24,7 @@ using Wonky.Entity.Views;
|
||||||
|
|
||||||
namespace Wonky.Client.Components
|
namespace Wonky.Client.Components
|
||||||
{
|
{
|
||||||
public partial class OfficeCustomerTableComponent
|
public partial class CountryCustomerListComponent
|
||||||
{
|
{
|
||||||
[Parameter] public List<CompanyDto> CompanyList { get; set; } = new();
|
[Parameter] public List<CompanyDto> CompanyList { get; set; } = new();
|
||||||
|
|
|
@ -14,12 +14,11 @@
|
||||||
//
|
//
|
||||||
|
|
||||||
using Microsoft.AspNetCore.Components;
|
using Microsoft.AspNetCore.Components;
|
||||||
using Wonky.Entity.DTO;
|
|
||||||
using Wonky.Entity.Views;
|
using Wonky.Entity.Views;
|
||||||
|
|
||||||
namespace Wonky.Client.Components;
|
namespace Wonky.Client.Components;
|
||||||
|
|
||||||
public partial class OfficeUserTableComponent
|
public partial class CountryUserListComponent
|
||||||
{
|
{
|
||||||
[Parameter] public List<UserListAdminView> UserList { get; set; } = new();
|
[Parameter] public List<UserListAdminView> UserList { get; set; } = new();
|
||||||
}
|
}
|
|
@ -19,7 +19,7 @@
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
|
||||||
@if (ProductList.Any())
|
@if (Inventory.Any())
|
||||||
{
|
{
|
||||||
<div class="list-group mt-2">
|
<div class="list-group mt-2">
|
||||||
<div class="list-group-item bg-dark text-white">
|
<div class="list-group-item bg-dark text-white">
|
||||||
|
@ -31,7 +31,7 @@
|
||||||
<div class="col-sm-1"></div>
|
<div class="col-sm-1"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@foreach (var product in ProductList)
|
@foreach (var product in Inventory)
|
||||||
{
|
{
|
||||||
<div class="list-group-item">
|
<div class="list-group-item">
|
||||||
<div class="row align-items-center">
|
<div class="row align-items-center">
|
||||||
|
@ -66,8 +66,6 @@
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<InventoryReorderModal OnSelected="@OnSelectedItem" CompanyId="@CompanyId" SalesItem="@SalesItem" @ref="ReorderModal"/>
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
|
@ -25,20 +25,15 @@ using Wonky.Entity.Views;
|
||||||
|
|
||||||
namespace Wonky.Client.Components;
|
namespace Wonky.Client.Components;
|
||||||
|
|
||||||
public partial class CustomerProductTableComponent
|
public partial class CustomerInventoryListComponent
|
||||||
{
|
{
|
||||||
[CascadingParameter] public DraftStateProvider DraftStateProvider { get; set; } = new();
|
|
||||||
[Parameter] public List<ProductInventoryView> ProductList { get; set; } = new();
|
|
||||||
[Parameter] public string CompanyId { get; set; } = "";
|
|
||||||
[Inject] public ICatalogCrmHttpRepository CatalogCrm { get; set; }
|
|
||||||
[Inject] public ILocalStorageService Storage { get; set; }
|
[Inject] public ILocalStorageService Storage { get; set; }
|
||||||
|
// Parameters
|
||||||
|
[Parameter] public List<ProductInventoryView> Inventory { get; set; } = new();
|
||||||
|
[Parameter] public string CompanyId { get; set; } = "";
|
||||||
|
[Parameter] public EventCallback<string> OnReorderSelected { get; set; }
|
||||||
|
|
||||||
// private variables
|
// private variables
|
||||||
private SalesItemView SalesItem { get; set; } = new();
|
|
||||||
private string Price { get; set; } = "0";
|
|
||||||
private string Quantity { get; set; } = "1";
|
|
||||||
private string Sku { get; set; } = "";
|
|
||||||
private InventoryReorderModal ReorderModal { get; set; } = new();
|
|
||||||
private SelectedSku Item { get; set; } = new();
|
|
||||||
private bool Descending { get; set; }
|
private bool Descending { get; set; }
|
||||||
|
|
||||||
private void SortProducts(PSort column)
|
private void SortProducts(PSort column)
|
||||||
|
@ -49,57 +44,47 @@ public partial class CustomerProductTableComponent
|
||||||
case PSort.Desc:
|
case PSort.Desc:
|
||||||
if (Descending)
|
if (Descending)
|
||||||
{
|
{
|
||||||
ProductList = ProductList.OrderByDescending(x => x.Description).ToList();
|
Inventory = Inventory.OrderByDescending(x => x.Description).ToList();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
ProductList = ProductList.OrderBy(x => x.Description).ToList();
|
Inventory = Inventory.OrderBy(x => x.Description).ToList();
|
||||||
break;
|
break;
|
||||||
case PSort.Sku:
|
case PSort.Sku:
|
||||||
if (Descending)
|
if (Descending)
|
||||||
{
|
{
|
||||||
ProductList = ProductList.OrderByDescending(x => x.Sku).ToList();
|
Inventory = Inventory.OrderByDescending(x => x.Sku).ToList();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
ProductList = ProductList.OrderBy(x => x.Sku).ToList();
|
Inventory = Inventory.OrderBy(x => x.Sku).ToList();
|
||||||
break;
|
break;
|
||||||
case PSort.Qty:
|
case PSort.Qty:
|
||||||
if (Descending)
|
if (Descending)
|
||||||
{
|
{
|
||||||
ProductList = ProductList.OrderByDescending(x => x.Quantity).ToList();
|
Inventory = Inventory.OrderByDescending(x => x.Quantity).ToList();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
ProductList = ProductList.OrderBy(x => x.Quantity).ToList();
|
Inventory = Inventory.OrderBy(x => x.Quantity).ToList();
|
||||||
break;
|
break;
|
||||||
case PSort.None:
|
case PSort.None:
|
||||||
break;
|
break;
|
||||||
case PSort.Abbr:
|
case PSort.Abbr:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
ProductList = ProductList.OrderByDescending(x => x.Quantity).ToList();
|
Inventory = Inventory.OrderByDescending(x => x.Quantity).ToList();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task ProductCheck(string sku)
|
|
||||||
{
|
|
||||||
var x = ProductList.First(x => x.Sku == sku);
|
|
||||||
x.Check = !x.Check;
|
|
||||||
await Storage.SetItemAsync($"{CompanyId}-products", ProductList);
|
|
||||||
}
|
|
||||||
private async Task CallShowReorderModal(string sku)
|
private async Task CallShowReorderModal(string sku)
|
||||||
{
|
{
|
||||||
// fetch item from http repo
|
await ProductCheck(sku);
|
||||||
SalesItem = await CatalogCrm.GetSalesItemSku(sku);
|
await OnReorderSelected.InvokeAsync(sku);
|
||||||
ReorderModal.Show();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task OnSelectedItem(DraftItem draftItem)
|
private async Task ProductCheck(string sku)
|
||||||
{
|
{
|
||||||
// add item to order draft
|
var x = Inventory.First(x => x.Sku == sku);
|
||||||
DraftStateProvider.Draft.DraftType = "order";
|
x.Check = !x.Check;
|
||||||
DraftStateProvider.Draft.Items.Add(draftItem);
|
await Storage.SetItemAsync($"{CompanyId}-products", Inventory);
|
||||||
// set item checked
|
|
||||||
await ProductCheck(draftItem.Item.Sku);
|
|
||||||
await DraftStateProvider.SaveChangesAsync();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -49,4 +49,3 @@ else
|
||||||
{
|
{
|
||||||
<div>Ingen data</div>
|
<div>Ingen data</div>
|
||||||
}
|
}
|
||||||
<InvoiceViewModal CompanyId="@CompanyId" InvoiceId="@InvoiceId" @ref="InvoiceView" />
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
using Microsoft.AspNetCore.Components;
|
||||||
|
using Wonky.Client.Shared;
|
||||||
|
using Wonky.Entity.Views;
|
||||||
|
|
||||||
|
namespace Wonky.Client.Components;
|
||||||
|
|
||||||
|
public partial class CustomerInvoiceListComponent
|
||||||
|
{
|
||||||
|
[Parameter] public string CompanyId { get; set; } = "";
|
||||||
|
[Parameter] public List<InvoiceListItemView> InvoiceList { get; set; } = new();
|
||||||
|
[Parameter] public EventCallback<string> OnShowInvoice { get; set; }
|
||||||
|
|
||||||
|
private async Task ShowInvoice(string invoiceId)
|
||||||
|
{
|
||||||
|
await OnShowInvoice.InvokeAsync(invoiceId);
|
||||||
|
}
|
||||||
|
}
|
|
@ -19,7 +19,7 @@ using Wonky.Entity.Views;
|
||||||
|
|
||||||
namespace Wonky.Client.Components;
|
namespace Wonky.Client.Components;
|
||||||
|
|
||||||
public partial class CustomerProductLineTableComponent
|
public partial class CustomerProductLineListComponent
|
||||||
{
|
{
|
||||||
[Parameter] public List<ProductHistoryView> ProductHistory { get; set; } = new();
|
[Parameter] public List<ProductHistoryView> ProductHistory { get; set; } = new();
|
||||||
|
|
|
@ -1,20 +0,0 @@
|
||||||
using Microsoft.AspNetCore.Components;
|
|
||||||
using Wonky.Client.Shared;
|
|
||||||
using Wonky.Entity.Views;
|
|
||||||
|
|
||||||
namespace Wonky.Client.Components;
|
|
||||||
|
|
||||||
public partial class InvoiceTableComponent
|
|
||||||
{
|
|
||||||
[Parameter] public string CompanyId { get; set; } = "";
|
|
||||||
[Parameter] public List<InvoiceListItemView> InvoiceList { get; set; } = new();
|
|
||||||
private InvoiceViewModal InvoiceView { get; set; } = new();
|
|
||||||
private string InvoiceId { get; set; } = "";
|
|
||||||
private void ShowInvoice(string invoiceId)
|
|
||||||
{
|
|
||||||
Console.WriteLine($"invoiceId => {invoiceId}");
|
|
||||||
Console.WriteLine($"companyId => {CompanyId}");
|
|
||||||
InvoiceId = invoiceId;
|
|
||||||
InvoiceView.Show();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -18,12 +18,29 @@
|
||||||
@using Microsoft.AspNetCore.Authorization
|
@using Microsoft.AspNetCore.Authorization
|
||||||
@using Wonky.Client.Components
|
@using Wonky.Client.Components
|
||||||
|
|
||||||
<PageTitle>Innotec Admin</PageTitle>
|
<div class="row g-3">
|
||||||
|
<div class="col-sm-3">
|
||||||
<div class="row">
|
<div class="card" style="width: 10rem;">
|
||||||
<div class="col"></div>
|
<img src="flag-icons/flags/4x3/dk.svg" alt="Danmark"/>
|
||||||
<div class="col"></div>
|
<div class="card-body">
|
||||||
<div class="col"></div>
|
<a class="btn btn-primary d-block" href="/office/dk">Danmark</a>
|
||||||
<div class="col"></div>
|
</div>
|
||||||
<div class="col"></div>
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-3">
|
||||||
|
<div class="card" style="width: 10rem;">
|
||||||
|
<img src="flag-icons/flags/4x3/no.svg" alt="Norge"/>
|
||||||
|
<div class="card-body">
|
||||||
|
<a class="btn btn-primary d-block" href="/office/no">Norge</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-3">
|
||||||
|
<div class="card" style="width: 10rem;">
|
||||||
|
<img src="flag-icons/flags/4x3/se.svg" alt="Sverige"/>
|
||||||
|
<div class="card-body">
|
||||||
|
<a class="btn btn-primary d-block" href="/office/se">Sverige</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
|
@ -30,14 +30,9 @@ using Wonky.Entity.Models;
|
||||||
using Wonky.Entity.Views;
|
using Wonky.Entity.Views;
|
||||||
|
|
||||||
namespace Wonky.Client.Components;
|
namespace Wonky.Client.Components;
|
||||||
public partial class LandingComponentAdmin : IDisposable
|
public partial class LandingComponentAdmin
|
||||||
{
|
{
|
||||||
[Inject] public UserProfileService ProfileService { get; set; }
|
[Inject] public UserProfileService ProfileService { get; set; }
|
||||||
[Inject] public ILogger<LandingComponentAdmin> Logger { get; set; }
|
|
||||||
[Inject] public HttpInterceptorService Interceptor { get; set; }
|
|
||||||
[Inject] public IToastService Toaster { get; set; }
|
|
||||||
[Inject] public ITaskItemCrmHttpRepository TaskRepo { get; set; }
|
|
||||||
[Inject] public NavigationManager Navigator { get; set; }
|
|
||||||
|
|
||||||
private readonly JsonSerializerOptions _options = new JsonSerializerOptions
|
private readonly JsonSerializerOptions _options = new JsonSerializerOptions
|
||||||
{
|
{
|
||||||
|
@ -46,7 +41,7 @@ public partial class LandingComponentAdmin : IDisposable
|
||||||
};
|
};
|
||||||
|
|
||||||
private UserPref Prefs { get; set; } = new();
|
private UserPref Prefs { get; set; } = new();
|
||||||
private string WordDate { get; set; } = $"{DateTime.Now:yyyy-MM-dd}";
|
private string WorkDate { get; set; } = $"{DateTime.Now:yyyy-MM-dd}";
|
||||||
private string Today { get; set; } = $"{DateTime.Now:yyyy-MM-dd}";
|
private string Today { get; set; } = $"{DateTime.Now:yyyy-MM-dd}";
|
||||||
|
|
||||||
|
|
||||||
|
@ -54,15 +49,8 @@ public partial class LandingComponentAdmin : IDisposable
|
||||||
{
|
{
|
||||||
Prefs = await ProfileService.GetPreferences();
|
Prefs = await ProfileService.GetPreferences();
|
||||||
if(!string.IsNullOrWhiteSpace(Prefs.WorkDate))
|
if(!string.IsNullOrWhiteSpace(Prefs.WorkDate))
|
||||||
WordDate = Prefs.WorkDate;
|
WorkDate = Prefs.WorkDate;
|
||||||
|
|
||||||
Interceptor.RegisterEvent();
|
|
||||||
Interceptor.RegisterBeforeSendEvent();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Dispose()
|
|
||||||
{
|
|
||||||
Interceptor.DisposeEvent();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -22,8 +22,6 @@
|
||||||
|
|
||||||
<AuthorizeView Roles="Advisor">
|
<AuthorizeView Roles="Advisor">
|
||||||
<div class="bg-dark text-white rounded-2 mb-2 py-2">
|
<div class="bg-dark text-white rounded-2 mb-2 py-2">
|
||||||
<WorkDateComponent OnChangedCallback="GetWorkdayTasks"/>
|
<WorkDateComponent />
|
||||||
</div>
|
</div>
|
||||||
<TaskItemTableComponent TaskItemList="TaskItems" OnCompleteTask="OnCompleteTask"
|
|
||||||
OnDeleteTask="OnDeleteConfirmed" OnTaskCompleted="OnTaskCompleted"/>
|
|
||||||
</AuthorizeView>
|
</AuthorizeView>
|
|
@ -30,14 +30,9 @@ using Wonky.Entity.Models;
|
||||||
using Wonky.Entity.Views;
|
using Wonky.Entity.Views;
|
||||||
|
|
||||||
namespace Wonky.Client.Components;
|
namespace Wonky.Client.Components;
|
||||||
public partial class LandingComponentAdvisor : IDisposable
|
public partial class LandingComponentAdvisor
|
||||||
{
|
{
|
||||||
[Inject] public UserProfileService ProfileService { get; set; }
|
[Inject] public UserProfileService ProfileService { get; set; }
|
||||||
[Inject] public ILogger<LandingComponentAdvisor> Logger { get; set; }
|
|
||||||
[Inject] public HttpInterceptorService Inteceptor { get; set; }
|
|
||||||
[Inject] public IToastService Toaster { get; set; }
|
|
||||||
[Inject] public ITaskItemCrmHttpRepository TaskRepo { get; set; }
|
|
||||||
[Inject] public NavigationManager Navigator { get; set; }
|
|
||||||
|
|
||||||
private readonly JsonSerializerOptions JsonOptions = new JsonSerializerOptions
|
private readonly JsonSerializerOptions JsonOptions = new JsonSerializerOptions
|
||||||
{
|
{
|
||||||
|
@ -47,59 +42,12 @@ public partial class LandingComponentAdvisor : IDisposable
|
||||||
|
|
||||||
private UserPref Prefs { get; set; } = new();
|
private UserPref Prefs { get; set; } = new();
|
||||||
private DateTime SelectedDate { get; set; }
|
private DateTime SelectedDate { get; set; }
|
||||||
private List<TaskItemDto> TaskItems { get; set; } = new();
|
|
||||||
|
|
||||||
protected override async Task OnInitializedAsync()
|
protected override async Task OnInitializedAsync()
|
||||||
{
|
{
|
||||||
Prefs = await ProfileService.GetPreferences();
|
Prefs = await ProfileService.GetPreferences();
|
||||||
SelectedDate = string.IsNullOrWhiteSpace(Prefs.WorkDate) ? DateTime.Now : DateTime.Parse(Prefs.WorkDate);
|
SelectedDate = string.IsNullOrWhiteSpace(Prefs.WorkDate) ? DateTime.Now : DateTime.Parse(Prefs.WorkDate);
|
||||||
|
|
||||||
Inteceptor.RegisterEvent();
|
|
||||||
Inteceptor.RegisterBeforeSendEvent();
|
|
||||||
|
|
||||||
//await GetTaskItems(_workDate);
|
|
||||||
await GetAllTasks();
|
|
||||||
}
|
|
||||||
|
|
||||||
private async Task GetAllTasks()
|
|
||||||
{
|
|
||||||
TaskItems = await TaskRepo.GetTaskList();
|
|
||||||
}
|
|
||||||
|
|
||||||
private async Task OnCompleteTask(string taskItemId)
|
|
||||||
{
|
|
||||||
await ProfileService.SetWorkDate(DateTime.Now);
|
|
||||||
var item = TaskItems.Find(x => x.TaskItemId == taskItemId);
|
|
||||||
Navigator.NavigateTo($"/companies/{item.ReferenceId}/activities/new");
|
|
||||||
}
|
|
||||||
|
|
||||||
private async Task GetWorkdayTasks(string workDate)
|
|
||||||
{
|
|
||||||
SelectedDate = DateTime.Parse(workDate);
|
|
||||||
TaskItems = new List<TaskItemDto>();
|
|
||||||
TaskItems = await TaskRepo.GetTaskList($"{SelectedDate:yyyy-MM-dd}");
|
|
||||||
}
|
|
||||||
|
|
||||||
private async Task OnTaskCompleted(string taskItemId)
|
|
||||||
{
|
|
||||||
var item = TaskItems.Find(x => x.TaskItemId == taskItemId);
|
|
||||||
item.IsCompleted = true;
|
|
||||||
await TaskRepo.UpdateTaskItem(taskItemId, item);
|
|
||||||
TaskItems.Remove(item);
|
|
||||||
Toaster.ShowInfo("Opgaven er markeret som udført.");
|
|
||||||
}
|
|
||||||
|
|
||||||
private async Task OnDeleteConfirmed(string taskItemId)
|
|
||||||
{
|
|
||||||
var item = TaskItems.First(x => x.TaskItemId == taskItemId);
|
|
||||||
TaskItems.Remove(item);
|
|
||||||
await TaskRepo.DeleteTaskItem(taskItemId);
|
|
||||||
Toaster.ShowInfo("Opgaven er slettet.");
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Dispose()
|
|
||||||
{
|
|
||||||
Inteceptor.DisposeEvent();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -90,19 +90,3 @@
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@code {
|
|
||||||
|
|
||||||
[Parameter]
|
|
||||||
public List<ReportItemView> Quotes { get; set; } = new();
|
|
||||||
[Parameter] public EventCallback<QuoteCallbackArgs> OnChangedCallback { get; set; }
|
|
||||||
|
|
||||||
private async Task SetQuote(string eSalesNumber, QStatus status)
|
|
||||||
{
|
|
||||||
var args = new QuoteCallbackArgs()
|
|
||||||
{
|
|
||||||
ESalesNumber = eSalesNumber,
|
|
||||||
Status = status
|
|
||||||
};
|
|
||||||
await OnChangedCallback.InvokeAsync(args);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
22
Wonky.Client/Components/QuoteListComponent.razor.cs
Normal file
22
Wonky.Client/Components/QuoteListComponent.razor.cs
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
using Microsoft.AspNetCore.Components;
|
||||||
|
using Wonky.Client.Models;
|
||||||
|
using Wonky.Entity.Views;
|
||||||
|
|
||||||
|
namespace Wonky.Client.Components;
|
||||||
|
|
||||||
|
public partial class QuoteListComponent
|
||||||
|
{
|
||||||
|
[Parameter]
|
||||||
|
public List<ReportItemView> Quotes { get; set; } = new();
|
||||||
|
[Parameter] public EventCallback<QuoteCallbackArgs> OnChangedCallback { get; set; }
|
||||||
|
|
||||||
|
private async Task SetQuote(string eSalesNumber, QStatus status)
|
||||||
|
{
|
||||||
|
var args = new QuoteCallbackArgs()
|
||||||
|
{
|
||||||
|
ESalesNumber = eSalesNumber,
|
||||||
|
Status = status
|
||||||
|
};
|
||||||
|
await OnChangedCallback.InvokeAsync(args);
|
||||||
|
}
|
||||||
|
}
|
|
@ -141,16 +141,3 @@
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@code{
|
|
||||||
|
|
||||||
[Parameter]
|
|
||||||
public ReportItemView ReportItem { get; set; } = new();
|
|
||||||
|
|
||||||
protected override void OnParametersSet()
|
|
||||||
{
|
|
||||||
var lines = ReportItem.Lines.OrderBy(x => x.Location).ToList();
|
|
||||||
ReportItem.Lines = lines;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
16
Wonky.Client/Components/ReportItemComponent.razor.cs
Normal file
16
Wonky.Client/Components/ReportItemComponent.razor.cs
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
using Microsoft.AspNetCore.Components;
|
||||||
|
using Wonky.Entity.Views;
|
||||||
|
|
||||||
|
namespace Wonky.Client.Components;
|
||||||
|
|
||||||
|
public partial class ReportItemComponent
|
||||||
|
{
|
||||||
|
[Parameter]
|
||||||
|
public ReportItemView ReportItem { get; set; } = new();
|
||||||
|
|
||||||
|
protected override void OnParametersSet()
|
||||||
|
{
|
||||||
|
var lines = ReportItem.Lines.OrderBy(x => x.Location).ToList();
|
||||||
|
ReportItem.Lines = lines;
|
||||||
|
}
|
||||||
|
}
|
|
@ -19,7 +19,7 @@ using Wonky.Entity.Views;
|
||||||
|
|
||||||
namespace Wonky.Client.Components;
|
namespace Wonky.Client.Components;
|
||||||
|
|
||||||
public partial class ReportTableCrmComponent
|
public partial class ReportListComponent
|
||||||
{
|
{
|
||||||
[Parameter] public List<SalesReportListView> ReportList { get; set; } = new();
|
[Parameter] public List<SalesReportListView> ReportList { get; set; } = new();
|
||||||
[Parameter] public EventCallback<string> OnShowReport { get; set; }
|
[Parameter] public EventCallback<string> OnShowReport { get; set; }
|
|
@ -18,7 +18,7 @@ using Wonky.Entity.Views;
|
||||||
|
|
||||||
namespace Wonky.Client.Components;
|
namespace Wonky.Client.Components;
|
||||||
|
|
||||||
public partial class ReportTableOfficeComponent
|
public partial class ReportListOfficeComponent
|
||||||
{
|
{
|
||||||
[Parameter] public List<SalesReportListView> ReportList { get; set; } = new();
|
[Parameter] public List<SalesReportListView> ReportList { get; set; } = new();
|
||||||
[Parameter] public string UserId { get; set; } = "";
|
[Parameter] public string UserId { get; set; } = "";
|
|
@ -28,7 +28,7 @@ public partial class WarehouseListComponent
|
||||||
{
|
{
|
||||||
[Parameter] public string Status { get; set; } = "none";
|
[Parameter] public string Status { get; set; } = "none";
|
||||||
[Inject] public HttpInterceptorService Interceptor { get; set; }
|
[Inject] public HttpInterceptorService Interceptor { get; set; }
|
||||||
[Inject] public IWarehouseHttpRepository WarehouseRepo { get; set; }
|
[Inject] public IWarehouseRepository WarehouseRepo { get; set; }
|
||||||
[Inject] public IToastService Toaster { get; set; }
|
[Inject] public IToastService Toaster { get; set; }
|
||||||
|
|
||||||
private string ItemList { get; set; } = "";
|
private string ItemList { get; set; } = "";
|
||||||
|
|
|
@ -31,10 +31,3 @@ else
|
||||||
{
|
{
|
||||||
<div>Ingen data</div>
|
<div>Ingen data</div>
|
||||||
}
|
}
|
||||||
|
|
||||||
@code {
|
|
||||||
|
|
||||||
[Parameter] public List<WorkplaceListView> Workplaces { get; set; } = new();
|
|
||||||
|
|
||||||
[Parameter] public string CompanyId { get; set; } = "";
|
|
||||||
}
|
|
11
Wonky.Client/Components/WorkplaceListComponent.razor.cs
Normal file
11
Wonky.Client/Components/WorkplaceListComponent.razor.cs
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
using Microsoft.AspNetCore.Components;
|
||||||
|
using Wonky.Entity.Views;
|
||||||
|
|
||||||
|
namespace Wonky.Client.Components;
|
||||||
|
|
||||||
|
public partial class WorkplaceListComponent
|
||||||
|
{
|
||||||
|
[Parameter] public List<WorkplaceListView> Workplaces { get; set; } = new();
|
||||||
|
|
||||||
|
[Parameter] public string CompanyId { get; set; } = "";
|
||||||
|
}
|
|
@ -21,7 +21,7 @@ namespace Wonky.Client.HttpInterfaces;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Interface Activity CRM Http repository
|
/// Interface Activity CRM Http repository
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public interface IActivityCrmHttpRepository
|
public interface IAdvisorActivityRepository
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Get a list of open quotes
|
/// Get a list of open quotes
|
|
@ -22,22 +22,14 @@ namespace Wonky.Client.HttpInterfaces;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Interface Catalog Http repository
|
/// Interface Catalog Http repository
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public interface ICatalogCrmHttpRepository
|
public interface IAdvisorCatalogRepository
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Get a paged sales item list
|
/// Get a paged sales item list
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="pagingParameters"></param>
|
/// <param name="pagingParameters"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task<PagingResponse<SalesItemView>> GetSalesItemsPaged(CatalogPagingParams pagingParameters);
|
Task<PagingResponse<SalesItemView>> GetSalesItemsPaged(CatalogPaging pagingParameters);
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Get a paged sales item list for country
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="pagingParameters"></param>
|
|
||||||
/// <param name="countryCode"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
Task<PagingResponse<SalesItemView>> GetSalesItemsPaged(CatalogPagingParams pagingParameters, string countryCode);
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Get sales item by id
|
/// Get sales item by id
|
||||||
|
@ -46,20 +38,13 @@ public interface ICatalogCrmHttpRepository
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task<SalesItemView> GetSalesItemId(string salesItemId);
|
Task<SalesItemView> GetSalesItemId(string salesItemId);
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Get sales item by sku
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="sku"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
Task<SalesItemView> GetSalesItemSku(string sku);
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Overload Get sales item by sku and country code
|
/// Overload Get sales item by sku and country code
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="sku"></param>
|
/// <param name="sku"></param>
|
||||||
/// <param name="countryCode"></param>
|
/// <param name="countryCode"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task<SalesItemView> GetSalesItemSku(string sku, string countryCode);
|
Task<SalesItemView> GetSalesItemSku(string countryCode, string sku);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Get sales item by variant id
|
/// Get sales item by variant id
|
|
@ -6,7 +6,7 @@ namespace Wonky.Client.HttpInterfaces;
|
||||||
/// Interface for Contacts CRM Http repository
|
/// Interface for Contacts CRM Http repository
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public interface IContactCrmHttpRepository
|
public interface IAdvisorContactRepository
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Create Contact
|
/// Create Contact
|
|
@ -22,7 +22,7 @@ namespace Wonky.Client.HttpInterfaces;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Interface Customer CRM Http repository
|
/// Interface Customer CRM Http repository
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public interface ICustomerCrmHttpRepository
|
public interface IAdvisorCustomerRepository
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Get a list of CRM customers (SalesRep)
|
/// Get a list of CRM customers (SalesRep)
|
|
@ -21,7 +21,7 @@ namespace Wonky.Client.HttpInterfaces;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Interface Report Http repository
|
/// Interface Report Http repository
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public interface IReportHttpRepository
|
public interface IAdvisorReportRepository
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Report Exist for given data (SalesRep)
|
/// Report Exist for given data (SalesRep)
|
||||||
|
@ -57,19 +57,4 @@ public interface IReportHttpRepository
|
||||||
/// <param name="reportDto"></param>
|
/// <param name="reportDto"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task<ApiResponseView> CreateReport(string workDate, ReportDto reportDto);
|
Task<ApiResponseView> CreateReport(string workDate, ReportDto reportDto);
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Get Reports for given userId (Office)
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="userId"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
Task<List<SalesReportListView>> GetCountryReports(string userId);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Get Report for given userId and workDate (Office)
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="userId"></param>
|
|
||||||
/// <param name="workDate"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
Task<ReportView> GetCountryReport(string userId, string workDate);
|
|
||||||
}
|
}
|
|
@ -21,7 +21,7 @@ namespace Wonky.Client.HttpInterfaces;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Interface for handling CRM Tasks http repository
|
/// Interface for handling CRM Tasks http repository
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public interface ITaskItemCrmHttpRepository
|
public interface IAdvisorTaskItemRepository
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Get Task List (SalesRep)
|
/// Get Task List (SalesRep)
|
65
Wonky.Client/HttpInterfaces/ICountryCatalogRepository.cs
Normal file
65
Wonky.Client/HttpInterfaces/ICountryCatalogRepository.cs
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
// 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.Features;
|
||||||
|
using Wonky.Entity.Requests;
|
||||||
|
using Wonky.Entity.Views;
|
||||||
|
|
||||||
|
namespace Wonky.Client.HttpInterfaces;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Interface Catalog Http repository
|
||||||
|
/// </summary>
|
||||||
|
public interface ICountryCatalogRepository
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Get a paged sales item list
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="countryCode"></param>
|
||||||
|
/// <param name="paging"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<PagingResponse<SalesItemView>> GetSalesItemsPaged(string countryCode, CatalogPaging paging);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Get sales item by id
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="countryCode"></param>
|
||||||
|
/// <param name="salesItemId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<SalesItemView> GetSalesItemId(string countryCode, string salesItemId);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Overload Get sales item by sku and country code
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sku"></param>
|
||||||
|
/// <param name="countryCode"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<SalesItemView> GetSalesItemSku(string countryCode, string sku);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Get sales item by variant id
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="countryCode"></param>
|
||||||
|
/// <param name="variantId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<SalesItemView> GetSalesVariantId(string countryCode, string variantId);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Complete catalog for print country
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="countryCode"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<List<SalesItemView>> GetPriceList(string countryCode);
|
||||||
|
}
|
|
@ -22,23 +22,22 @@ namespace Wonky.Client.HttpInterfaces;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Interface for Customer Office Http repository
|
/// Interface for Customer Office Http repository
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public interface ICustomerOfficeHttpRepository
|
public interface ICountryCustomerRepository
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Get customers paged for given country
|
/// Get customers paged for given country
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="pagingParameters"></param>
|
/// <param name="paging"></param>
|
||||||
/// <param name="countryCode"></param>
|
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task<PagingResponse<CompanyDto>> GetCompaniesPaged(CustomerPaging pagingParameters, string countryCode);
|
Task<PagingResponse<CompanyDto>> GetCompaniesPaged(CustomerPaging paging);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Get customers paged for given sales rep
|
/// Get customers paged for given sales rep
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="salesRepId"></param>
|
/// <param name="salesRepId"></param>
|
||||||
/// <param name="pagingParameters"></param>
|
/// <param name="paging"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task<PagingResponse<CompanyDto>> GetCompaniesPagedSalesRep(string salesRepId, CustomerPaging pagingParameters);
|
Task<PagingResponse<CompanyDto>> GetCompaniesPagedSalesRep(string salesRepId, CustomerPaging paging);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Get customer by Id
|
/// Get customer by Id
|
|
@ -22,20 +22,20 @@ namespace Wonky.Client.HttpInterfaces;
|
||||||
/// Interface for Report http repository
|
/// Interface for Report http repository
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>Possibly duplicated in IReportHttpRepository</remarks>
|
/// <remarks>Possibly duplicated in IReportHttpRepository</remarks>
|
||||||
public interface IReportOfficeHttpRepository
|
public interface ICountryReportRepository
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Get reports for given userId
|
/// Get Reports for given userId (Office)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="userId"></param>
|
/// <param name="userId"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task<List<SalesReportListView>> GetReports(string userId);
|
Task<List<SalesReportListView>> GetCountryReports(string userId);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Get report for given userId and workDate
|
/// Get Report for given userId and workDate (Office)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="userId"></param>
|
/// <param name="userId"></param>
|
||||||
/// <param name="workDate"></param>
|
/// <param name="workDate"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task<ReportView> GetReport(string userId, string workDate);
|
Task<ReportView> GetCountryReport(string userId, string workDate);
|
||||||
}
|
}
|
|
@ -21,7 +21,7 @@ namespace Wonky.Client.HttpInterfaces;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Interface Customer History CRM Http repository
|
/// Interface Customer History CRM Http repository
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public interface ICustomerHistoryCrmHttpRepository
|
public interface ICustomerHistoryRepository
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Fetch Invoice LIst
|
/// Fetch Invoice LIst
|
|
@ -6,7 +6,7 @@ namespace Wonky.Client.HttpInterfaces;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Interface for sending emai
|
/// Interface for sending emai
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public interface ISendMailService
|
public interface ISystemSendMailService
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Send Mail
|
/// Send Mail
|
|
@ -21,7 +21,7 @@ namespace Wonky.Client.HttpInterfaces;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Interface for User handling over http
|
/// Interface for User handling over http
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public interface IUserHttpRepository
|
public interface ISystemUserRepository
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Get Advisors (Office)
|
/// Get Advisors (Office)
|
|
@ -20,7 +20,7 @@ namespace Wonky.Client.HttpInterfaces;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Interface for processing orders in warehouse
|
/// Interface for processing orders in warehouse
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public interface IWarehouseHttpRepository
|
public interface IWarehouseRepository
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Get warehouse order list by date
|
/// Get warehouse order list by date
|
|
@ -21,7 +21,7 @@ namespace Wonky.Client.HttpInterfaces;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Interface for handling Customer Workplaces (chemical document service)
|
/// Interface for handling Customer Workplaces (chemical document service)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public interface IWorkplaceCrmHttpRepository
|
public interface IWorkplaceRepository
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Get Workplaces for given customer id
|
/// Get Workplaces for given customer id
|
|
@ -28,7 +28,7 @@ namespace Wonky.Client.HttpRepository;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Implementing Interface Activity CRM Http repository
|
/// Implementing Interface Activity CRM Http repository
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class ActivityCrmHttpRepository : IActivityCrmHttpRepository
|
public class AdvisorActivityRepository : IAdvisorActivityRepository
|
||||||
{
|
{
|
||||||
private readonly JsonSerializerOptions? _options = new JsonSerializerOptions
|
private readonly JsonSerializerOptions? _options = new JsonSerializerOptions
|
||||||
{
|
{
|
||||||
|
@ -36,12 +36,12 @@ public class ActivityCrmHttpRepository : IActivityCrmHttpRepository
|
||||||
};
|
};
|
||||||
|
|
||||||
private readonly NavigationManager _navigation;
|
private readonly NavigationManager _navigation;
|
||||||
private ILogger<ActivityCrmHttpRepository> _logger;
|
private ILogger<AdvisorActivityRepository> _logger;
|
||||||
private readonly HttpClient _client;
|
private readonly HttpClient _client;
|
||||||
private readonly ApiConfig _api;
|
private readonly ApiConfig _api;
|
||||||
|
|
||||||
public ActivityCrmHttpRepository(HttpClient client,
|
public AdvisorActivityRepository(HttpClient client,
|
||||||
ILogger<ActivityCrmHttpRepository> logger,
|
ILogger<AdvisorActivityRepository> logger,
|
||||||
NavigationManager navigation, IOptions<ApiConfig> configuration)
|
NavigationManager navigation, IOptions<ApiConfig> configuration)
|
||||||
{
|
{
|
||||||
_client = client;
|
_client = client;
|
|
@ -31,7 +31,7 @@ using Wonky.Entity.Views;
|
||||||
|
|
||||||
namespace Wonky.Client.HttpRepository;
|
namespace Wonky.Client.HttpRepository;
|
||||||
|
|
||||||
public class CatalogCrmHttpRepository : ICatalogCrmHttpRepository
|
public class AdvisorCatalogRepository : IAdvisorCatalogRepository
|
||||||
{
|
{
|
||||||
private readonly JsonSerializerOptions _options = new JsonSerializerOptions
|
private readonly JsonSerializerOptions _options = new JsonSerializerOptions
|
||||||
{
|
{
|
||||||
|
@ -39,12 +39,12 @@ public class CatalogCrmHttpRepository : ICatalogCrmHttpRepository
|
||||||
};
|
};
|
||||||
|
|
||||||
private readonly NavigationManager _navigation;
|
private readonly NavigationManager _navigation;
|
||||||
private ILogger<CatalogCrmHttpRepository> _logger;
|
private ILogger<AdvisorCatalogRepository> _logger;
|
||||||
private readonly HttpClient _client;
|
private readonly HttpClient _client;
|
||||||
private readonly ApiConfig _apiConfig;
|
private readonly ApiConfig _apiConfig;
|
||||||
|
|
||||||
public CatalogCrmHttpRepository(HttpClient client,
|
public AdvisorCatalogRepository(HttpClient client,
|
||||||
ILogger<CatalogCrmHttpRepository> logger,
|
ILogger<AdvisorCatalogRepository> logger,
|
||||||
NavigationManager navigation, IOptions<ApiConfig> configuration)
|
NavigationManager navigation, IOptions<ApiConfig> configuration)
|
||||||
{
|
{
|
||||||
_client = client;
|
_client = client;
|
||||||
|
@ -58,7 +58,7 @@ public class CatalogCrmHttpRepository : ICatalogCrmHttpRepository
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="pagingParameters"></param>
|
/// <param name="pagingParameters"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public async Task<PagingResponse<SalesItemView>> GetSalesItemsPaged(CatalogPagingParams pagingParameters)
|
public async Task<PagingResponse<SalesItemView>> GetSalesItemsPaged(CatalogPaging pagingParameters)
|
||||||
{
|
{
|
||||||
var queryString = new Dictionary<string, string>
|
var queryString = new Dictionary<string, string>
|
||||||
{
|
{
|
||||||
|
@ -68,6 +68,7 @@ public class CatalogCrmHttpRepository : ICatalogCrmHttpRepository
|
||||||
["searchColumn"] = pagingParameters.SearchColumn,
|
["searchColumn"] = pagingParameters.SearchColumn,
|
||||||
["searchTerm"] = pagingParameters.SearchTerm,
|
["searchTerm"] = pagingParameters.SearchTerm,
|
||||||
["selectGroup"] = pagingParameters.SelectGroup == "0" ? "" : pagingParameters.SelectGroup,
|
["selectGroup"] = pagingParameters.SelectGroup == "0" ? "" : pagingParameters.SelectGroup,
|
||||||
|
["countryCode"] = pagingParameters.CountryCode
|
||||||
};
|
};
|
||||||
var response = await _client
|
var response = await _client
|
||||||
.GetAsync(QueryHelpers.AddQueryString($"{_apiConfig.Catalog}/page", queryString));
|
.GetAsync(QueryHelpers.AddQueryString($"{_apiConfig.Catalog}/page", queryString));
|
||||||
|
@ -97,7 +98,7 @@ public class CatalogCrmHttpRepository : ICatalogCrmHttpRepository
|
||||||
/// <param name="pagingParameters"></param>
|
/// <param name="pagingParameters"></param>
|
||||||
/// <param name="countryCode"></param>
|
/// <param name="countryCode"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public async Task<PagingResponse<SalesItemView>> GetSalesItemsPaged(CatalogPagingParams pagingParameters, string countryCode)
|
public async Task<PagingResponse<SalesItemView>> GetSalesItemsPaged(CatalogPaging pagingParameters, string countryCode)
|
||||||
{
|
{
|
||||||
var queryString = new Dictionary<string, string>
|
var queryString = new Dictionary<string, string>
|
||||||
{
|
{
|
||||||
|
@ -107,6 +108,7 @@ public class CatalogCrmHttpRepository : ICatalogCrmHttpRepository
|
||||||
["searchColumn"] = pagingParameters.SearchColumn,
|
["searchColumn"] = pagingParameters.SearchColumn,
|
||||||
["searchTerm"] = pagingParameters.SearchTerm,
|
["searchTerm"] = pagingParameters.SearchTerm,
|
||||||
["selectGroup"] = pagingParameters.SelectGroup == "0" ? "" : pagingParameters.SelectGroup,
|
["selectGroup"] = pagingParameters.SelectGroup == "0" ? "" : pagingParameters.SelectGroup,
|
||||||
|
["countryCode"] = pagingParameters.CountryCode
|
||||||
};
|
};
|
||||||
var response = await _client
|
var response = await _client
|
||||||
.GetAsync(QueryHelpers.AddQueryString($"{_apiConfig.Catalog}/{countryCode}/page", queryString));
|
.GetAsync(QueryHelpers.AddQueryString($"{_apiConfig.Catalog}/{countryCode}/page", queryString));
|
||||||
|
@ -142,24 +144,13 @@ public class CatalogCrmHttpRepository : ICatalogCrmHttpRepository
|
||||||
return salesItem ?? new SalesItemView();
|
return salesItem ?? new SalesItemView();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Get sales item by sku
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="sku"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public async Task<SalesItemView> GetSalesItemSku(string sku)
|
|
||||||
{
|
|
||||||
var salesItem = await _client.GetFromJsonAsync<SalesItemView>($"{_apiConfig.Catalog}/sku/{sku}");
|
|
||||||
return salesItem ?? new SalesItemView();
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Overload Get sales item by sku and country code
|
/// Overload Get sales item by sku and country code
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="sku"></param>
|
/// <param name="sku"></param>
|
||||||
/// <param name="countryCode"></param>
|
/// <param name="countryCode"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public async Task<SalesItemView> GetSalesItemSku(string sku, string countryCode)
|
public async Task<SalesItemView> GetSalesItemSku(string countryCode, string sku)
|
||||||
{
|
{
|
||||||
var salesItem = await _client.GetFromJsonAsync<SalesItemView>($"{_apiConfig.Catalog}/{countryCode}/sku/{sku}");
|
var salesItem = await _client.GetFromJsonAsync<SalesItemView>($"{_apiConfig.Catalog}/{countryCode}/sku/{sku}");
|
||||||
return salesItem ?? new SalesItemView();
|
return salesItem ?? new SalesItemView();
|
||||||
|
@ -195,5 +186,4 @@ public class CatalogCrmHttpRepository : ICatalogCrmHttpRepository
|
||||||
{
|
{
|
||||||
return await _client.GetFromJsonAsync<List<SalesItemView>>($"{_apiConfig.Catalog}/{countryCode}", _options);
|
return await _client.GetFromJsonAsync<List<SalesItemView>>($"{_apiConfig.Catalog}/{countryCode}", _options);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -8,7 +8,7 @@ using Wonky.Entity.DTO;
|
||||||
|
|
||||||
namespace Wonky.Client.HttpRepository;
|
namespace Wonky.Client.HttpRepository;
|
||||||
|
|
||||||
public class ContactCrmHttpRepository : IContactCrmHttpRepository
|
public class AdvisorContactRepository : IAdvisorContactRepository
|
||||||
{
|
{
|
||||||
private readonly JsonSerializerOptions _options = new ()
|
private readonly JsonSerializerOptions _options = new ()
|
||||||
{
|
{
|
||||||
|
@ -16,12 +16,12 @@ public class ContactCrmHttpRepository : IContactCrmHttpRepository
|
||||||
};
|
};
|
||||||
|
|
||||||
private readonly NavigationManager _navigation;
|
private readonly NavigationManager _navigation;
|
||||||
private ILogger<ContactCrmHttpRepository> _logger;
|
private ILogger<AdvisorContactRepository> _logger;
|
||||||
private readonly HttpClient _client;
|
private readonly HttpClient _client;
|
||||||
private readonly ApiConfig _conf;
|
private readonly ApiConfig _conf;
|
||||||
|
|
||||||
public ContactCrmHttpRepository(HttpClient client,
|
public AdvisorContactRepository(HttpClient client,
|
||||||
ILogger<ContactCrmHttpRepository> logger,
|
ILogger<AdvisorContactRepository> logger,
|
||||||
NavigationManager navigation,
|
NavigationManager navigation,
|
||||||
IOptions<ApiConfig> apiConfig)
|
IOptions<ApiConfig> apiConfig)
|
||||||
{
|
{
|
|
@ -34,7 +34,7 @@ using Wonky.Entity.Views;
|
||||||
|
|
||||||
namespace Wonky.Client.HttpRepository;
|
namespace Wonky.Client.HttpRepository;
|
||||||
|
|
||||||
public class CustomerCrmCrmHttpRepository : ICustomerCrmHttpRepository
|
public class AdvisorCustomerRepository : IAdvisorCustomerRepository
|
||||||
{
|
{
|
||||||
private readonly JsonSerializerOptions _options = new ()
|
private readonly JsonSerializerOptions _options = new ()
|
||||||
{
|
{
|
||||||
|
@ -42,12 +42,12 @@ public class CustomerCrmCrmHttpRepository : ICustomerCrmHttpRepository
|
||||||
};
|
};
|
||||||
|
|
||||||
private readonly NavigationManager _navigation;
|
private readonly NavigationManager _navigation;
|
||||||
private ILogger<CustomerCrmCrmHttpRepository> _logger;
|
private ILogger<AdvisorCustomerRepository> _logger;
|
||||||
private readonly HttpClient _client;
|
private readonly HttpClient _client;
|
||||||
private readonly ApiConfig _conf;
|
private readonly ApiConfig _conf;
|
||||||
|
|
||||||
public CustomerCrmCrmHttpRepository(HttpClient client,
|
public AdvisorCustomerRepository(HttpClient client,
|
||||||
ILogger<CustomerCrmCrmHttpRepository> logger,
|
ILogger<AdvisorCustomerRepository> logger,
|
||||||
NavigationManager navigation,
|
NavigationManager navigation,
|
||||||
IOptions<ApiConfig> apiConfig)
|
IOptions<ApiConfig> apiConfig)
|
||||||
{
|
{
|
|
@ -25,7 +25,7 @@ using Wonky.Entity.Views;
|
||||||
|
|
||||||
namespace Wonky.Client.HttpRepository;
|
namespace Wonky.Client.HttpRepository;
|
||||||
|
|
||||||
public class ReportHttpRepository : IReportHttpRepository
|
public class AdvisorReportRepository : IAdvisorReportRepository
|
||||||
{
|
{
|
||||||
private readonly JsonSerializerOptions _options = new JsonSerializerOptions
|
private readonly JsonSerializerOptions _options = new JsonSerializerOptions
|
||||||
{
|
{
|
||||||
|
@ -33,12 +33,12 @@ public class ReportHttpRepository : IReportHttpRepository
|
||||||
};
|
};
|
||||||
|
|
||||||
private readonly NavigationManager _navigation;
|
private readonly NavigationManager _navigation;
|
||||||
private ILogger<ReportHttpRepository> _logger;
|
private ILogger<AdvisorReportRepository> _logger;
|
||||||
private readonly HttpClient _client;
|
private readonly HttpClient _client;
|
||||||
private readonly ApiConfig _apiConfig;
|
private readonly ApiConfig _apiConfig;
|
||||||
|
|
||||||
public ReportHttpRepository(HttpClient client,
|
public AdvisorReportRepository(HttpClient client,
|
||||||
ILogger<ReportHttpRepository> logger,
|
ILogger<AdvisorReportRepository> logger,
|
||||||
NavigationManager navigation, IOptions<ApiConfig> configuration)
|
NavigationManager navigation, IOptions<ApiConfig> configuration)
|
||||||
{
|
{
|
||||||
_client = client;
|
_client = client;
|
||||||
|
@ -111,25 +111,4 @@ public class ReportHttpRepository : IReportHttpRepository
|
||||||
IsSuccess = result.IsSuccess
|
IsSuccess = result.IsSuccess
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Get Reports for given userId (Office)
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="userId"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public async Task<List<SalesReportListView>> GetCountryReports(string userId)
|
|
||||||
{
|
|
||||||
return await _client.GetFromJsonAsync<List<SalesReportListView>>($"{_apiConfig.OfficeReports}/{userId}");
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Get Report for given userId and workDate (Office)
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="userId"></param>
|
|
||||||
/// <param name="workDate"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public async Task<ReportView> GetCountryReport(string userId, string workDate)
|
|
||||||
{
|
|
||||||
return await _client.GetFromJsonAsync<ReportView>($"{_apiConfig.OfficeReports}/{userId}/{workDate}");
|
|
||||||
}
|
|
||||||
}
|
}
|
|
@ -26,7 +26,7 @@ using Wonky.Entity.Views;
|
||||||
|
|
||||||
namespace Wonky.Client.HttpRepository;
|
namespace Wonky.Client.HttpRepository;
|
||||||
|
|
||||||
public class TaskItemCrmHttpRepository : ITaskItemCrmHttpRepository
|
public class AdvisorTaskItemRepository : IAdvisorTaskItemRepository
|
||||||
{
|
{
|
||||||
private readonly JsonSerializerOptions _options = new JsonSerializerOptions
|
private readonly JsonSerializerOptions _options = new JsonSerializerOptions
|
||||||
{
|
{
|
||||||
|
@ -35,12 +35,12 @@ public class TaskItemCrmHttpRepository : ITaskItemCrmHttpRepository
|
||||||
};
|
};
|
||||||
|
|
||||||
private readonly NavigationManager _navigation;
|
private readonly NavigationManager _navigation;
|
||||||
private ILogger<TaskItemCrmHttpRepository> _logger;
|
private ILogger<AdvisorTaskItemRepository> _logger;
|
||||||
private readonly HttpClient _client;
|
private readonly HttpClient _client;
|
||||||
private readonly ApiConfig _apiConfig;
|
private readonly ApiConfig _apiConfig;
|
||||||
|
|
||||||
public TaskItemCrmHttpRepository(HttpClient client,
|
public AdvisorTaskItemRepository(HttpClient client,
|
||||||
ILogger<TaskItemCrmHttpRepository> logger,
|
ILogger<AdvisorTaskItemRepository> logger,
|
||||||
NavigationManager navigation, IOptions<ApiConfig> configuration)
|
NavigationManager navigation, IOptions<ApiConfig> configuration)
|
||||||
{
|
{
|
||||||
_client = client;
|
_client = client;
|
144
Wonky.Client/HttpRepository/CountryCatalogRepository.cs
Normal file
144
Wonky.Client/HttpRepository/CountryCatalogRepository.cs
Normal file
|
@ -0,0 +1,144 @@
|
||||||
|
// 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.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System.Net.Http.Json;
|
||||||
|
using System.Text.Json;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Wonky.Client.Features;
|
||||||
|
using Microsoft.AspNetCore.Components;
|
||||||
|
using Microsoft.AspNetCore.WebUtilities;
|
||||||
|
using Microsoft.Extensions.Options;
|
||||||
|
using Wonky.Client.HttpInterfaces;
|
||||||
|
using Wonky.Entity.Configuration;
|
||||||
|
using Wonky.Entity.DTO;
|
||||||
|
using Wonky.Entity.Requests;
|
||||||
|
using Wonky.Entity.Views;
|
||||||
|
|
||||||
|
namespace Wonky.Client.HttpRepository;
|
||||||
|
|
||||||
|
public class CountryCatalogRepository : ICountryCatalogRepository
|
||||||
|
{
|
||||||
|
private readonly JsonSerializerOptions _options = new JsonSerializerOptions
|
||||||
|
{
|
||||||
|
PropertyNameCaseInsensitive = true
|
||||||
|
};
|
||||||
|
|
||||||
|
private readonly NavigationManager _navigation;
|
||||||
|
private ILogger<CountryCatalogRepository> _logger;
|
||||||
|
private readonly HttpClient _client;
|
||||||
|
private readonly ApiConfig _apiConfig;
|
||||||
|
|
||||||
|
public CountryCatalogRepository(HttpClient client,
|
||||||
|
ILogger<CountryCatalogRepository> logger,
|
||||||
|
NavigationManager navigation, IOptions<ApiConfig> configuration)
|
||||||
|
{
|
||||||
|
_client = client;
|
||||||
|
_logger = logger;
|
||||||
|
_navigation = navigation;
|
||||||
|
_apiConfig = configuration.Value;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Get a paged sales item list
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="countryCode"></param>
|
||||||
|
/// <param name="paging"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<PagingResponse<SalesItemView>> GetSalesItemsPaged(string countryCode, CatalogPaging paging)
|
||||||
|
{
|
||||||
|
var queryString = new Dictionary<string, string>
|
||||||
|
{
|
||||||
|
["pageNumber"] = paging.PageNumber.ToString(),
|
||||||
|
["pageSize"] = paging.PageSize.ToString(),
|
||||||
|
["orderBy"] = paging.OrderBy,
|
||||||
|
["searchColumn"] = paging.SearchColumn,
|
||||||
|
["searchTerm"] = paging.SearchTerm,
|
||||||
|
["selectGroup"] = paging.SelectGroup == "0" ? "" : paging.SelectGroup,
|
||||||
|
["countryCode"] = countryCode
|
||||||
|
};
|
||||||
|
var response = await _client
|
||||||
|
.GetAsync(QueryHelpers.AddQueryString($"{_apiConfig.Catalog}/country/{countryCode}/page", queryString));
|
||||||
|
|
||||||
|
if (!response.IsSuccessStatusCode)
|
||||||
|
{
|
||||||
|
return new PagingResponse<SalesItemView>
|
||||||
|
{
|
||||||
|
Items = new List<SalesItemView>(),
|
||||||
|
MetaData = new MetaData()
|
||||||
|
};
|
||||||
|
}
|
||||||
|
var content = await response.Content.ReadAsStringAsync();
|
||||||
|
|
||||||
|
var pagingResponse = new PagingResponse<SalesItemView>
|
||||||
|
{
|
||||||
|
Items = JsonSerializer.Deserialize<List<SalesItemView>>(content, _options),
|
||||||
|
MetaData = JsonSerializer.Deserialize<MetaData>(
|
||||||
|
response.Headers.GetValues("X-Pagination").First(), _options)
|
||||||
|
};
|
||||||
|
return pagingResponse;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Get sales item by id
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="countryCode"></param>
|
||||||
|
/// <param name="salesItemId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<SalesItemView> GetSalesItemId(string countryCode, string salesItemId)
|
||||||
|
{
|
||||||
|
var salesItem = await _client
|
||||||
|
.GetFromJsonAsync<SalesItemView>($"{_apiConfig.Catalog}/country/{countryCode}/{salesItemId}");
|
||||||
|
return salesItem ?? new SalesItemView();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Overload Get sales item by sku and country code
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sku"></param>
|
||||||
|
/// <param name="countryCode"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<SalesItemView> GetSalesItemSku(string countryCode, string sku)
|
||||||
|
{
|
||||||
|
var salesItem = await _client.GetFromJsonAsync<SalesItemView>($"{_apiConfig.Catalog}/country/{countryCode}/sku/{sku}");
|
||||||
|
return salesItem ?? new SalesItemView();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Get sales item by variant id
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="countryCode"></param>
|
||||||
|
/// <param name="variantId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<SalesItemView> GetSalesVariantId(string countryCode, string variantId)
|
||||||
|
{
|
||||||
|
var salesItem = await _client
|
||||||
|
.GetFromJsonAsync<SalesItemView>($"{_apiConfig.Catalog}/country/{countryCode}/variant/{variantId}");
|
||||||
|
return salesItem ?? new SalesItemView();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Complete catalog for print country
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="countryCode"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<List<SalesItemView>> GetPriceList(string countryCode)
|
||||||
|
{
|
||||||
|
return await _client.GetFromJsonAsync<List<SalesItemView>>($"{_apiConfig.Catalog}/country/{countryCode}", _options);
|
||||||
|
}
|
||||||
|
}
|
|
@ -34,7 +34,7 @@ using Wonky.Entity.Views;
|
||||||
|
|
||||||
namespace Wonky.Client.HttpRepository;
|
namespace Wonky.Client.HttpRepository;
|
||||||
|
|
||||||
public class CustomerOfficeHttpRepository : ICustomerOfficeHttpRepository
|
public class CountryCustomerRepository : ICountryCustomerRepository
|
||||||
{
|
{
|
||||||
private readonly JsonSerializerOptions _options = new ()
|
private readonly JsonSerializerOptions _options = new ()
|
||||||
{
|
{
|
||||||
|
@ -42,12 +42,12 @@ public class CustomerOfficeHttpRepository : ICustomerOfficeHttpRepository
|
||||||
};
|
};
|
||||||
|
|
||||||
private readonly NavigationManager _navigator;
|
private readonly NavigationManager _navigator;
|
||||||
private ILogger<CustomerOfficeHttpRepository> _logger;
|
private ILogger<CountryCustomerRepository> _logger;
|
||||||
private readonly HttpClient _client;
|
private readonly HttpClient _client;
|
||||||
private readonly ApiConfig _api;
|
private readonly ApiConfig _api;
|
||||||
|
|
||||||
public CustomerOfficeHttpRepository(HttpClient client,
|
public CountryCustomerRepository(HttpClient client,
|
||||||
ILogger<CustomerOfficeHttpRepository> logger,
|
ILogger<CountryCustomerRepository> logger,
|
||||||
NavigationManager navigator,
|
NavigationManager navigator,
|
||||||
IOptions<ApiConfig> apiConfig)
|
IOptions<ApiConfig> apiConfig)
|
||||||
{
|
{
|
||||||
|
@ -60,21 +60,20 @@ public class CustomerOfficeHttpRepository : ICustomerOfficeHttpRepository
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Get customers paged for given sales rep
|
/// Get customers paged for given sales rep
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="pagingParameters"></param>
|
/// <param name="paging"></param>
|
||||||
/// <param name="countryCode"></param>
|
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public async Task<PagingResponse<CompanyDto>> GetCompaniesPaged(CustomerPaging pagingParameters, string countryCode)
|
public async Task<PagingResponse<CompanyDto>> GetCompaniesPaged(CustomerPaging paging)
|
||||||
{
|
{
|
||||||
var queryString = new Dictionary<string, string>
|
var queryString = new Dictionary<string, string>
|
||||||
{
|
{
|
||||||
["pageNumber"] = pagingParameters.PageNumber.ToString(),
|
["pageNumber"] = paging.PageNumber.ToString(),
|
||||||
["pageSize"] = pagingParameters.PageSize.ToString(),
|
["pageSize"] = paging.PageSize.ToString(),
|
||||||
["searchTerm"] = pagingParameters.SearchTerm,
|
["searchTerm"] = paging.SearchTerm,
|
||||||
["searchColumn"] = pagingParameters.SearchColumn,
|
["searchColumn"] = paging.SearchColumn,
|
||||||
["orderBy"] = pagingParameters.OrderBy,
|
["orderBy"] = paging.OrderBy,
|
||||||
["isHidden"] = pagingParameters.IsHidden.ToString(),
|
["isHidden"] = paging.IsHidden.ToString(),
|
||||||
["hasFolded"] = pagingParameters.HasFolded.ToString(),
|
["hasFolded"] = paging.HasFolded.ToString(),
|
||||||
["countryCode"] = pagingParameters.CountryCode
|
["countryCode"] = paging.CountryCode
|
||||||
};
|
};
|
||||||
|
|
||||||
var response = await _client.GetAsync(QueryHelpers.AddQueryString($"{_api.OfficeCustomers}", queryString));
|
var response = await _client.GetAsync(QueryHelpers.AddQueryString($"{_api.OfficeCustomers}", queryString));
|
||||||
|
@ -92,20 +91,20 @@ public class CustomerOfficeHttpRepository : ICustomerOfficeHttpRepository
|
||||||
/// Get customers paged for given sales rep
|
/// Get customers paged for given sales rep
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="salesRepId"></param>
|
/// <param name="salesRepId"></param>
|
||||||
/// <param name="pagingParameters"></param>
|
/// <param name="paging"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public async Task<PagingResponse<CompanyDto>> GetCompaniesPagedSalesRep(string salesRepId, CustomerPaging pagingParameters)
|
public async Task<PagingResponse<CompanyDto>> GetCompaniesPagedSalesRep(string salesRepId, CustomerPaging paging)
|
||||||
{
|
{
|
||||||
var queryString = new Dictionary<string, string>
|
var queryString = new Dictionary<string, string>
|
||||||
{
|
{
|
||||||
["pageNumber"] = pagingParameters.PageNumber.ToString(),
|
["pageNumber"] = paging.PageNumber.ToString(),
|
||||||
["pageSize"] = pagingParameters.PageSize.ToString(),
|
["pageSize"] = paging.PageSize.ToString(),
|
||||||
["searchTerm"] = pagingParameters.SearchTerm,
|
["searchTerm"] = paging.SearchTerm,
|
||||||
["searchColumn"] = pagingParameters.SearchColumn,
|
["searchColumn"] = paging.SearchColumn,
|
||||||
["orderBy"] = pagingParameters.OrderBy,
|
["orderBy"] = paging.OrderBy,
|
||||||
["isHidden"] = pagingParameters.IsHidden.ToString(),
|
["isHidden"] = paging.IsHidden.ToString(),
|
||||||
["hasFolded"] = pagingParameters.HasFolded.ToString(),
|
["hasFolded"] = paging.HasFolded.ToString(),
|
||||||
["countryCode"] = pagingParameters.CountryCode
|
["countryCode"] = paging.CountryCode
|
||||||
};
|
};
|
||||||
|
|
||||||
var response = await _client.GetAsync(QueryHelpers.AddQueryString($"{_api.OfficeCustomers}/salesRep/{salesRepId}/", queryString));
|
var response = await _client.GetAsync(QueryHelpers.AddQueryString($"{_api.OfficeCustomers}/salesRep/{salesRepId}/", queryString));
|
70
Wonky.Client/HttpRepository/CountryReportRepository.cs
Normal file
70
Wonky.Client/HttpRepository/CountryReportRepository.cs
Normal file
|
@ -0,0 +1,70 @@
|
||||||
|
// 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 CountryReportRepository : ICountryReportRepository
|
||||||
|
{
|
||||||
|
private readonly JsonSerializerOptions _options = new JsonSerializerOptions
|
||||||
|
{
|
||||||
|
PropertyNameCaseInsensitive = true
|
||||||
|
};
|
||||||
|
|
||||||
|
private readonly NavigationManager _navigation;
|
||||||
|
private ILogger<CountryReportRepository> _logger;
|
||||||
|
private readonly HttpClient _client;
|
||||||
|
private readonly ApiConfig _apiConfig;
|
||||||
|
|
||||||
|
public CountryReportRepository(HttpClient client,
|
||||||
|
ILogger<CountryReportRepository> logger,
|
||||||
|
NavigationManager navigation, IOptions<ApiConfig> configuration)
|
||||||
|
{
|
||||||
|
_client = client;
|
||||||
|
_logger = logger;
|
||||||
|
_navigation = navigation;
|
||||||
|
_apiConfig = configuration.Value;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Get Reports for given userId (Office)
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="userId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<List<SalesReportListView>> GetCountryReports(string userId)
|
||||||
|
{
|
||||||
|
return await _client.GetFromJsonAsync<List<SalesReportListView>>($"{_apiConfig.OfficeReports}/{userId}");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Get Report for given userId and workDate (Office)
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="userId"></param>
|
||||||
|
/// <param name="workDate"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<ReportView> GetCountryReport(string userId, string workDate)
|
||||||
|
{
|
||||||
|
return await _client.GetFromJsonAsync<ReportView>($"{_apiConfig.OfficeReports}/{userId}/{workDate}");
|
||||||
|
}
|
||||||
|
}
|
|
@ -25,7 +25,7 @@ using Wonky.Entity.Views;
|
||||||
|
|
||||||
namespace Wonky.Client.HttpRepository;
|
namespace Wonky.Client.HttpRepository;
|
||||||
|
|
||||||
public class CustomerHistoryCrmHttpRepository : ICustomerHistoryCrmHttpRepository
|
public class CustomerHistoryRepository : ICustomerHistoryRepository
|
||||||
{
|
{
|
||||||
private readonly JsonSerializerOptions _options = new JsonSerializerOptions
|
private readonly JsonSerializerOptions _options = new JsonSerializerOptions
|
||||||
{
|
{
|
||||||
|
@ -33,12 +33,12 @@ public class CustomerHistoryCrmHttpRepository : ICustomerHistoryCrmHttpRepositor
|
||||||
};
|
};
|
||||||
|
|
||||||
private readonly NavigationManager _navigation;
|
private readonly NavigationManager _navigation;
|
||||||
private ILogger<CustomerHistoryCrmHttpRepository> _logger;
|
private ILogger<CustomerHistoryRepository> _logger;
|
||||||
private readonly HttpClient _client;
|
private readonly HttpClient _client;
|
||||||
private readonly ApiConfig _api;
|
private readonly ApiConfig _api;
|
||||||
|
|
||||||
public CustomerHistoryCrmHttpRepository(
|
public CustomerHistoryRepository(
|
||||||
HttpClient client, ILogger<CustomerHistoryCrmHttpRepository> logger,
|
HttpClient client, ILogger<CustomerHistoryRepository> logger,
|
||||||
NavigationManager navigation, IOptions<ApiConfig> configuration)
|
NavigationManager navigation, IOptions<ApiConfig> configuration)
|
||||||
{
|
{
|
||||||
_client = client;
|
_client = client;
|
|
@ -10,7 +10,7 @@ using Wonky.Entity.Views;
|
||||||
|
|
||||||
namespace Wonky.Client.HttpRepository;
|
namespace Wonky.Client.HttpRepository;
|
||||||
|
|
||||||
public class SendMailService : ISendMailService
|
public class SystemSendMailService : ISystemSendMailService
|
||||||
{
|
{
|
||||||
private readonly JsonSerializerOptions? _options = new JsonSerializerOptions
|
private readonly JsonSerializerOptions? _options = new JsonSerializerOptions
|
||||||
{
|
{
|
||||||
|
@ -18,11 +18,11 @@ public class SendMailService : ISendMailService
|
||||||
};
|
};
|
||||||
|
|
||||||
private readonly NavigationManager _navigation;
|
private readonly NavigationManager _navigation;
|
||||||
private ILogger<SendMailService> _logger;
|
private ILogger<SystemSendMailService> _logger;
|
||||||
private readonly HttpClient _client;
|
private readonly HttpClient _client;
|
||||||
private readonly ApiConfig _api;
|
private readonly ApiConfig _api;
|
||||||
|
|
||||||
public SendMailService(HttpClient client, ILogger<SendMailService> logger,
|
public SystemSendMailService(HttpClient client, ILogger<SystemSendMailService> logger,
|
||||||
NavigationManager navigation, IOptions<ApiConfig> configuration)
|
NavigationManager navigation, IOptions<ApiConfig> configuration)
|
||||||
{
|
{
|
||||||
_client = client;
|
_client = client;
|
|
@ -25,7 +25,7 @@ using Wonky.Entity.Views;
|
||||||
|
|
||||||
namespace Wonky.Client.HttpRepository;
|
namespace Wonky.Client.HttpRepository;
|
||||||
|
|
||||||
public class UserHttpRepository : IUserHttpRepository
|
public class SystemUserRepository : ISystemUserRepository
|
||||||
{
|
{
|
||||||
private readonly JsonSerializerOptions? _options = new JsonSerializerOptions
|
private readonly JsonSerializerOptions? _options = new JsonSerializerOptions
|
||||||
{
|
{
|
||||||
|
@ -33,11 +33,11 @@ public class UserHttpRepository : IUserHttpRepository
|
||||||
};
|
};
|
||||||
|
|
||||||
private readonly NavigationManager _navigation;
|
private readonly NavigationManager _navigation;
|
||||||
private ILogger<UserHttpRepository> _logger;
|
private ILogger<SystemUserRepository> _logger;
|
||||||
private readonly HttpClient _client;
|
private readonly HttpClient _client;
|
||||||
private readonly ApiConfig _api;
|
private readonly ApiConfig _api;
|
||||||
|
|
||||||
public UserHttpRepository(HttpClient client, ILogger<UserHttpRepository> logger,
|
public SystemUserRepository(HttpClient client, ILogger<SystemUserRepository> logger,
|
||||||
NavigationManager navigation, IOptions<ApiConfig> configuration)
|
NavigationManager navigation, IOptions<ApiConfig> configuration)
|
||||||
{
|
{
|
||||||
_client = client;
|
_client = client;
|
|
@ -23,7 +23,7 @@ using Wonky.Entity.Views;
|
||||||
|
|
||||||
namespace Wonky.Client.HttpRepository;
|
namespace Wonky.Client.HttpRepository;
|
||||||
|
|
||||||
public class WarehouseHttpRepository : IWarehouseHttpRepository
|
public class WarehouseRepository : IWarehouseRepository
|
||||||
{
|
{
|
||||||
private readonly JsonSerializerOptions? _options = new JsonSerializerOptions
|
private readonly JsonSerializerOptions? _options = new JsonSerializerOptions
|
||||||
{
|
{
|
||||||
|
@ -31,12 +31,12 @@ public class WarehouseHttpRepository : IWarehouseHttpRepository
|
||||||
};
|
};
|
||||||
|
|
||||||
private readonly NavigationManager _navigation;
|
private readonly NavigationManager _navigation;
|
||||||
private ILogger<WarehouseHttpRepository> _logger;
|
private ILogger<WarehouseRepository> _logger;
|
||||||
private readonly HttpClient _client;
|
private readonly HttpClient _client;
|
||||||
private readonly ApiConfig _api;
|
private readonly ApiConfig _api;
|
||||||
|
|
||||||
public WarehouseHttpRepository(HttpClient client,
|
public WarehouseRepository(HttpClient client,
|
||||||
ILogger<WarehouseHttpRepository> logger,
|
ILogger<WarehouseRepository> logger,
|
||||||
NavigationManager navigation,
|
NavigationManager navigation,
|
||||||
IOptions<ApiConfig> configuration)
|
IOptions<ApiConfig> configuration)
|
||||||
{
|
{
|
|
@ -24,7 +24,7 @@ using Wonky.Entity.Views;
|
||||||
|
|
||||||
namespace Wonky.Client.HttpRepository;
|
namespace Wonky.Client.HttpRepository;
|
||||||
|
|
||||||
public class WorkplaceCrmHttpRepository : IWorkplaceCrmHttpRepository
|
public class WorkplaceRepository : IWorkplaceRepository
|
||||||
{
|
{
|
||||||
private readonly JsonSerializerOptions? _options = new JsonSerializerOptions
|
private readonly JsonSerializerOptions? _options = new JsonSerializerOptions
|
||||||
{
|
{
|
||||||
|
@ -32,12 +32,12 @@ public class WorkplaceCrmHttpRepository : IWorkplaceCrmHttpRepository
|
||||||
};
|
};
|
||||||
|
|
||||||
private readonly NavigationManager _navigation;
|
private readonly NavigationManager _navigation;
|
||||||
private ILogger<WorkplaceCrmHttpRepository> _logger;
|
private ILogger<WorkplaceRepository> _logger;
|
||||||
private readonly HttpClient _client;
|
private readonly HttpClient _client;
|
||||||
private readonly ApiConfig _api;
|
private readonly ApiConfig _api;
|
||||||
|
|
||||||
public WorkplaceCrmHttpRepository(HttpClient client,
|
public WorkplaceRepository(HttpClient client,
|
||||||
ILogger<WorkplaceCrmHttpRepository> logger,
|
ILogger<WorkplaceRepository> logger,
|
||||||
NavigationManager navigation,
|
NavigationManager navigation,
|
||||||
IOptions<ApiConfig> configuration)
|
IOptions<ApiConfig> configuration)
|
||||||
{
|
{
|
|
@ -24,7 +24,7 @@
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
<h3>Rapport Arkiv - @UserInfo.FirstName @UserInfo.LastName</h3>
|
<h3>Rapport Arkiv - @UserInfo.FirstName @UserInfo.LastName</h3>
|
||||||
</div>
|
</div>
|
||||||
<ReportTableOfficeComponent OnShowReport="ShowThisReport" CountryCode="@CountryCode" UserId="@UserId" ReportList="@ActivityReports" />
|
<ReportListOfficeComponent OnShowReport="ShowThisReport" CountryCode="@CountryCode" UserId="@UserId" ReportList="@ActivityReports" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -23,13 +23,13 @@ using Wonky.Entity.Views;
|
||||||
|
|
||||||
namespace Wonky.Client.Pages;
|
namespace Wonky.Client.Pages;
|
||||||
|
|
||||||
public partial class ReportListOfficePage : IDisposable
|
public partial class AdminReportListPage : IDisposable
|
||||||
{
|
{
|
||||||
[Parameter] public string UserId { get; set; } = "";
|
[Parameter] public string UserId { get; set; } = "";
|
||||||
[Parameter] public string CountryCode { get; set; } = "";
|
[Parameter] public string CountryCode { get; set; } = "";
|
||||||
[Inject] public IReportHttpRepository ReportRepo { get; set; }
|
[Inject] public ICountryReportRepository ReportRepo { get; set; }
|
||||||
[Inject] public HttpInterceptorService Interceptor { get; set; }
|
[Inject] public HttpInterceptorService Interceptor { get; set; }
|
||||||
[Inject] public IUserHttpRepository UserRepo { get; set; }
|
[Inject] public ISystemUserRepository SystemUserRepo { get; set; }
|
||||||
[Inject] public NavigationManager Navigator { get; set; }
|
[Inject] public NavigationManager Navigator { get; set; }
|
||||||
private List<SalesReportListView> ActivityReports { get; set; } = new();
|
private List<SalesReportListView> ActivityReports { get; set; } = new();
|
||||||
private bool Working { get; set; } = true;
|
private bool Working { get; set; } = true;
|
||||||
|
@ -43,12 +43,19 @@ public partial class ReportListOfficePage : IDisposable
|
||||||
Interceptor.RegisterEvent();
|
Interceptor.RegisterEvent();
|
||||||
Interceptor.RegisterBeforeSendEvent();
|
Interceptor.RegisterBeforeSendEvent();
|
||||||
|
|
||||||
UserInfo = await UserRepo.GetAdvisorInfo(UserId);
|
UserInfo = await SystemUserRepo.GetAdvisorInfo(UserId);
|
||||||
|
while (string.IsNullOrWhiteSpace(UserInfo.UserId))
|
||||||
|
{
|
||||||
|
await Task.Delay(500);
|
||||||
|
}
|
||||||
|
|
||||||
var reports = await ReportRepo.GetCountryReports(UserId);
|
var reports = await ReportRepo.GetCountryReports(UserId);
|
||||||
if (reports.Any())
|
if (reports.Any())
|
||||||
ActivityReports = reports.OrderByDescending(x => x.ReportDate).ToList();
|
ActivityReports = reports.OrderByDescending(x => x.ReportDate).ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void OnInitialized()
|
||||||
|
{
|
||||||
Working = false;
|
Working = false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,7 +23,7 @@ using Wonky.Entity.Views;
|
||||||
|
|
||||||
namespace Wonky.Client.Pages;
|
namespace Wonky.Client.Pages;
|
||||||
|
|
||||||
public partial class ReportViewOfficePage : IDisposable
|
public partial class AdminReportViewPage : IDisposable
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Country code from url parameter
|
/// Country code from url parameter
|
||||||
|
@ -53,7 +53,7 @@ public partial class ReportViewOfficePage : IDisposable
|
||||||
/// Injected administrative report http repo
|
/// Injected administrative report http repo
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Inject]
|
[Inject]
|
||||||
public IReportHttpRepository ReportRepo { get; set; }
|
public ICountryReportRepository ReportRepo { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Navigation Manager
|
/// Navigation Manager
|
||||||
|
@ -65,7 +65,7 @@ public partial class ReportViewOfficePage : IDisposable
|
||||||
/// Logger service
|
/// Logger service
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Inject]
|
[Inject]
|
||||||
public ILogger<ReportViewOfficePage> Logger { get; set; }
|
public ILogger<AdminReportViewPage> Logger { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Storage service
|
/// Storage service
|
|
@ -17,7 +17,7 @@
|
||||||
|
|
||||||
@using Wonky.Client.Components
|
@using Wonky.Client.Components
|
||||||
@using Microsoft.AspNetCore.Authorization
|
@using Microsoft.AspNetCore.Authorization
|
||||||
@attribute [Authorize(Roles = "Admin,Office")]
|
@attribute [Authorize(Roles = "Admin")]
|
||||||
@page "/office/users/advisors/{CountryCode}"
|
@page "/office/users/advisors/{CountryCode}"
|
||||||
|
|
||||||
<div class="card">
|
<div class="card">
|
|
@ -5,10 +5,10 @@ using Wonky.Entity.Views;
|
||||||
|
|
||||||
namespace Wonky.Client.Pages;
|
namespace Wonky.Client.Pages;
|
||||||
|
|
||||||
public partial class CountrySalesRepListPage
|
public partial class AdminSalesRepListPage
|
||||||
{
|
{
|
||||||
[Inject] public HttpInterceptorService Interceptor { get; set; }
|
[Inject] public HttpInterceptorService Interceptor { get; set; }
|
||||||
[Inject] public IUserHttpRepository UserRepo { get; set; }
|
[Inject] public ISystemUserRepository SystemUserRepo { get; set; }
|
||||||
[Parameter] public string CountryCode { get; set; } = "";
|
[Parameter] public string CountryCode { get; set; } = "";
|
||||||
private List<UserListAdminView> SalesReps { get; set; } = new();
|
private List<UserListAdminView> SalesReps { get; set; } = new();
|
||||||
private bool Working { get; set; } = true;
|
private bool Working { get; set; } = true;
|
||||||
|
@ -17,7 +17,7 @@ public partial class CountrySalesRepListPage
|
||||||
{
|
{
|
||||||
Interceptor.RegisterEvent();
|
Interceptor.RegisterEvent();
|
||||||
Interceptor.RegisterBeforeSendEvent();
|
Interceptor.RegisterBeforeSendEvent();
|
||||||
var AdvisorList = await UserRepo.GetAdvisors();
|
var AdvisorList = await SystemUserRepo.GetAdvisors();
|
||||||
SalesReps = AdvisorList
|
SalesReps = AdvisorList
|
||||||
.Where(x => x.CountryCode.ToLower() == CountryCode && Convert.ToInt32(x.SalesRep) < 100)
|
.Where(x => x.CountryCode.ToLower() == CountryCode && Convert.ToInt32(x.SalesRep) < 100)
|
||||||
.ToList();
|
.ToList();
|
|
@ -15,11 +15,10 @@
|
||||||
//
|
//
|
||||||
*@
|
*@
|
||||||
|
|
||||||
@page "/price-catalog"
|
|
||||||
@using Wonky.Client.Components
|
@using Wonky.Client.Components
|
||||||
@using Microsoft.AspNetCore.Authorization
|
@using Microsoft.AspNetCore.Authorization
|
||||||
|
@attribute [Authorize(Roles = "Advisor")]
|
||||||
@attribute [Authorize(Roles = "Advisor,Admin,Office")]
|
@page "/price-catalog"
|
||||||
|
|
||||||
<div class="sticky-top bg-dark rounded-2 px-3">
|
<div class="sticky-top bg-dark rounded-2 px-3">
|
||||||
<div class="row g-3 mb-3">
|
<div class="row g-3 mb-3">
|
||||||
|
@ -46,7 +45,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<CatalogTableComponent ItemList="Items"/>
|
<CatalogListComponent ItemList="Items"/>
|
||||||
@if (Working)
|
@if (Working)
|
||||||
{
|
{
|
||||||
<WorkingThreeDots />
|
<WorkingThreeDots />
|
|
@ -29,15 +29,15 @@ using Wonky.Entity.Views;
|
||||||
|
|
||||||
namespace Wonky.Client.Pages;
|
namespace Wonky.Client.Pages;
|
||||||
|
|
||||||
public partial class CatalogPage : IDisposable
|
public partial class AdvisorCatalogPage : IDisposable
|
||||||
{
|
{
|
||||||
[Inject] public ILocalStorageService Storage { get; set; }
|
[Inject] public ILocalStorageService Storage { get; set; }
|
||||||
[Inject] public ICatalogCrmHttpRepository ItemRepo { get; set; }
|
[Inject] public IAdvisorCatalogRepository ItemRepo { get; set; }
|
||||||
[Inject] public HttpInterceptorService Interceptor { get; set; }
|
[Inject] public HttpInterceptorService Interceptor { get; set; }
|
||||||
[Inject] public UserProfileService ProfileService { get; set; }
|
[Inject] public UserProfileService ProfileService { get; set; }
|
||||||
private List<SalesItemView> Items { get; set; } = new();
|
private List<SalesItemView> Items { get; set; } = new();
|
||||||
private MetaData MetaInfo { get; set; } = new();
|
private MetaData MetaInfo { get; set; } = new();
|
||||||
private CatalogPagingParams PageParams = new();
|
private CatalogPaging _page = new();
|
||||||
private UserPref Prefs = new();
|
private UserPref Prefs = new();
|
||||||
private UserInfoView UserInfo { get; set; } = new();
|
private UserInfoView UserInfo { get; set; } = new();
|
||||||
private bool Working { get; set; } = true;
|
private bool Working { get; set; } = true;
|
||||||
|
@ -47,11 +47,11 @@ public partial class CatalogPage : IDisposable
|
||||||
Prefs = await ProfileService.GetPreferences();
|
Prefs = await ProfileService.GetPreferences();
|
||||||
UserInfo = await Storage.GetItemAsync<UserInfoView>("_xu");
|
UserInfo = await Storage.GetItemAsync<UserInfoView>("_xu");
|
||||||
|
|
||||||
PageParams.CountryCode = UserInfo.CountryCode;
|
_page.CountryCode = UserInfo.CountryCode;
|
||||||
|
|
||||||
PageParams.OrderBy = Prefs.ItemSort;
|
_page.OrderBy = Prefs.ItemSort;
|
||||||
PageParams.SearchColumn = Prefs.ItemSearch;
|
_page.SearchColumn = Prefs.ItemSearch;
|
||||||
PageParams.PageSize = Convert.ToInt32(Prefs.PageSize);
|
_page.PageSize = Convert.ToInt32(Prefs.PageSize);
|
||||||
|
|
||||||
Interceptor.RegisterEvent();
|
Interceptor.RegisterEvent();
|
||||||
Interceptor.RegisterBeforeSendEvent();
|
Interceptor.RegisterBeforeSendEvent();
|
||||||
|
@ -62,53 +62,53 @@ public partial class CatalogPage : IDisposable
|
||||||
private async Task SetSearchPhrase(string searchTerm)
|
private async Task SetSearchPhrase(string searchTerm)
|
||||||
{
|
{
|
||||||
Items = new List<SalesItemView>();
|
Items = new List<SalesItemView>();
|
||||||
PageParams.PageNumber = 1;
|
_page.PageNumber = 1;
|
||||||
PageParams.SearchTerm = searchTerm;
|
_page.SearchTerm = searchTerm;
|
||||||
await FetchSalesItems();
|
await FetchSalesItems();
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task SetPageSize(string pageSize)
|
private async Task SetPageSize(string pageSize)
|
||||||
{
|
{
|
||||||
Items = new List<SalesItemView>();
|
Items = new List<SalesItemView>();
|
||||||
PageParams.PageSize = Convert.ToInt32(pageSize);
|
_page.PageSize = Convert.ToInt32(pageSize);
|
||||||
PageParams.PageNumber = 1;
|
_page.PageNumber = 1;
|
||||||
await FetchSalesItems();
|
await FetchSalesItems();
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task SetSearchCol(string columnName)
|
private async Task SetSearchCol(string columnName)
|
||||||
{
|
{
|
||||||
Items = new List<SalesItemView>();
|
Items = new List<SalesItemView>();
|
||||||
PageParams.PageNumber = 1;
|
_page.PageNumber = 1;
|
||||||
PageParams.SearchColumn = columnName;
|
_page.SearchColumn = columnName;
|
||||||
await FetchSalesItems();
|
await FetchSalesItems();
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task SetSortCol(string orderBy)
|
private async Task SetSortCol(string orderBy)
|
||||||
{
|
{
|
||||||
Items = new List<SalesItemView>();
|
Items = new List<SalesItemView>();
|
||||||
PageParams.OrderBy = orderBy;
|
_page.OrderBy = orderBy;
|
||||||
await FetchSalesItems();
|
await FetchSalesItems();
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task SetSelectedPage(int page)
|
private async Task SetSelectedPage(int page)
|
||||||
{
|
{
|
||||||
Items = new List<SalesItemView>();
|
Items = new List<SalesItemView>();
|
||||||
PageParams.PageNumber = page;
|
_page.PageNumber = page;
|
||||||
await FetchSalesItems();
|
await FetchSalesItems();
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task SetGroupCol(string groupFilter)
|
private async Task SetGroupCol(string groupFilter)
|
||||||
{
|
{
|
||||||
Items = new List<SalesItemView>();
|
Items = new List<SalesItemView>();
|
||||||
PageParams.PageNumber = 1;
|
_page.PageNumber = 1;
|
||||||
PageParams.SelectGroup = groupFilter;
|
_page.SelectGroup = groupFilter;
|
||||||
await FetchSalesItems();
|
await FetchSalesItems();
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task FetchSalesItems()
|
private async Task FetchSalesItems()
|
||||||
{
|
{
|
||||||
Working = true;
|
Working = true;
|
||||||
var pagingResponse = await ItemRepo.GetSalesItemsPaged(PageParams);
|
var pagingResponse = await ItemRepo.GetSalesItemsPaged(_page);
|
||||||
Working = false;
|
Working = false;
|
||||||
Items = pagingResponse.Items!;
|
Items = pagingResponse.Items!;
|
||||||
MetaInfo = pagingResponse.MetaData;
|
MetaInfo = pagingResponse.MetaData;
|
|
@ -15,10 +15,10 @@
|
||||||
//
|
//
|
||||||
*@
|
*@
|
||||||
|
|
||||||
@page "/companies/{CompanyId}/activities/new"
|
|
||||||
@using Microsoft.AspNetCore.Authorization
|
@using Microsoft.AspNetCore.Authorization
|
||||||
@attribute [Authorize(Roles = "Advisor")]
|
|
||||||
@using Wonky.Client.Components
|
@using Wonky.Client.Components
|
||||||
|
@attribute [Authorize(Roles = "Advisor")]
|
||||||
|
@page "/companies/{CompanyId}/activities/new"
|
||||||
|
|
||||||
<div class="row bg-dark text-white rounded-2 mb-2 py-2 align-items-center">
|
<div class="row bg-dark text-white rounded-2 mb-2 py-2 align-items-center">
|
||||||
<div class="col">
|
<div class="col">
|
||||||
|
@ -40,7 +40,12 @@
|
||||||
|
|
||||||
@if (ReportClosed)
|
@if (ReportClosed)
|
||||||
{
|
{
|
||||||
<h5>Der kan ikke oprettes besøg når der findes rapport for @SelectedDate.ToShortDateString()</h5>
|
<div class="row">
|
||||||
|
<div class="col">
|
||||||
|
<h3>Der kan ikke oprettes besøg når der findes rapport for @SelectedDate.ToShortDateString()</h3>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
|
@ -31,23 +31,23 @@ using Wonky.Entity.Views;
|
||||||
|
|
||||||
namespace Wonky.Client.Pages;
|
namespace Wonky.Client.Pages;
|
||||||
|
|
||||||
public partial class ActivityCreateCrmPage : IDisposable
|
public partial class AdvisorCreateActivityPage : IDisposable
|
||||||
{
|
{
|
||||||
// Parameters
|
// Parameters
|
||||||
[CascadingParameter] DraftStateProvider DraftProvider { get; set; }
|
[CascadingParameter] DraftStateProvider DraftProvider { get; set; }
|
||||||
[Parameter] public string CompanyId { get; set; }
|
[Parameter] public string CompanyId { get; set; }
|
||||||
// Services
|
// Services
|
||||||
[Inject] public ILogger<ActivityCreateCrmPage> Logger { get; set; }
|
[Inject] public ILogger<AdvisorCreateActivityPage> Logger { get; set; }
|
||||||
[Inject] public HttpInterceptorService Interceptor { get; set; }
|
[Inject] public HttpInterceptorService Interceptor { get; set; }
|
||||||
[Inject] public UserProfileService Profiles { get; set; }
|
[Inject] public UserProfileService Profiles { get; set; }
|
||||||
[Inject] public IToastService Toast { get; set; }
|
[Inject] public IToastService Toast { get; set; }
|
||||||
[Inject] public NavigationManager Navigator { get; set; }
|
[Inject] public NavigationManager Navigator { get; set; }
|
||||||
[Inject] public ILocalStorageService Storage { get; set; }
|
[Inject] public ILocalStorageService Storage { get; set; }
|
||||||
[Inject] public ICatalogCrmHttpRepository CatalogCrm { get; set; }
|
[Inject] public IAdvisorCatalogRepository AdvisorCatalogCrm { get; set; }
|
||||||
[Inject] public ICustomerCrmHttpRepository CompanyRepo { get; set; }
|
[Inject] public IAdvisorCustomerRepository CompanyRepo { get; set; }
|
||||||
[Inject] public IActivityCrmHttpRepository ActivityRepo { get; set; }
|
[Inject] public IAdvisorActivityRepository AdvisorActivityRepo { get; set; }
|
||||||
[Inject] public IReportHttpRepository ReportRepo { get; set; }
|
[Inject] public IAdvisorReportRepository AdvisorReportRepo { get; set; }
|
||||||
[Inject] public ICustomerHistoryCrmHttpRepository HistoryRepo { get; set; }
|
[Inject] public ICustomerHistoryRepository HistoryRepo { get; set; }
|
||||||
// variables
|
// variables
|
||||||
private readonly JsonSerializerOptions? _options = new() {PropertyNameCaseInsensitive = true};
|
private readonly JsonSerializerOptions? _options = new() {PropertyNameCaseInsensitive = true};
|
||||||
private SalesItemView SelectedItem { get; set; } = new();
|
private SalesItemView SelectedItem { get; set; } = new();
|
||||||
|
@ -136,7 +136,7 @@ public partial class ActivityCreateCrmPage : IDisposable
|
||||||
// Initialize date variable
|
// Initialize date variable
|
||||||
SelectedDate = string.IsNullOrWhiteSpace(UserPrefs.WorkDate) ? DateTime.Now : DateTime.Parse(UserPrefs.WorkDate);
|
SelectedDate = string.IsNullOrWhiteSpace(UserPrefs.WorkDate) ? DateTime.Now : DateTime.Parse(UserPrefs.WorkDate);
|
||||||
// raise flag if report is closed
|
// raise flag if report is closed
|
||||||
ReportClosed = await ReportRepo.ReportExist($"{SelectedDate:yyyy-MM-dd}");
|
ReportClosed = await AdvisorReportRepo.ReportExist($"{SelectedDate:yyyy-MM-dd}");
|
||||||
// Ask for confirmation of date
|
// Ask for confirmation of date
|
||||||
Logger.LogDebug("Preferences.DateConfirmed => {}", UserPrefs.DateConfirmed);
|
Logger.LogDebug("Preferences.DateConfirmed => {}", UserPrefs.DateConfirmed);
|
||||||
if (!UserPrefs.DateConfirmed)
|
if (!UserPrefs.DateConfirmed)
|
||||||
|
@ -236,7 +236,7 @@ public partial class ActivityCreateCrmPage : IDisposable
|
||||||
/// <param name="workDate"></param>
|
/// <param name="workDate"></param>
|
||||||
private async Task WorkDateComponentCallback(string workDate)
|
private async Task WorkDateComponentCallback(string workDate)
|
||||||
{
|
{
|
||||||
ReportClosed = await ReportRepo.ReportExist(workDate);
|
ReportClosed = await AdvisorReportRepo.ReportExist(workDate);
|
||||||
SelectedDate = DateTime.Parse(workDate);
|
SelectedDate = DateTime.Parse(workDate);
|
||||||
Activity.ActivityDate = workDate;
|
Activity.ActivityDate = workDate;
|
||||||
}
|
}
|
||||||
|
@ -258,7 +258,7 @@ public partial class ActivityCreateCrmPage : IDisposable
|
||||||
// get selected item
|
// get selected item
|
||||||
if (string.IsNullOrWhiteSpace(sku.ItemId))
|
if (string.IsNullOrWhiteSpace(sku.ItemId))
|
||||||
return;
|
return;
|
||||||
SelectedItem = await CatalogCrm.GetSalesItemId(sku.ItemId);
|
SelectedItem = await AdvisorCatalogCrm.GetSalesItemId(sku.ItemId);
|
||||||
ShowItem = true;
|
ShowItem = true;
|
||||||
Price = sku.Rate;
|
Price = sku.Rate;
|
||||||
Quantity = sku.Quantity;
|
Quantity = sku.Quantity;
|
||||||
|
@ -361,7 +361,7 @@ public partial class ActivityCreateCrmPage : IDisposable
|
||||||
// debug logging
|
// debug logging
|
||||||
Logger.LogDebug("CrmNewActivityPage => \n {}", JsonSerializer.Serialize(Activity));
|
Logger.LogDebug("CrmNewActivityPage => \n {}", JsonSerializer.Serialize(Activity));
|
||||||
// post to api
|
// post to api
|
||||||
var result = await ActivityRepo.CreateActivity(Activity);
|
var result = await AdvisorActivityRepo.CreateActivity(Activity);
|
||||||
// debug logging
|
// debug logging
|
||||||
Logger.LogDebug("ApiResponseView => \n {}", JsonSerializer.Serialize(result));
|
Logger.LogDebug("ApiResponseView => \n {}", JsonSerializer.Serialize(result));
|
||||||
// show result message
|
// show result message
|
|
@ -37,13 +37,13 @@ using Wonky.Entity.Views;
|
||||||
|
|
||||||
namespace Wonky.Client.Pages
|
namespace Wonky.Client.Pages
|
||||||
{
|
{
|
||||||
public partial class CustomerCreateCrmPage : IDisposable
|
public partial class AdvisorCreateCustomerPage : IDisposable
|
||||||
{
|
{
|
||||||
[Inject] public IToastService Toaster { get; set; }
|
[Inject] public IToastService Toaster { get; set; }
|
||||||
[Inject] public ILogger<CustomerCreateCrmPage> Logger { get; set; }
|
[Inject] public ILogger<AdvisorCreateCustomerPage> Logger { get; set; }
|
||||||
[Inject] public ILocalStorageService Storage { get; set; }
|
[Inject] public ILocalStorageService Storage { get; set; }
|
||||||
[Inject] public NavigationManager Navigator { get; set; }
|
[Inject] public NavigationManager Navigator { get; set; }
|
||||||
[Inject] public ICustomerCrmHttpRepository CompanyRepo { get; set; }
|
[Inject] public IAdvisorCustomerRepository CompanyRepo { get; set; }
|
||||||
[Inject] public HttpInterceptorService Interceptor { get; set; }
|
[Inject] public HttpInterceptorService Interceptor { get; set; }
|
||||||
[Inject] public VatInfoLookupService VatService { get; set; }
|
[Inject] public VatInfoLookupService VatService { get; set; }
|
||||||
private EditContext CompanyContext { get; set; }
|
private EditContext CompanyContext { get; set; }
|
|
@ -17,8 +17,8 @@
|
||||||
|
|
||||||
@using Wonky.Client.Components
|
@using Wonky.Client.Components
|
||||||
@using Microsoft.AspNetCore.Authorization
|
@using Microsoft.AspNetCore.Authorization
|
||||||
@page "/companies/{CompanyId}/activities"
|
|
||||||
@attribute [Authorize(Roles = "Advisor")]
|
@attribute [Authorize(Roles = "Advisor")]
|
||||||
|
@page "/companies/{CompanyId}/activities"
|
||||||
|
|
||||||
@if (!string.IsNullOrWhiteSpace(Company.Name))
|
@if (!string.IsNullOrWhiteSpace(Company.Name))
|
||||||
{
|
{
|
|
@ -25,12 +25,12 @@ using Wonky.Entity.Views;
|
||||||
|
|
||||||
namespace Wonky.Client.Pages;
|
namespace Wonky.Client.Pages;
|
||||||
|
|
||||||
public partial class ActivityListCustomerPage : IDisposable
|
public partial class AdvisorCustomerActivityListPage : IDisposable
|
||||||
{
|
{
|
||||||
[Parameter] public string CompanyId { get; set; } = "";
|
[Parameter] public string CompanyId { get; set; } = "";
|
||||||
[Inject] public HttpInterceptorService _interceptor { get; set; }
|
[Inject] public HttpInterceptorService _interceptor { get; set; }
|
||||||
[Inject] public IActivityCrmHttpRepository ActivityRepo { get; set; }
|
[Inject] public IAdvisorActivityRepository AdvisorActivityRepo { get; set; }
|
||||||
[Inject] public ICustomerCrmHttpRepository CompanyRepo { get; set; }
|
[Inject] public IAdvisorCustomerRepository CompanyRepo { get; set; }
|
||||||
private List<ReportItemView> Activities { get; set; } = new();
|
private List<ReportItemView> Activities { get; set; } = new();
|
||||||
private CompanyDto Company { get; set; } = new();
|
private CompanyDto Company { get; set; } = new();
|
||||||
private bool Working { get; set; } = true;
|
private bool Working { get; set; } = true;
|
||||||
|
@ -48,7 +48,7 @@ public partial class ActivityListCustomerPage : IDisposable
|
||||||
private async Task GetActivities()
|
private async Task GetActivities()
|
||||||
{
|
{
|
||||||
Working = true;
|
Working = true;
|
||||||
Activities = await ActivityRepo.GetCustomerActivities(CompanyId);
|
Activities = await AdvisorActivityRepo.GetCustomerActivities(CompanyId);
|
||||||
if(Activities.Any())
|
if(Activities.Any())
|
||||||
Activities = Activities.OrderByDescending(x => x.OrderDate).ToList();
|
Activities = Activities.OrderByDescending(x => x.OrderDate).ToList();
|
||||||
Working = false;
|
Working = false;
|
|
@ -19,6 +19,7 @@
|
||||||
@using Microsoft.AspNetCore.Authorization
|
@using Microsoft.AspNetCore.Authorization
|
||||||
@page "/companies/{CompanyId}/h/i"
|
@page "/companies/{CompanyId}/h/i"
|
||||||
@attribute [Authorize(Roles = "Advisor")]
|
@attribute [Authorize(Roles = "Advisor")]
|
||||||
|
|
||||||
<div class="row pt-2 pb-1 rounded-2 bg-dark text-white">
|
<div class="row pt-2 pb-1 rounded-2 bg-dark text-white">
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<h4 class="pt-1">@Company.Name</h4>
|
<h4 class="pt-1">@Company.Name</h4>
|
||||||
|
@ -30,8 +31,10 @@
|
||||||
<a class="btn btn-primary d-block" href="/companies/@Company.CompanyId/activities/new"><i class="bi-arrow-right"></i> Nyt Besøg</a>
|
<a class="btn btn-primary d-block" href="/companies/@Company.CompanyId/activities/new"><i class="bi-arrow-right"></i> Nyt Besøg</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<CustomerProductTableComponent CompanyId="@CompanyId" ProductList="Inventory"/>
|
|
||||||
|
|
||||||
|
<CustomerInventoryListComponent OnReorderSelected="OnReorderCallback" CompanyId="@CompanyId" Inventory="@Inventory" />
|
||||||
|
|
||||||
|
<InventoryReorderModal OnSelected="@OnSelectedItem" CompanyId="@CompanyId" SalesItem="@SalesItem" @ref="ReorderModal"/>
|
||||||
|
|
||||||
@if (Working)
|
@if (Working)
|
||||||
{
|
{
|
|
@ -22,25 +22,38 @@ using Microsoft.AspNetCore.Components;
|
||||||
using Wonky.Client.HttpInterceptors;
|
using Wonky.Client.HttpInterceptors;
|
||||||
using Wonky.Client.HttpInterfaces;
|
using Wonky.Client.HttpInterfaces;
|
||||||
using Wonky.Client.HttpRepository;
|
using Wonky.Client.HttpRepository;
|
||||||
|
using Wonky.Client.Models;
|
||||||
|
using Wonky.Client.Shared;
|
||||||
using Wonky.Entity.DTO;
|
using Wonky.Entity.DTO;
|
||||||
using Wonky.Entity.Views;
|
using Wonky.Entity.Views;
|
||||||
|
|
||||||
namespace Wonky.Client.Pages;
|
namespace Wonky.Client.Pages;
|
||||||
|
|
||||||
public partial class CustomerProductListCrmPage : IDisposable
|
public partial class AdvisorCustomerInventoryListPage : IDisposable
|
||||||
{
|
{
|
||||||
[Parameter] public string CompanyId { get; set; } = "";
|
[Inject] public ICustomerHistoryRepository HistoryRepo { get; set; }
|
||||||
[Inject] public ICustomerHistoryCrmHttpRepository HistoryRepo { get; set; }
|
[Inject] public IAdvisorCustomerRepository CompanyRepo { get; set; }
|
||||||
[Inject] public ICustomerCrmHttpRepository CompanyRepo { get; set; }
|
|
||||||
[Inject] public HttpInterceptorService Interceptor { get; set; }
|
[Inject] public HttpInterceptorService Interceptor { get; set; }
|
||||||
[Inject] public IToastService Toaster { get; set; }
|
[Inject] public IToastService Toaster { get; set; }
|
||||||
[Inject] public ILogger<CustomerProductListCrmPage> Logger { get; set; }
|
[Inject] public ILogger<AdvisorCustomerInventoryListPage> Logger { get; set; }
|
||||||
[Inject] public ILocalStorageService Storage { get; set; }
|
[Inject] public ILocalStorageService Storage { get; set; }
|
||||||
|
[Inject] public IAdvisorCatalogRepository AdvisorCatalogRepo { get; set; }
|
||||||
|
|
||||||
|
[CascadingParameter] public DraftStateProvider DraftStateProvider { get; set; } = new();
|
||||||
|
[Parameter] public string CompanyId { get; set; } = "";
|
||||||
|
|
||||||
private JsonSerializerOptions _options = new JsonSerializerOptions(JsonSerializerDefaults.Web);
|
private JsonSerializerOptions _options = new JsonSerializerOptions(JsonSerializerDefaults.Web);
|
||||||
private CompanyDto Company { get; set; } = new();
|
private CompanyDto Company { get; set; } = new();
|
||||||
private List<ProductInventoryView> Inventory { get; set; } = new();
|
private List<ProductInventoryView> Inventory { get; set; } = new();
|
||||||
private bool Working { get; set; } = true;
|
private bool Working { get; set; } = true;
|
||||||
|
|
||||||
|
private SalesItemView SalesItem { get; set; } = new();
|
||||||
|
private string Price { get; set; } = "0";
|
||||||
|
private string Quantity { get; set; } = "1";
|
||||||
|
private string Sku { get; set; } = "";
|
||||||
|
private InventoryReorderModal ReorderModal { get; set; } = new();
|
||||||
|
private SelectedSku Item { get; set; } = new();
|
||||||
|
|
||||||
protected override async Task OnInitializedAsync()
|
protected override async Task OnInitializedAsync()
|
||||||
{
|
{
|
||||||
Interceptor.RegisterEvent();
|
Interceptor.RegisterEvent();
|
||||||
|
@ -50,7 +63,7 @@ public partial class CustomerProductListCrmPage : IDisposable
|
||||||
|
|
||||||
while (string.IsNullOrWhiteSpace(Company.HistorySync))
|
while (string.IsNullOrWhiteSpace(Company.HistorySync))
|
||||||
{
|
{
|
||||||
await Task.Delay(1000);
|
await Task.Delay(500);
|
||||||
}
|
}
|
||||||
|
|
||||||
var pDate = await Storage.GetItemAsStringAsync($"{Company.CompanyId}-pDate");
|
var pDate = await Storage.GetItemAsStringAsync($"{Company.CompanyId}-pDate");
|
||||||
|
@ -69,6 +82,22 @@ public partial class CustomerProductListCrmPage : IDisposable
|
||||||
Working = false;
|
Working = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async Task OnReorderCallback(string sku)
|
||||||
|
{
|
||||||
|
// fetch item from http repo
|
||||||
|
SalesItem = await AdvisorCatalogRepo.GetSalesItemSku(Company.CountryCode.ToLower(), sku);
|
||||||
|
ReorderModal.Show();
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task OnSelectedItem(DraftItem draftItem)
|
||||||
|
{
|
||||||
|
// add item to order draft
|
||||||
|
DraftStateProvider.Draft.DraftType = "order";
|
||||||
|
DraftStateProvider.Draft.Items.Add(draftItem);
|
||||||
|
// set item checked
|
||||||
|
await DraftStateProvider.SaveChangesAsync();
|
||||||
|
}
|
||||||
|
|
||||||
private async Task<List<ProductInventoryView>> FetchProductInventory()
|
private async Task<List<ProductInventoryView>> FetchProductInventory()
|
||||||
{
|
{
|
||||||
var storage = await Storage.GetItemAsStringAsync($"{Company.CompanyId}-products");
|
var storage = await Storage.GetItemAsStringAsync($"{Company.CompanyId}-products");
|
42
Wonky.Client/Pages/AdvisorCustomerInvoiceListPage.razor
Normal file
42
Wonky.Client/Pages/AdvisorCustomerInvoiceListPage.razor
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
@*
|
||||||
|
// Copyright (C) 2022 FCS Frede's Computer Services.
|
||||||
|
// This program is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Affero General Public License as
|
||||||
|
// published by the Free Software Foundation, either version 3 of the
|
||||||
|
// License, or (at your option) any later version.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Affero General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Affero General Public License
|
||||||
|
// along with this program. If not, see [https://www.gnu.org/licenses/agpl-3.0.en.html]
|
||||||
|
//
|
||||||
|
*@
|
||||||
|
@using Wonky.Client.Components
|
||||||
|
@using Microsoft.AspNetCore.Authorization
|
||||||
|
@page "/companies/{CompanyId}/invoices"
|
||||||
|
@attribute [Authorize(Roles = "Advisor")]
|
||||||
|
|
||||||
|
@if (!string.IsNullOrWhiteSpace(Company.Name))
|
||||||
|
{
|
||||||
|
<div class="row pt-2 pb-1 rounded-2 bg-dark text-white">
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<h4 class="pt-1">@Company.Name</h4>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-3 align-content-end">
|
||||||
|
<a class="btn btn-primary d-block" href="/companies/@Company.CompanyId"><i class="bi-arrow-right"></i> Kundekort</a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-3 align-content-end">
|
||||||
|
<a class="btn btn-primary d-block" href="/companies/@Company.CompanyId/activities/new"><i class="bi-arrow-right"></i> Besøg</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<CustomerInvoiceListComponent OnShowInvoice="CallInvoiceModal" CompanyId="@CompanyId" InvoiceList="@CompanyInvoices.Invoices"/>
|
||||||
|
<InvoiceViewModal CompanyId="@CompanyId" InvoiceId="@InvoiceId" @ref="InvoiceView" />
|
||||||
|
}
|
||||||
|
|
||||||
|
@if (Working)
|
||||||
|
{
|
||||||
|
<WorkingThreeDots />
|
||||||
|
}
|
|
@ -6,23 +6,26 @@ using Blazored.Toast.Services;
|
||||||
using Microsoft.AspNetCore.Components;
|
using Microsoft.AspNetCore.Components;
|
||||||
using Wonky.Client.HttpInterceptors;
|
using Wonky.Client.HttpInterceptors;
|
||||||
using Wonky.Client.HttpInterfaces;
|
using Wonky.Client.HttpInterfaces;
|
||||||
|
using Wonky.Client.Shared;
|
||||||
using Wonky.Entity.DTO;
|
using Wonky.Entity.DTO;
|
||||||
using Wonky.Entity.Views;
|
using Wonky.Entity.Views;
|
||||||
|
|
||||||
namespace Wonky.Client.Pages;
|
namespace Wonky.Client.Pages;
|
||||||
|
|
||||||
public partial class CustomerInvoiceListCrmPage : IDisposable
|
public partial class AdvisorCustomerInvoiceListPage : IDisposable
|
||||||
{
|
{
|
||||||
[Parameter] public string CompanyId { get; set; } = "";
|
[Parameter] public string CompanyId { get; set; } = "";
|
||||||
[Inject] public ICustomerCrmHttpRepository CompanyRepo { get; set; }
|
[Inject] public IAdvisorCustomerRepository CompanyRepo { get; set; }
|
||||||
[Inject] public HttpInterceptorService Interceptor { get; set; }
|
[Inject] public HttpInterceptorService Interceptor { get; set; }
|
||||||
[Inject] public ICustomerHistoryCrmHttpRepository HistoryRepo { get; set; }
|
[Inject] public ICustomerHistoryRepository HistoryRepo { get; set; }
|
||||||
[Inject] public IToastService Toaster { get; set; }
|
[Inject] public IToastService Toaster { get; set; }
|
||||||
[Inject] public ILocalStorageService Storage { get; set; }
|
[Inject] public ILocalStorageService Storage { get; set; }
|
||||||
[Inject] public ILogger<CustomerInvoiceListCrmPage> Logger { get; set; }
|
[Inject] public ILogger<AdvisorCustomerInvoiceListPage> Logger { get; set; }
|
||||||
private InvoiceListView CompanyInvoices { get; set; } = new();
|
private InvoiceListView CompanyInvoices { get; set; } = new();
|
||||||
private CompanyDto Company { get; set; } = new();
|
private CompanyDto Company { get; set; } = new();
|
||||||
private bool Working { get; set; } = true;
|
private bool Working { get; set; } = true;
|
||||||
|
private InvoiceViewModal InvoiceView { get; set; } = new();
|
||||||
|
private string InvoiceId { get; set; } = "";
|
||||||
|
|
||||||
protected override async Task OnInitializedAsync()
|
protected override async Task OnInitializedAsync()
|
||||||
{
|
{
|
||||||
|
@ -52,6 +55,12 @@ public partial class CustomerInvoiceListCrmPage : IDisposable
|
||||||
Working = false;
|
Working = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void CallInvoiceModal(string invoiceId)
|
||||||
|
{
|
||||||
|
InvoiceId = invoiceId;
|
||||||
|
InvoiceView.Show();
|
||||||
|
}
|
||||||
|
|
||||||
private async Task<InvoiceListView> FetchCompanyInvoices()
|
private async Task<InvoiceListView> FetchCompanyInvoices()
|
||||||
{
|
{
|
||||||
var storage = await Storage.GetItemAsStringAsync($"{Company.CompanyId}-invoices");
|
var storage = await Storage.GetItemAsStringAsync($"{Company.CompanyId}-invoices");
|
|
@ -15,10 +15,9 @@
|
||||||
//
|
//
|
||||||
*@
|
*@
|
||||||
|
|
||||||
@page "/companies"
|
|
||||||
@using Wonky.Client.Components
|
@using Wonky.Client.Components
|
||||||
@using Microsoft.AspNetCore.Authorization
|
@using Microsoft.AspNetCore.Authorization
|
||||||
|
@page "/companies"
|
||||||
@attribute [Authorize(Roles = "Advisor")]
|
@attribute [Authorize(Roles = "Advisor")]
|
||||||
|
|
||||||
<div class="sticky-top bg-dark text-light rounded-2 px-3">
|
<div class="sticky-top bg-dark text-light rounded-2 px-3">
|
|
@ -28,11 +28,11 @@ using Wonky.Entity.Views;
|
||||||
|
|
||||||
namespace Wonky.Client.Pages
|
namespace Wonky.Client.Pages
|
||||||
{
|
{
|
||||||
public partial class CustomerListCrmPage : IDisposable
|
public partial class AdvisorCustomerListPage : IDisposable
|
||||||
{
|
{
|
||||||
[Inject] public ILocalStorageService Storage { get; set; }
|
[Inject] public ILocalStorageService Storage { get; set; }
|
||||||
[Inject] public UserProfileService ProfileService { get; set; }
|
[Inject] public UserProfileService ProfileService { get; set; }
|
||||||
[Inject] public ICustomerCrmHttpRepository CompanyRepo { get; set; }
|
[Inject] public IAdvisorCustomerRepository CompanyRepo { get; set; }
|
||||||
[Inject] public HttpInterceptorService Interceptor { get; set; }
|
[Inject] public HttpInterceptorService Interceptor { get; set; }
|
||||||
[Inject] public NavigationManager Navigator { get; set; }
|
[Inject] public NavigationManager Navigator { get; set; }
|
||||||
private List<CompanyDto> Companies { get; set; } = new();
|
private List<CompanyDto> Companies { get; set; } = new();
|
|
@ -17,7 +17,7 @@
|
||||||
|
|
||||||
@using Microsoft.AspNetCore.Authorization
|
@using Microsoft.AspNetCore.Authorization
|
||||||
@using Wonky.Client.Components
|
@using Wonky.Client.Components
|
||||||
@attribute [Authorize(Roles = "Admin,Advisor,Office,Warehouse")]
|
@attribute [Authorize(Roles = "Admin,Advisor,Warehouse")]
|
||||||
@page "/office/customers/{CompanyId}/orders/{OrderId}"
|
@page "/office/customers/{CompanyId}/orders/{OrderId}"
|
||||||
|
|
||||||
<table class="table table-sm table-striped d-print-table">
|
<table class="table table-sm table-striped d-print-table">
|
|
@ -30,16 +30,16 @@ using Wonky.Client.Services;
|
||||||
|
|
||||||
namespace Wonky.Client.Pages;
|
namespace Wonky.Client.Pages;
|
||||||
|
|
||||||
public partial class OfficeOrderViewPage : IDisposable
|
public partial class AdvisorCustomerOrderViewPage : IDisposable
|
||||||
{
|
{
|
||||||
[Parameter] public string CompanyId { get; set; } = "";
|
[Parameter] public string CompanyId { get; set; } = "";
|
||||||
[Parameter] public string OrderId { get; set; } = "";
|
[Parameter] public string OrderId { get; set; } = "";
|
||||||
[Inject] public HttpInterceptorService Interceptor { get; set; }
|
[Inject] public HttpInterceptorService Interceptor { get; set; }
|
||||||
[Inject] public IActivityCrmHttpRepository ActivityRepo { get; set; }
|
[Inject] public IAdvisorActivityRepository AdvisorActivityRepo { get; set; }
|
||||||
[Inject] public ISendMailService MailService { get; set; }
|
[Inject] public ISystemSendMailService MailService { get; set; }
|
||||||
[Inject] public ILocalStorageService Storage { get; set; }
|
[Inject] public ILocalStorageService Storage { get; set; }
|
||||||
[Inject] public IUserHttpRepository UserRepo { get; set; }
|
[Inject] public ISystemUserRepository SystemUserRepo { get; set; }
|
||||||
[Inject] public ILogger<OfficeOrderViewPage> Logger { get; set; }
|
[Inject] public ILogger<AdvisorCustomerOrderViewPage> Logger { get; set; }
|
||||||
[Inject] public IToastService Toast { get; set; }
|
[Inject] public IToastService Toast { get; set; }
|
||||||
private ReportItemView _reportItem { get; set; } = new();
|
private ReportItemView _reportItem { get; set; } = new();
|
||||||
private bool _isNotified { get; set; }
|
private bool _isNotified { get; set; }
|
||||||
|
@ -55,7 +55,7 @@ public partial class OfficeOrderViewPage : IDisposable
|
||||||
Interceptor.RegisterEvent();
|
Interceptor.RegisterEvent();
|
||||||
Interceptor.RegisterBeforeSendEvent();
|
Interceptor.RegisterBeforeSendEvent();
|
||||||
// fetch order from backend
|
// fetch order from backend
|
||||||
_reportItem = await ActivityRepo.GetReportItem(OrderId);
|
_reportItem = await AdvisorActivityRepo.GetReportItem(OrderId);
|
||||||
Logger.LogDebug("ReportItem => \n {}", JsonSerializer.Serialize(_reportItem, _options));
|
Logger.LogDebug("ReportItem => \n {}", JsonSerializer.Serialize(_reportItem, _options));
|
||||||
Working = false;
|
Working = false;
|
||||||
}
|
}
|
||||||
|
@ -71,12 +71,12 @@ public partial class OfficeOrderViewPage : IDisposable
|
||||||
Working = true;
|
Working = true;
|
||||||
Logger.LogDebug("GetExpressState => {}", JsonSerializer.Serialize(_reportItem, _options));
|
Logger.LogDebug("GetExpressState => {}", JsonSerializer.Serialize(_reportItem, _options));
|
||||||
// send request to backend
|
// send request to backend
|
||||||
var responseView = await ActivityRepo.GetExpressState(_reportItem.ActivityId);
|
var responseView = await AdvisorActivityRepo.GetExpressState(_reportItem.ActivityId);
|
||||||
Logger.LogDebug("SetExpressState => responseView <= {} ", JsonSerializer.Serialize(responseView));
|
Logger.LogDebug("SetExpressState => responseView <= {} ", JsonSerializer.Serialize(responseView));
|
||||||
// get user info from storage
|
// get user info from storage
|
||||||
var user = await Storage.GetItemAsync<UserInfoView>("_xu");
|
var user = await Storage.GetItemAsync<UserInfoView>("_xu");
|
||||||
// fetch sales rep from response
|
// fetch sales rep from response
|
||||||
var salesRep = await UserRepo.GetAdvisorInfo(responseView.Id);
|
var salesRep = await SystemUserRepo.GetAdvisorInfo(responseView.Id);
|
||||||
Logger.LogDebug("SetExpressState => salesRep => {}", JsonSerializer.Serialize(salesRep));
|
Logger.LogDebug("SetExpressState => salesRep => {}", JsonSerializer.Serialize(salesRep));
|
||||||
// create email notification body
|
// create email notification body
|
||||||
var body = new StringBuilder();
|
var body = new StringBuilder();
|
|
@ -21,6 +21,7 @@
|
||||||
@attribute [Authorize(Roles = "Advisor")]
|
@attribute [Authorize(Roles = "Advisor")]
|
||||||
@page "/companies/{CompanyId}"
|
@page "/companies/{CompanyId}"
|
||||||
|
|
||||||
|
|
||||||
@if (!string.IsNullOrWhiteSpace(Company.Account))
|
@if (!string.IsNullOrWhiteSpace(Company.Account))
|
||||||
{
|
{
|
||||||
@if (!string.IsNullOrWhiteSpace(Company.Blocked))
|
@if (!string.IsNullOrWhiteSpace(Company.Blocked))
|
|
@ -31,15 +31,15 @@ using Wonky.Entity.Views;
|
||||||
|
|
||||||
namespace Wonky.Client.Pages;
|
namespace Wonky.Client.Pages;
|
||||||
|
|
||||||
public partial class CustomerViewCrmPage : IDisposable
|
public partial class AdvisorCustomerViewPage : IDisposable
|
||||||
{
|
{
|
||||||
[Parameter] public string CompanyId { get; set; } = "";
|
[Parameter] public string CompanyId { get; set; } = "";
|
||||||
[Inject] public IToastService Toaster { get; set; }
|
[Inject] public IToastService Toaster { get; set; }
|
||||||
[Inject] public ILogger<CustomerViewCrmPage> Logger { get; set; }
|
[Inject] public ILogger<AdvisorCustomerViewPage> Logger { get; set; }
|
||||||
[Inject] public NavigationManager Navigator { get; set; }
|
[Inject] public NavigationManager Navigator { get; set; }
|
||||||
[Inject] public ICustomerCrmHttpRepository CompanyRepo { get; set; }
|
[Inject] public IAdvisorCustomerRepository CompanyRepo { get; set; }
|
||||||
[Inject] public ICustomerHistoryCrmHttpRepository HistoryRepo { get; set; }
|
[Inject] public ICustomerHistoryRepository HistoryRepo { get; set; }
|
||||||
[Inject] public IContactCrmHttpRepository ContactRepo { get; set; }
|
[Inject] public IAdvisorContactRepository AdvisorContactRepo { get; set; }
|
||||||
[Inject] public HttpInterceptorService Interceptor { get; set; }
|
[Inject] public HttpInterceptorService Interceptor { get; set; }
|
||||||
[Inject] public VatInfoLookupService VatService { get; set; }
|
[Inject] public VatInfoLookupService VatService { get; set; }
|
||||||
[Inject] public ILocalStorageService Storage { get; set; }
|
[Inject] public ILocalStorageService Storage { get; set; }
|
||||||
|
@ -150,7 +150,7 @@ public partial class CustomerViewCrmPage : IDisposable
|
||||||
private async Task FetchContacts(string companyId)
|
private async Task FetchContacts(string companyId)
|
||||||
{
|
{
|
||||||
// load contacts
|
// load contacts
|
||||||
Contacts = await ContactRepo.GetContacts(companyId);
|
Contacts = await AdvisorContactRepo.GetContacts(companyId);
|
||||||
if(Contacts.Any() && Contacts.Count > 1)
|
if(Contacts.Any() && Contacts.Count > 1)
|
||||||
Contacts = Contacts.OrderBy(x => x.FirstName).ToList();
|
Contacts = Contacts.OrderBy(x => x.FirstName).ToList();
|
||||||
}
|
}
|
||||||
|
@ -216,14 +216,14 @@ public partial class CustomerViewCrmPage : IDisposable
|
||||||
// new contact created
|
// new contact created
|
||||||
Logger.LogDebug("create => {}", jsonContact);
|
Logger.LogDebug("create => {}", jsonContact);
|
||||||
// send post request to backend
|
// send post request to backend
|
||||||
await ContactRepo.CreateContact(contact);
|
await AdvisorContactRepo.CreateContact(contact);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// contact modified
|
// contact modified
|
||||||
Logger.LogDebug("update => {}", jsonContact);
|
Logger.LogDebug("update => {}", jsonContact);
|
||||||
// send put request to backend
|
// send put request to backend
|
||||||
await ContactRepo.UpdateContact(contact);
|
await AdvisorContactRepo.UpdateContact(contact);
|
||||||
}
|
}
|
||||||
// reset selected contact
|
// reset selected contact
|
||||||
SelectedContact = new ContactDto();
|
SelectedContact = new ContactDto();
|
||||||
|
@ -241,7 +241,7 @@ public partial class CustomerViewCrmPage : IDisposable
|
||||||
Working = true;
|
Working = true;
|
||||||
Logger.LogDebug("delete {}", contactId);
|
Logger.LogDebug("delete {}", contactId);
|
||||||
// send delete request to backend
|
// send delete request to backend
|
||||||
await ContactRepo.DeleteContact(CompanyId, contactId);
|
await AdvisorContactRepo.DeleteContact(CompanyId, contactId);
|
||||||
// reset selected contact
|
// reset selected contact
|
||||||
SelectedContact = new ContactDto();
|
SelectedContact = new ContactDto();
|
||||||
// reload contacts from backend
|
// reload contacts from backend
|
|
@ -13,11 +13,11 @@ using Wonky.Entity.Views;
|
||||||
|
|
||||||
namespace Wonky.Client.Pages;
|
namespace Wonky.Client.Pages;
|
||||||
|
|
||||||
public partial class QuoteListCrmPage : IDisposable
|
public partial class AdvisorQuoteListPage : IDisposable
|
||||||
{
|
{
|
||||||
[Inject] public IActivityCrmHttpRepository ActivityRepo { get; set; }
|
[Inject] public IAdvisorActivityRepository AdvisorActivityRepo { get; set; }
|
||||||
[Inject] public HttpInterceptorService Interceptor { get; set; }
|
[Inject] public HttpInterceptorService Interceptor { get; set; }
|
||||||
[Inject] public ILogger<QuoteListCrmPage> Logger { get; set; }
|
[Inject] public ILogger<AdvisorQuoteListPage> Logger { get; set; }
|
||||||
[Inject] public IToastService Toaster { get; set; }
|
[Inject] public IToastService Toaster { get; set; }
|
||||||
[Inject] public ILocalStorageService Storage { get; set; }
|
[Inject] public ILocalStorageService Storage { get; set; }
|
||||||
private List<ReportItemView> Quotes { get; set; } = new();
|
private List<ReportItemView> Quotes { get; set; } = new();
|
||||||
|
@ -29,7 +29,7 @@ public partial class QuoteListCrmPage : IDisposable
|
||||||
{
|
{
|
||||||
Interceptor.RegisterEvent();
|
Interceptor.RegisterEvent();
|
||||||
Interceptor.RegisterBeforeSendEvent();
|
Interceptor.RegisterBeforeSendEvent();
|
||||||
Quotes = await ActivityRepo.GetQuotes();
|
Quotes = await AdvisorActivityRepo.GetQuotes();
|
||||||
await Storage.SetItemAsync("quotes", Quotes.OrderBy(x => x.Company.Name));
|
await Storage.SetItemAsync("quotes", Quotes.OrderBy(x => x.Company.Name));
|
||||||
if (Quotes.Any())
|
if (Quotes.Any())
|
||||||
await FilterQuotes(QFilter);
|
await FilterQuotes(QFilter);
|
||||||
|
@ -57,12 +57,12 @@ public partial class QuoteListCrmPage : IDisposable
|
||||||
if (args.Status == QStatus.Win)
|
if (args.Status == QStatus.Win)
|
||||||
quote.OrderDate = $"{DateTime.Now:yyyy-MM-dd}";
|
quote.OrderDate = $"{DateTime.Now:yyyy-MM-dd}";
|
||||||
quote.QuoteStatusEnum = Utils.EnumToString(args.Status);
|
quote.QuoteStatusEnum = Utils.EnumToString(args.Status);
|
||||||
var response = await ActivityRepo.UpdateQuoteStatus(quote);
|
var response = await AdvisorActivityRepo.UpdateQuoteStatus(quote);
|
||||||
Toaster.ShowInfo($"{response.Message}", $"HTTP STATUS {response.Code}");
|
Toaster.ShowInfo($"{response.Message}", $"HTTP STATUS {response.Code}");
|
||||||
|
|
||||||
Quotes = new List<ReportItemView>();
|
Quotes = new List<ReportItemView>();
|
||||||
await Storage.RemoveItemAsync("quotes");
|
await Storage.RemoveItemAsync("quotes");
|
||||||
Quotes = await ActivityRepo.GetQuotes();
|
Quotes = await AdvisorActivityRepo.GetQuotes();
|
||||||
while (!Quotes.Any())
|
while (!Quotes.Any())
|
||||||
await Task.Delay(1000);
|
await Task.Delay(1000);
|
||||||
|
|
|
@ -27,14 +27,14 @@ using Wonky.Entity.Views;
|
||||||
|
|
||||||
namespace Wonky.Client.Pages;
|
namespace Wonky.Client.Pages;
|
||||||
|
|
||||||
public partial class ReportCreateCrmPage : IDisposable
|
public partial class AdvisorReportCreatePage : IDisposable
|
||||||
{
|
{
|
||||||
[Inject] public HttpInterceptorService Interceptor { get; set; }
|
[Inject] public HttpInterceptorService Interceptor { get; set; }
|
||||||
[Inject] public UserProfileService ProfileService { get; set; }
|
[Inject] public UserProfileService ProfileService { get; set; }
|
||||||
[Inject] public IActivityCrmHttpRepository ActivityRepo { get; set; }
|
[Inject] public IAdvisorActivityRepository AdvisorActivityRepo { get; set; }
|
||||||
[Inject] public IReportHttpRepository ReportRepo { get; set; }
|
[Inject] public IAdvisorReportRepository AdvisorReportRepo { get; set; }
|
||||||
[Inject] public NavigationManager Navigator { get; set; }
|
[Inject] public NavigationManager Navigator { get; set; }
|
||||||
[Inject] public ILogger<ReportCreateCrmPage> Logger { get; set; }
|
[Inject] public ILogger<AdvisorReportCreatePage> Logger { get; set; }
|
||||||
[Inject] public IToastService Toaster { get; set; }
|
[Inject] public IToastService Toaster { get; set; }
|
||||||
private EditContext ReportContext { get; set; }
|
private EditContext ReportContext { get; set; }
|
||||||
private ReportDto Report { get; set; } = new();
|
private ReportDto Report { get; set; } = new();
|
||||||
|
@ -130,7 +130,7 @@ public partial class ReportCreateCrmPage : IDisposable
|
||||||
return;
|
return;
|
||||||
Working = true;
|
Working = true;
|
||||||
|
|
||||||
var result = await ReportRepo.CreateReport($"{_workDate:yyyy-MM-dd}", Report);
|
var result = await AdvisorReportRepo.CreateReport($"{_workDate:yyyy-MM-dd}", Report);
|
||||||
Toaster.ShowInfo($"{result.Message}", $"HTTP Status");
|
Toaster.ShowInfo($"{result.Message}", $"HTTP Status");
|
||||||
|
|
||||||
// reset km and date confirmation
|
// reset km and date confirmation
|
||||||
|
@ -250,7 +250,7 @@ public partial class ReportCreateCrmPage : IDisposable
|
||||||
InitialValues = new ReportFiguresDto();
|
InitialValues = new ReportFiguresDto();
|
||||||
Activities = new List<ReportItemView>();
|
Activities = new List<ReportItemView>();
|
||||||
|
|
||||||
var data = await ReportRepo.InitializeReportData($"{_workDate:yyyy-MM-dd}");
|
var data = await AdvisorReportRepo.InitializeReportData($"{_workDate:yyyy-MM-dd}");
|
||||||
if(data.ReportClosed)
|
if(data.ReportClosed)
|
||||||
Navigator.NavigateTo($"/sales-reports/view/{_workDate:yyyy-MM-dd}");
|
Navigator.NavigateTo($"/sales-reports/view/{_workDate:yyyy-MM-dd}");
|
||||||
|
|
|
@ -21,10 +21,10 @@
|
||||||
@page "/sales-reports"
|
@page "/sales-reports"
|
||||||
|
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-header">
|
<div class="card-header bg-dark text-white">
|
||||||
<h3>Rapport Arkiv</h3>
|
<h3>Rapport Arkiv</h3>
|
||||||
</div>
|
</div>
|
||||||
<ReportTableCrmComponent ReportList="ReportList" OnShowReport="ShowThisReport"/>
|
<ReportListComponent ReportList="ReportList" OnShowReport="ShowThisReport"/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -22,12 +22,12 @@ using Wonky.Entity.Views;
|
||||||
|
|
||||||
namespace Wonky.Client.Pages;
|
namespace Wonky.Client.Pages;
|
||||||
|
|
||||||
public partial class ReportListCrmPage : IDisposable
|
public partial class AdvisorReportListPage : IDisposable
|
||||||
{
|
{
|
||||||
[Inject] public IReportHttpRepository ReportRepo { get; set; }
|
[Inject] public IAdvisorReportRepository AdvisorReportRepo { get; set; }
|
||||||
[Inject] public HttpInterceptorService Interceptor { get; set; }
|
[Inject] public HttpInterceptorService Interceptor { get; set; }
|
||||||
[Inject] public NavigationManager Navigator { get; set; }
|
[Inject] public NavigationManager Navigator { get; set; }
|
||||||
[Inject] public ILogger<ReportListCrmPage> Logger { get; set; }
|
[Inject] public ILogger<AdvisorReportListPage> Logger { get; set; }
|
||||||
|
|
||||||
private List<SalesReportListView> ReportList { get; set; } = new();
|
private List<SalesReportListView> ReportList { get; set; } = new();
|
||||||
private bool Working { get; set; } = true;
|
private bool Working { get; set; } = true;
|
||||||
|
@ -37,7 +37,7 @@ public partial class ReportListCrmPage : IDisposable
|
||||||
Interceptor.RegisterEvent();
|
Interceptor.RegisterEvent();
|
||||||
Interceptor.RegisterBeforeSendEvent();
|
Interceptor.RegisterBeforeSendEvent();
|
||||||
|
|
||||||
ReportList = await ReportRepo.GetReports();
|
ReportList = await AdvisorReportRepo.GetReports();
|
||||||
if (ReportList.Any())
|
if (ReportList.Any())
|
||||||
ReportList = ReportList.OrderByDescending(x => x.ReportDate).ToList();
|
ReportList = ReportList.OrderByDescending(x => x.ReportDate).ToList();
|
||||||
|
|
|
@ -23,14 +23,14 @@ using Wonky.Entity.Views;
|
||||||
|
|
||||||
namespace Wonky.Client.Pages;
|
namespace Wonky.Client.Pages;
|
||||||
|
|
||||||
public partial class ReportViewCrmPage : IDisposable
|
public partial class AdvisorReportViewPage : IDisposable
|
||||||
{
|
{
|
||||||
[Parameter] public string ReportDate { get; set; }
|
[Parameter] public string ReportDate { get; set; }
|
||||||
[Inject] public IReportHttpRepository ReportRepo { get; set; }
|
[Inject] public IAdvisorReportRepository AdvisorReportRepo { get; set; }
|
||||||
[Inject] public NavigationManager Navigator { get; set; }
|
[Inject] public NavigationManager Navigator { get; set; }
|
||||||
[Inject] public ILocalStorageService Storage { get; set; }
|
[Inject] public ILocalStorageService Storage { get; set; }
|
||||||
[Inject] public HttpInterceptorService Interceptor { get; set; }
|
[Inject] public HttpInterceptorService Interceptor { get; set; }
|
||||||
[Inject] public ILogger<ReportViewCrmPage> Logger { get; set; }
|
[Inject] public ILogger<AdvisorReportViewPage> Logger { get; set; }
|
||||||
[Inject] public UserProfileService ProfileService { get; set; }
|
[Inject] public UserProfileService ProfileService { get; set; }
|
||||||
|
|
||||||
private UserPref Prefs { get; set; } = new();
|
private UserPref Prefs { get; set; } = new();
|
||||||
|
@ -101,7 +101,7 @@ public partial class ReportViewCrmPage : IDisposable
|
||||||
Working = true;
|
Working = true;
|
||||||
|
|
||||||
// fetch report
|
// fetch report
|
||||||
Report = await ReportRepo.GetReport(workDate);
|
Report = await AdvisorReportRepo.GetReport(workDate);
|
||||||
|
|
||||||
// extract activities
|
// extract activities
|
||||||
Activities = Report.ReportItems.Where(x => x.Lines.Any()).ToList();
|
Activities = Report.ReportItems.Where(x => x.Lines.Any()).ToList();
|
|
@ -25,13 +25,13 @@ using Wonky.Entity.Views;
|
||||||
|
|
||||||
namespace Wonky.Client.Pages;
|
namespace Wonky.Client.Pages;
|
||||||
|
|
||||||
public partial class TaskItemListCrmPage : IDisposable
|
public partial class AdvisorTaskItemListCrmPage : IDisposable
|
||||||
{
|
{
|
||||||
[Inject] public UserProfileService UserProfileService { get; set; }
|
[Inject] public UserProfileService UserProfileService { get; set; }
|
||||||
[Inject] public ILogger<TaskItemListCrmPage> Logger { get; set; }
|
[Inject] public ILogger<AdvisorTaskItemListCrmPage> Logger { get; set; }
|
||||||
[Inject] public HttpInterceptorService Interceptor { get; set; }
|
[Inject] public HttpInterceptorService Interceptor { get; set; }
|
||||||
[Inject] public NavigationManager Navigator { get; set; }
|
[Inject] public NavigationManager Navigator { get; set; }
|
||||||
[Inject] public ITaskItemCrmHttpRepository TaskRepo { get; set; }
|
[Inject] public IAdvisorTaskItemRepository AdvisorTaskRepo { get; set; }
|
||||||
[Inject] public IToastService Toaster { get; set; }
|
[Inject] public IToastService Toaster { get; set; }
|
||||||
private UserPref Prefs { get; set; } = new();
|
private UserPref Prefs { get; set; } = new();
|
||||||
private string WorkDate { get; set; } = $"{DateTime.Now:yyyy-MM-dd}";
|
private string WorkDate { get; set; } = $"{DateTime.Now:yyyy-MM-dd}";
|
||||||
|
@ -55,7 +55,7 @@ public partial class TaskItemListCrmPage : IDisposable
|
||||||
{
|
{
|
||||||
Working = true;
|
Working = true;
|
||||||
Toaster.ShowInfo("Vent nogle sekunder for data");
|
Toaster.ShowInfo("Vent nogle sekunder for data");
|
||||||
TaskItems = await TaskRepo.GetTaskList(workDate);
|
TaskItems = await AdvisorTaskRepo.GetTaskList(workDate);
|
||||||
|
|
||||||
Toaster.ClearAll();
|
Toaster.ClearAll();
|
||||||
Working = false;
|
Working = false;
|
|
@ -24,11 +24,11 @@ using Wonky.Entity.DTO;
|
||||||
|
|
||||||
namespace Wonky.Client.Pages;
|
namespace Wonky.Client.Pages;
|
||||||
|
|
||||||
public partial class TaskItemViewCrmPage : IDisposable
|
public partial class AdvisorTaskItemViewCrmPage : IDisposable
|
||||||
{
|
{
|
||||||
[Parameter] public string TaskItemId { get; set; }
|
[Parameter] public string TaskItemId { get; set; }
|
||||||
[Inject] public HttpInterceptorService _interceptor { get; set; }
|
[Inject] public HttpInterceptorService _interceptor { get; set; }
|
||||||
[Inject] public ITaskItemCrmHttpRepository TaskRepo { get; set; }
|
[Inject] public IAdvisorTaskItemRepository AdvisorTaskRepo { get; set; }
|
||||||
private TaskItemDto _taskItem = new ();
|
private TaskItemDto _taskItem = new ();
|
||||||
private EditContext _editContext { get; set; }
|
private EditContext _editContext { get; set; }
|
||||||
private bool Working { get; set; } = true;
|
private bool Working { get; set; } = true;
|
||||||
|
@ -39,7 +39,7 @@ public partial class TaskItemViewCrmPage : IDisposable
|
||||||
_interceptor.RegisterEvent();
|
_interceptor.RegisterEvent();
|
||||||
_interceptor.RegisterBeforeSendEvent();
|
_interceptor.RegisterBeforeSendEvent();
|
||||||
|
|
||||||
_taskItem = await TaskRepo.GetTaskItem(TaskItemId);
|
_taskItem = await AdvisorTaskRepo.GetTaskItem(TaskItemId);
|
||||||
Console.WriteLine(JsonSerializer.Serialize(_taskItem));
|
Console.WriteLine(JsonSerializer.Serialize(_taskItem));
|
||||||
Working = false;
|
Working = false;
|
||||||
}
|
}
|
|
@ -40,7 +40,7 @@
|
||||||
</div>
|
</div>
|
||||||
@if (ReportStatusView.ReportItems.Any())
|
@if (ReportStatusView.ReportItems.Any())
|
||||||
{
|
{
|
||||||
<ActivityTableCrmComponent ActivityList="ReportStatusView.ReportItems"/>
|
<ActivityListComponent ActivityList="ReportStatusView.ReportItems"/>
|
||||||
}
|
}
|
||||||
@if (Working)
|
@if (Working)
|
||||||
{
|
{
|
|
@ -25,14 +25,14 @@ using Wonky.Entity.Views;
|
||||||
|
|
||||||
namespace Wonky.Client.Pages;
|
namespace Wonky.Client.Pages;
|
||||||
|
|
||||||
public partial class ActivityListTodayCrmPage : IDisposable
|
public partial class AdvisorTodayActivityListPage : IDisposable
|
||||||
{
|
{
|
||||||
[Inject] public UserProfileService UserProfileService { get; set; }
|
[Inject] public UserProfileService UserProfileService { get; set; }
|
||||||
[Inject] public ILogger<ActivityListTodayCrmPage> Logger { get; set; }
|
[Inject] public ILogger<AdvisorTodayActivityListPage> Logger { get; set; }
|
||||||
[Inject] public HttpInterceptorService Interceptor { get; set; }
|
[Inject] public HttpInterceptorService Interceptor { get; set; }
|
||||||
[Inject] public NavigationManager Navigator { get; set; }
|
[Inject] public NavigationManager Navigator { get; set; }
|
||||||
[Inject] public IActivityCrmHttpRepository ActivityRepo { get; set; }
|
[Inject] public IAdvisorActivityRepository AdvisorActivityRepo { get; set; }
|
||||||
[Inject] public IReportHttpRepository ReportRepo { get; set; }
|
[Inject] public IAdvisorReportRepository AdvisorReportRepo { get; set; }
|
||||||
[Inject] public IToastService Toaster { get; set; }
|
[Inject] public IToastService Toaster { get; set; }
|
||||||
private ReportStatusView? ReportStatusView { get; set; } = new();
|
private ReportStatusView? ReportStatusView { get; set; } = new();
|
||||||
private UserPref UserPref { get; set; } = new();
|
private UserPref UserPref { get; set; } = new();
|
||||||
|
@ -46,7 +46,7 @@ public partial class ActivityListTodayCrmPage : IDisposable
|
||||||
Interceptor.RegisterBeforeSendEvent();
|
Interceptor.RegisterBeforeSendEvent();
|
||||||
UserPref = await UserProfileService.GetPreferences();
|
UserPref = await UserProfileService.GetPreferences();
|
||||||
SelectedDate = string.IsNullOrWhiteSpace(UserPref.WorkDate) ? DateTime.Now : DateTime.Parse(UserPref.WorkDate);
|
SelectedDate = string.IsNullOrWhiteSpace(UserPref.WorkDate) ? DateTime.Now : DateTime.Parse(UserPref.WorkDate);
|
||||||
ReportExist = await ReportRepo.ReportExist($"{SelectedDate:yyyy-MM-dd}");
|
ReportExist = await AdvisorReportRepo.ReportExist($"{SelectedDate:yyyy-MM-dd}");
|
||||||
await GetActivities($"{SelectedDate:yyyy-MM-dd}");
|
await GetActivities($"{SelectedDate:yyyy-MM-dd}");
|
||||||
Working = false;
|
Working = false;
|
||||||
}
|
}
|
||||||
|
@ -57,8 +57,8 @@ public partial class ActivityListTodayCrmPage : IDisposable
|
||||||
Toaster.ShowInfo("Vent nogle sekunder for data", "HENTER DATA");
|
Toaster.ShowInfo("Vent nogle sekunder for data", "HENTER DATA");
|
||||||
SelectedDate = DateTime.Parse(workDate);
|
SelectedDate = DateTime.Parse(workDate);
|
||||||
ReportStatusView = new ReportStatusView();
|
ReportStatusView = new ReportStatusView();
|
||||||
ReportExist = await ReportRepo.ReportExist($"{SelectedDate:yyyy-MM-dd}");
|
ReportExist = await AdvisorReportRepo.ReportExist($"{SelectedDate:yyyy-MM-dd}");
|
||||||
ReportStatusView = await ActivityRepo.GetActivities($"{SelectedDate:yyyy-MM-dd}");
|
ReportStatusView = await AdvisorActivityRepo.GetActivities($"{SelectedDate:yyyy-MM-dd}");
|
||||||
Logger.LogDebug("Activities => {}", JsonSerializer.Serialize(ReportStatusView));
|
Logger.LogDebug("Activities => {}", JsonSerializer.Serialize(ReportStatusView));
|
||||||
Working = false;
|
Working = false;
|
||||||
Toaster.ClearAll();
|
Toaster.ClearAll();
|
|
@ -18,7 +18,7 @@
|
||||||
@using Microsoft.AspNetCore.Authorization
|
@using Microsoft.AspNetCore.Authorization
|
||||||
@using Wonky.Client.Components
|
@using Wonky.Client.Components
|
||||||
|
|
||||||
@attribute [Authorize(Roles = "Admin,Office,Warehouse,Advisor")]
|
@attribute [Authorize(Roles = "Admin,Advisor,Warehouse")]
|
||||||
@page "/companies/{CompanyId}/orders/{OrderId}"
|
@page "/companies/{CompanyId}/orders/{OrderId}"
|
||||||
@page "/companies/{CompanyId}/quotes/{OrderId}"
|
@page "/companies/{CompanyId}/quotes/{OrderId}"
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue