diff --git a/src/WorkFlowCheck.Common/DTO/CheckListRowDTO.cs b/src/WorkFlowCheck.Common/DTO/CheckListRowDTO.cs index 12b4eea..ccbc98a 100644 --- a/src/WorkFlowCheck.Common/DTO/CheckListRowDTO.cs +++ b/src/WorkFlowCheck.Common/DTO/CheckListRowDTO.cs @@ -14,8 +14,8 @@ namespace WorkFlowCheck.Common.DTO public CheckListTemplateRowDTO CheckListTemplateRowDTO { get; set; } public string GroupName => $"AnswerGroup_{CheckListTemplateRowDTO.RowIndex}"; public string Answer { get; set; } = null!; - public string AnswerYes { get; set; } = null!; - public string AnswerNo { get; set; } = null!; + public bool? AnswerYes { get; set; } = null!; + public bool? AnswerNo { get; set; } = null!; public byte[] Photo { get; set; } = null!; public Guid GuidNumber { get; set; } } diff --git a/src/WorkFlowCheck.MAUI/Pages/CheckList/CheckListPage.xaml.cs b/src/WorkFlowCheck.MAUI/Pages/CheckList/CheckListPage.xaml.cs index 7cec108..32a5d3e 100644 --- a/src/WorkFlowCheck.MAUI/Pages/CheckList/CheckListPage.xaml.cs +++ b/src/WorkFlowCheck.MAUI/Pages/CheckList/CheckListPage.xaml.cs @@ -31,6 +31,8 @@ public partial class CheckListPage : ContentPage InitializeComponent(); _checkListService = MauiProgram.ServiceProvider.GetRequiredService(); _userService = MauiProgram.ServiceProvider.GetRequiredService(); + NewCommand = new Command(OnNewItem); + ContinueCommand = new Command(OnContinueItem); } protected override bool OnBackButtonPressed() @@ -41,8 +43,7 @@ public partial class CheckListPage : ContentPage protected override async void OnAppearing() { base.OnAppearing(); - NewCommand = new Command(OnNewItem); - ContinueCommand = new Command(OnContinueItem); + BindingContext = this; await LoadCheckListTemplate(); await LoadCheckList(); @@ -55,11 +56,11 @@ public partial class CheckListPage : ContentPage private async void OnContinueItem(CheckListHeaderDTO checkListHeaderDTO) { var taskCompletionSource = new TaskCompletionSource(); - await Navigation.PushAsync(new NFCWaiter(taskCompletionSource)); + await Navigation.PushModalAsync(new NFCWaiter(taskCompletionSource)); var checkPintCode = await taskCompletionSource.Task; if (!string.IsNullOrEmpty(checkPintCode)) { - await Navigation.PopAsync(); + await Navigation.PopModalAsync(); await Navigation.PushAsync(new CheckListWorkPage(checkListHeaderDTO.Id, checkPintCode)); } diff --git a/src/WorkFlowCheck.MAUI/Pages/CheckList/CheckListWorkPage.xaml b/src/WorkFlowCheck.MAUI/Pages/CheckList/CheckListWorkPage.xaml index 4b8c604..d734d7b 100644 --- a/src/WorkFlowCheck.MAUI/Pages/CheckList/CheckListWorkPage.xaml +++ b/src/WorkFlowCheck.MAUI/Pages/CheckList/CheckListWorkPage.xaml @@ -68,14 +68,14 @@ Content="Igen" Value="Igen" BindableGroupName="{Binding GroupName}" - IsChecked="{Binding AnswerYes, Converter={StaticResource RBConverter}, ConverterParameter=Igen}" + IsChecked="{Binding AnswerYes}" HorizontalOptions="Center" VerticalOptions="Center"/> @@ -149,14 +149,14 @@ Content="Igen" Value="Igen" BindableGroupName="{Binding GroupName}" - IsChecked="{Binding AnswerYes, Converter={StaticResource RBConverter}, ConverterParameter=Igen}" + IsChecked="{Binding AnswerYes}" HorizontalOptions="Center" VerticalOptions="Center"/> @@ -183,14 +183,14 @@ Content="Igen" Value="Igen" BindableGroupName="{Binding GroupName}" - IsChecked="{Binding AnswerYes, Converter={StaticResource RBConverter}, ConverterParameter=Igen}" + IsChecked="{Binding AnswerYes}" HorizontalOptions="Center" VerticalOptions="Center"/> @@ -217,14 +217,14 @@ Content="Igen" Value="Igen" BindableGroupName="{Binding GroupName}" - IsChecked="{Binding AnswerYes, Converter={StaticResource RBConverter}, ConverterParameter=Igen}" + IsChecked="{Binding AnswerYes}" HorizontalOptions="Center" VerticalOptions="Center"/> @@ -251,14 +251,14 @@ Content="Igen" Value="Igen" BindableGroupName="{Binding GroupName}" - IsChecked="{Binding AnswerYes, Converter={StaticResource RBConverter}, ConverterParameter=Igen}" + IsChecked="{Binding AnswerYes}" HorizontalOptions="Center" VerticalOptions="Center"/> diff --git a/src/WorkFlowCheck.MAUI/Pages/CheckList/CheckListWorkPage.xaml.cs b/src/WorkFlowCheck.MAUI/Pages/CheckList/CheckListWorkPage.xaml.cs index 6748b35..c2a4d5c 100644 --- a/src/WorkFlowCheck.MAUI/Pages/CheckList/CheckListWorkPage.xaml.cs +++ b/src/WorkFlowCheck.MAUI/Pages/CheckList/CheckListWorkPage.xaml.cs @@ -1,12 +1,10 @@ using WorkFlowCheck.Common.DTO; using WorkFlowCheck.MAUI.Services.Interfaces; -using Microsoft.Maui.Controls; using System.Windows.Input; using System.Globalization; -using DevExpress.Data.Helpers; using System.Collections.ObjectModel; -using System.Runtime.CompilerServices; -using Android.Provider; + + namespace WorkFlowCheck.MAUI.Pages.CheckList; @@ -43,14 +41,39 @@ public partial class CheckListWorkPage : ContentPage SendCommand = new Command(OnSend); } - private void OnSend(object obj) + private async void OnSend() { - int i = 0; + } - private void OnSave(object obj) + private async void OnSave() { - int i = 0; + IsLoading = true; + try + { + foreach (var checkListRow in CheckListRows) + { + if (checkListRow.AnswerYes == true) + { + checkListRow.Answer = "Igen"; + } + if (checkListRow.AnswerNo == true) + { + checkListRow.Answer = "Nem"; + } + await _checkListService.UpdateCheckListRow(checkListRow); + } + await LoadCheckPointCheckListRows(); + } + catch (Exception) + { + + } + finally + { + IsLoading = false; + } } + protected override async void OnAppearing() { @@ -96,6 +119,16 @@ public partial class CheckListWorkPage : ContentPage var checkListRowDTOs = await _checkListService.GetCheckListRowsByCheckPointCode(_userDTO.Id, _checkListHeaderId, _checkPointCode); foreach (var item in checkListRowDTOs) { + if (item.Answer == "Igen") + { + item.AnswerYes = true; + item.AnswerNo = false; + } + else if (item.Answer == "Nem") + { + item.AnswerYes = false; + item.AnswerNo = true; + } CheckListRows.Add(item); } diff --git a/src/WorkFlowCheck.MAUI/Pages/NFC/NFCWaiter.xaml.cs b/src/WorkFlowCheck.MAUI/Pages/NFC/NFCWaiter.xaml.cs index 84f9b07..b3a1bb7 100644 --- a/src/WorkFlowCheck.MAUI/Pages/NFC/NFCWaiter.xaml.cs +++ b/src/WorkFlowCheck.MAUI/Pages/NFC/NFCWaiter.xaml.cs @@ -36,6 +36,11 @@ public partial class NFCWaiter : ContentPage } } + protected override void OnDisappearing() + { + base.OnDisappearing(); + } + async Task AutoStartAsync() { // Some delay to prevent Java.Lang.IllegalStateException "Foreground dispatch can only be enabled when your activity is resumed" on Android @@ -47,6 +52,7 @@ public partial class NFCWaiter : ContentPage await BeginListening(); } + async Task BeginListening() { try @@ -62,16 +68,14 @@ public partial class NFCWaiter : ContentPage //await ShowAlert(ex.Message); } } - async Task EndListening() + async Task StopListening() { try { MainThread.BeginInvokeOnMainThread(() => { - UnsubscribeEvents(); - CrossNFC.Current.StopPublishing(); CrossNFC.Current.StopListening(); - + UnsubscribeEvents(); }); } catch (Exception ex) @@ -79,6 +83,7 @@ public partial class NFCWaiter : ContentPage //await ShowAlert(ex.Message); } } + void SubscribeEvents() { if (_eventsAlreadySubscribed) @@ -86,18 +91,21 @@ public partial class NFCWaiter : ContentPage _eventsAlreadySubscribed = true; - CrossNFC.Current.OnMessageReceived += Current_OnMessageReceived_NFCData; + CrossNFC.Current.OnMessageReceived += OnMessageReceived_NFCData; } void UnsubscribeEvents() { - CrossNFC.Current.OnMessageReceived -= Current_OnMessageReceived_NFCData; + CrossNFC.Current.OnMessageReceived -= OnMessageReceived_NFCData; _eventsAlreadySubscribed = false; } - async void Current_OnMessageReceived_NFCData(ITagInfo tagInfo) + async void OnMessageReceived_NFCData(ITagInfo tagInfo) { _onReceiveing = true; + + + if (tagInfo == null) { await ShowAlert("No tag found"); @@ -109,9 +117,16 @@ public partial class NFCWaiter : ContentPage var identifier = tagInfo.Identifier; var serialNumber = NFCUtils.ByteArrayToHexString(identifier, ":"); _taskCompletionSource.TrySetResult(serialNumber); - await EndListening(); - await Navigation.PopAsync(); _onReceiveing = false; + + await Task.Delay(500); + await StopListening(); + + await MainThread.InvokeOnMainThreadAsync(async () => + { + await Navigation.PopModalAsync(); + //await Navigation.PopModalAsync(); + }); } Task ShowAlert(string message, string title = null) => DisplayAlert(string.IsNullOrWhiteSpace(title) ? "NFC olvasás" : title, message, "OK"); } \ No newline at end of file diff --git a/src/WorkFlowCheck.MAUI/Services/CheckListService.cs b/src/WorkFlowCheck.MAUI/Services/CheckListService.cs index 599f26e..7e2f14f 100644 --- a/src/WorkFlowCheck.MAUI/Services/CheckListService.cs +++ b/src/WorkFlowCheck.MAUI/Services/CheckListService.cs @@ -162,6 +162,7 @@ namespace WorkFlowCheck.MAUI.Services var checkListRow = await _dbContext.CheckListRows.Where(w => w.Id == checkListRowDTO.Id).FirstOrDefaultAsync(); if (checkListRow != null) { + checkListRow.Answer = checkListRowDTO.Answer; checkListRow.Photo = checkListRowDTO.Photo; await _dbContext.SaveChangesAsync(); }