diff --git a/Wonky.Client/Components/Home.razor.cs b/Wonky.Client/Components/Home.razor.cs index e99b0ac1..30732832 100644 --- a/Wonky.Client/Components/Home.razor.cs +++ b/Wonky.Client/Components/Home.razor.cs @@ -28,21 +28,27 @@ using Wonky.Entity.Models; namespace Wonky.Client.Components; public partial class Home : IDisposable { - [Inject] public ILocalStorageService Storage { get; set; } + // [Inject] public ILocalStorageService Storage { get; set; } + [Inject] public UserPreferenceService UserPrefs { get; set; } [Inject] public ILogger Logger { get; set; } [Inject] private HttpInterceptorService Interceptor { get; set; } - [Inject] public UserPreferenceService UserPrefs { get; set; } [Inject] public NavigationManager Navigator { get; set; } [Inject] public IActivityHttpRepository ActivityRepo { get; set; } - private Preferences _prefs { get; set; } = new(); private List Activities { get; set; } + private Preferences _prefs { get; set; } = new(); + private string _workDate { get; set; } = ""; protected override async Task OnInitializedAsync() { + _prefs = await UserPrefs.GetPreferences(); + _workDate = string.IsNullOrWhiteSpace(_prefs.WorkDate) + ? $"{DateTime.Now:yyyy-MM-dd}" + : _prefs.WorkDate; + Interceptor.RegisterEvent(); Interceptor.RegisterBeforeSendEvent(); - _prefs = await UserPrefs.GetPreferences(); - await FetchActivities(_prefs.WorkDate); + + await FetchActivities(_workDate); } private async Task FetchActivities(string workDate) diff --git a/Wonky.Client/Components/WorkDateComponent.razor b/Wonky.Client/Components/WorkDateComponent.razor index 302470f4..2546f043 100644 --- a/Wonky.Client/Components/WorkDateComponent.razor +++ b/Wonky.Client/Components/WorkDateComponent.razor @@ -3,11 +3,11 @@
-
@DateTime.Parse(WorkDate).ToLongDateString()
+
@DateTime.Parse(_workDate).ToLongDateString()
diff --git a/Wonky.Client/Components/WorkDateComponent.razor.cs b/Wonky.Client/Components/WorkDateComponent.razor.cs index 14995e24..45e64277 100644 --- a/Wonky.Client/Components/WorkDateComponent.razor.cs +++ b/Wonky.Client/Components/WorkDateComponent.razor.cs @@ -11,14 +11,18 @@ public partial class WorkDateComponent : IDisposable [Parameter] public EventCallback OnChanged { get; set; } private Preferences _prefs = new(); - private string WorkDate { get; set; } + private string _workDate = $"{DateOnly.FromDateTime(DateTime.Now):yyyy-MM-dd}"; protected override async Task OnInitializedAsync() { UserPrefs.OnChange += ProfileServiceOnOnChange; _prefs = await UserPrefs.GetPreferences(); - WorkDate = _prefs.WorkDate; + + _workDate = string.IsNullOrWhiteSpace(_prefs.WorkDate) + ? $"{DateOnly.FromDateTime(DateTime.Now):yyyy-MM-dd}" + : _prefs.WorkDate; } + private async Task OnDateChanged(ChangeEventArgs e) { var val = $"{DateOnly.Parse(e.Value?.ToString()!):yyyy-MM-dd}"; diff --git a/Wonky.Client/HttpRepository/ActivityHttpRepository.cs b/Wonky.Client/HttpRepository/ActivityHttpRepository.cs index 4835ba8d..e4b02af9 100644 --- a/Wonky.Client/HttpRepository/ActivityHttpRepository.cs +++ b/Wonky.Client/HttpRepository/ActivityHttpRepository.cs @@ -17,6 +17,7 @@ using System.Collections.Generic; using System.Linq; using System.Net.Http; using System.Net.Http.Json; +using System.Net.Mime; using System.Text.Json; using System.Threading.Tasks; using Wonky.Client.Features; @@ -58,9 +59,7 @@ public class ActivityHttpRepository : IActivityHttpRepository var response = await _client .GetAsync($"{_apiConfig.ActivityEndpoint}/date/{activityDate}"); var content = await response.Content.ReadAsStringAsync(); - - Console.WriteLine(content); - + _logger.LogInformation("GetActivities => {content}", content); return string.IsNullOrWhiteSpace(content) ? new List() : JsonSerializer.Deserialize>(content, _options); @@ -77,8 +76,9 @@ public class ActivityHttpRepository : IActivityHttpRepository }; var response = await _client .GetAsync(QueryHelpers.AddQueryString($"{_apiConfig.ActivityEndpoint}/page", queryString)); - var content = await response.Content.ReadAsStringAsync(); + if (!response.IsSuccessStatusCode) + _logger.LogInformation("GetActivityPages => {content}", content); var pagingResponse = new PagingResponse { @@ -91,8 +91,8 @@ public class ActivityHttpRepository : IActivityHttpRepository public async Task CreateActivity(ActivityDto model) { - Console.WriteLine(JsonSerializer.Serialize(model)); - var response = await _client.PostAsJsonAsync($"{_apiConfig.ActivityEndpoint}", model); + Console.WriteLine(JsonSerializer.Serialize(model, _options)); + var response = await _client.PostAsJsonAsync($"{_apiConfig.ActivityEndpoint}", model, _options); var content = await response.Content.ReadAsStringAsync(); var result = JsonSerializer.Deserialize(content); return result!; diff --git a/Wonky.Client/Pages/CrmActivityCreate.razor b/Wonky.Client/Pages/CrmActivityCreate.razor index 2e18276f..97444f7f 100644 --- a/Wonky.Client/Pages/CrmActivityCreate.razor +++ b/Wonky.Client/Pages/CrmActivityCreate.razor @@ -326,7 +326,7 @@
+ @bind-Value="_poDraft.DlvAddress1"/>
diff --git a/Wonky.Client/Pages/CrmActivityCreate.razor.cs b/Wonky.Client/Pages/CrmActivityCreate.razor.cs index 4a3675ba..3896677e 100644 --- a/Wonky.Client/Pages/CrmActivityCreate.razor.cs +++ b/Wonky.Client/Pages/CrmActivityCreate.razor.cs @@ -32,6 +32,7 @@ namespace Wonky.Client.Pages; public partial class CrmActivityCreate : IDisposable { + [Inject] public ILogger _logger { get; set; } [Inject] public IToastService ToastService { get; set; } [Inject] public NavigationManager NavigationManager { get; set; } [Inject] public ILocalStorageService StorageService { get; set; } @@ -42,6 +43,10 @@ public partial class CrmActivityCreate : IDisposable [Inject] private IActivityHttpRepository ActivityRepo { get; set; } [CascadingParameter] DraftStateProvider DraftStateProvider { get; set; } [Parameter] public string CompanyId { get; set; } + private readonly JsonSerializerOptions? _options = new JsonSerializerOptions + { + PropertyNameCaseInsensitive = true + }; private NgSalesItemView _selectedItem { get; set; } = new(); private List SalesItems { get; set; } = new(); private MetaData MetaData { get; set; } = new(); @@ -74,13 +79,17 @@ public partial class CrmActivityCreate : IDisposable _paging.PageSize = Convert.ToInt32(_prefs.PageSize); await GetSalesItems(); + Ux = await StorageService.GetItemAsync("_xu"); NgCompany = await CompanyRepo.GetCompanyById(CompanyId); // set up identification - _poDraft.SalesHeadId = ""; - _poDraft.CompanyId = CompanyId; + _poDraft.CompanyId = NgCompany.CompanyId; + _poDraft.BcId = NgCompany.BcId; + _poDraft.SalesRepId = Ux.Id; _poDraft.ActivityDate = _prefs.WorkDate; + _poDraft.ActivityStatusEnum = "noSale"; + _poDraft.VisitTypeEnum = NgCompany.Account is "" or "NY" ? "new" : "recall"; // permanent identifications _poDraft.SalesRep = Ux.Adviser; @@ -88,15 +97,16 @@ public partial class CrmActivityCreate : IDisposable _poDraft.VatNumber = NgCompany.VatNumber; _poDraft.EMail = NgCompany.Email; _poDraft.Phone = NgCompany.Phone; + _poDraft.Mobile = NgCompany.Mobile; _poDraft.Name = NgCompany.Name; - _poDraft.Address = NgCompany.Address1; + _poDraft.Address1 = NgCompany.Address1; _poDraft.Address2 = NgCompany.Address2; _poDraft.ZipCode = NgCompany.ZipCode; _poDraft.City = NgCompany.City; _poDraft.DlvName = NgCompany.Name; - _poDraft.DlvAddress = NgCompany.Address1; + _poDraft.DlvAddress1 = NgCompany.Address1; _poDraft.DlvAddress2 = NgCompany.Address2; _poDraft.DlvZipCode = NgCompany.ZipCode; _poDraft.DlvCity = NgCompany.City; @@ -109,19 +119,21 @@ public partial class CrmActivityCreate : IDisposable private void SetWorkDate(string workDate) { + _logger.LogInformation("WorkDateComponent.OnChanged() => {workDate}", workDate); _poDraft.ActivityDate = workDate; } private async Task CreateActivity() { HideButtons = true; + _poDraft.ActivityDate = _prefs.WorkDate; var activityType = _poDraft.ActivityTypeEnum switch { - "phone" => "Tlf", - "onSite" => "Bsg", + "phone" => "T", + "onSite" => "B", _ => "" }; - _poDraft.OurRef = $"{Ux.FullName.Split(" ")[0]} {activityType}"; + _poDraft.OurRef = $"{activityType}:{Ux.FullName.Split(" ")[0]}"; var ln = 0; // post to create activity endpoint @@ -144,9 +156,7 @@ public partial class CrmActivityCreate : IDisposable _poDraft.Lines = lines; await StorageService.SetItemAsync(CompanyId, _poDraft); - var result = await ActivityRepo.CreateActivity(_poDraft); - Console.WriteLine(JsonSerializer.Serialize(result)); ToastService.ShowSuccess($"{result.Message}."); NavigationManager.NavigateTo($"/companies"); } diff --git a/Wonky.Client/wwwroot/appsettings.json b/Wonky.Client/wwwroot/appsettings.json index 6e6bac3b..fbcf3a19 100644 --- a/Wonky.Client/wwwroot/appsettings.json +++ b/Wonky.Client/wwwroot/appsettings.json @@ -1,19 +1,29 @@ { "Logging": { "LogLevel": { - "Default": "Debug", + "Default": "None", "System": "Debug", "Microsoft": "Information" + }, + "Debug": { + "LogLevel": { + "Default": "Debug" + } + }, + "ActivityHttpRepository": { + "LogLevel": { + "Default": "Critical" + } } }, "appInfo": { "name": "Wonky Client", - "version": "0.5.1", + "version": "0.5.5", "isBeta": true, "image": "grumpy-coder.png" }, "apiConfig": { - "baseAddress": "https://staging.innotec.dk", + "baseAddress": "https://dev.innotec.dk", "tokenPath": "token", "userInfo": "api/auth/userinfo", "customerEndpoint": "api/v2/crm/companies", diff --git a/Wonky.Entity/DTO/ActivityDto.cs b/Wonky.Entity/DTO/ActivityDto.cs index b0923518..8004278c 100644 --- a/Wonky.Entity/DTO/ActivityDto.cs +++ b/Wonky.Entity/DTO/ActivityDto.cs @@ -19,20 +19,22 @@ namespace Wonky.Entity.DTO { public class ActivityDto { - public string SalesHeadId { get; set; } = ""; + public string SalesRep { get; set; } = ""; + public string SalesRepId { get; set; } = ""; public string CompanyId { get; set; } = ""; + public string BcId { get; set; } = ""; public string Account { get; set; } = ""; [MaxLength(20, ErrorMessage = "Du kan højst bruge 20 tegn")] public string VatNumber { get; set; } = ""; [MaxLength(100, ErrorMessage = "Du kan højst bruge 100 tegn")] public string Name { get; set; } = ""; [MaxLength(30, ErrorMessage = "Du kan højst bruge 30 tegn")] public string City { get; set; }= ""; [MaxLength(20, ErrorMessage = "Du kan højst bruge 20 tegn")] public string ZipCode { get; set; } = ""; - [MaxLength(100, ErrorMessage = "Du kan højst bruge 100 tegn")] public string Address { get; set; } = ""; + [MaxLength(100, ErrorMessage = "Du kan højst bruge 100 tegn")] public string Address1 { get; set; } = ""; [MaxLength(50, ErrorMessage = "Du kan højst bruge 50 tegn")] public string Address2 { get; set; } = ""; [MaxLength(20, ErrorMessage = "Du kan højst bruge 20 tegn")] public string Phone { get; set; } = ""; + [MaxLength(20, ErrorMessage = "Du kan højst bruge 20 tegn")] public string Mobile { get; set; } = ""; [MaxLength(80, ErrorMessage = "Du kan højst bruge 80 tegn")] public string EMail { get; set; } = ""; [MaxLength(100, ErrorMessage = "Du kan højst bruge 100 tegn")] public string Attention { get; set; } = ""; // Form entries - public string SalesRep { get; set; } = ""; [Required(ErrorMessage = "Vælg aktivitetstype")] public string ActivityTypeEnum { get; set; } = ""; [Required(ErrorMessage = "Vælg status for besøg ")] public string ActivityStatusEnum { get; set; } = ""; public string VisitTypeEnum { get; set; } = "recall"; @@ -45,7 +47,7 @@ namespace Wonky.Entity.DTO [MaxLength(255, ErrorMessage = "Du kan højst bruge 255 tegn")] public string CrmNote { get; set; } = ""; // Delivery address form entries [MaxLength(100, ErrorMessage = "Du kan højst bruge 100 tegn")] public string DlvName { get; set; } = ""; - [MaxLength(100, ErrorMessage = "Du kan højst bruge 100 tegn")] public string DlvAddress { get; set; } = ""; + [MaxLength(100, ErrorMessage = "Du kan højst bruge 100 tegn")] public string DlvAddress1 { get; set; } = ""; [MaxLength(50, ErrorMessage = "Du kan højst bruge 50 tegn")] public string DlvAddress2 { get; set; } = ""; [MaxLength(20, ErrorMessage = "Du kan højst bruge 20 tegn")] public string DlvZipCode { get; set; } = ""; [MaxLength(30, ErrorMessage = "Du kan højst bruge 30 tegn")] public string DlvCity { get; set; } = "";