release v0.94.1

This commit is contained in:
Frede Hundewadt 2023-01-04 13:58:51 +01:00
parent e520a03666
commit cb4cfce5bc
40 changed files with 176 additions and 160 deletions

View file

@ -22,7 +22,8 @@
{
<div class="list-group-item list-group-item-action" style="cursor: pointer;">
<div class="row align-items-center">
<div class="col-sm-4">@user.FullName</div>
<div class="col-sm-1">@user.SalesRep</div>
<div class="col-sm-3">@user.FullName</div>
<div class="col-sm-2">@user.PhoneNumber</div>
<div class="col-sm-2">
<a class="btn btn-warning d-block" href="/office/users/advisors/@user.CountryCode.ToLower()/@user.UserId/reports">Rapporter</a>

View file

@ -36,7 +36,15 @@
<div class="list-group-item">
<div class="row align-items-center">
<div class="col-sm-4">
@product.Description <span class="fw-bold">@(product.Discontinued ? "(UDGÅET)" : "")</span>
<div class="position-relative">
@product.Description
@if (product.Discontinued)
{
<span class="position-absolute top-0 start-100 translate-middle badge rounded-pill bg-danger">Udgået</span>
<span class="visually-hidden">Produktet er udgået</span>
}
</div>
@* @product.Description <span class="fw-bold text-sm-start">@(product.Discontinued ? "(UDGÅET)" : "")</span> *@
</div>
<div class="col-sm-3">
@product.Sku

View file

@ -33,7 +33,7 @@ namespace Wonky.Client.HttpInterceptors
private readonly RefreshTokenService _refreshTokenService;
private ILogger<HttpInterceptorService> _logger;
private readonly ILocalStorageService _storage;
private IAuthenticationService _authenticationService;
private readonly IAuthenticationService _authenticationService;
public HttpInterceptorService(HttpClientInterceptor interceptor,
NavigationManager navigation, IToastService toast,
@ -49,25 +49,25 @@ namespace Wonky.Client.HttpInterceptors
_authenticationService = authenticationService;
}
public void RegisterEvent()
public void RegisterAfterSendEvent()
{
_interceptor.AfterSend += AfterSend;
_interceptor.AfterSend += InterceptorAfterSend;
}
public void RegisterBeforeSendEvent()
public void RegisterBeforeSendAsyncEvent()
{
_interceptor.BeforeSendAsync += InterceptBeforeSendAsync;
}
public void DisposeEvent()
{
_interceptor.AfterSend -= AfterSend;
_interceptor.AfterSend -= InterceptorAfterSend;
_interceptor.BeforeSendAsync -= InterceptBeforeSendAsync;
}
private async Task InterceptBeforeSendAsync(object sender, HttpClientInterceptorEventArgs e)
{
var absolutePath = e.Request.RequestUri.AbsolutePath;
if (!absolutePath.Contains("token"))
{
// call TryRefreshToken
@ -81,12 +81,12 @@ namespace Wonky.Client.HttpInterceptors
}
private void AfterSend (object sender, HttpClientInterceptorEventArgs e)
private void InterceptorAfterSend (object sender, HttpClientInterceptorEventArgs e)
{
if (e.Response == null || e.Response.IsSuccessStatusCode)
return;
var message = "En ukendt fejl er opstået";
var message = "En fejl er opstået";
var currDoc = _navigation.ToBaseRelativePath(_navigation.Uri);
if (currDoc.Contains("login/"))
currDoc = "";
@ -94,12 +94,10 @@ namespace Wonky.Client.HttpInterceptors
switch (e.Response.StatusCode)
{
case HttpStatusCode.NotFound:
// message = "Der var ingen data ...";
// _toast.ShowInfo(message);
_logger.LogDebug("NotFound <= {}", currDoc);
break;
case HttpStatusCode.BadRequest:
// message = "Der er et problem med data ...";
// _toast.ShowWarning(message);
_logger.LogDebug("BadRequest <= {}", currDoc);
break;
case HttpStatusCode.Unauthorized:
_authenticationService.Logout();
@ -108,10 +106,12 @@ namespace Wonky.Client.HttpInterceptors
_toast.ShowInfo(message);
break;
case HttpStatusCode.Conflict:
_logger.LogDebug("Conflict <= {}", currDoc);
break;
case HttpStatusCode.InternalServerError:
// message = "Der er interne problemer på serveren ...";
// _toast.ShowError(message);
_logger.LogDebug("InternalServerError <= {}", currDoc);
break;
default:
_toast.ShowError(message);

View file

@ -56,7 +56,13 @@ public class AdvisorActivityRepository : IAdvisorActivityRepository
/// <returns>List of Activities with ActivityStatus == Quote</returns>
public async Task<List<ReportItemView>> GetQuotes()
{
return await _client.GetFromJsonAsync<List<ReportItemView>>($"{_api.CrmActivities}/quotes", _options);
var result = await _client.GetAsync($"{_api.CrmActivities}/quotes");
if (!result.IsSuccessStatusCode)
return new List<ReportItemView>();
var content = await result.Content.ReadAsStringAsync();
return string.IsNullOrWhiteSpace(content)
? new List<ReportItemView>()
: JsonSerializer.Deserialize<List<ReportItemView>>(content, _options);
}
/// <summary>

View file

@ -65,7 +65,13 @@ public class AdvisorReportRepository : IAdvisorReportRepository
/// <returns></returns>
public async Task<List<SalesReportListView>> GetReports()
{
return await _client.GetFromJsonAsync<List<SalesReportListView>>($"{_apiConfig.CrmReports}");
var result = await _client.GetAsync($"{_apiConfig.CrmReports}");
if (!result.IsSuccessStatusCode)
return new List<SalesReportListView>();
var content = await result.Content.ReadAsStringAsync();
return string.IsNullOrWhiteSpace(content)
? new List<SalesReportListView>()
: JsonSerializer.Deserialize<List<SalesReportListView>>(content, _options);
}
/// <summary>
@ -75,7 +81,8 @@ public class AdvisorReportRepository : IAdvisorReportRepository
/// <returns></returns>
public async Task<ReportView> GetReport(string workDate)
{
return await _client.GetFromJsonAsync<ReportView>($"{_apiConfig.CrmReports}/{workDate}");
var result = await _client.GetFromJsonAsync<ReportView>($"{_apiConfig.CrmReports}/{workDate}");
return result ?? new ReportView();
}
/// <summary>

View file

@ -40,8 +40,8 @@ public partial class AdminReportListPage : IDisposable
/// </summary>
protected override async Task OnParametersSetAsync()
{
Interceptor.RegisterEvent();
Interceptor.RegisterBeforeSendEvent();
Interceptor.RegisterAfterSendEvent();
Interceptor.RegisterBeforeSendAsyncEvent();
UserInfo = await SystemUserRepo.GetAdvisorInfo(UserId);
while (string.IsNullOrWhiteSpace(UserInfo.UserId))

View file

@ -88,8 +88,8 @@ public partial class AdminReportViewPage : IDisposable
protected override async Task OnParametersSetAsync()
{
Interceptor.RegisterEvent();
Interceptor.RegisterBeforeSendEvent();
Interceptor.RegisterAfterSendEvent();
Interceptor.RegisterBeforeSendAsyncEvent();
ProfileService.OnChange += ProfileServiceOnOnChange;
await ProfileService.SetWorkDate(DateTime.Parse(ReportDate));

View file

@ -15,8 +15,8 @@ public partial class AdminSalesRepListPage
protected override async Task OnInitializedAsync()
{
Interceptor.RegisterEvent();
Interceptor.RegisterBeforeSendEvent();
Interceptor.RegisterAfterSendEvent();
Interceptor.RegisterBeforeSendAsyncEvent();
var AdvisorList = await SystemUserRepo.GetAdvisors();
SalesReps = AdvisorList
.Where(x => x.CountryCode.ToLower() == CountryCode && Convert.ToInt32(x.SalesRep) < 100)

View file

@ -51,8 +51,8 @@ public partial class AdvisorCatalogPage : IDisposable
_page.SearchColumn = Prefs.ItemSearch;
_page.PageSize = Convert.ToInt32(Prefs.PageSize);
Interceptor.RegisterEvent();
Interceptor.RegisterBeforeSendEvent();
Interceptor.RegisterAfterSendEvent();
Interceptor.RegisterBeforeSendAsyncEvent();
await FetchSalesItems();
}

View file

@ -88,8 +88,8 @@ public partial class AdvisorCreateActivityPage : IDisposable
ActivityContext.OnFieldChanged += HandleFieldChanged;
ActivityContext.OnValidationStateChanged += ValidationChanged;
Interceptor.RegisterEvent();
Interceptor.RegisterBeforeSendEvent();
Interceptor.RegisterAfterSendEvent();
Interceptor.RegisterBeforeSendAsyncEvent();
// User Preferences
UserPrefs = await Profiles.GetPreferences();
// User Info

View file

@ -79,8 +79,8 @@ namespace Wonky.Client.Pages
Company.LastVisit = $"{LastVisit:yyyy-MM-dd}";
Company.NextVisit = $"{NextVisit:yyyy-MM-dd}";
Interceptor.RegisterEvent();
Interceptor.RegisterBeforeSendEvent();
Interceptor.RegisterAfterSendEvent();
Interceptor.RegisterBeforeSendAsyncEvent();
}

View file

@ -37,8 +37,8 @@ public partial class AdvisorCustomerActivityListPage : IDisposable
protected override async Task OnInitializedAsync()
{
_interceptor.RegisterEvent();
_interceptor.RegisterBeforeSendEvent();
_interceptor.RegisterAfterSendEvent();
_interceptor.RegisterBeforeSendAsyncEvent();
Company = await CompanyRepo.GetCompanyById(CompanyId);
await GetActivities();

View file

@ -25,18 +25,18 @@
<h4 class="pt-1">@Company.Name</h4>
</div>
<div class="col-sm-3 align-content-end">
<a class="btn btn-primary d-block" href="/customers/@Company.CompanyId"><i class="bi-arrow-left"></i> Kundekort</a>
<a class="btn btn-primary d-block" href="/customers/@CompanyId"><i class="bi-arrow-left"></i> Kundekort</a>
</div>
<div class="col-sm-3 align-content-end">
<a class="btn btn-primary d-block" href="/customers/@Company.CompanyId/activities/new"><i class="bi-arrow-right"></i> Nyt Besøg</a>
<a class="btn btn-primary d-block" href="/customers/@CompanyId/activities/new"><i class="bi-arrow-right"></i> Nyt Besøg</a>
</div>
</div>
<CustomerInventoryListComponent OnReorderSelected="OnReorderCallback" CompanyId="@CompanyId" Inventory="@Inventory" />
<CustomerInventoryListComponent OnReorderSelected="OnReorderCallback" CompanyId="@CompanyId" Inventory="@Inventory"/>
<InventoryReorderModal OnSelected="@OnSelectedItem" CompanyId="@CompanyId" SalesItem="@SalesItem" @ref="ReorderModal"/>
@if (Working)
{
<WorkingThreeDots />
}
<WorkingThreeDots/>
}

View file

@ -13,15 +13,12 @@
// along with this program. If not, see [https://www.gnu.org/licenses/agpl-3.0.en.html]
//
using System.Globalization;
using System.Text.Json;
using Blazored.LocalStorage;
using Blazored.Toast.Services;
using Microsoft.AspNetCore.Components;
using Wonky.Client.HttpInterceptors;
using Wonky.Client.HttpInterfaces;
using Wonky.Client.HttpRepository;
using Wonky.Client.Models;
using Wonky.Client.Shared;
using Wonky.Entity.DTO;
@ -38,47 +35,29 @@ public partial class AdvisorCustomerInventoryListPage : IDisposable
[Inject] public ILogger<AdvisorCustomerInventoryListPage> Logger { 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 CompanyDto Company { get; set; } = new();
private List<ProductInventoryView> Inventory { get; set; } = new();
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();
private readonly JsonSerializerOptions _options = new JsonSerializerOptions(JsonSerializerDefaults.Web);
private CompanyDto Company { get; set; } = new();
private bool Working { get; set; } = true;
private SalesItemView SalesItem { get; set; } = new();
private InventoryReorderModal ReorderModal { get; set; } = new();
private List<ProductInventoryView> Inventory { get; set; } = new();
protected override async Task OnInitializedAsync()
{
Interceptor.RegisterEvent();
Interceptor.RegisterBeforeSendEvent();
Interceptor.RegisterAfterSendEvent();
Interceptor.RegisterBeforeSendAsyncEvent();
Company = await CompanyRepo.GetCompanyById(CompanyId);
while (string.IsNullOrWhiteSpace(Company.HistorySync))
{
await Task.Delay(500);
}
var pDate = await Storage.GetItemAsStringAsync($"{Company.CompanyId}-pDate");
if (string.IsNullOrWhiteSpace(pDate) || (pDate == Company.HistorySync && pDate != $"{DateTime.Now:yyyy-MM-dd}"))
{
var ts = await HistoryRepo.ErpInvoiceToCrmRpc(CompanyId, Company.HistorySync);
while (string.IsNullOrWhiteSpace(ts))
{
await Task.Delay(1000);
}
await Storage.SetItemAsync($"{Company.CompanyId}-pDate", ts);
}
// fetch product inventory
Inventory = await FetchProductInventory();
Logger.LogDebug("CustomerProductListCrmPage => Inventory <= {}", JsonSerializer.Serialize(Inventory, _options));
await FetchProductInventory();
Working = false;
}
@ -98,25 +77,30 @@ public partial class AdvisorCustomerInventoryListPage : IDisposable
await DraftStateProvider.SaveChangesAsync();
}
private async Task<List<ProductInventoryView>> FetchProductInventory()
private async Task FetchProductInventory()
{
var storage = await Storage.GetItemAsStringAsync($"{Company.CompanyId}-products");
Inventory = new List<ProductInventoryView>();
var pStorage = await Storage.GetItemAsStringAsync($"{Company.CompanyId}-products");
var pDate = await Storage.GetItemAsStringAsync($"{Company.CompanyId}-pDate");
var local = !string.IsNullOrWhiteSpace(pStorage) && !string.IsNullOrWhiteSpace(pDate);
// if we have a list and pDate was today return the list
if (!string.IsNullOrWhiteSpace(storage) || DateTime.Parse(pDate.Replace("\"", "")) >= DateTime.Now)
if (local && pDate.Replace("\"", "") == $"{DateTime.Now:yyyy-MM-dd}")
{
Logger.LogDebug("return products from storage");
return JsonSerializer.Deserialize<List<ProductInventoryView>>(storage);
Inventory = JsonSerializer.Deserialize<List<ProductInventoryView>>(pStorage);
Logger.LogDebug("CustomerProductListCrmPage => Inventory <= {}", JsonSerializer.Serialize(Inventory, _options));
}
Logger.LogDebug("pulling products from backend");
// fetch product history
var inventory = await HistoryRepo.FetchInventory(CompanyId);
Inventory = await HistoryRepo.FetchInventory(CompanyId);
// default sort order by description
inventory = inventory.Any() ? inventory.OrderBy(x => x.Description).ToList() : new List<ProductInventoryView>();
if (Inventory.Any())
Inventory = Inventory.OrderBy(x => x.Description).ToList();
// send products to storage
await Storage.SetItemAsync($"{Company.CompanyId}-products", inventory);
Logger.LogDebug("return products from backend");
return inventory;
await Storage.SetItemAsync($"{Company.CompanyId}-products", Inventory);
await Storage.SetItemAsync($"{Company.CompanyId}-pDate", $"{DateTime.Now:yyyy-MM-dd}");
Logger.LogDebug("Loaded products from backend");
Logger.LogDebug("CustomerProductListCrmPage => Inventory <= {}", JsonSerializer.Serialize(Inventory, _options));
}
public void Dispose()

View file

@ -37,25 +37,25 @@ public partial class AdvisorCustomerInvoiceListPage : IDisposable
protected override async Task OnInitializedAsync()
{
Interceptor.RegisterEvent();
Interceptor.RegisterBeforeSendEvent();
Interceptor.RegisterAfterSendEvent();
Interceptor.RegisterBeforeSendAsyncEvent();
Company = await CompanyRepo.GetCompanyById(_companyId);
while (string.IsNullOrWhiteSpace(Company.HistorySync))
await Task.Delay(500);
var iDate = await Storage.GetItemAsStringAsync($"{_companyId}-iDate");
if (string.IsNullOrWhiteSpace(iDate) || (iDate == Company.HistorySync && iDate != $"{DateTime.Now:yyyy-MM-dd}"))
{
// send rpc to sync invoices from ERP to CRM
var ts = await HistoryRepo.ErpInvoiceToCrmRpc(_companyId, Company.HistorySync);
// wait until we have the result
while (string.IsNullOrWhiteSpace(ts))
await Task.Delay(500);
await Storage.SetItemAsync($"{_companyId}-iDate", ts);
}
// while (string.IsNullOrWhiteSpace(Company.HistorySync))
// await Task.Delay(500);
//
// var iDate = await Storage.GetItemAsStringAsync($"{_companyId}-iDate");
// if (string.IsNullOrWhiteSpace(iDate) || (iDate == Company.HistorySync && iDate != $"{DateTime.Now:yyyy-MM-dd}"))
// {
// // send rpc to sync invoices from ERP to CRM
// var ts = await HistoryRepo.ErpInvoiceToCrmRpc(_companyId, Company.HistorySync);
// // wait until we have the result
// while (string.IsNullOrWhiteSpace(ts))
// await Task.Delay(500);
//
// await Storage.SetItemAsync($"{_companyId}-iDate", ts);
// }
CompanyInvoices = await FetchCompanyInvoices();
AllSet = true;
}
@ -75,7 +75,7 @@ public partial class AdvisorCustomerInvoiceListPage : IDisposable
// if we have a list and iDate was today return the list
if (!string.IsNullOrWhiteSpace(storage) && (!string.IsNullOrWhiteSpace(iDate) && DateTime.Parse(iDate.Replace("\"", "")) >= DateTime.Now))
{
Logger.LogDebug("return invoices from storage");
Logger.LogDebug("fetching invoices from storage");
return JsonSerializer.Deserialize<InvoiceListView>(storage);
}
Logger.LogDebug("pulling invoices from backend");
@ -83,6 +83,7 @@ public partial class AdvisorCustomerInvoiceListPage : IDisposable
var invoices = await HistoryRepo.FetchInvoiceList(_companyId);
// send invoices to storage
await Storage.SetItemAsync($"{_companyId}-invoices", invoices);
await Storage.SetItemAsync($"{_companyId}-iDate", $"{DateTime.Now:yyyy-MM-dd}");
Logger.LogDebug("return invoices from backend");
Working = false;
return invoices;

View file

@ -46,8 +46,8 @@ namespace Wonky.Client.Pages
protected override void OnParametersSet()
{
Interceptor.RegisterEvent();
Interceptor.RegisterBeforeSendEvent();
Interceptor.RegisterAfterSendEvent();
Interceptor.RegisterBeforeSendAsyncEvent();
}

View file

@ -52,8 +52,8 @@ public partial class AdvisorCustomerOrderViewPage : IDisposable
protected override async Task OnInitializedAsync()
{
Interceptor.RegisterEvent();
Interceptor.RegisterBeforeSendEvent();
Interceptor.RegisterAfterSendEvent();
Interceptor.RegisterBeforeSendAsyncEvent();
// fetch order from backend
_reportItem = await AdvisorActivityRepo.GetReportItem(OrderId);
Logger.LogDebug("ReportItem => \n {}", JsonSerializer.Serialize(_reportItem, _options));

View file

@ -166,7 +166,7 @@
</div>
</div>
@* crm context - contacts *@
<div class="row mb-2">
<div class="row mb-4">
<label for="contacts" class="col-sm-1 col-form-label-sm">Kontakt</label>
<div id="contacts" class="col-sm-11">
<div class="list-group">

View file

@ -69,8 +69,8 @@ public partial class AdvisorCustomerViewPage : IDisposable
protected override async Task OnInitializedAsync()
{
// setup interceptor
Interceptor.RegisterEvent();
Interceptor.RegisterBeforeSendEvent();
Interceptor.RegisterAfterSendEvent();
Interceptor.RegisterBeforeSendAsyncEvent();
// initialize default contact
DefaultContact = new ContactDto { CompanyId = CompanyId, ContactId = "", FirstName = ""};
@ -138,7 +138,9 @@ public partial class AdvisorCustomerViewPage : IDisposable
CompanyVatAddress = PrepareVatAddress(Company);
await FetchContacts(CompanyId);
var ts = await HistoryRepo.ErpInvoiceToCrmRpc(CompanyId, Company.HistorySync);
// remove loading image
Working = false;
}

View file

@ -1,4 +1,5 @@
using System.Diagnostics.CodeAnalysis;
using System.IO.Enumeration;
using System.Security.Policy;
using System.Text.Json;
using Blazored.LocalStorage;
@ -22,18 +23,20 @@ public partial class AdvisorQuoteListPage : IDisposable
[Inject] public ILocalStorageService Storage { get; set; }
private List<ReportItemView> Quotes { get; set; } = new();
private List<ReportItemView> _quotes { get; set; } = new();
private bool Working { get; set; } = true;
private bool Working { get; set; }
private QStatus QFilter { get; set; } = QStatus.NoteOpen;
protected override async Task OnInitializedAsync()
{
Interceptor.RegisterEvent();
Interceptor.RegisterBeforeSendEvent();
Interceptor.RegisterAfterSendEvent();
Interceptor.RegisterBeforeSendAsyncEvent();
Working = true;
Quotes = await AdvisorActivityRepo.GetQuotes();
await Storage.SetItemAsync("quotes", Quotes.OrderBy(x => x.Company.Name));
Working = false;
// filter quotes - if any - default to QStatus.NoteOpen
if (Quotes.Any())
await FilterQuotes(QFilter);
Working = false;
}
private async Task FilterQuotes(QStatus status)
@ -53,29 +56,31 @@ public partial class AdvisorQuoteListPage : IDisposable
private async Task UpdateQuoteCallback(QuoteCallbackArgs args)
{
Working = true;
// find the quote to update
var quote = Quotes.First(x => x.ESalesNumber == args.ESalesNumber);
if (args.Status == QStatus.Win)
quote.OrderDate = $"{DateTime.Now:yyyy-MM-dd}";
quote.QuoteStatusEnum = Utils.EnumToString(args.Status);
// send update request to backend
var response = await AdvisorActivityRepo.UpdateQuoteStatus(quote);
Toaster.ShowInfo($"{response.Message}", $"HTTP STATUS {response.Code}");
// clear and reload quotes
Quotes = new List<ReportItemView>();
await Storage.RemoveItemAsync("quotes");
Quotes = await AdvisorActivityRepo.GetQuotes();
while (!Quotes.Any())
await Task.Delay(1000);
// store quotes in local storage
await Storage.SetItemAsync("quotes", Quotes.OrderBy(x => x.Company.Name));
await FilterQuotes(QFilter);
// filter quotes - if any - based on active filter
if(Quotes.Any())
await FilterQuotes(QFilter);
Working = false;
// signal page state changed
StateHasChanged();
}
public void Dispose()
{
Storage.RemoveItemAsync("quotes");
Interceptor.DisposeEvent();
}
}

View file

@ -57,8 +57,8 @@ public partial class AdvisorReportCreatePage : IDisposable
/// </summary>
protected override async Task OnInitializedAsync()
{
Interceptor.RegisterEvent();
Interceptor.RegisterBeforeSendEvent();
Interceptor.RegisterAfterSendEvent();
Interceptor.RegisterBeforeSendAsyncEvent();
ReportContext = new EditContext(Report);
ReportContext.OnFieldChanged += HandleFieldChanged;

View file

@ -30,15 +30,17 @@ public partial class AdvisorReportListPage : IDisposable
[Inject] public ILogger<AdvisorReportListPage> Logger { get; set; }
private List<SalesReportListView> ReportList { get; set; } = new();
private bool Working { get; set; } = true;
private bool Working { get; set; }
protected override async Task OnInitializedAsync()
{
Interceptor.RegisterEvent();
Interceptor.RegisterBeforeSendEvent();
Interceptor.RegisterBeforeSendAsyncEvent();
Interceptor.RegisterAfterSendEvent();
Working = true;
ReportList = await AdvisorReportRepo.GetReports();
if (ReportList.Any())
var reports = await AdvisorReportRepo.GetReports();
if (reports.Any())
ReportList = ReportList.OrderByDescending(x => x.ReportDate).ToList();
Working = false;

View file

@ -42,8 +42,8 @@ public partial class AdvisorReportViewPage : IDisposable
protected override async Task OnInitializedAsync()
{
Interceptor.RegisterEvent();
Interceptor.RegisterBeforeSendEvent();
Interceptor.RegisterAfterSendEvent();
Interceptor.RegisterBeforeSendAsyncEvent();
UserInfo = await Storage.GetItemAsync<UserInfoView>("_xu");

View file

@ -45,8 +45,8 @@ public partial class AdvisorTaskItemListCrmPage : IDisposable
if(!string.IsNullOrWhiteSpace(Prefs.WorkDate))
WorkDate = Prefs.WorkDate;
Interceptor.RegisterEvent();
Interceptor.RegisterBeforeSendEvent();
Interceptor.RegisterAfterSendEvent();
Interceptor.RegisterBeforeSendAsyncEvent();
await GetTaskItems(WorkDate);
Working = false;
}

View file

@ -36,8 +36,8 @@ public partial class AdvisorTaskItemViewCrmPage : IDisposable
protected override async Task OnParametersSetAsync()
{
_interceptor.RegisterEvent();
_interceptor.RegisterBeforeSendEvent();
_interceptor.RegisterAfterSendEvent();
_interceptor.RegisterBeforeSendAsyncEvent();
_taskItem = await AdvisorTaskRepo.GetTaskItem(TaskItemId);
Console.WriteLine(JsonSerializer.Serialize(_taskItem));

View file

@ -42,8 +42,8 @@ public partial class AdvisorTodayActivityListPage : IDisposable
protected override async Task OnInitializedAsync()
{
Interceptor.RegisterEvent();
Interceptor.RegisterBeforeSendEvent();
Interceptor.RegisterAfterSendEvent();
Interceptor.RegisterBeforeSendAsyncEvent();
UserPref = await UserProfileService.GetPreferences();
SelectedDate = string.IsNullOrWhiteSpace(UserPref.WorkDate) ? DateTime.Now : DateTime.Parse(UserPref.WorkDate);
ReportExist = await AdvisorReportRepo.ReportExist($"{SelectedDate:yyyy-MM-dd}");

View file

@ -47,8 +47,8 @@ public partial class AdvisorViewActivityPage : IDisposable
protected override async Task OnInitializedAsync()
{
Interceptor.RegisterEvent();
Interceptor.RegisterBeforeSendEvent();
Interceptor.RegisterAfterSendEvent();
Interceptor.RegisterBeforeSendAsyncEvent();
NoteContext = new EditContext(Note);
NoteContext.OnFieldChanged += HandleFieldChanged;
ReportItem = await AdvisorActivityRepo.GetReportItem(OrderId);

View file

@ -36,8 +36,8 @@ public partial class AdvisorWorkplaceListPage : IDisposable
protected override async Task OnParametersSetAsync()
{
_interceptor.RegisterEvent();
_interceptor.RegisterBeforeSendEvent();
_interceptor.RegisterAfterSendEvent();
_interceptor.RegisterBeforeSendAsyncEvent();
_company = await _companyRepo.GetCompanyById(CompanyId);
Working = false;
}

View file

@ -39,8 +39,8 @@ public partial class AdvisorWorkplaceViewPage : IDisposable
protected override async Task OnParametersSetAsync()
{
_interceptor.RegisterEvent();
_interceptor.RegisterBeforeSendEvent();
_interceptor.RegisterAfterSendEvent();
_interceptor.RegisterBeforeSendAsyncEvent();
_workplace = await WorkplaceCrmRepo.GetWorkplace(CompanyId, WorkplaceId);
Working = false;

View file

@ -53,8 +53,8 @@ public partial class BackendAdminSalesRepViewPage : IDisposable
_editContext = new EditContext(_updateInfo);
_passwdContext = new EditContext(_passwords);
_interceptor.RegisterEvent();
_interceptor.RegisterBeforeSendEvent();
_interceptor.RegisterAfterSendEvent();
_interceptor.RegisterBeforeSendAsyncEvent();
UserInfo = await SystemUserRepo.GetAdvisorInfo(UserId);

View file

@ -48,8 +48,8 @@ public partial class CountryCatalogPage : IDisposable
Paging.SearchColumn = Prefs.ItemSearch;
Paging.PageSize = Convert.ToInt32(Prefs.PageSize);
Interceptor.RegisterEvent();
Interceptor.RegisterBeforeSendEvent();
Interceptor.RegisterAfterSendEvent();
Interceptor.RegisterBeforeSendAsyncEvent();
await FetchSalesItems();
}

View file

@ -47,8 +47,8 @@ namespace Wonky.Client.Pages
protected override async Task OnParametersSetAsync()
{
Interceptor.RegisterEvent();
Interceptor.RegisterBeforeSendEvent();
Interceptor.RegisterAfterSendEvent();
Interceptor.RegisterBeforeSendAsyncEvent();
// set preferences
Prefs = await ProfileService.GetPreferences();

View file

@ -41,8 +41,8 @@ public partial class CountryPrintCatalogPage : IDisposable
protected override async Task OnParametersSetAsync()
{
Interceptor.RegisterEvent();
Interceptor.RegisterBeforeSendEvent();
Interceptor.RegisterAfterSendEvent();
Interceptor.RegisterBeforeSendAsyncEvent();
UserInfo = await Storage.GetItemAsync<UserInfoView>("_xu");
Items = await Catalog.GetPriceList(CountryCode);

View file

@ -40,7 +40,7 @@ public partial class CountrySalesRepCustomerListPage : IDisposable
protected override async Task OnParametersSetAsync()
{
Interceptor.DisposeEvent();
Interceptor.RegisterBeforeSendEvent();
Interceptor.RegisterBeforeSendAsyncEvent();
// set preferences
UserPref = await UserProfileService.GetPreferences();

View file

@ -40,8 +40,8 @@ public partial class PrintCatalogPage : IDisposable
protected override async Task OnInitializedAsync()
{
Interceptor.RegisterEvent();
Interceptor.RegisterBeforeSendEvent();
Interceptor.RegisterAfterSendEvent();
Interceptor.RegisterBeforeSendAsyncEvent();
UserInfo = await Storage.GetItemAsync<UserInfoView>("_xu");
Items = await ItemRepo.GetPriceList();

View file

@ -20,8 +20,8 @@ public partial class WarehouseOrderListPage : IDisposable
private bool ReadyToShip { get; set; }
protected override async Task OnParametersSetAsync()
{
Interceptor.RegisterEvent();
Interceptor.RegisterBeforeSendEvent();
Interceptor.RegisterAfterSendEvent();
Interceptor.RegisterBeforeSendAsyncEvent();
OrderList = await FetchOrders(Status);
}

View file

@ -39,8 +39,8 @@ public partial class WarehouseOrderViewPage : IDisposable
protected override async Task OnParametersSetAsync()
{
Interceptor.RegisterEvent();
Interceptor.RegisterBeforeSendEvent();
Interceptor.RegisterAfterSendEvent();
Interceptor.RegisterBeforeSendAsyncEvent();
if (!string.IsNullOrWhiteSpace(OrderId))
Order = await WarehouseRepo.GetWarehouseOrder(OrderId);

View file

@ -37,8 +37,8 @@ public partial class InvoiceViewModal : IDisposable
protected override async Task OnParametersSetAsync()
{
Interceptor.RegisterEvent();
Interceptor.RegisterBeforeSendEvent();
Interceptor.RegisterAfterSendEvent();
Interceptor.RegisterBeforeSendAsyncEvent();
if (!string.IsNullOrWhiteSpace(InvoiceId))
{

View file

@ -45,8 +45,8 @@ public partial class PriceListModal : IDisposable
_paging.OrderBy = _userPref.ItemSort;
_paging.SearchColumn = _userPref.ItemSearch;
_paging.PageSize = Convert.ToInt32(_userPref.PageSize);
Interceptor.RegisterEvent();
Interceptor.RegisterBeforeSendEvent();
Interceptor.RegisterAfterSendEvent();
Interceptor.RegisterBeforeSendAsyncEvent();
await GetSalesItems();
}

View file

@ -1,13 +1,13 @@
{
"appInfo": {
"name": "Wonky Client",
"version": "0.92.1",
"version": "0.94.1",
"rc": true,
"sandBox": false,
"image": "grumpy-coder.png"
},
"apiConfig": {
"baseUrl": "https://dev.innotec.dk",
"baseUrl": "https://zeta.innotec.dk",
"catalog": "api/v2/catalog",
"crmCustomers": "api/v2/crm/companies",
"crmInventoryExt": "history/inventory",