NFC a CheckPoints-hoz
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user