diff --git a/Wonky.Client/Components/TaskItemTableComponent.razor b/Wonky.Client/Components/TaskItemTableComponent.razor new file mode 100644 index 00000000..e474c8e8 --- /dev/null +++ b/Wonky.Client/Components/TaskItemTableComponent.razor @@ -0,0 +1,38 @@ +@* +// Copyright (C) 2022 FCS Frede's Computer Services. +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as +// published by the Free Software Foundation, either version 3 of the +// License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see [https://www.gnu.org/licenses/agpl-3.0.en.html] +// +*@ + +@if (TaskItemList.Any()) +{ +
+ @foreach (var task in TaskItemList) + { + +
+
+ +
+
+
+
+
+
+
+
+
+ } +
+} diff --git a/Wonky.Client/Components/TaskItemTableComponent.razor.cs b/Wonky.Client/Components/TaskItemTableComponent.razor.cs new file mode 100644 index 00000000..8b64aee2 --- /dev/null +++ b/Wonky.Client/Components/TaskItemTableComponent.razor.cs @@ -0,0 +1,44 @@ + +// Copyright (C) 2022 FCS Frede's Computer Services. +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as +// published by the Free Software Foundation, either version 3 of the +// License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see [https://www.gnu.org/licenses/agpl-3.0.en.html] +// + +using Microsoft.AspNetCore.Components; +using Wonky.Client.Shared; +using Wonky.Entity.DTO; + +namespace Wonky.Client.Components +{ + public partial class TaskItemTableComponent + { + [Parameter] public List TaskItemList { get; set; } = new(); + [Parameter] public EventCallback OnDelete { get; set; } + [Parameter] public EventCallback OnSelect { get; set; } + + private Confirmation _confirmation = new (); + private string _taskItemId = ""; + + private void CallConfirmationModal(string taskItemId) + { + _taskItemId = taskItemId; + _confirmation.Show(); + } + + private async Task DeleteTaskItem() + { + _confirmation.Hide(); + await OnDelete.InvokeAsync(_taskItemId); + } + } +} diff --git a/Wonky.Client/HttpRepository/CompanyHttpRepository.cs b/Wonky.Client/HttpRepository/CompanyHttpRepository.cs index b3f294bf..9a9fad6b 100644 --- a/Wonky.Client/HttpRepository/CompanyHttpRepository.cs +++ b/Wonky.Client/HttpRepository/CompanyHttpRepository.cs @@ -67,7 +67,7 @@ public class CompanyHttpRepository : ICompanyHttpRepository ["isHidden"] = pagingParameters.IsHidden.ToString(), ["hasFolded"] = pagingParameters.HasFolded.ToString() }; - var response = await _client.GetAsync(QueryHelpers.AddQueryString($"{_apiConfig.CustomerEndpoint}/page", queryString)); + var response = await _client.GetAsync(QueryHelpers.AddQueryString($"{_apiConfig.CompanyEndpoint}/page", queryString)); var content = await response.Content.ReadAsStringAsync(); @@ -81,13 +81,13 @@ public class CompanyHttpRepository : ICompanyHttpRepository public async Task GetCompanyByAccount(string accountNumber) { - var company = await _client.GetFromJsonAsync($"{_apiConfig.CustomerEndpoint}/account/{accountNumber}"); + var company = await _client.GetFromJsonAsync($"{_apiConfig.CompanyEndpoint}/account/{accountNumber}"); return company ?? new CompanyDto(); } public async Task GetCompanyById(string companyId) { - var company = await _client.GetFromJsonAsync($"{_apiConfig.CustomerEndpoint}/{companyId}"); + var company = await _client.GetFromJsonAsync($"{_apiConfig.CompanyEndpoint}/{companyId}"); return company ?? new CompanyDto(); } @@ -98,7 +98,7 @@ public class CompanyHttpRepository : ICompanyHttpRepository /// company id public async Task CreateCompany(CompanyDto model) { - var response = await _client.PostAsJsonAsync($"{_apiConfig.CustomerEndpoint}", model); + var response = await _client.PostAsJsonAsync($"{_apiConfig.CompanyEndpoint}", model); var content = await response.Content.ReadAsStringAsync(); var result = JsonSerializer.Deserialize(content, _options); return result.CompanyId; @@ -106,13 +106,13 @@ public class CompanyHttpRepository : ICompanyHttpRepository public async Task UpdateCompany(string companyId, CompanyDto model) { - var response = await _client.PutAsJsonAsync($"{_apiConfig.CustomerEndpoint}/{companyId}", model); + var response = await _client.PutAsJsonAsync($"{_apiConfig.CompanyEndpoint}/{companyId}", model); return response.IsSuccessStatusCode; } public async Task DeleteCompany(string companyId) { - var response = await _client.DeleteAsync($"{_apiConfig.CustomerEndpoint}/{companyId}"); + var response = await _client.DeleteAsync($"{_apiConfig.CompanyEndpoint}/{companyId}"); return response.IsSuccessStatusCode; } } \ No newline at end of file diff --git a/Wonky.Client/HttpRepository/ITaskItemHttpRepository.cs b/Wonky.Client/HttpRepository/ITaskItemHttpRepository.cs new file mode 100644 index 00000000..2c966615 --- /dev/null +++ b/Wonky.Client/HttpRepository/ITaskItemHttpRepository.cs @@ -0,0 +1,10 @@ +using Wonky.Client.Pages; + +namespace Wonky.Client.HttpRepository; + +public interface ITaskItemHttpRepository +{ + Task> GetTaskList(); + Task CreateTaskItem(TaskItemView taskItem); + Task GetTaskItem(string taskItemId); +} \ No newline at end of file diff --git a/Wonky.Client/HttpRepository/TaskItemHttpRepository.cs b/Wonky.Client/HttpRepository/TaskItemHttpRepository.cs new file mode 100644 index 00000000..2f17f052 --- /dev/null +++ b/Wonky.Client/HttpRepository/TaskItemHttpRepository.cs @@ -0,0 +1,47 @@ +using System.Net.Http.Json; +using System.Text.Json; +using Microsoft.AspNetCore.Components; +using Microsoft.Extensions.Options; +using Wonky.Client.Pages; +using Wonky.Entity.Configuration; +using Wonky.Entity.Views; + +namespace Wonky.Client.HttpRepository; + +public class TaskItemHttpRepository : ITaskItemHttpRepository +{ + private readonly JsonSerializerOptions _options = new JsonSerializerOptions + { + PropertyNameCaseInsensitive = true + }; + + private readonly NavigationManager _navigation; + private ILogger _logger; + private readonly HttpClient _client; + private readonly ApiConfig _apiConfig; + + public TaskItemHttpRepository(HttpClient client, + ILogger logger, + NavigationManager navigation, IOptions configuration) + { + _client = client; + _logger = logger; + _navigation = navigation; + _apiConfig = configuration.Value; + } + + public async Task> GetTaskList() + { + return await _client.GetFromJsonAsync>($"{_apiConfig.TaskItemEndpoint}"); + } + + public async Task CreateTaskItem(TaskItemView taskItem) + { + await _client.PostAsJsonAsync($"{_apiConfig.TaskItemEndpoint}", taskItem); + } + + public async Task GetTaskItem(string taskItemId) + { + return await _client.GetFromJsonAsync($"{_apiConfig.TaskItemEndpoint}/{taskItemId}"); + } +} \ No newline at end of file diff --git a/Wonky.Client/Pages/Info.razor b/Wonky.Client/Pages/Info.razor index d417c6cd..cdbca79d 100644 --- a/Wonky.Client/Pages/Info.razor +++ b/Wonky.Client/Pages/Info.razor @@ -28,7 +28,7 @@
Browservalg
- Det anbefales at bruge en Chrome baseret browser f.eks. Edge, Safari, Vivaldi, Chrome eller Chromium + De nyeste udgaver af Firefox, Edge, Safari, Vivaldi, Chrome eller Chromium.
diff --git a/Wonky.Client/Pages/ReportCreate.razor b/Wonky.Client/Pages/ReportCreate.razor index 765a4c80..be546d4a 100644 --- a/Wonky.Client/Pages/ReportCreate.razor +++ b/Wonky.Client/Pages/ReportCreate.razor @@ -31,7 +31,7 @@
- @if (_fetching) + @if (_working) { } diff --git a/Wonky.Client/Pages/ReportCreate.razor.cs b/Wonky.Client/Pages/ReportCreate.razor.cs index b270db1d..8f400350 100644 --- a/Wonky.Client/Pages/ReportCreate.razor.cs +++ b/Wonky.Client/Pages/ReportCreate.razor.cs @@ -44,7 +44,7 @@ public partial class ReportCreate : IDisposable private Preferences _prefs { get; set; } = new(); private bool _formInvalid = true; private bool _noFigures = true; - private bool _fetching = false; + private bool _working = false; private DateTime _workDate { get; set; } = DateTime.Now; private TimeOnly _timestampIn { get; set; } = new(12, 0); private TimeOnly _timestampOut { get; set; } = new(12, 0); @@ -110,16 +110,16 @@ public partial class ReportCreate : IDisposable _report.FromDateTime = $"{checkIn:yyyy-MM-dd hh:mm}"; _report.ToDateTime = $"{checkOut:yyyy-MM-dd hh:mm}"; - - - _fetching = true; + _report.Figures.Distance = _report.Figures.KmEvening - _report.Figures.KmMorning; + _report.Figures.DistanceMonth += _report.Figures.Distance; + _report.Figures.DistancePrivateMonth += _report.Figures.DistancePrivate; + + _working = true; + var result = await ReportRepo.PostReport($"{_workDate:yyyy-MM-dd}", _report); - if (result.IsSuccess) - { - _toast.ShowInfo($"Rapport oprettet {_workDate}"); - } - _fetching = false; - Navigator.NavigateTo("/home"); + + _toast.ShowInfo($"Rapport oprettet {_workDate}"); + Navigator.NavigateTo("/home"); } private void OnTimeChanged() @@ -149,7 +149,7 @@ public partial class ReportCreate : IDisposable private async Task GetKeyFigures() { - _fetching = true; + _working = true; var data = await ReportRepo.InitializeReportData($"{_workDate:yyyy-MM-dd}"); if(data.Closed) Navigator.NavigateTo($"/sales-reports/view/{_workDate:yyyy-MM-dd}"); @@ -157,7 +157,7 @@ public partial class ReportCreate : IDisposable _report.Figures = data.Figures; _init = data.Figures; _activities = data.Activities; - _fetching = false; + _working = false; } public void Dispose() diff --git a/Wonky.Client/Pages/TaskItemList.razor b/Wonky.Client/Pages/TaskItemList.razor new file mode 100644 index 00000000..f3504cc7 --- /dev/null +++ b/Wonky.Client/Pages/TaskItemList.razor @@ -0,0 +1,20 @@ +@page "/task-items" + +
+
+
+
+

@(string.IsNullOrWhiteSpace(_workDate) ? "" : $"{DateTime.Parse(_workDate).ToLongDateString()}")

+
+
+ +
+
+ NY OPGAVE +
+
+
+
+
+ +
\ No newline at end of file diff --git a/Wonky.Client/Pages/TaskItemList.razor.cs b/Wonky.Client/Pages/TaskItemList.razor.cs new file mode 100644 index 00000000..f275d88e --- /dev/null +++ b/Wonky.Client/Pages/TaskItemList.razor.cs @@ -0,0 +1,40 @@ +using Blazored.Toast.Services; +using Microsoft.AspNetCore.Components; +using Wonky.Client.Components; +using Wonky.Client.HttpInterceptors; +using Wonky.Client.HttpRepository; +using Wonky.Client.Services; +using Wonky.Entity.Views; + +namespace Wonky.Client.Pages; + +public partial class TaskItemList +{ + [Inject] public UserPreferenceService UserPrefs { get; set; } + [Inject] public ILogger Logger { get; set; } + [Inject] private HttpInterceptorService _interceptor { get; set; } + [Inject] private NavigationManager _navigator { get; set; } + [Inject] private ITaskItemHttpRepository _activityRepo { get; set; } + [Inject] private IToastService _toast { get; set; } + private Preferences _prefs { get; set; } = new(); + private string _workDate { get; set; } = $"{DateTime.Now:yyyy-MM-dd}"; + private bool _reportExist = false; + + protected override async Task OnInitializedAsync() + { + _prefs = await UserPrefs.GetPreferences(); + if(!string.IsNullOrWhiteSpace(_prefs.WorkDate)) + _workDate = _prefs.WorkDate; + + _interceptor.RegisterEvent(); + _interceptor.RegisterBeforeSendEvent(); + await GetActivities(_workDate); + } + + private async Task GetActivities(string workDate) + { + _toast.ShowInfo("Vent nogle sekunder for data"); + _workDate = workDate; + } + +} \ No newline at end of file diff --git a/Wonky.Client/Pages/TaskItemView.razor b/Wonky.Client/Pages/TaskItemView.razor new file mode 100644 index 00000000..a0cd2271 --- /dev/null +++ b/Wonky.Client/Pages/TaskItemView.razor @@ -0,0 +1,7 @@ +@page "/taskitems/view" +
+
+

Task Item

+
+
+ diff --git a/Wonky.Client/Pages/TaskItemView.razor.cs b/Wonky.Client/Pages/TaskItemView.razor.cs new file mode 100644 index 00000000..f95f26ab --- /dev/null +++ b/Wonky.Client/Pages/TaskItemView.razor.cs @@ -0,0 +1,14 @@ +using Microsoft.AspNetCore.Components; + +namespace Wonky.Client.Pages; + +public partial class TaskItemView +{ + [Parameter] public string TaskItemId { get; set; } + + + protected override Task OnParametersSetAsync() + { + return base.OnParametersSetAsync(); + } +} \ No newline at end of file diff --git a/Wonky.Client/Shared/AuthStateProvider.cs b/Wonky.Client/Shared/AuthStateProvider.cs index 99a153e8..738e194c 100644 --- a/Wonky.Client/Shared/AuthStateProvider.cs +++ b/Wonky.Client/Shared/AuthStateProvider.cs @@ -17,7 +17,7 @@ using System.Net.Http.Headers; using System.Security.Claims; using Blazored.LocalStorage; using Microsoft.AspNetCore.Components.Authorization; -using Wonky.Entity.Views; +using Wonky.Entity.DTO; namespace Wonky.Client.Shared { diff --git a/Wonky.Client/Shared/Confirmation.razor b/Wonky.Client/Shared/Confirmation.razor index cf53bcb0..0cc46ef2 100644 --- a/Wonky.Client/Shared/Confirmation.razor +++ b/Wonky.Client/Shared/Confirmation.razor @@ -18,7 +18,7 @@