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