Ajout picker fournisseurs dans AddPiece et EditPiece

This commit is contained in:
ragueneaul 2025-04-10 16:00:40 +02:00
parent a2f833d35d
commit 96792c02d9
4 changed files with 56 additions and 6 deletions

View File

@ -4,11 +4,15 @@
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml">
<StackLayout Padding="10">
<Label Text="Ajouter une Pièce" FontSize="24" HorizontalOptions="Center"/>
<Entry x:Name="NomEntry" Placeholder="Nom"/>
<Editor x:Name="DescriptionEditor" Placeholder="Description" HeightRequest="100"/>
<Entry x:Name="PrixEntry" Placeholder="Prix" Keyboard="Numeric"/>
<Entry x:Name="StockEntry" Placeholder="Stock" Keyboard="Numeric"/>
<Entry x:Name="FournisseurEntry" Placeholder="Fournisseur"/>
<Label Text="Sélectionnez un fournisseur:"/>
<Picker x:Name="FournisseurPicker" Title="Fournisseurs"/>
<Button Text="Enregistrer" Clicked="OnSaveClicked"/>
</StackLayout>
</ContentPage>

View File

@ -1,27 +1,42 @@
using MauiAppStock.Models;
using MauiAppStock.Data;
using System.Collections.Generic;
using System.Linq;
namespace MauiAppStock.Views
{
public partial class AddPiecePage : ContentPage
{
private List<Fournisseur> _fournisseurs;
public AddPiecePage()
{
InitializeComponent();
LoadFournisseurs();
}
private async void LoadFournisseurs()
{
_fournisseurs = await Database.GetFournisseursAsync();
FournisseurPicker.ItemsSource = _fournisseurs;
FournisseurPicker.ItemDisplayBinding = new Binding("Nom");
}
private async void OnSaveClicked(object sender, EventArgs e)
{
if (double.TryParse(PrixEntry.Text, out double prix) && int.TryParse(StockEntry.Text, out int stock))
{
var selectedFournisseur = FournisseurPicker.SelectedItem as Fournisseur;
var piece = new Piece
{
Nom = NomEntry.Text,
Description = DescriptionEditor.Text,
Prix = prix,
Stock = stock,
Fournisseur = FournisseurEntry.Text
Fournisseur = selectedFournisseur?.Nom
};
await Database.AddPieceAsync(piece);
await Navigation.PopAsync();
}

View File

@ -4,11 +4,15 @@
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml">
<StackLayout Padding="10">
<Label Text="Modifier la Pièce" FontSize="24" HorizontalOptions="Center"/>
<Entry x:Name="NomEntry" Placeholder="Nom"/>
<Editor x:Name="DescriptionEditor" Placeholder="Description" HeightRequest="100"/>
<Entry x:Name="PrixEntry" Placeholder="Prix" Keyboard="Numeric"/>
<Entry x:Name="StockEntry" Placeholder="Stock" Keyboard="Numeric"/>
<Entry x:Name="FournisseurEntry" Placeholder="Fournisseur"/>
<Label Text="Sélectionnez un fournisseur:"/>
<Picker x:Name="FournisseurPicker" Title="Fournisseurs"/>
<Button Text="Enregistrer" Clicked="OnSaveClicked"/>
<Button Text="Supprimer" Clicked="OnDeleteClicked" TextColor="Red"/>
</StackLayout>

View File

@ -6,15 +6,39 @@ namespace MauiAppStock.Views
public partial class EditPiecePage : ContentPage
{
private Piece _piece;
private List<Fournisseur> _fournisseurs;
public EditPiecePage(Piece piece)
{
InitializeComponent();
_piece = piece;
// Remplir les champs de base
NomEntry.Text = piece.Nom;
DescriptionEditor.Text = piece.Description;
PrixEntry.Text = piece.Prix.ToString();
StockEntry.Text = piece.Stock.ToString();
FournisseurEntry.Text = piece.Fournisseur;
}
protected override async void OnAppearing()
{
base.OnAppearing();
// Charger les fournisseurs
_fournisseurs = await Database.GetFournisseursAsync();
FournisseurPicker.ItemsSource = _fournisseurs;
FournisseurPicker.ItemDisplayBinding = new Binding("Nom");
// Sélectionner le fournisseur existant (si défini)
if (!string.IsNullOrEmpty(_piece.Fournisseur))
{
var fournisseurActuel = _fournisseurs.FirstOrDefault(f => f.Nom == _piece.Fournisseur);
if (fournisseurActuel != null)
{
FournisseurPicker.SelectedItem = fournisseurActuel;
}
}
}
private async void OnSaveClicked(object sender, EventArgs e)
@ -25,7 +49,10 @@ namespace MauiAppStock.Views
_piece.Description = DescriptionEditor.Text;
_piece.Prix = prix;
_piece.Stock = stock;
_piece.Fournisseur = FournisseurEntry.Text;
var fournisseurSelectionne = FournisseurPicker.SelectedItem as Fournisseur;
_piece.Fournisseur = fournisseurSelectionne?.Nom;
await Database.UpdatePieceAsync(_piece);
await Navigation.PopAsync();
}