built v0.8.36
This commit is contained in:
parent
b114eaa969
commit
cda4db4f51
31 changed files with 186 additions and 110 deletions
|
@ -19,6 +19,9 @@
|
|||
<Router AppAssembly="@typeof(App).Assembly">
|
||||
<Found Context="routeData">
|
||||
<AuthorizeRouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)">
|
||||
<NotAuthorized>
|
||||
<text>Venligst login</text>
|
||||
</NotAuthorized>
|
||||
<Authorizing>
|
||||
<text>Checker autorisation ...</text>
|
||||
</Authorizing>
|
||||
|
|
|
@ -17,14 +17,17 @@
|
|||
|
||||
@if (Enabled == 1)
|
||||
{
|
||||
<a type="button" class="btn btn-success" href="/companies/@CompanyId/activities/new">Besøg</a>
|
||||
<a type="button" class="btn btn-@ButtonType" href="@ActionLink">@ButtonText</a>
|
||||
}
|
||||
else
|
||||
{
|
||||
<a type="button" class="btn btn-outline-secondary disabled" aria-disabled="true">Besøg</a>
|
||||
<a type="button" class="btn btn-outline-secondary disabled" aria-disabled="true">@ButtonText</a>
|
||||
}
|
||||
|
||||
@code {
|
||||
[Parameter] public string CompanyId { get; set; } = "";
|
||||
[Parameter]public int Enabled { get; set; }
|
||||
[Parameter] public int Enabled { get; set; }
|
||||
[Parameter] public string ButtonType { get; set; } = "primary";
|
||||
[Parameter] public string ButtonText { get; set; } = "Tag Mig";
|
||||
[Parameter] public string ActionLink { get; set; } = "#";
|
||||
|
||||
}
|
|
@ -21,8 +21,30 @@
|
|||
@if (Companies.Any())
|
||||
{
|
||||
<div class="list-group list-group-flush">
|
||||
@foreach (var company in Companies)
|
||||
{
|
||||
<div class="list-group-item px-3 bg-dark text-white">
|
||||
<div class="row">
|
||||
<div class="col-sm-1">
|
||||
Besøg
|
||||
</div>
|
||||
<div class="col">
|
||||
Navn
|
||||
</div>
|
||||
<div class="col">
|
||||
Konto
|
||||
</div>
|
||||
<div class="col">
|
||||
Telefon
|
||||
</div>
|
||||
<div class="col">
|
||||
Bynavn
|
||||
</div>
|
||||
<div class="col">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@foreach (var company in Companies)
|
||||
{
|
||||
<a class="list-group-item list-group-item-action" href="/companies/@company.CompanyId">
|
||||
<div class="row align-items-center">
|
||||
<div class="col-sm-1">
|
||||
|
@ -35,16 +57,18 @@
|
|||
<div class="col">
|
||||
@company.Account
|
||||
</div>
|
||||
<div class="col">
|
||||
@company.Phone
|
||||
</div>
|
||||
<div class="col">
|
||||
@company.City
|
||||
</div>
|
||||
<div class="col">
|
||||
<ActivityButton CompanyId="@company.CompanyId" Enabled="@company.ValidVat"></ActivityButton>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</a>
|
||||
}
|
||||
}
|
||||
</div>
|
||||
}
|
||||
else
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
{
|
||||
<table class="table table-hover table-striped justify-content-center">
|
||||
<thead>
|
||||
<tr>
|
||||
<tr class="bg-dark text-white">
|
||||
<th scope="col">Navn</th>
|
||||
<th scope="col">Fork</th>
|
||||
<th scope="col" class="text-nowrap">Varenr</th>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
@if (Inventory.Any())
|
||||
{
|
||||
<div class="list-group list-group-flush">
|
||||
<div class="list-group-item">
|
||||
<div class="list-group-item px-2 bg-dark text-white rounded-2">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h4>Produkt</h4>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
{
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<tr class="bg-dark text-white rounded-2">
|
||||
<th scope="col">
|
||||
Dato
|
||||
</th>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
@if (ReportList != null)
|
||||
{
|
||||
<div class="list-group list-group-flush">
|
||||
<div class="list-group-item ">
|
||||
<div class="list-group-item px-3 bg-dark text-white">
|
||||
<div class="row">
|
||||
<div class="fw-bold col">
|
||||
Dato
|
||||
|
|
|
@ -57,7 +57,7 @@ public class ActivityHttpRepository : IActivityHttpRepository
|
|||
public async Task<NgActivityListView> GetActivities(string activityDate)
|
||||
{
|
||||
var response = await _client
|
||||
.GetAsync($"{_apiConfig.ActivityEndpoint}/date/{activityDate}");
|
||||
.GetAsync($"{_apiConfig.ActivityUri}/date/{activityDate}");
|
||||
var content = await response.Content.ReadAsStringAsync();
|
||||
return string.IsNullOrWhiteSpace(content)
|
||||
? new NgActivityListView()
|
||||
|
@ -74,7 +74,7 @@ public class ActivityHttpRepository : IActivityHttpRepository
|
|||
["searchTerm"] = pagingParameters.SearchTerm,
|
||||
};
|
||||
var response = await _client
|
||||
.GetAsync(QueryHelpers.AddQueryString($"{_apiConfig.ActivityEndpoint}/page", queryString));
|
||||
.GetAsync(QueryHelpers.AddQueryString($"{_apiConfig.ActivityUri}/page", queryString));
|
||||
var content = await response.Content.ReadAsStringAsync();
|
||||
if (!response.IsSuccessStatusCode)
|
||||
_logger.LogInformation("GetActivityPages => {content}", content);
|
||||
|
@ -91,7 +91,7 @@ public class ActivityHttpRepository : IActivityHttpRepository
|
|||
public async Task<ApiResponse> CreateActivity(ActivityDto model)
|
||||
{
|
||||
Console.WriteLine(JsonSerializer.Serialize(model, _options));
|
||||
var response = await _client.PostAsJsonAsync($"{_apiConfig.ActivityEndpoint}", model, _options);
|
||||
var response = await _client.PostAsJsonAsync($"{_apiConfig.ActivityUri}", model, _options);
|
||||
var content = await response.Content.ReadAsStringAsync();
|
||||
var result = JsonSerializer.Deserialize<ApiResponse>(content);
|
||||
return result!;
|
||||
|
@ -100,13 +100,13 @@ public class ActivityHttpRepository : IActivityHttpRepository
|
|||
public async Task<ActivityDto> GetActivity(string id)
|
||||
{
|
||||
var salesItem = await _client
|
||||
.GetFromJsonAsync<ActivityDto>($"{_apiConfig.ActivityEndpoint}/{id}");
|
||||
.GetFromJsonAsync<ActivityDto>($"{_apiConfig.ActivityUri}/{id}");
|
||||
return salesItem ?? new ActivityDto();
|
||||
}
|
||||
|
||||
public async Task<ApiResponse> AcceptOffer(string id)
|
||||
{
|
||||
var response = await _client.PostAsJsonAsync($"{_apiConfig.ActivityEndpoint}/{id}/accept", id)
|
||||
var response = await _client.PostAsJsonAsync($"{_apiConfig.ActivityUri}/{id}/accept", id)
|
||||
;
|
||||
var content = await response.Content.ReadAsStringAsync();
|
||||
var result = JsonSerializer.Deserialize<ApiResponse>(content);
|
||||
|
|
|
@ -68,7 +68,7 @@ public class CompanyHttpRepository : ICompanyHttpRepository
|
|||
["isHidden"] = pagingParameters.IsHidden.ToString(),
|
||||
["hasFolded"] = pagingParameters.HasFolded.ToString()
|
||||
};
|
||||
var response = await _client.GetAsync(QueryHelpers.AddQueryString($"{_apiConfig.CompanyEndpoint}/page", queryString));
|
||||
var response = await _client.GetAsync(QueryHelpers.AddQueryString($"{_apiConfig.CompanyUri}/page", queryString));
|
||||
|
||||
var content = await response.Content.ReadAsStringAsync();
|
||||
|
||||
|
@ -82,13 +82,13 @@ public class CompanyHttpRepository : ICompanyHttpRepository
|
|||
|
||||
public async Task<CompanyDto> GetCompanyByAccount(string accountNumber)
|
||||
{
|
||||
var company = await _client.GetFromJsonAsync<CompanyDto>($"{_apiConfig.CompanyEndpoint}/account/{accountNumber}");
|
||||
var company = await _client.GetFromJsonAsync<CompanyDto>($"{_apiConfig.CompanyUri}/account/{accountNumber}");
|
||||
return company ?? new CompanyDto();
|
||||
}
|
||||
|
||||
public async Task<CompanyDto> GetCompanyById(string companyId)
|
||||
{
|
||||
var company = await _client.GetFromJsonAsync<CompanyDto>($"{_apiConfig.CompanyEndpoint}/{companyId}");
|
||||
var company = await _client.GetFromJsonAsync<CompanyDto>($"{_apiConfig.CompanyUri}/{companyId}");
|
||||
return company ?? new CompanyDto();
|
||||
}
|
||||
|
||||
|
@ -99,7 +99,7 @@ public class CompanyHttpRepository : ICompanyHttpRepository
|
|||
/// <returns>company id</returns>
|
||||
public async Task<string> CreateCompany(CompanyDto model)
|
||||
{
|
||||
var response = await _client.PostAsJsonAsync($"{_apiConfig.CompanyEndpoint}", model);
|
||||
var response = await _client.PostAsJsonAsync($"{_apiConfig.CompanyUri}", model);
|
||||
var content = await response.Content.ReadAsStringAsync();
|
||||
var result = JsonSerializer.Deserialize<CompanyDto>(content, _options);
|
||||
return result.CompanyId;
|
||||
|
@ -107,13 +107,15 @@ public class CompanyHttpRepository : ICompanyHttpRepository
|
|||
|
||||
public async Task<bool> UpdateCompany(string companyId, CompanyDto model)
|
||||
{
|
||||
var response = await _client.PutAsJsonAsync($"{_apiConfig.CompanyEndpoint}/{companyId}", model);
|
||||
var response = await _client.PutAsJsonAsync($"{_apiConfig.CompanyUri}/{companyId}", model);
|
||||
var content = await response.Content.ReadAsStringAsync();
|
||||
Console.WriteLine(content);
|
||||
return response.IsSuccessStatusCode;
|
||||
}
|
||||
|
||||
public async Task<bool> DeleteCompany(string companyId)
|
||||
{
|
||||
var response = await _client.DeleteAsync($"{_apiConfig.CompanyEndpoint}/{companyId}");
|
||||
var response = await _client.DeleteAsync($"{_apiConfig.CompanyUri}/{companyId}");
|
||||
return response.IsSuccessStatusCode;
|
||||
}
|
||||
}
|
|
@ -33,7 +33,7 @@ public class HistoryHttpRepository : IHistoryHttpRepository
|
|||
}
|
||||
public async Task<List<ProductInventoryView>> FetchInventory(string companyId)
|
||||
{
|
||||
var response = await _client.GetAsync($"{_api.CompanyEndpoint}/{companyId}/{_api.InventoryUri}");
|
||||
var response = await _client.GetAsync($"{_api.CompanyUri}/{companyId}/{_api.InventoryUri}");
|
||||
var content = await response.Content.ReadAsStringAsync();
|
||||
return response.IsSuccessStatusCode
|
||||
? JsonSerializer.Deserialize<List<ProductInventoryView>>(content, _options)
|
||||
|
@ -44,18 +44,18 @@ public class HistoryHttpRepository : IHistoryHttpRepository
|
|||
public async Task<List<ProductHistoryView>> FetchHistory(string companyId)
|
||||
{
|
||||
return await _client.GetFromJsonAsync<List<ProductHistoryView>>(
|
||||
$"{_api.CompanyEndpoint}/{companyId}/{_api.ProductUri}");
|
||||
$"{_api.CompanyUri}/{companyId}/{_api.ProductUri}");
|
||||
|
||||
}
|
||||
|
||||
public async Task<List<ProductHistoryView>> FetchHistory(string companyId, string sku)
|
||||
{
|
||||
return await _client.GetFromJsonAsync<List<ProductHistoryView>>(
|
||||
$"{_api.CompanyEndpoint}/{companyId}/{_api.ProductUri}/{sku}");
|
||||
$"{_api.CompanyUri}/{companyId}/{_api.ProductUri}/{sku}");
|
||||
}
|
||||
|
||||
public async Task<string> UpdateProductHistory(string companyId, string syncDate = "2010-01-01")
|
||||
{
|
||||
return await _client.GetStringAsync($"{_api.CompanyEndpoint}/{companyId}/{_api.UpdateUri}/{syncDate}");
|
||||
return await _client.GetStringAsync($"{_api.CompanyUri}/{companyId}/{_api.SyncUri}/{syncDate}");
|
||||
}
|
||||
}
|
|
@ -32,32 +32,32 @@ public class ReportHttpRepository :IReportHttpRepository
|
|||
|
||||
public async Task<List<NgSalesReportListView>> GetReports()
|
||||
{
|
||||
return await _client.GetFromJsonAsync<List<NgSalesReportListView>>($"{_apiConfig.ReportEndpoint}");
|
||||
return await _client.GetFromJsonAsync<List<NgSalesReportListView>>($"{_apiConfig.ReportUri}");
|
||||
}
|
||||
public async Task<bool> ReportExist(string workDate)
|
||||
{
|
||||
var result =
|
||||
await _client
|
||||
.GetFromJsonAsync<ReportClosedView>($"{_apiConfig.ReportEndpoint}/exist/{workDate}");
|
||||
.GetFromJsonAsync<ReportClosedView>($"{_apiConfig.ReportUri}/exist/{workDate}");
|
||||
return result.ReportClosed;
|
||||
}
|
||||
|
||||
public async Task<NgSalesReportView> GetReport(string workDate)
|
||||
{
|
||||
return await _client.GetFromJsonAsync<NgSalesReportView>($"{_apiConfig.ReportEndpoint}/{workDate}");
|
||||
return await _client.GetFromJsonAsync<NgSalesReportView>($"{_apiConfig.ReportUri}/{workDate}");
|
||||
|
||||
}
|
||||
public async Task<ReportInitDto> InitializeReportData(string workDate)
|
||||
{
|
||||
var initData = await _client
|
||||
.GetFromJsonAsync<ReportInitDto>($"{_apiConfig.ReportEndpoint}/init/{workDate}");
|
||||
.GetFromJsonAsync<ReportInitDto>($"{_apiConfig.ReportUri}/init/{workDate}");
|
||||
return initData ?? new ReportInitDto();
|
||||
}
|
||||
|
||||
public async Task<ApiResponse> PostReport(string workDate, ReportDto reportDto)
|
||||
{
|
||||
var response = await _client
|
||||
.PostAsJsonAsync($"{_apiConfig.ReportEndpoint}/{workDate}", reportDto);
|
||||
.PostAsJsonAsync($"{_apiConfig.ReportUri}/{workDate}", reportDto);
|
||||
|
||||
var jsonDate = await response.Content.ReadAsStringAsync();
|
||||
var result = JsonSerializer.Deserialize<ApiResponse>(jsonDate);
|
||||
|
|
|
@ -64,7 +64,7 @@ public class SalesItemHttpRepository : ISalesItemHttpRepository
|
|||
["selectGroup"] = pagingParameters.SelectGroup == "0" ? "" : pagingParameters.SelectGroup,
|
||||
};
|
||||
var response = await _client
|
||||
.GetAsync(QueryHelpers.AddQueryString($"{_apiConfig.CatalogEndpoint}/page", queryString));
|
||||
.GetAsync(QueryHelpers.AddQueryString($"{_apiConfig.CatalogUri}/page", queryString));
|
||||
|
||||
var content = await response.Content.ReadAsStringAsync();
|
||||
|
||||
|
@ -80,7 +80,7 @@ public class SalesItemHttpRepository : ISalesItemHttpRepository
|
|||
public async Task<NgSalesItemView> GetSalesItem(string id)
|
||||
{
|
||||
var salesItem = await _client
|
||||
.GetFromJsonAsync<NgSalesItemView>($"{_apiConfig.CatalogEndpoint}/{id}");
|
||||
.GetFromJsonAsync<NgSalesItemView>($"{_apiConfig.CatalogUri}/{id}");
|
||||
return salesItem ?? new NgSalesItemView();
|
||||
}
|
||||
}
|
|
@ -32,16 +32,16 @@ public class TaskItemHttpRepository : ITaskItemHttpRepository
|
|||
|
||||
public async Task<List<TaskItemView>> GetTaskList()
|
||||
{
|
||||
return await _client.GetFromJsonAsync<List<TaskItemView>>($"{_apiConfig.TaskItemEndpoint}");
|
||||
return await _client.GetFromJsonAsync<List<TaskItemView>>($"{_apiConfig.TaskUri}");
|
||||
}
|
||||
|
||||
public async Task CreateTaskItem(TaskItemView taskItem)
|
||||
{
|
||||
await _client.PostAsJsonAsync($"{_apiConfig.TaskItemEndpoint}", taskItem);
|
||||
await _client.PostAsJsonAsync($"{_apiConfig.TaskUri}", taskItem);
|
||||
}
|
||||
|
||||
public async Task<TaskItemView> GetTaskItem(string taskItemId)
|
||||
{
|
||||
return await _client.GetFromJsonAsync<TaskItemView>($"{_apiConfig.TaskItemEndpoint}/{taskItemId}");
|
||||
return await _client.GetFromJsonAsync<TaskItemView>($"{_apiConfig.TaskUri}/{taskItemId}");
|
||||
}
|
||||
}
|
|
@ -42,7 +42,7 @@
|
|||
<label for="activityType" class="col-md-2 col-form-label">Ordre Type</label>
|
||||
<div class="col-md-4">
|
||||
<InputSelect id="activityType" class="form-select" @bind-Value="@_draft.ActivityTypeEnum">
|
||||
<option value="">-TAG MIG-</option>
|
||||
<option value="">→ TAG MIG ←</option>
|
||||
<option value="onSite">Besøg</option>
|
||||
<option value="phone">Telefon</option>
|
||||
</InputSelect>
|
||||
|
@ -234,7 +234,7 @@
|
|||
@* catalog *@
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="row mb-1">
|
||||
<div class="row mb-2">
|
||||
<div class="col">
|
||||
<ItemGroupComponent OnChanged="SetItemGroup"/>
|
||||
</div>
|
||||
|
@ -260,7 +260,7 @@
|
|||
{
|
||||
<table class="table table-hover table-striped justify-content-center">
|
||||
<thead>
|
||||
<tr>
|
||||
<tr class="bg-black bg-opacity-50 text-white rounded-2">
|
||||
<th scope="col">Navn</th>
|
||||
<th scope="col" class="text-nowrap">Varenr</th>
|
||||
<th scope="col" class="text-nowrap">Fork</th>
|
||||
|
@ -351,13 +351,13 @@
|
|||
<div class="card-footer">
|
||||
<div class="row mt-2 mb-2">
|
||||
<div class="col">
|
||||
<a class="btn btn-primary" href="/companies">Til Oversigt</a>
|
||||
<a class="btn btn-info" href="/companies">Til Oversigt</a>
|
||||
</div>
|
||||
<div class="col">
|
||||
<a class="btn btn-primary" href="/company/@_company.CompanyId">Tilbage</a>
|
||||
<a class="btn btn-warning" href="/companies/@_company.CompanyId">Annuller</a>
|
||||
</div>
|
||||
<div class="col">
|
||||
<button type="button" class="btn btn-success" @onclick="CreateActivity">Opret besøg</button>
|
||||
<button type="button" class="btn btn-primary" @onclick="CreateActivity">Opret besøg</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -30,12 +30,12 @@ using Wonky.Entity.Views;
|
|||
|
||||
namespace Wonky.Client.Pages;
|
||||
|
||||
public partial class ActivityCompanyCreate : IDisposable
|
||||
public partial class ActivityVisitNew : IDisposable
|
||||
{
|
||||
[CascadingParameter] DraftStateProvider DraftStateProvider { get; set; }
|
||||
[Parameter] public string CompanyId { get; set; }
|
||||
// todo: prevent creating activity for workDate with closed report
|
||||
[Inject] private ILogger<ActivityCompanyCreate> _logger { get; set; }
|
||||
[Inject] private ILogger<ActivityVisitNew> _logger { get; set; }
|
||||
[Inject] private IToastService _toast { get; set; }
|
||||
[Inject] private NavigationManager _navigator { get; set; }
|
||||
[Inject] private ILocalStorageService _storage { get; set; }
|
|
@ -35,10 +35,10 @@ using Wonky.Entity.Views;
|
|||
|
||||
namespace Wonky.Client.Pages
|
||||
{
|
||||
public partial class CompanyCreate : IDisposable
|
||||
public partial class CompanyNew : IDisposable
|
||||
{
|
||||
[Inject] private IToastService _toast { get; set; }
|
||||
[Inject] private ILogger<CompanyCreate> _logger { get; set; }
|
||||
[Inject] private ILogger<CompanyNew> _logger { get; set; }
|
||||
[Inject] private ILocalStorageService _storage { get; set; }
|
||||
[Inject] private NavigationManager _navigator { get; set; }
|
||||
[Inject] private ICompanyHttpRepository _companyRepo { get; set; }
|
|
@ -195,19 +195,22 @@
|
|||
<div class="card-footer">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<button type="submit" class="btn btn-success">Gem</button>
|
||||
<button type="submit" class="btn btn-warning">Gem</button>
|
||||
</div>
|
||||
<div class="col">
|
||||
<a class="btn btn-primary" href="/companies">Til Oversigt</a>
|
||||
</div>
|
||||
<div class="col">
|
||||
<a class="btn btn-success" href="/companies/@_company.CompanyId/h/i">Produktkøb</a>
|
||||
<a class="btn btn-info" href="/companies/@_company.CompanyId/h/i">Produktkøb</a>
|
||||
</div>
|
||||
<div class="col">
|
||||
<a class="btn btn-success" href="/companies/@_company.CompanyId/h/p">Varelinjer</a>
|
||||
<a class="btn btn-info" href="/companies/@_company.CompanyId/h/p">Varelinjer</a>
|
||||
</div>
|
||||
<div class="col">
|
||||
<ActivityButton CompanyId="@_company.CompanyId" Enabled="@_company.ValidVat"></ActivityButton>
|
||||
<ActivityButton ActionLink="@_actionLink"
|
||||
ButtonText="Besøg"
|
||||
ButtonType="primary"
|
||||
Enabled="@_enableActivity"></ActivityButton>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -37,7 +37,7 @@ public partial class CompanyView : IDisposable
|
|||
{
|
||||
[Parameter] public string CompanyId { get; set; } = "";
|
||||
[Inject] private IToastService _toast { get; set; }
|
||||
[Inject] private ILogger<CompanyView> _loger { get; set; }
|
||||
[Inject] private ILogger<CompanyView> _logger { get; set; }
|
||||
[Inject] private NavigationManager _navigator { get; set; }
|
||||
[Inject] private ICompanyHttpRepository _companyRepo { get; set; }
|
||||
[Inject] private IHistoryHttpRepository _historyRepo { get; set; }
|
||||
|
@ -58,6 +58,9 @@ public partial class CompanyView : IDisposable
|
|||
private string _orgVat;
|
||||
private string countryCode = "dk";
|
||||
private string _visitState = "the-ugly";
|
||||
private int _enableActivity = 0;
|
||||
private bool _hideButtons = false;
|
||||
private string _actionLink = "";
|
||||
|
||||
private readonly JsonSerializerOptions _options = new ()
|
||||
{
|
||||
|
@ -81,6 +84,8 @@ public partial class CompanyView : IDisposable
|
|||
_orgVat = _company.VatNumber;
|
||||
_company.CountryCode = ux.CountryCode.ToLower();
|
||||
|
||||
_enableActivity = _company.ValidVat;
|
||||
|
||||
vatAddress = PrepareVatAddress(_company);
|
||||
|
||||
if (_company.Interval == 0)
|
||||
|
@ -92,7 +97,7 @@ public partial class CompanyView : IDisposable
|
|||
if (!_company.ValidDateSpan())
|
||||
_nextVisit = _lastVisit.AddDays(_company.Interval * 7);
|
||||
_visitState = Utils.GetVisitState($"{_nextVisit:yyyy-MM-dd}");
|
||||
|
||||
_actionLink = $"/companies/{CompanyId}/activities/new";
|
||||
if(_company.HasFolded == 1)
|
||||
{
|
||||
_hasFolded = true;
|
||||
|
@ -119,8 +124,7 @@ public partial class CompanyView : IDisposable
|
|||
_company.LastVisit = $"{_lastVisit:yyyy-MM-dd}";
|
||||
_company.NextVisit = $"{_nextVisit:yyyy-MM-dd}";
|
||||
|
||||
if (!VatUtils.ValidateFormat(_company.CountryCode, _company.VatNumber) ||
|
||||
!_company.ValidDateSpan())
|
||||
if (!VatUtils.ValidateFormat(_company.CountryCode, _company.VatNumber) || !_company.ValidDateSpan())
|
||||
{
|
||||
_formInvalid = true;
|
||||
}
|
||||
|
@ -134,21 +138,26 @@ public partial class CompanyView : IDisposable
|
|||
{
|
||||
_formInvalid = true;
|
||||
_editContext.OnFieldChanged -= HandleFieldChanged;
|
||||
_editContext.OnValidationStateChanged -= ValidationChanged;
|
||||
|
||||
_editContext = new EditContext(_company);
|
||||
|
||||
_formInvalid = _editContext.Validate();
|
||||
|
||||
_editContext.OnFieldChanged += HandleFieldChanged;
|
||||
_editContext.OnValidationStateChanged -= ValidationChanged;
|
||||
_editContext.OnValidationStateChanged += ValidationChanged;
|
||||
}
|
||||
|
||||
private async Task SubmitUpdate()
|
||||
{
|
||||
if (!VatUtils.ValidateFormat(_company.CountryCode, _company.VatNumber))
|
||||
{
|
||||
_toast.ShowError($"CVR/VAT/ORG nummer er ugyldig.");
|
||||
_toast.ShowError($"CVR/VAT/ORG nummer mangler eller er ugyldig.");
|
||||
StateHasChanged();
|
||||
return;
|
||||
}
|
||||
|
||||
_hideButtons = true;
|
||||
_company.LastVisit = $"{_lastVisit:yyyy-MM-dd}";
|
||||
_company.NextVisit = $"{_nextVisit:yyyy-MM-dd}";
|
||||
_company.IsHidden = 0;
|
||||
|
@ -156,13 +165,15 @@ public partial class CompanyView : IDisposable
|
|||
_company.UpdateErpVat = 1;
|
||||
|
||||
var x = JsonSerializer.Serialize(_company, _options);
|
||||
_loger.LogInformation(x);
|
||||
_logger.LogInformation(x);
|
||||
var success = await _companyRepo.UpdateCompany(CompanyId, _company );
|
||||
if (success)
|
||||
{
|
||||
_toast.ShowSuccess("Check");
|
||||
_navigator.NavigateTo($"/companies/{CompanyId}");
|
||||
_toast.ShowSuccess("Kunde er opdateret");
|
||||
_company = await _companyRepo.GetCompanyById(_company.CompanyId);
|
||||
}
|
||||
|
||||
_hideButtons = false;
|
||||
}
|
||||
|
||||
private async Task GetInfoFromAddress(VatAddress address)
|
||||
|
@ -209,6 +220,7 @@ public partial class CompanyView : IDisposable
|
|||
private static VatAddress PrepareVatAddress(CompanyDto model)
|
||||
{
|
||||
var digits = "123456789".ToCharArray();
|
||||
// process address1
|
||||
var pos1 = model.Address1.IndexOfAny(digits);
|
||||
if (pos1 > 0)
|
||||
{
|
||||
|
@ -219,6 +231,7 @@ public partial class CompanyView : IDisposable
|
|||
HouseNumber = Regex.Replace(model.Address1[pos1..], "[^0-9]", "")
|
||||
};
|
||||
}
|
||||
// process address2
|
||||
var pos2 = model.Address2.IndexOfAny(digits);
|
||||
if (pos2 > 0)
|
||||
{
|
||||
|
|
|
@ -3,7 +3,14 @@
|
|||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3>@_company.Name</h3>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h3>@_company.Name</h3>
|
||||
</div>
|
||||
<div class="col align-content-end">
|
||||
<a class="btn btn-primary" href="/companies/@_company.CompanyId">Tilbage</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<ProductLineTableComponent ProductHistory="_lines"></ProductLineTableComponent>
|
||||
|
|
|
@ -3,7 +3,14 @@
|
|||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3>@_company.Name</h3>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h3>@_company.Name</h3>
|
||||
</div>
|
||||
<div class="col align-content-end">
|
||||
<a class="btn btn-primary" href="/companies/@_company.CompanyId">Tilbage</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<ProductLineTableComponent ProductHistory="_lines"></ProductLineTableComponent>
|
||||
|
|
|
@ -5,7 +5,14 @@
|
|||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3>@_company.Name</h3>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h3>@_company.Name</h3>
|
||||
</div>
|
||||
<div class="col align-content-end">
|
||||
<a class="btn btn-primary" href="/companies/@_company.CompanyId">Tilbage</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<ProductInventoryTableComponent CompanyId="@CompanyId" Inventory="_inventory"></ProductInventoryTableComponent>
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
<div class="card-header">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="h5" style="font-variant: small-caps">Dagsrapport @(_workDate.ToLongDateString())</div>
|
||||
<div class="h5" style="font-variant: small-caps">@(_workDate.ToLongDateString())</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<WorkDateComponent OnChanged="SetWorkDate"></WorkDateComponent>
|
||||
|
@ -54,7 +54,7 @@
|
|||
<td>
|
||||
<select id="dayType" class="col-md-3 form-select"
|
||||
@bind-Value="_report.DayTypeEnum" @bind-Value:event="oninput">
|
||||
<option value="">-UDFYLD MIG-</option>
|
||||
<option value="">→ TAG MIG ←</option>
|
||||
<option value="sales">Salgsdag</option>
|
||||
<option value="meeting">Salgsmøde</option>
|
||||
<option value="office">Kontordag</option>
|
||||
|
@ -85,13 +85,13 @@
|
|||
</td>
|
||||
}
|
||||
<th>
|
||||
<button type="button" class="btn btn-info"
|
||||
<button type="button" class="btn btn-warning"
|
||||
@onclick="GetKeyFigures" disabled="@(!_noFigures)">
|
||||
Nøgletal
|
||||
</button>
|
||||
</th>
|
||||
<td>
|
||||
<button type="button" class="btn btn-info"
|
||||
<button type="button" class="btn btn-success"
|
||||
@onclick="SubmitReport" disabled="@(_noFigures)">
|
||||
Gem Rapport
|
||||
</button>
|
|
@ -28,14 +28,14 @@ using Wonky.Entity.Views;
|
|||
|
||||
namespace Wonky.Client.Pages;
|
||||
|
||||
public partial class ReportCreate : IDisposable
|
||||
public partial class SalesReportNew : IDisposable
|
||||
{
|
||||
[Inject] private HttpInterceptorService _interceptor { get; set; }
|
||||
[Inject] private UserPreferenceService _userPrefs { get; set; }
|
||||
[Inject] private IActivityHttpRepository _activityRepo { get; set; }
|
||||
[Inject] private IReportHttpRepository _reportRepo { get; set; }
|
||||
[Inject] private NavigationManager _navigator { get; set; }
|
||||
[Inject] private ILogger<ReportCreate> _logger { get; set; }
|
||||
[Inject] private ILogger<SalesReportNew> _logger { get; set; }
|
||||
[Inject] private IToastService _toast { get; set; }
|
||||
private EditContext _editContext { get; set; }
|
||||
private ReportDto _report { get; set; } = new();
|
|
@ -26,7 +26,7 @@
|
|||
<div class="col">
|
||||
@if (!string.IsNullOrWhiteSpace(ReportDate))
|
||||
{
|
||||
<h3 class="workDate">Dagsrapport @DateTime.Parse(ReportDate).ToLongDateString()</h3>
|
||||
<h3 class="workDate">@DateTime.Parse(ReportDate).ToLongDateString()</h3>
|
||||
}
|
||||
</div>
|
||||
<div class="col">
|
|
@ -5,7 +5,7 @@ using Wonky.Entity.Views;
|
|||
|
||||
namespace Wonky.Client.Pages;
|
||||
|
||||
public partial class ReportView
|
||||
public partial class SalesReportView
|
||||
{
|
||||
[Parameter] public string ReportDate { get; set; }
|
||||
[Inject] private IReportHttpRepository _reportRepo { get; set; }
|
||||
|
@ -21,6 +21,7 @@ public partial class ReportView
|
|||
|
||||
private async Task GetReport(string workDate)
|
||||
{
|
||||
ReportDate = workDate;
|
||||
_report = new NgSalesReportView();
|
||||
_report = await _reportRepo.GetReport(workDate);
|
||||
}
|
|
@ -38,7 +38,7 @@ builder.Services.AddScoped(sp => sp.GetService<IHttpClientFactory>().CreateClien
|
|||
builder.Services.AddHttpClient("InnoAPI", (sp, cl) =>
|
||||
{
|
||||
var apiConfig = sp.GetRequiredService<IOptions<ApiConfig>>();
|
||||
cl.BaseAddress = new Uri(apiConfig.Value.BaseAddress);
|
||||
cl.BaseAddress = new Uri(apiConfig.Value.BaseUrl);
|
||||
cl.EnableIntercept(sp);
|
||||
});
|
||||
|
||||
|
|
|
@ -54,7 +54,7 @@ namespace Wonky.Client.Services
|
|||
};
|
||||
|
||||
var response = await _client
|
||||
.PostAsync(_apiConfig.Value.TokenPath, new FormUrlEncodedContent(credentials));
|
||||
.PostAsync(_apiConfig.Value.TokenUri, new FormUrlEncodedContent(credentials));
|
||||
|
||||
var resContent = await response.Content.ReadAsStringAsync();
|
||||
|
||||
|
@ -89,7 +89,7 @@ namespace Wonky.Client.Services
|
|||
["grant_type"] = "refresh_token",
|
||||
["refresh_token"] = refreshToken
|
||||
};
|
||||
var response = await _client.PostAsync(_apiConfig.Value.TokenPath, new FormUrlEncodedContent(credentials));
|
||||
var response = await _client.PostAsync(_apiConfig.Value.TokenUri, new FormUrlEncodedContent(credentials));
|
||||
if (!response.IsSuccessStatusCode) return string.Empty;
|
||||
var resContent = await response.Content.ReadAsStringAsync();
|
||||
var data = JsonSerializer.Deserialize<AuthResponseView>(resContent, _options);
|
||||
|
@ -113,7 +113,7 @@ namespace Wonky.Client.Services
|
|||
|
||||
public async Task<UserInfoView> UserInfo(bool write = false)
|
||||
{
|
||||
var infoResponse = await _client.GetAsync(_apiConfig.Value.UserInfo);
|
||||
var infoResponse = await _client.GetAsync(_apiConfig.Value.UserInfoUri);
|
||||
var infoContent = await infoResponse.Content.ReadAsStringAsync();
|
||||
var userInfo = JsonSerializer.Deserialize<UserInfoView>(infoContent, _options);
|
||||
if(write)
|
||||
|
|
|
@ -51,7 +51,7 @@ public class VatInfoLookupService
|
|||
["houseNumber"] = $"{query.HouseNumber}",
|
||||
["zipCode"] = $"{query.ZipCode}"
|
||||
};
|
||||
var endpoint = QueryHelpers.AddQueryString(_config.VirkEndpoint, queryString);
|
||||
var endpoint = QueryHelpers.AddQueryString(_config.VirkUrl, queryString);
|
||||
var response = await _client.GetAsync(endpoint);
|
||||
var content = await response.Content.ReadAsStringAsync();
|
||||
var jsonResult = JsonSerializer.Deserialize<List<VirkRegInfo>>(content, _options);
|
||||
|
@ -70,7 +70,7 @@ public class VatInfoLookupService
|
|||
{
|
||||
["vatNumber"] = $"{vatNumber}"
|
||||
};
|
||||
var endpoint = QueryHelpers.AddQueryString(_config.BrRegEndpoint, queryString);
|
||||
var endpoint = QueryHelpers.AddQueryString(_config.BrRegUrl, queryString);
|
||||
var response = await _client.GetAsync(endpoint);
|
||||
|
||||
var content = await response.Content.ReadAsStringAsync();
|
||||
|
@ -91,7 +91,7 @@ public class VatInfoLookupService
|
|||
{
|
||||
["vatNumber"] = $"{vatNumber}"
|
||||
};
|
||||
var endpoint = QueryHelpers.AddQueryString(_config.ViesEndpoint, queryString);
|
||||
var endpoint = QueryHelpers.AddQueryString(_config.ViesUrl, queryString);
|
||||
var response = await _client.GetAsync(endpoint);
|
||||
|
||||
var content = await response.Content.ReadAsStringAsync();
|
||||
|
|
|
@ -18,26 +18,26 @@
|
|||
},
|
||||
"appInfo": {
|
||||
"name": "Wonky Client",
|
||||
"version": "0.8.30",
|
||||
"version": "0.8.36",
|
||||
"isBeta": true,
|
||||
"image": "grumpy-coder.png"
|
||||
},
|
||||
"apiConfig": {
|
||||
"baseAddress": "https://staging.innotec.dk",
|
||||
"tokenPath": "token",
|
||||
"userInfo": "api/auth/userinfo",
|
||||
"companyEndpoint": "api/v2/crm/companies",
|
||||
"catalogEndpoint": "api/v2/crm/catalog",
|
||||
"virkEndpoint": "api/v2/services/virk",
|
||||
"brRegEndpoint": "api/v2/services/brReg",
|
||||
"viesEndpoint": "api/v2/services/vies",
|
||||
"glsTrackUrl": "https://www.gls-group.eu/276-I-PORTAL-WEB/content/GLS/DK01/DA/5004.htm?txtAction=71000&txtRefNo=",
|
||||
"glsId": "",
|
||||
"activityEndpoint": "api/v2/crm/salesReps/sales",
|
||||
"reportEndpoint": "api/v2/crm/salesReps/reports",
|
||||
"taskItemEndpoint": "api/v2/crm/salesRps/tasks",
|
||||
"inventoryUri": "h/i",
|
||||
"productUri": "h/p",
|
||||
"updateUri": "h/u"
|
||||
"virkUrl": "api/v2/services/virk",
|
||||
"brRegUrl": "api/v2/services/brReg",
|
||||
"viesUrl": "api/v2/services/vies",
|
||||
"baseUrl": "https://staging.innotec.dk",
|
||||
"tokenUri": "token",
|
||||
"userInfoUri": "api/auth/userinfo",
|
||||
"catalogUri": "api/v2/crm/catalog",
|
||||
"activityUri": "api/v2/crm/salesReps/sales",
|
||||
"reportUri": "api/v2/crm/salesReps/reports",
|
||||
"taskUri": "api/v2/crm/salesRps/tasks",
|
||||
"companyUri": "api/v2/crm/companies",
|
||||
"inventoryUri": "history/inventory",
|
||||
"productUri": "history/products",
|
||||
"syncUri": "history/sync"
|
||||
}
|
||||
}
|
|
@ -16,24 +16,30 @@ namespace Wonky.Entity.Configuration;
|
|||
|
||||
public class ApiConfig
|
||||
{
|
||||
public string BaseAddress { get; set; } = "";
|
||||
public string CompanyEndpoint { get; set; } = "";
|
||||
public string CatalogEndpoint { get; set; } = "";
|
||||
public string KrvVariants { get; set; } = "";
|
||||
public string KrvProducts { get; set; } = "";
|
||||
public string ImageUpload { get; set; } = "";
|
||||
public string UserRegistration { get; set; } = "";
|
||||
public string UserInfo { get; set; } = "";
|
||||
public string VirkEndpoint { get; set; } = "";
|
||||
public string BrRegEndpoint { get; set; } = "";
|
||||
public string ViesEndpoint { get; set; } = "";
|
||||
public string TokenPath { get; set; } = "";
|
||||
// external service
|
||||
public string GlsTrackUrl { get; set; } = "";
|
||||
public string GlsId { get; set; } = "";
|
||||
public string ActivityEndpoint { get; set; } = "";
|
||||
public string ReportEndpoint { get; set; } = "";
|
||||
public string TaskItemEndpoint { get; set; } = "";
|
||||
public string VirkUrl { get; set; } = "";
|
||||
public string BrRegUrl { get; set; } = "";
|
||||
public string ViesUrl { get; set; } = "";
|
||||
// api service
|
||||
public string BaseUrl { get; set; } = "";
|
||||
public string CompanyUri { get; set; } = "";
|
||||
public string CatalogUri { get; set; } = "";
|
||||
public string UserInfoUri { get; set; } = "";
|
||||
public string TokenUri { get; set; } = "";
|
||||
public string ActivityUri { get; set; } = "";
|
||||
public string ReportUri { get; set; } = "";
|
||||
public string TaskUri { get; set; } = "";
|
||||
public string InventoryUri { get; set; } = "";
|
||||
public string ProductUri { get; set; } = "";
|
||||
public string UpdateUri { get; set; } = "";
|
||||
public string SyncUri { get; set; } = "";
|
||||
|
||||
|
||||
|
||||
// public string KrvVariantsUri { get; set; } = "";
|
||||
// public string KrvProductsUri { get; set; } = "";
|
||||
// public string ImageUploadUri { get; set; } = "";
|
||||
// public string UserRegistrationUri { get; set; } = "";
|
||||
|
||||
}
|
Loading…
Reference in a new issue