built v 0.5.5

This commit is contained in:
Frede Hundewadt 2022-06-12 11:43:45 +02:00
parent 427ee9195a
commit 2daf236c4a
8 changed files with 64 additions and 32 deletions

View file

@ -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<Home> 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<ReportActivityDto> 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)

View file

@ -3,11 +3,11 @@
<div class="row mb-1">
<div class="col-md-4">
<h5 class="fw-bold">@DateTime.Parse(WorkDate).ToLongDateString()</h5>
<h5 class="fw-bold">@DateTime.Parse(_workDate).ToLongDateString()</h5>
</div>
<div class="col-md-4">
<input type="date" class="form-control"
@bind-Value="WorkDate" @bind-Value:event="oninput"
@bind-Value="_workDate" @bind-Value:event="oninput"
@onchange="OnDateChanged" />
</div>
</div>

View file

@ -11,14 +11,18 @@ public partial class WorkDateComponent : IDisposable
[Parameter] public EventCallback<string> 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}";

View file

@ -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<ReportActivityDto>()
: JsonSerializer.Deserialize<List<ReportActivityDto>>(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<ActivityDto>
{
@ -91,8 +91,8 @@ public class ActivityHttpRepository : IActivityHttpRepository
public async Task<ActivityResponseView> 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<ActivityResponseView>(content);
return result!;

View file

@ -326,7 +326,7 @@
<label for="dlvAddress1" class="col-md-2 col-form-label">Lev. Adresse</label>
<div class="col-md-10">
<InputText id="dlvAddress1" class="form-control"
@bind-Value="_poDraft.DlvAddress"/>
@bind-Value="_poDraft.DlvAddress1"/>
</div>
</div>
<div class="row mb-1">

View file

@ -32,6 +32,7 @@ namespace Wonky.Client.Pages;
public partial class CrmActivityCreate : IDisposable
{
[Inject] public ILogger<CrmActivityCreate> _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<NgSalesItemView> 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<UserInfoView>("_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");
}

View file

@ -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",

View file

@ -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; } = "";