diff --git a/Wonky.Client/Components/Home.razor b/Wonky.Client/Components/Home.razor index 55431db0..bb5a776f 100644 --- a/Wonky.Client/Components/Home.razor +++ b/Wonky.Client/Components/Home.razor @@ -42,9 +42,9 @@ - @if (Activities != null) + @if (_view != null) { - foreach (var activity in Activities) + foreach (var activity in _view.Activities) { diff --git a/Wonky.Client/Components/Home.razor.cs b/Wonky.Client/Components/Home.razor.cs index b87ed01f..a5f76c55 100644 --- a/Wonky.Client/Components/Home.razor.cs +++ b/Wonky.Client/Components/Home.razor.cs @@ -25,6 +25,7 @@ using Wonky.Client.Services; using Wonky.Client.Shared; using Wonky.Entity.DTO; using Wonky.Entity.Models; +using Wonky.Entity.Views; namespace Wonky.Client.Components; public partial class Home : IDisposable @@ -36,7 +37,7 @@ public partial class Home : IDisposable [Inject] private NavigationManager Navigator { get; set; } [Inject] private IActivityHttpRepository ActivityRepo { get; set; } [Inject] private IToastService _toast { get; set; } - private List Activities { get; set; } + private NgActivityListView _view { get; set; } private Preferences _prefs { get; set; } = new(); private string _workDate { get; set; } = $"{DateTime.Now:yyyy-MM-dd}"; @@ -56,8 +57,8 @@ public partial class Home : IDisposable { _toast.ShowInfo("Vent nogle sekunder for data"); _workDate = workDate; - Activities = new List(); - Activities = await ActivityRepo.GetActivities(workDate); + _view = new NgActivityListView(); + _view = await ActivityRepo.GetActivities(workDate); } public void Dispose() diff --git a/Wonky.Client/HttpRepository/ActivityHttpRepository.cs b/Wonky.Client/HttpRepository/ActivityHttpRepository.cs index 648303b6..bcc964c1 100644 --- a/Wonky.Client/HttpRepository/ActivityHttpRepository.cs +++ b/Wonky.Client/HttpRepository/ActivityHttpRepository.cs @@ -54,15 +54,14 @@ public class ActivityHttpRepository : IActivityHttpRepository _apiConfig = configuration.Value; } - public async Task?> GetActivities(string activityDate) + public async Task GetActivities(string activityDate) { var response = await _client .GetAsync($"{_apiConfig.ActivityEndpoint}/date/{activityDate}"); var content = await response.Content.ReadAsStringAsync(); - _logger.LogInformation("GetActivities => {content}", content); return string.IsNullOrWhiteSpace(content) - ? new List() - : JsonSerializer.Deserialize>(content, _options); + ? new NgActivityListView() + : JsonSerializer.Deserialize(content, _options); } public async Task> GetActivityPaged(ActivityPagingParams pagingParameters) { diff --git a/Wonky.Client/HttpRepository/IActivityHttpRepository.cs b/Wonky.Client/HttpRepository/IActivityHttpRepository.cs index fa052978..ccb9be6b 100644 --- a/Wonky.Client/HttpRepository/IActivityHttpRepository.cs +++ b/Wonky.Client/HttpRepository/IActivityHttpRepository.cs @@ -28,5 +28,5 @@ public interface IActivityHttpRepository Task GetActivity(string id); Task CreateActivity(ActivityDto model); Task AcceptOffer(string id); - Task?> GetActivities(string activityDate); + Task GetActivities(string activityDate); } \ No newline at end of file diff --git a/Wonky.Client/HttpRepository/IReportHttpRepository.cs b/Wonky.Client/HttpRepository/IReportHttpRepository.cs index 7fc01dda..bb75ba06 100644 --- a/Wonky.Client/HttpRepository/IReportHttpRepository.cs +++ b/Wonky.Client/HttpRepository/IReportHttpRepository.cs @@ -6,6 +6,7 @@ namespace Wonky.Client.HttpRepository; public interface IReportHttpRepository { + Task ReportExist(string workDate); Task GetReport(string workDate); Task InitializeReportData(string workDate); Task PostReport(string workDate, ReportDto reportDto); diff --git a/Wonky.Client/HttpRepository/ReportHttpRepository.cs b/Wonky.Client/HttpRepository/ReportHttpRepository.cs index 7af4e185..1cc84d3d 100644 --- a/Wonky.Client/HttpRepository/ReportHttpRepository.cs +++ b/Wonky.Client/HttpRepository/ReportHttpRepository.cs @@ -30,6 +30,14 @@ public class ReportHttpRepository :IReportHttpRepository _apiConfig = configuration.Value; } + public async Task ReportExist(string workDate) + { + var result = + await _client + .GetFromJsonAsync($"{_apiConfig.ReportEndpoint}/exist/{workDate}"); + return result.ReportClosed || true; + } + public async Task GetReport(string workDate) { return await _client.GetFromJsonAsync($"{_apiConfig.ReportEndpoint}/{workDate}"); diff --git a/Wonky.Client/Pages/ActivityCreate.razor b/Wonky.Client/Pages/ActivityCreate.razor index 79e56f8e..db8dc523 100644 --- a/Wonky.Client/Pages/ActivityCreate.razor +++ b/Wonky.Client/Pages/ActivityCreate.razor @@ -28,6 +28,16 @@ +@if (_reportClosdd) +{ +
+
+
Der kan ikke oprettes aktiviteter for den valgte dato
+
+
+} +else +{ @if (DraftContext != null) { @@ -176,8 +186,10 @@
  • @rate.Quantity
    @rate.Rate
    - +
  • } @@ -366,4 +378,5 @@
    +} } \ No newline at end of file diff --git a/Wonky.Client/Pages/ActivityCreate.razor.cs b/Wonky.Client/Pages/ActivityCreate.razor.cs index efd178ec..a45e878a 100644 --- a/Wonky.Client/Pages/ActivityCreate.razor.cs +++ b/Wonky.Client/Pages/ActivityCreate.razor.cs @@ -33,15 +33,16 @@ namespace Wonky.Client.Pages; public partial class ActivityCreate : IDisposable { // todo: prevent creating activity for workDate with closed report - [Inject] public ILogger _logger { get; set; } - [Inject] public IToastService ToastService { get; set; } - [Inject] public NavigationManager NavigationManager { get; set; } - [Inject] public ILocalStorageService StorageService { get; set; } - [Inject] private ISalesItemHttpRepository ItemRepo { get; set; } - [Inject] private ICompanyHttpRepository CompanyRepo { get; set; } - [Inject] private HttpInterceptorService Interceptor { get; set; } - [Inject] private UserPreferenceService UserPrefs { get; set; } - [Inject] private IActivityHttpRepository ActivityRepo { get; set; } + [Inject] private ILogger _logger { get; set; } + [Inject] private IToastService _toast { get; set; } + [Inject] private NavigationManager _navigator { get; set; } + [Inject] private ILocalStorageService _storage { get; set; } + [Inject] private ISalesItemHttpRepository _itemRepo { get; set; } + [Inject] private ICompanyHttpRepository _companyRepo { get; set; } + [Inject] private HttpInterceptorService _interceptor { get; set; } + [Inject] private UserPreferenceService _userPrefs { get; set; } + [Inject] private IActivityHttpRepository _activityRepo { get; set; } + [Inject] private IReportHttpRepository _reportRepo { get; set; } [CascadingParameter] DraftStateProvider DraftStateProvider { get; set; } [Parameter] public string CompanyId { get; set; } private readonly JsonSerializerOptions? _options = new JsonSerializerOptions @@ -67,28 +68,31 @@ public partial class ActivityCreate : IDisposable private bool InvalidStatusType { get; set; } = true; private bool InvalidActivity { get; set; } = true; private bool InvalidCanvas { get; set; } = true; + private bool _reportClosdd { get; set; } = false; private UserInfoView Ux { get; set; } = new(); private DateTime _workDate { get; set; } = DateTime.Now; protected override async Task OnInitializedAsync() { - Interceptor.RegisterEvent(); - Interceptor.RegisterBeforeSendEvent(); + _interceptor.RegisterEvent(); + _interceptor.RegisterBeforeSendEvent(); - _prefs = await UserPrefs.GetPreferences(); + _prefs = await _userPrefs.GetPreferences(); if (!string.IsNullOrWhiteSpace(_prefs.WorkDate)) _workDate = DateTime.Parse(_prefs.WorkDate); _poDraft.ActivityDate = $"{_workDate:yyyy-MM-dd}" ; - + // check if report is closed + _reportClosdd = await _reportRepo.ReportExist(_poDraft.ActivityDate); + _paging.SearchColumn = _prefs.ItemSearch ?? "name"; _paging.PageSize = Convert.ToInt32(_prefs.PageSize); await GetSalesItems(); - Ux = await StorageService.GetItemAsync("_xu"); - NgCompany = await CompanyRepo.GetCompanyById(CompanyId); + Ux = await _storage.GetItemAsync("_xu"); + NgCompany = await _companyRepo.GetCompanyById(CompanyId); // set up identification _poDraft.CompanyId = NgCompany.CompanyId; @@ -163,11 +167,11 @@ public partial class ActivityCreate : IDisposable } _poDraft.Lines = lines; - await StorageService.SetItemAsync(CompanyId, _poDraft); + await _storage.SetItemAsync(CompanyId, _poDraft); Console.WriteLine(JsonSerializer.Serialize(_poDraft)); - var result = await ActivityRepo.CreateActivity(_poDraft); - ToastService.ShowSuccess($"{result.Message}."); - NavigationManager.NavigateTo($"/companies"); + var result = await _activityRepo.CreateActivity(_poDraft); + _toast.ShowSuccess($"{result.Message}."); + _navigator.NavigateTo($"/companies"); } private void CheckActivity() @@ -261,7 +265,7 @@ public partial class ActivityCreate : IDisposable private async Task GetSalesItems() { - var response = await ItemRepo.GetSalesItemsPaged(_paging); + var response = await _itemRepo.GetSalesItemsPaged(_paging); SalesItems = response.Items!; MetaData = response.MetaData; } @@ -286,7 +290,7 @@ public partial class ActivityCreate : IDisposable private void ValidationChanged(object sender, ValidationStateChangedEventArgs e) { if (string.IsNullOrEmpty(_poDraft.ActivityTypeEnum)) - ToastService.ShowWarning("Aktivitet type kan ikke være tom"); + _toast.ShowWarning("Aktivitet type kan ikke være tom"); _poFormInvalid = false; @@ -298,7 +302,7 @@ public partial class ActivityCreate : IDisposable public void Dispose() { - Interceptor.DisposeEvent(); + _interceptor.DisposeEvent(); DraftContext.OnFieldChanged -= HandleFieldChanged; DraftContext.OnValidationStateChanged -= ValidationChanged; } diff --git a/Wonky.Client/Pages/Index.razor b/Wonky.Client/Pages/Index.razor index 34abf06d..8d675118 100644 --- a/Wonky.Client/Pages/Index.razor +++ b/Wonky.Client/Pages/Index.razor @@ -19,7 +19,8 @@ @page "/index" @page "/home" @using Wonky.Client.Components; - +@using Microsoft.AspNetCore.Authorization +@attribute [Authorize(Roles = "Adviser,Admin,Supervisor")] @code{ diff --git a/Wonky.Client/Pages/ReportView.razor b/Wonky.Client/Pages/ReportView.razor index 4949c60e..294534ce 100644 --- a/Wonky.Client/Pages/ReportView.razor +++ b/Wonky.Client/Pages/ReportView.razor @@ -1,5 +1,7 @@ @using Wonky.Client.Components +@using Microsoft.AspNetCore.Authorization @page "/sales-report/view/{reportDate}" +@attribute [Authorize(Roles = "Adviser,Admin,Supervisor")] diff --git a/Wonky.Client/wwwroot/appsettings.json b/Wonky.Client/wwwroot/appsettings.json index 5da38a46..c2c8b9c4 100644 --- a/Wonky.Client/wwwroot/appsettings.json +++ b/Wonky.Client/wwwroot/appsettings.json @@ -23,7 +23,7 @@ "image": "grumpy-coder.png" }, "apiConfig": { - "baseAddress": "https://staging.innotec.dk", + "baseAddress": "https://dev.innotec.dk", "tokenPath": "token", "userInfo": "api/auth/userinfo", "customerEndpoint": "api/v2/crm/companies", diff --git a/Wonky.Entity/Views/NgActivityListView.cs b/Wonky.Entity/Views/NgActivityListView.cs new file mode 100644 index 00000000..a6ef9a3c --- /dev/null +++ b/Wonky.Entity/Views/NgActivityListView.cs @@ -0,0 +1,7 @@ +namespace Wonky.Entity.Views; + +public class NgActivityListView +{ + public bool ReportClosed { get; set; } + public List Activities { get; set; } = new(); +} \ No newline at end of file