NFC a CheckPoints-hoz

This commit is contained in:
2025-02-27 07:53:26 +01:00
parent 1ac31d7d76
commit 5512120306
6 changed files with 87 additions and 13 deletions
@@ -2,17 +2,28 @@
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="WorkFlowCheck.MAUI.Pages.BaseStock.BaseStockPage"
Title="BaseStockPage">
<VerticalStackLayout>
<Label
Text="Welcome to .NET MAUI!"
VerticalOptions="Center"
HorizontalOptions="Center" />
Title="Törzs adatok">
<VerticalStackLayout Margin="10,0,10,0">
<Button
x:Name="ButtonGetCheckPoints"
Margin="0,0,0,20"
Text="Ellenőrzési pontok"
SemanticProperties.Hint="Ellenőrzési pontok"
Clicked="OnButtonGetCheckPoints"
HorizontalOptions="Fill" />
<Button
x:Name="ButtonGetEquipments"
Margin="0,0,0,20"
Text="Berendezések"
SemanticProperties.Hint="Berendezések"
Clicked="OnButtonGetCheckPoints"
HorizontalOptions="Fill" />
<Button
x:Name="ButtonGetLocations"
Margin="0,0,0,20"
Text="Lokációk"
SemanticProperties.Hint="Lokációk"
Clicked="OnButtonGetCheckPoints"
HorizontalOptions="Fill" />
</VerticalStackLayout>
</ContentPage>
@@ -9,6 +9,7 @@
<!-- Editálható név mező -->
<Entry Text="{Binding CheckPointDTO.ShortName}" Placeholder="Edit item name" />
<Entry Text="{Binding CheckPointDTO.Code}" Placeholder="Edit item name" />
<Grid ColumnSpacing="10">
<!-- 10 pixel térköz az oszlopok között -->
@@ -12,10 +12,10 @@
<Label Text="{Binding ShortName}" FontSize="16" FontAttributes="Bold" />
<Label Text="{Binding Code}" FontSize="14" />
<HorizontalStackLayout HorizontalOptions="End">
<Button Text="Edit"
<Button Text="Edit" Margin="5,0,0,0"
Command="{Binding BindingContext.EditCommand, Source={x:Reference CheckPointsList}}"
CommandParameter="{Binding .}" />
<Button Text="Pair"
<Button Text="Pair" Margin="5,0,0,0"
Command="{Binding BindingContext.PairCommand, Source={x:Reference CheckPointsList}}"
CommandParameter="{Binding .}" />
</HorizontalStackLayout>
@@ -3,6 +3,7 @@ using System.Windows.Input;
using WorkFlowCheck.Common.DTO;
using WorkFlowCheck.MAUI.Pages.BaseStock.CheckPoints;
using WorkFlowCheck.MAUI.Services.Interfaces;
using Plugin.NFC;
namespace WorkFlowCheck.MAUI.Pages.BaseStock;
@@ -33,6 +34,7 @@ public partial class CheckPointsPage : ContentPage
BindingContext = this;
await LoadCheckPoints();
}
private async Task LoadCheckPoints()
{
@@ -42,7 +44,6 @@ public partial class CheckPointsPage : ContentPage
IsRefreshing = false;
OnPropertyChanged(nameof(IsRefreshing));
}
private async void OnEditItem(CheckPointDTO checkPointDTO)
{
// Navigálás a CheckPointEdit.xaml-ra, és átadjuk az editálni kívánt elemet
@@ -50,13 +51,65 @@ public partial class CheckPointsPage : ContentPage
}
private async void OnPairItem(CheckPointDTO checkPointDTO)
{
// Navigálás a CheckPointEdit.xaml-ra, és átadjuk az editálni kívánt elemet
await Navigation.PushAsync(new CheckPointEditPage(checkPointDTO));
_checkPointDTO = checkPointDTO;
await BeginListening();
}
protected override bool OnBackButtonPressed()
{
Shell.Current.GoToAsync("//BaseStockPage");
return true;
}
#region NFC
bool _eventsAlreadySubscribed = false;
CheckPointDTO _checkPointDTO = null;
async Task BeginListening()
{
try
{
MainThread.BeginInvokeOnMainThread(() =>
{
SubscribeEvents();
CrossNFC.Current.StartListening();
});
}
catch (Exception ex)
{
}
}
void SubscribeEvents()
{
if (_eventsAlreadySubscribed)
UnsubscribeEvents();
_eventsAlreadySubscribed = true;
CrossNFC.Current.OnMessageReceived += Current_OnMessageReceived_NFCData;
}
void UnsubscribeEvents()
{
CrossNFC.Current.OnMessageReceived -= Current_OnMessageReceived_NFCData;
_eventsAlreadySubscribed = false;
}
async void Current_OnMessageReceived_NFCData(ITagInfo tagInfo)
{
if (tagInfo == null)
{
return;
}
var identifier = tagInfo.Identifier;
var serialNumber = NFCUtils.ByteArrayToHexString(identifier, ":");
if (_checkPointDTO != null)
{
_checkPointDTO.Code = serialNumber;
await _baseStockService.UpdateCheckPoint(_checkPointDTO);
UnsubscribeEvents();
CrossNFC.Current.StopListening();
await LoadCheckPoints();
}
}
#endregion
}
@@ -29,5 +29,14 @@ namespace WorkFlowCheck.MAUI.Services
return _mapper.Map<CheckPointDTO>(await _dbContext.CheckPoints.Where(w => w.Id == id).FirstOrDefaultAsync());
}
public async Task<CheckPointDTO> UpdateCheckPoint(CheckPointDTO checkPoint)
{
var retVal = checkPoint;
_dbContext.CheckPoints.Update(_mapper.Map<CheckPoint>(checkPoint));
_dbContext.SaveChanges();
return retVal;
}
}
}
@@ -11,7 +11,7 @@ namespace WorkFlowCheck.MAUI.Services.Interfaces
{
Task<List<CheckPointDTO>> GetAllCheckPoints();
Task<CheckPointDTO> GetCheckPoint(int id);
Task<CheckPointDTO> UpdateCheckPoint(CheckPointDTO checkPoint);
}