diff --git a/Wonky.Client/Pages/AdvisorReportCreatePage.razor b/Wonky.Client/Pages/AdvisorReportCreatePage.razor index e135aeda..cdff4469 100644 --- a/Wonky.Client/Pages/AdvisorReportCreatePage.razor +++ b/Wonky.Client/Pages/AdvisorReportCreatePage.razor @@ -76,7 +76,7 @@ } else { - Report.Figures.KmMorning = Profiles.KmMorning; + Report.Figures.KmMorning = Preference.KmMorning; diff --git a/Wonky.Client/Pages/AdvisorReportCreatePage.razor.cs b/Wonky.Client/Pages/AdvisorReportCreatePage.razor.cs index 04c7e915..fc36d13a 100644 --- a/Wonky.Client/Pages/AdvisorReportCreatePage.razor.cs +++ b/Wonky.Client/Pages/AdvisorReportCreatePage.razor.cs @@ -34,7 +34,6 @@ public partial class AdvisorReportCreatePage : IDisposable // ########################################################################## [Inject] public HttpInterceptorService Interceptor { get; set; } [Inject] public UserPreferenceService PreferenceService { get; set; } - [Inject] public IAdvisorActivityRepository AdvisorActivityRepo { get; set; } [Inject] public IAdvisorReportRepository AdvisorReportRepo { get; set; } [Inject] public NavigationManager Navigator { get; set; } [Inject] public ILogger Logger { get; set; } @@ -47,7 +46,7 @@ public partial class AdvisorReportCreatePage : IDisposable private ReportDto Report { get; set; } = new(); private List Activities { get; set; } = new(); private ReportFiguresDto InitialValues { get; set; } = new(); - private UserPreference Profiles { get; set; } = new(); + private UserPreference Preference { get; set; } = new(); private bool FormInvalid { get; set; } = true; private bool NoFigures { get; set; } = true; private bool Working { get; set; } @@ -75,14 +74,16 @@ public partial class AdvisorReportCreatePage : IDisposable IsSupervisor = await UserInfo.IsSupervisor(); ReportContext = new EditContext(Report); + ReportContext.OnFieldChanged += HandleFieldChanged; ReportContext.OnValidationStateChanged += ValidationChanged; PreferenceService.OnChange += ProfileServiceOnOnChange; - Profiles = await PreferenceService.GetProfile(); - Logger.LogDebug("{}", JsonSerializer.Serialize(Profiles)); - WorkDate = Profiles.WorkDate; + Preference = await PreferenceService.GetProfile(); + Logger.LogDebug("{}", JsonSerializer.Serialize(Preference)); + + WorkDate = Preference.WorkDate; if (string.IsNullOrWhiteSpace(WorkDate)) { ThisWorkDate = DateTime.Now; @@ -93,9 +94,11 @@ public partial class AdvisorReportCreatePage : IDisposable { ThisWorkDate = DateTime.Parse(WorkDate); } - - if(await AdvisorReportRepo.ReportExist(WorkDate)) - Navigator.NavigateTo($"/advisor/reports/view/{ThisWorkDate:yyyy-MM-dd}"); + + if (await AdvisorReportRepo.ReportExist(WorkDate)) + { + Navigator.NavigateTo($"/advisor/reports/view/{ThisWorkDate:yyyy-MM-dd}"); + } BeginLeave = ThisWorkDate; EndLeave = ThisWorkDate; @@ -115,8 +118,8 @@ public partial class AdvisorReportCreatePage : IDisposable private void ProfileServiceOnOnChange(UserPreference userPreference) { - Profiles = userPreference; - WorkDate = Profiles.WorkDate; + Preference = userPreference; + WorkDate = Preference.WorkDate; StateHasChanged(); } @@ -148,7 +151,7 @@ public partial class AdvisorReportCreatePage : IDisposable } else { - Report.Figures.KmMorning = Profiles.KmMorning; + Report.Figures.KmMorning = Preference.KmMorning; } NoFigures = false; @@ -262,8 +265,9 @@ public partial class AdvisorReportCreatePage : IDisposable // pop confirmation // create a prompt for popup confirmation - var warning = Report.Figures.KmEvening - Report.Figures.KmMorning > 1000 ? - $"Kørte km for rapporten er '{Report.Figures.KmEvening - Report.Figures.KmMorning}'. Er du sikker på at det er rigtigt?
" : ""; + var warning = Report.Figures.KmEvening - Report.Figures.KmMorning > 1000 + ? $"Kørte km for rapporten er '{Report.Figures.KmEvening - Report.Figures.KmMorning}'. Er du sikker på at det er rigtigt?
" + : ""; Prompt = $"{warning}
Gem rapport for {ThisWorkDate.ToLongDateString()}?"; diff --git a/Wonky.Client/Pages/ManagerEvaluationNewPage.razor b/Wonky.Client/Pages/ManagerEvaluationNewPage.razor index 81052d3d..47a5c060 100644 --- a/Wonky.Client/Pages/ManagerEvaluationNewPage.razor +++ b/Wonky.Client/Pages/ManagerEvaluationNewPage.razor @@ -21,18 +21,43 @@ Ny evaluering -
-
+ + +
-

Ny Evaluering

+

Evaluering

+
+
+
+ +
+ +
+ +
+ +
+ +
+ +
+
+ +
+ + +
+ +
+ + +
+
+
+
-
- - - -
- -
\ No newline at end of file + \ No newline at end of file diff --git a/Wonky.Client/Pages/ManagerEvaluationNewPage.razor.cs b/Wonky.Client/Pages/ManagerEvaluationNewPage.razor.cs index fb1ea0fd..f38f9e63 100644 --- a/Wonky.Client/Pages/ManagerEvaluationNewPage.razor.cs +++ b/Wonky.Client/Pages/ManagerEvaluationNewPage.razor.cs @@ -14,11 +14,13 @@ // using System.Text.Json; +using Blazored.Toast.Services; using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components.Forms; using Wonky.Client.HttpInterceptors; using Wonky.Client.HttpRepository; using Wonky.Client.Local.Services; +using Wonky.Entity.DTO; using Wonky.Entity.Views; namespace Wonky.Client.Pages; @@ -32,6 +34,8 @@ public partial class ManagerEvaluationNewPage : IDisposable [Inject] public HttpInterceptorService Interceptor { get; set; } [Inject] public IUserInfoService UserService { get; set; } [Inject] public ILogger Logger { get; set; } + [Inject] public IToastService Toaster { get; set; } + [Inject] public NavigationManager Navigator { get; set; } // ############################################################ @@ -39,16 +43,23 @@ public partial class ManagerEvaluationNewPage : IDisposable // ############################################################ - private EditContext EvaluationContext { get; set; } + private EditContext FormContext { get; set; } private MemberView Member { get; set; } = new(); private ManagerView Manager { get; set; } = new(); - + private EvaluationEditView Document { get; set; } = new(); + private DateTime DocumentDate { get; set; } = DateTime.Now; + private bool FormInvalid { get; set; } = true; protected override async Task OnInitializedAsync() { Interceptor.RegisterEvent(); Interceptor.RegisterBeforeSendEvent(); + FormContext = new EditContext(Document); + + FormContext.OnFieldChanged += HandleFieldChanged!; + FormContext.OnValidationStateChanged += ValidationChanged!; + Member = await MemberSupportRepo.GetMemberByUserId(UserId); Logger.LogDebug("Member => {}", JsonSerializer.Serialize(Member)); @@ -60,11 +71,61 @@ public partial class ManagerEvaluationNewPage : IDisposable Manager = await MemberSupportRepo.GetManagerByUserId(managerId); Logger.LogDebug("Manager => {}", JsonSerializer.Serialize(Manager)); + + Document.EvaluationDate = $"{DocumentDate:yyyy-MM-dd}"; + Document.ManagerId = Manager.ManagerId; + Document.ManagerName = Manager.FullName; + Document.MemberId = Member.MemberId; + Document.MemberName = Member.FullName; } + private async Task SubmitDocument() + { + Toaster.ShowInfo("Gemmer Evaluering"); + var x = await MemberSupportRepo.CreateEvaluation(Document); + if (string.IsNullOrWhiteSpace(x.EvaluationId)) + { + Toaster.ShowError("Fejl"); + } + else + { + Toaster.ShowSuccess("Ok"); + Navigator.NavigateTo($"/supervisor/members/{UserId}/evaluations/{x.EvaluationId}"); + } + } + + private void HandleFieldChanged(object sender, FieldChangedEventArgs e) + { + Document.EvaluationDate = $"{DocumentDate:yyyy-MM-dd}"; + + FormInvalid = !FormContext.Validate(); + + StateHasChanged(); + } + + /// + /// Validation change event + /// + /// + /// + private void ValidationChanged(object sender, ValidationStateChangedEventArgs e) + { + FormInvalid = false; + FormContext.OnFieldChanged -= HandleFieldChanged!; + FormContext.OnValidationStateChanged -= ValidationChanged!; + FormContext = new EditContext(Document); + FormContext.OnFieldChanged += HandleFieldChanged!; + FormContext.OnValidationStateChanged += ValidationChanged!; + } + + + public void Dispose() { Interceptor.DisposeEvent(); + FormContext.OnFieldChanged -= HandleFieldChanged!; + FormContext.OnValidationStateChanged -= ValidationChanged!; + } } \ No newline at end of file diff --git a/Wonky.Client/wwwroot/appsettings.json b/Wonky.Client/wwwroot/appsettings.json index 1bf3ef75..e299c066 100644 --- a/Wonky.Client/wwwroot/appsettings.json +++ b/Wonky.Client/wwwroot/appsettings.json @@ -1,7 +1,7 @@ { "appInfo": { "name": "Wonky Online", - "version": "0.137.0", + "version": "0.138.0", "rc": true, "sandBox": false, "image": "grumpy-coder.png" @@ -9,7 +9,7 @@ "Logging": { "LogLevel": { "Default": "Debug", - "System": "Information", + "System": "Debug", "Microsoft": "Information" }, "Debug": { diff --git a/Wonky.Entity/DTO/EvaluationEditView.cs b/Wonky.Entity/DTO/EvaluationEditView.cs index 7150ff62..c4cff40a 100644 --- a/Wonky.Entity/DTO/EvaluationEditView.cs +++ b/Wonky.Entity/DTO/EvaluationEditView.cs @@ -1,20 +1,25 @@ +using System.ComponentModel.DataAnnotations; + namespace Wonky.Entity.DTO; public class EvaluationEditView { + [Required(ErrorMessage = "Indhold mangler")] public string Content { get; set; } = ""; - + + [Required(ErrorMessage = "Beskrivelse mangler")] + [MaxLength(128, ErrorMessage = "Der er kun afsat 128 tegn.")] public string Description { get; set; } = ""; - + public string EvaluationDate { get; set; } = ""; public string EvaluationId { get; set; } = ""; - + public string ManagerId { get; set; } = ""; public string ManagerName { get; set; } = ""; - + public string MemberId { get; set; } = ""; public string MemberName { get; set; } = ""; -} +} \ No newline at end of file