diff --git a/Wonky.Client/Pages/CrmActivityCreate.razor b/Wonky.Client/Pages/CrmActivityCreate.razor
index 4a8f6a65..c642e5d0 100644
--- a/Wonky.Client/Pages/CrmActivityCreate.razor
+++ b/Wonky.Client/Pages/CrmActivityCreate.razor
@@ -38,47 +38,50 @@
aria-labelledby="activityHeader" data-bs-parent="#crmActivity">
-
-
- VÆLG
- Besøg
- Telefon
- Kanvas
-
-
-
-
- VÆLG
- Ordre
- Tilbud
-
-
-
-
-
-
Konto
-
+
Konto
+
-
-
Sælger
-
+
-
Demo
-
+
Kontakt
+
+
+ VÆLG
+ Besøg
+ Telefon
+
+
+
Status
+
+
+ VÆLG
+ Ordre
+ Tilbud
+ Kanvas
+
+
+
+
+
Dato
+
+
+
+
Bekræft dato?
+
+
+
+
+
@@ -198,7 +201,10 @@
Rabat
-
+ SAS
+
+
+
@@ -209,13 +215,16 @@
@_selectedItem.Sku
-
+
-
+
-
+
+
+
+
AddItem(_selectedItem))">Læg til
@@ -252,6 +261,7 @@
@cItem.Quantity
@cItem.Price
@cItem.LineTotal
+
RemoveItem(@cItem))">Slet
@@ -329,12 +339,13 @@
-
+
diff --git a/Wonky.Client/Pages/CrmActivityCreate.razor.cs b/Wonky.Client/Pages/CrmActivityCreate.razor.cs
index 46bbcb94..bd5a3fbd 100644
--- a/Wonky.Client/Pages/CrmActivityCreate.razor.cs
+++ b/Wonky.Client/Pages/CrmActivityCreate.razor.cs
@@ -53,6 +53,7 @@ public partial class CrmActivityCreate : IDisposable
private string Quantity = "1";
private string Price = "0";
private string Discount = "0";
+ private bool Sas;
private bool InvalidActivityType { get; set; } = true;
private bool InvalidStatusType { get; set; } = true;
private bool InvalidActivity { get; set; } = true;
@@ -72,7 +73,7 @@ public partial class CrmActivityCreate : IDisposable
_prefs = await UserPrefs.GetPreferences();
_paging.SearchColumn = _prefs.ItemSearch;
await GetSalesItems();
- Ux = await StorageService.GetItemAsync
("_ux");
+ Ux = await StorageService.GetItemAsync("_xu");
NgCompany = await CompanyRepo.GetCompanyById(CompanyId);
DraftContext = new EditContext(_poDraft);
@@ -112,8 +113,8 @@ public partial class CrmActivityCreate : IDisposable
await UserPrefs.SetWorkDate(_poDraft.ActivityDate);
var activityType = _poDraft.ActivityTypeEnum switch
{
- "caPhone" => "Tlf. ",
- "caOnSite" => "Bsg. ",
+ "phone" => "Tlf. ",
+ "onSite" => "Bsg. ",
_ => ""
};
_poDraft.OurRef = $"{activityType}{Ux.FullName.Split(" ")[0]}";
@@ -128,7 +129,8 @@ public partial class CrmActivityCreate : IDisposable
Sku = item.Item.Sku,
Text = item.Item.Name,
LineAmount = item.LineTotal,
- LineNumber = ++ln
+ LineNumber = ++ln,
+ Sas = item.Sas
}))
{
_poDraft.Lines.Add(line);
@@ -140,18 +142,18 @@ public partial class CrmActivityCreate : IDisposable
private void CheckActivity()
{
InvalidActivityType = string.IsNullOrWhiteSpace(_poDraft.ActivityTypeEnum);
- Console.WriteLine($"Type => {InvalidActivityType}");
+ Console.WriteLine($"ActivityType => {InvalidActivityType}");
}
private void CheckStatus()
{
InvalidStatusType = string.IsNullOrWhiteSpace(_poDraft.ActivityStatusEnum);
- Console.WriteLine($"statusType => {InvalidStatusType}");
+ Console.WriteLine($"StatusType => {InvalidStatusType}");
}
private void CheckDate()
{
InvalidDate = _poDraft.CheckDate;
- Console.WriteLine($"invalidDate => {InvalidDate}");
+ Console.WriteLine($"InvalidDate => {InvalidDate}");
}
private async Task DeleteDraft()
@@ -175,8 +177,15 @@ public partial class CrmActivityCreate : IDisposable
{
Item = ngSalesItem,
Quantity = Convert.ToInt32(Quantity),
- Price = Convert.ToDecimal(Price)
+ Price = Convert.ToDecimal(Price),
+ Discount = Convert.ToDecimal(Discount),
+ Sas = Sas
};
+ // reset internals to initial state
+ Sas = false;
+ Quantity = "1";
+ Price = "0";
+ Discount = "0";
// add it to the cart
DraftStateProvider.Draft.Items.Add(item);
// save the item using the CartStateProvider's save method
diff --git a/Wonky.Client/Pages/Login.razor.cs b/Wonky.Client/Pages/Login.razor.cs
index 4d74cb6f..66d42d45 100644
--- a/Wonky.Client/Pages/Login.razor.cs
+++ b/Wonky.Client/Pages/Login.razor.cs
@@ -44,7 +44,7 @@ public partial class Login
}
else
{
- var returnUrl = string.IsNullOrEmpty(ReturnUrl) ? "/Companies" : ReturnUrl;
+ var returnUrl = string.IsNullOrEmpty(ReturnUrl) ? "/companies" : ReturnUrl;
NavigationManager.NavigateTo(returnUrl);
}
}
diff --git a/Wonky.Client/Providers/AuthStateProvider.cs b/Wonky.Client/Providers/AuthStateProvider.cs
index fe3b4507..610a3998 100644
--- a/Wonky.Client/Providers/AuthStateProvider.cs
+++ b/Wonky.Client/Providers/AuthStateProvider.cs
@@ -37,21 +37,21 @@ namespace Wonky.Client.Providers
public override async Task GetAuthenticationStateAsync()
{
// fetch token from localStorage
- var token = await _storage.GetItemAsync("_ax");
+ var token = await _storage.GetItemAsync("_xa");
if (string.IsNullOrEmpty(token))
// return anonymous if empty
return _anonymous;
// create an authorized user
- var userInfo = await _storage.GetItemAsync("_ux");
+ var userInfo = await _storage.GetItemAsync("_xu");
if (userInfo == null)
return _anonymous;
// set client authorization header
_client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("bearer", token);
- var exp = await _storage.GetItemAsync("_ex");
+ var exp = await _storage.GetItemAsync("_xe");
var roles = ExtractRoles(userInfo);
var claims = new List
@@ -79,8 +79,8 @@ namespace Wonky.Client.Providers
_client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("bearer", token);
// create an authorized user
- var userInfo = await _storage.GetItemAsync("_ux");
- var exp = await _storage.GetItemAsync("_ex");
+ var userInfo = await _storage.GetItemAsync("_xu");
+ var exp = await _storage.GetItemAsync("_xe");
var roles = ExtractRoles(userInfo);
var claims = new List
{
diff --git a/Wonky.Client/Services/AuthenticationService.cs b/Wonky.Client/Services/AuthenticationService.cs
index b6aa0690..d5f848c0 100644
--- a/Wonky.Client/Services/AuthenticationService.cs
+++ b/Wonky.Client/Services/AuthenticationService.cs
@@ -79,9 +79,9 @@ namespace Wonky.Client.Services
// process response content
var data = JsonSerializer.Deserialize(resContent, _options);
- await _localStorage.SetItemAsync("_ax", data.AccessToken);
- await _localStorage.SetItemAsync("_rx", data.RefreshToken);
- await _localStorage.SetItemAsync("_ex",
+ await _localStorage.SetItemAsync("_xa", data.AccessToken);
+ await _localStorage.SetItemAsync("_xr", data.RefreshToken);
+ await _localStorage.SetItemAsync("_xe",
(int)DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).TotalSeconds + data.ExpiresIn - 60);
// set default request headers using access_token
@@ -89,7 +89,7 @@ namespace Wonky.Client.Services
var userInfo = await UserInfo();
- await _localStorage.SetItemAsync("_ux", userInfo);
+ await _localStorage.SetItemAsync("_xu", userInfo);
// notify system on state change
((AuthStateProvider)_authStateProvider).NotifyUserAuthenticationAsync(data.AccessToken);
@@ -100,7 +100,7 @@ namespace Wonky.Client.Services
public async Task RefreshToken()
{
- var refreshToken = await _localStorage.GetItemAsync("_rx");
+ var refreshToken = await _localStorage.GetItemAsync("_xr");
var credentials = new Dictionary
{
["grant_type"] = "refresh_token",
@@ -109,31 +109,28 @@ namespace Wonky.Client.Services
var response = await _client.PostAsync(_apiConfig.Value.TokenPath, new FormUrlEncodedContent(credentials));
- if (response.IsSuccessStatusCode)
- {
- var resContent = await response.Content.ReadAsStringAsync();
- var data = JsonSerializer.Deserialize(resContent, _options);
+ if (!response.IsSuccessStatusCode) return string.Empty;
+ var resContent = await response.Content.ReadAsStringAsync();
+ var data = JsonSerializer.Deserialize(resContent, _options);
- // set default request headers using access_token
- _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("bearer", data.AccessToken);
+ // set default request headers using access_token
+ _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("bearer", data.AccessToken);
+
+ await _localStorage.SetItemAsync("_xa", data.AccessToken);
+ await _localStorage.SetItemAsync("_xr", data.RefreshToken);
+ await _localStorage.SetItemAsync("_xe",
+ (int)DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).TotalSeconds + data.ExpiresIn - 60);
+ return data.AccessToken;
- await _localStorage.SetItemAsync("_ax", data.AccessToken);
- await _localStorage.SetItemAsync("_rx", data.RefreshToken);
- await _localStorage.SetItemAsync("_ex",
- (int)DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).TotalSeconds + data.ExpiresIn - 60);
- return data.AccessToken;
- }
-
- return string.Empty;
}
public async Task Logout()
{
// clear localStorage
- await _localStorage.RemoveItemAsync("_ax");
- await _localStorage.RemoveItemAsync("_rx");
- await _localStorage.RemoveItemAsync("_ux");
- await _localStorage.RemoveItemAsync("_ex");
+ await _localStorage.RemoveItemAsync("_xa");
+ await _localStorage.RemoveItemAsync("_xr");
+ await _localStorage.RemoveItemAsync("_xu");
+ await _localStorage.RemoveItemAsync("_xe");
// notify system on user logout
((AuthStateProvider)_authStateProvider).NotifyUserLogout();
// remove request headers
@@ -146,7 +143,7 @@ namespace Wonky.Client.Services
var infoContent = await infoResponse.Content.ReadAsStringAsync();
var userInfo = JsonSerializer.Deserialize(infoContent, _options);
if(write)
- await _localStorage.SetItemAsync("_ux", userInfo);
+ await _localStorage.SetItemAsync("_xu", userInfo);
return userInfo ?? new UserInfoView();
}
diff --git a/Wonky.Entity/DTO/DtoNgActivity.cs b/Wonky.Entity/DTO/DtoNgActivity.cs
index 4fff971e..a3bb4635 100644
--- a/Wonky.Entity/DTO/DtoNgActivity.cs
+++ b/Wonky.Entity/DTO/DtoNgActivity.cs
@@ -36,7 +36,7 @@ namespace Wonky.Entity.DTO
[Required(ErrorMessage = "Vælg aktivitetstype")] public string ActivityTypeEnum { get; set; } = "";
[Required(ErrorMessage = "Vælg status for besøg ")] public string ActivityStatusEnum { get; set; } = "";
public bool CheckDate { get; set; }
- public DateTime ActivityDate { get; set; }
+ [Required] public DateTime ActivityDate { get; set; }
[MaxLength(50, ErrorMessage = "Du kan højst bruge 50 tegn")] public string Demo { get; set; } = "";
[MaxLength(20, ErrorMessage = "Du kan højst bruge 20 tegn")] public string OurRef { get; set; } = "";
[MaxLength(20, ErrorMessage = "Du kan højst bruge 20 tegn")] public string ReferenceNumber { get; set; } = "";