Na most jó a beküldéshez a Binding

This commit is contained in:
2025-03-24 20:40:38 +01:00
parent 3d44804bad
commit ab1de236be
9 changed files with 134 additions and 29 deletions
@@ -14,6 +14,8 @@ namespace WorkFlowCheck.Common.DTO
public CheckListTemplateRowDTO CheckListTemplateRowDTO { get; set; } public CheckListTemplateRowDTO CheckListTemplateRowDTO { get; set; }
public string GroupName => $"AnswerGroup_{CheckListTemplateRowDTO.RowIndex}"; public string GroupName => $"AnswerGroup_{CheckListTemplateRowDTO.RowIndex}";
public string Answer { get; set; } = null!; public string Answer { get; set; } = null!;
public string AnswerYes { get; set; } = null!;
public string AnswerNo { get; set; } = null!;
public byte[] Photo { get; set; } = null!; public byte[] Photo { get; set; } = null!;
public Guid GuidNumber { get; set; } public Guid GuidNumber { get; set; }
} }
@@ -31,7 +31,6 @@
</VerticalStackLayout> </VerticalStackLayout>
</Frame> </Frame>
</ScrollView> </ScrollView>
<ScrollView Grid.Row="1"> <ScrollView Grid.Row="1">
<Frame BorderColor="Gray" Padding="5" Margin="1" HasShadow="True"> <Frame BorderColor="Gray" Padding="5" Margin="1" HasShadow="True">
<VerticalStackLayout> <VerticalStackLayout>
@@ -58,7 +57,20 @@
</VerticalStackLayout> </VerticalStackLayout>
</Frame> </Frame>
</ScrollView> </ScrollView>
<Grid BackgroundColor="#80000000"
IsVisible="{Binding IsLoading}"
Grid.Row="0"
Grid.RowSpan="2"
VerticalOptions="Fill"
HorizontalOptions="Fill"
ZIndex="1000">
<ActivityIndicator IsRunning="{Binding IsLoading}"
HorizontalOptions="Center"
VerticalOptions="Center"
Color="White"
WidthRequest="50"
HeightRequest="50"/>
</Grid>
</Grid> </Grid>
</ContentPage> </ContentPage>
@@ -10,9 +10,21 @@ public partial class CheckListPage : ContentPage
{ {
private readonly ICheckListService _checkListService; private readonly ICheckListService _checkListService;
private readonly IUserService _userService; private readonly IUserService _userService;
private bool _isLoading;
public ICommand NewCommand { get; set; } public ICommand NewCommand { get; set; }
public ICommand ContinueCommand { get; set; } public ICommand ContinueCommand { get; set; }
public bool IsLoading
{
get => _isLoading;
set
{
_isLoading = value;
OnPropertyChanged(nameof(IsLoading));
}
}
public CheckListPage() public CheckListPage()
{ {
@@ -55,13 +67,17 @@ public partial class CheckListPage : ContentPage
} }
private async Task LoadCheckListTemplate() private async Task LoadCheckListTemplate()
{ {
IsLoading = true;
var userId = _userService.GetCurrentUser()?.Id; var userId = _userService.GetCurrentUser()?.Id;
CheckListTemplate.ItemsSource = await _checkListService.GetCheckListTemplates(userId ?? 1); CheckListTemplate.ItemsSource = await _checkListService.GetCheckListTemplates(userId ?? 1);
IsLoading = false;
} }
private async Task LoadCheckList() private async Task LoadCheckList()
{ {
IsLoading = true;
var userId = _userService.GetCurrentUser()?.Id; var userId = _userService.GetCurrentUser()?.Id;
CheckList.ItemsSource = await _checkListService.GetCheckLists(userId ?? 1); CheckList.ItemsSource = await _checkListService.GetCheckLists(userId ?? 1);
IsLoading = false;
} }
} }
@@ -4,20 +4,48 @@
x:Class="WorkFlowCheck.MAUI.Pages.CheckList.CheckListWorkPage" x:Class="WorkFlowCheck.MAUI.Pages.CheckList.CheckListWorkPage"
xmlns:templateselectors="clr-namespace:WorkFlowCheck.MAUI.TemplateSelectors" xmlns:templateselectors="clr-namespace:WorkFlowCheck.MAUI.TemplateSelectors"
xmlns:local="clr-namespace:WorkFlowCheck.MAUI.Pages.CheckList" xmlns:local="clr-namespace:WorkFlowCheck.MAUI.Pages.CheckList"
Title="CheckListWorkPage"> Title="">
<StackLayout Padding="20"> <Grid>
<Label Text="Ellenőrzési feladatok" FontAttributes="Bold" FontSize="Medium" HorizontalOptions="Center" /> <StackLayout Padding="20">
<Frame BorderColor="Gray" Padding="1" Margin="2" HasShadow="True" CornerRadius="2"> <Label Text="Ellenőrzési feladatok" FontAttributes="Bold" FontSize="Medium" HorizontalOptions="Center" />
<CollectionView x:Name="CheckPointCheckListRows" <Frame BorderColor="Gray" Padding="1" Margin="2" HasShadow="True" CornerRadius="2">
HeightRequest="640" <CollectionView x:Name="CheckPointCheckListRows"
HeightRequest="615"
ItemsSource="{Binding CheckListRows}" ItemsSource="{Binding CheckListRows}"
ItemTemplate="{StaticResource AnswerTemplateSelector}"> ItemTemplate="{StaticResource AnswerTemplateSelector}">
<CollectionView.EmptyView> <CollectionView.EmptyView>
<Label Text="Nincsenek feladatok." HorizontalOptions="Center" VerticalOptions="Center"/> <Label Text="Nincsenek feladatok." HorizontalOptions="Center" VerticalOptions="Center"/>
</CollectionView.EmptyView> </CollectionView.EmptyView>
</CollectionView> </CollectionView>
</Frame> </Frame>
</StackLayout> <Grid ColumnSpacing="46" Margin="0,10,0,10">
<!-- 10 pixel térköz az oszlopok között -->
<Grid.ColumnDefinitions>
<ColumnDefinition Width="200" />
<ColumnDefinition Width="Auto" />
<!-- Üres tér a két gomb között -->
<ColumnDefinition Width="200" />
</Grid.ColumnDefinitions>
<Button Text="Mentés" Command="{Binding SaveCommand}" Grid.Column="0"/>
<Button Text="Beküldés" Command="{Binding SendCommand}" Grid.Column="2" Background="DarkRed" TextColor="Yellow"/>
</Grid>
</StackLayout>
<Grid BackgroundColor="#80000000"
IsVisible="{Binding IsLoading}"
Grid.Row="0"
Grid.RowSpan="2"
VerticalOptions="Fill"
HorizontalOptions="Fill"
ZIndex="1000">
<ActivityIndicator IsRunning="{Binding IsLoading}"
HorizontalOptions="Center"
VerticalOptions="Center"
Color="White"
WidthRequest="50"
HeightRequest="50"/>
</Grid>
</Grid>
<ContentPage.Resources> <ContentPage.Resources>
<DataTemplate x:Key="I_N_Template"> <DataTemplate x:Key="I_N_Template">
<Frame BorderColor="Gray" Padding="1" Margin="2" HasShadow="True" CornerRadius="2"> <Frame BorderColor="Gray" Padding="1" Margin="2" HasShadow="True" CornerRadius="2">
@@ -40,14 +68,14 @@
Content="Igen" Content="Igen"
Value="Igen" Value="Igen"
BindableGroupName="{Binding GroupName}" BindableGroupName="{Binding GroupName}"
IsChecked="{Binding SelectedAnswer, Converter={StaticResource RadioButtonConverter}, ConverterParameter=Igen}" IsChecked="{Binding AnswerYes, Converter={StaticResource RBConverter}, ConverterParameter=Igen}"
HorizontalOptions="Center" VerticalOptions="Center"/> HorizontalOptions="Center" VerticalOptions="Center"/>
<local:BindableRadioButton <local:BindableRadioButton
Grid.Row="1" Grid.Row="1"
Content="Nem" Content="Nem"
Value="Nem" Value="Nem"
BindableGroupName="{Binding GroupName}" BindableGroupName="{Binding GroupName}"
IsChecked="{Binding SelectedAnswer, Converter={StaticResource RadioButtonConverter}, ConverterParameter=Nem}" IsChecked="{Binding AnswerNo, Converter={StaticResource RBConverter}, ConverterParameter=Nem}"
HorizontalOptions="Center" VerticalOptions="Center"/> HorizontalOptions="Center" VerticalOptions="Center"/>
</Grid> </Grid>
</Grid> </Grid>
@@ -121,14 +149,14 @@
Content="Igen" Content="Igen"
Value="Igen" Value="Igen"
BindableGroupName="{Binding GroupName}" BindableGroupName="{Binding GroupName}"
IsChecked="{Binding SelectedAnswer, Converter={StaticResource RadioButtonConverter}, ConverterParameter=Igen}" IsChecked="{Binding AnswerYes, Converter={StaticResource RBConverter}, ConverterParameter=Igen}"
HorizontalOptions="Center" VerticalOptions="Center"/> HorizontalOptions="Center" VerticalOptions="Center"/>
<local:BindableRadioButton <local:BindableRadioButton
Grid.Row="1" Grid.Row="1"
Content="Nem" Content="Nem"
Value="Nem" Value="Nem"
BindableGroupName="{Binding GroupName}" BindableGroupName="{Binding GroupName}"
IsChecked="{Binding SelectedAnswer, Converter={StaticResource RadioButtonConverter}, ConverterParameter=Nem}" IsChecked="{Binding AnswerNo, Converter={StaticResource RBConverter}, ConverterParameter=Nem}"
HorizontalOptions="Center" VerticalOptions="Center"/> HorizontalOptions="Center" VerticalOptions="Center"/>
</Grid> </Grid>
</Grid> </Grid>
@@ -155,14 +183,14 @@
Content="Igen" Content="Igen"
Value="Igen" Value="Igen"
BindableGroupName="{Binding GroupName}" BindableGroupName="{Binding GroupName}"
IsChecked="{Binding SelectedAnswer, Converter={StaticResource RadioButtonConverter}, ConverterParameter=Igen}" IsChecked="{Binding AnswerYes, Converter={StaticResource RBConverter}, ConverterParameter=Igen}"
HorizontalOptions="Center" VerticalOptions="Center"/> HorizontalOptions="Center" VerticalOptions="Center"/>
<local:BindableRadioButton <local:BindableRadioButton
Grid.Row="1" Grid.Row="1"
Content="Nem" Content="Nem"
Value="Nem" Value="Nem"
BindableGroupName="{Binding GroupName}" BindableGroupName="{Binding GroupName}"
IsChecked="{Binding SelectedAnswer, Converter={StaticResource RadioButtonConverter}, ConverterParameter=Nem}" IsChecked="{Binding AnswerNo, Converter={StaticResource RBConverter}, ConverterParameter=Nem}"
HorizontalOptions="Center" VerticalOptions="Center"/> HorizontalOptions="Center" VerticalOptions="Center"/>
</Grid> </Grid>
</Grid> </Grid>
@@ -189,14 +217,14 @@
Content="Igen" Content="Igen"
Value="Igen" Value="Igen"
BindableGroupName="{Binding GroupName}" BindableGroupName="{Binding GroupName}"
IsChecked="{Binding SelectedAnswer, Converter={StaticResource RadioButtonConverter}, ConverterParameter=Igen}" IsChecked="{Binding AnswerYes, Converter={StaticResource RBConverter}, ConverterParameter=Igen}"
HorizontalOptions="Center" VerticalOptions="Center"/> HorizontalOptions="Center" VerticalOptions="Center"/>
<local:BindableRadioButton <local:BindableRadioButton
Grid.Row="1" Grid.Row="1"
Content="Nem" Content="Nem"
Value="Nem" Value="Nem"
BindableGroupName="{Binding GroupName}" BindableGroupName="{Binding GroupName}"
IsChecked="{Binding SelectedAnswer, Converter={StaticResource RadioButtonConverter}, ConverterParameter=Nem}" IsChecked="{Binding AnswerNo, Converter={StaticResource RBConverter}, ConverterParameter=Nem}"
HorizontalOptions="Center" VerticalOptions="Center"/> HorizontalOptions="Center" VerticalOptions="Center"/>
</Grid> </Grid>
</Grid> </Grid>
@@ -223,14 +251,14 @@
Content="Igen" Content="Igen"
Value="Igen" Value="Igen"
BindableGroupName="{Binding GroupName}" BindableGroupName="{Binding GroupName}"
IsChecked="{Binding SelectedAnswer, Converter={StaticResource RadioButtonConverter}, ConverterParameter=Igen}" IsChecked="{Binding AnswerYes, Converter={StaticResource RBConverter}, ConverterParameter=Igen}"
HorizontalOptions="Center" VerticalOptions="Center"/> HorizontalOptions="Center" VerticalOptions="Center"/>
<local:BindableRadioButton <local:BindableRadioButton
Grid.Row="1" Grid.Row="1"
Content="Nem" Content="Nem"
Value="Nem" Value="Nem"
BindableGroupName="{Binding GroupName}" BindableGroupName="{Binding GroupName}"
IsChecked="{Binding SelectedAnswer, Converter={StaticResource RadioButtonConverter}, ConverterParameter=Nem}" IsChecked="{Binding AnswerNo, Converter={StaticResource RBConverter}, ConverterParameter=Nem}"
HorizontalOptions="Center" VerticalOptions="Center"/> HorizontalOptions="Center" VerticalOptions="Center"/>
</Grid> </Grid>
</Grid> </Grid>
@@ -5,6 +5,8 @@ using System.Windows.Input;
using System.Globalization; using System.Globalization;
using DevExpress.Data.Helpers; using DevExpress.Data.Helpers;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.Runtime.CompilerServices;
using Android.Provider;
namespace WorkFlowCheck.MAUI.Pages.CheckList; namespace WorkFlowCheck.MAUI.Pages.CheckList;
@@ -14,9 +16,20 @@ public partial class CheckListWorkPage : ContentPage
private string _checkPointCode; private string _checkPointCode;
private int _checkListHeaderId; private int _checkListHeaderId;
private UserDTO _userDTO; private UserDTO _userDTO;
private bool _isLoading;
public bool IsLoading
{
get => _isLoading;
set
{
_isLoading = value;
OnPropertyChanged(nameof(IsLoading));
}
}
public ObservableCollection<CheckListRowDTO> CheckListRows { get; set; } = new ObservableCollection<CheckListRowDTO>(); public ObservableCollection<CheckListRowDTO> CheckListRows { get; set; } = new ObservableCollection<CheckListRowDTO>();
public ICommand CreatePhoto { get; set; } public ICommand CreatePhoto { get; set; }
public ICommand SendCommand { get; set; }
public ICommand SaveCommand { get; set; }
public CheckListWorkPage(int checkListHeaderId, string checkPointCode) public CheckListWorkPage(int checkListHeaderId, string checkPointCode)
{ {
@@ -25,7 +38,20 @@ public partial class CheckListWorkPage : ContentPage
_checkListHeaderId = checkListHeaderId; _checkListHeaderId = checkListHeaderId;
_checkListService = MauiProgram.ServiceProvider.GetRequiredService<ICheckListService>(); _checkListService = MauiProgram.ServiceProvider.GetRequiredService<ICheckListService>();
_userDTO = MauiProgram.ServiceProvider.GetRequiredService<IUserService>().GetCurrentUser(); _userDTO = MauiProgram.ServiceProvider.GetRequiredService<IUserService>().GetCurrentUser();
SaveCommand = new Command(OnSave);
SendCommand = new Command(OnSend);
} }
private void OnSend(object obj)
{
int i = 0;
}
private void OnSave(object obj)
{
int i = 0;
}
protected override async void OnAppearing() protected override async void OnAppearing()
{ {
base.OnAppearing(); base.OnAppearing();
@@ -64,12 +90,16 @@ public partial class CheckListWorkPage : ContentPage
} }
private async Task LoadCheckPointCheckListRows() private async Task LoadCheckPointCheckListRows()
{ {
IsLoading = true;
CheckListRows.Clear(); CheckListRows.Clear();
var checkListRowDTOs = await _checkListService.GetCheckListRowsByCheckPointCode(_userDTO.Id, _checkListHeaderId, _checkPointCode); var checkListRowDTOs = await _checkListService.GetCheckListRowsByCheckPointCode(_userDTO.Id, _checkListHeaderId, _checkPointCode);
foreach (var item in checkListRowDTOs) foreach (var item in checkListRowDTOs)
{ {
CheckListRows.Add(item); CheckListRows.Add(item);
} }
IsLoading = false;
} }
} }
public class BindableRadioButton : RadioButton public class BindableRadioButton : RadioButton
@@ -2,11 +2,11 @@
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui" <ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="WorkFlowCheck.MAUI.Pages.NFC.NFCWaiter" x:Class="WorkFlowCheck.MAUI.Pages.NFC.NFCWaiter"
Title="NFCWaiter"> Title="Várakozás NFC olvasásra">
<VerticalStackLayout> <Grid HorizontalOptions="Center" VerticalOptions="Center">
<Label <Label Grid.Row="0"
Text="Várakozás az NFC beolvasásra ..." Text="Várakozás az NFC beolvasásra ..."
VerticalOptions="Center" VerticalOptions="Center"
HorizontalOptions="Center" /> HorizontalOptions="Center" />
</VerticalStackLayout> </Grid>
</ContentPage> </ContentPage>
@@ -40,6 +40,21 @@ namespace WorkFlowCheck.MAUI.Services
} }
return retVal; return retVal;
} }
public async Task<ApiResponseDTO<CheckPointDTO>> GetCheckPoint(string checkPointCode)
{
var retVal = new ApiResponseDTO<CheckPointDTO>() { IsSuccess = true };
try
{
var res = await _dbContext.CheckPoints.Include(i => i.CheckListTemplateRows).Where(w => w.Code == checkPointCode).FirstOrDefaultAsync();
retVal.Data = _mapper.Map<CheckPointDTO>(res);
}
catch (Exception ex)
{
retVal.IsSuccess = false;
retVal.Errors.Add(ex.Message);
}
return retVal;
}
public async Task<ApiResponseDTO<CheckListHeaderDTO>> StartNew(CheckListTemplateHeaderDTO checkListTemplateHeaderDTO) public async Task<ApiResponseDTO<CheckListHeaderDTO>> StartNew(CheckListTemplateHeaderDTO checkListTemplateHeaderDTO)
{ {
@@ -11,6 +11,7 @@ namespace WorkFlowCheck.MAUI.Services.Interfaces
{ {
Task<ApiResponseDTO<CheckListHeaderDTO>> StartNew(CheckListTemplateHeaderDTO checkListTemplateHeaderDTO); Task<ApiResponseDTO<CheckListHeaderDTO>> StartNew(CheckListTemplateHeaderDTO checkListTemplateHeaderDTO);
Task<ApiResponseDTO<CheckPointDTO>> GetCheckPoint(int checkPointId); Task<ApiResponseDTO<CheckPointDTO>> GetCheckPoint(int checkPointId);
Task<ApiResponseDTO<CheckPointDTO>> GetCheckPoint(string checkPointCode);
Task<List<CheckListHeaderDTO>> GetCheckLists(int userId); Task<List<CheckListHeaderDTO>> GetCheckLists(int userId);
@@ -4,6 +4,7 @@ using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using WorkFlowCheck.Common.DTO; using WorkFlowCheck.Common.DTO;
using WorkFlowCheck.MAUI.Pages.CheckList;
namespace WorkFlowCheck.MAUI.TemplateSelectors namespace WorkFlowCheck.MAUI.TemplateSelectors
{ {