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"> xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml">
<StackLayout Padding="10"> <StackLayout Padding="10">
<Label Text="Ajouter une Pièce" FontSize="24" HorizontalOptions="Center"/> <Label Text="Ajouter une Pièce" FontSize="24" HorizontalOptions="Center"/>
<Entry x:Name="NomEntry" Placeholder="Nom"/> <Entry x:Name="NomEntry" Placeholder="Nom"/>
<Editor x:Name="DescriptionEditor" Placeholder="Description" HeightRequest="100"/> <Editor x:Name="DescriptionEditor" Placeholder="Description" HeightRequest="100"/>
<Entry x:Name="PrixEntry" Placeholder="Prix" Keyboard="Numeric"/> <Entry x:Name="PrixEntry" Placeholder="Prix" Keyboard="Numeric"/>
<Entry x:Name="StockEntry" Placeholder="Stock" 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="Enregistrer" Clicked="OnSaveClicked"/>
</StackLayout> </StackLayout>
</ContentPage> </ContentPage>

View File

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

View File

@ -4,11 +4,15 @@
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"> xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml">
<StackLayout Padding="10"> <StackLayout Padding="10">
<Label Text="Modifier la Pièce" FontSize="24" HorizontalOptions="Center"/> <Label Text="Modifier la Pièce" FontSize="24" HorizontalOptions="Center"/>
<Entry x:Name="NomEntry" Placeholder="Nom"/> <Entry x:Name="NomEntry" Placeholder="Nom"/>
<Editor x:Name="DescriptionEditor" Placeholder="Description" HeightRequest="100"/> <Editor x:Name="DescriptionEditor" Placeholder="Description" HeightRequest="100"/>
<Entry x:Name="PrixEntry" Placeholder="Prix" Keyboard="Numeric"/> <Entry x:Name="PrixEntry" Placeholder="Prix" Keyboard="Numeric"/>
<Entry x:Name="StockEntry" Placeholder="Stock" 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="Enregistrer" Clicked="OnSaveClicked"/>
<Button Text="Supprimer" Clicked="OnDeleteClicked" TextColor="Red"/> <Button Text="Supprimer" Clicked="OnDeleteClicked" TextColor="Red"/>
</StackLayout> </StackLayout>

View File

@ -6,15 +6,39 @@ namespace MauiAppStock.Views
public partial class EditPiecePage : ContentPage public partial class EditPiecePage : ContentPage
{ {
private Piece _piece; private Piece _piece;
private List<Fournisseur> _fournisseurs;
public EditPiecePage(Piece piece) public EditPiecePage(Piece piece)
{ {
InitializeComponent(); InitializeComponent();
_piece = piece; _piece = piece;
// Remplir les champs de base
NomEntry.Text = piece.Nom; NomEntry.Text = piece.Nom;
DescriptionEditor.Text = piece.Description; DescriptionEditor.Text = piece.Description;
PrixEntry.Text = piece.Prix.ToString(); PrixEntry.Text = piece.Prix.ToString();
StockEntry.Text = piece.Stock.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) private async void OnSaveClicked(object sender, EventArgs e)
@ -25,7 +49,10 @@ namespace MauiAppStock.Views
_piece.Description = DescriptionEditor.Text; _piece.Description = DescriptionEditor.Text;
_piece.Prix = prix; _piece.Prix = prix;
_piece.Stock = stock; _piece.Stock = stock;
_piece.Fournisseur = FournisseurEntry.Text;
var fournisseurSelectionne = FournisseurPicker.SelectedItem as Fournisseur;
_piece.Fournisseur = fournisseurSelectionne?.Nom;
await Database.UpdatePieceAsync(_piece); await Database.UpdatePieceAsync(_piece);
await Navigation.PopAsync(); await Navigation.PopAsync();
} }