Gestión de Equipos en C# con .NET MAUI: Inserción, Validación y Filtrado por Aula
Gestión de equipos en C# con .NET MAUI
Clase de gestión de equipos
A continuación se muestra la clase que almacena y gestiona los equipos:
public List<Equipo> ObtenerTodos()
{
return equipos;
}
public bool ExisteId(int id)
{
foreach (var equipo in equipos)
{
if (equipo.Identificador == id)
{
return true;
}
}
return false;
}
public void Insertar(Equipo equipoNuevo)
{
equipos.Add(equipoNuevo);
}
Página de inserción de equipos
La página InsertarPage permite registrar nuevos equipos, validando que el identificador sea numérico, que no esté repetido y que se hayan seleccionado el aula y el sistema operativo:
public partial class InsertarPage : ContentPage
{
public InsertarPage()
{
InitializeComponent();
}
private async void InsertarButton_Clicked(object sender, EventArgs e)
{
if (!int.TryParse(IdEntry.Text, out int id))
{
await DisplayAlert("Error", "Introduce un identificador válido.", "OK");
return;
}
if (App.Equipos.ExisteId(id))
{
await DisplayAlert("Error", "El identificador ya existe.", "OK");
return;
}
if (AulaPicker.SelectedItem == null || SistemaPicker.SelectedItem == null)
{
await DisplayAlert("Error", "Selecciona un aula y un sistema operativo.", "OK");
return;
}
Equipo nuevoEquipo = new Equipo();
nuevoEquipo.Identificador = id;
nuevoEquipo.Aula = AulaPicker.SelectedItem.ToString();
nuevoEquipo.SistemaOperativo = SistemaPicker.SelectedItem.ToString();
nuevoEquipo.EstaActualizado = ActualizadoSwitch.IsToggled;
nuevoEquipo.FechaCompra = FechaPicker.Date;
App.Equipos.Insertar(nuevoEquipo);
await DisplayAlert("Éxito", "Equipo insertado correctamente.", "OK");
await Navigation.PushAsync(new ListadoPage());
}
}
Página de listado y filtrado por aula
La página ListadoPage muestra todos los equipos registrados y permite filtrarlos por aula mediante un Picker. Las aulas disponibles se obtienen dinámicamente a partir de los equipos almacenados:
public partial class ListadoPage : ContentPage
{
public ListadoPage()
{
InitializeComponent();
List<string> aulas = new List<string>();
foreach (var equipo in App.Equipos.ObtenerTodos())
{
if (!aulas.Contains(equipo.Aula))
{
aulas.Add(equipo.Aula);
}
}
AulaPicker.ItemsSource = aulas;
AulaPicker.SelectedIndexChanged += AulaPicker_SelectedIndexChanged;
EquiposListView.ItemsSource = App.Equipos.ObtenerTodos();
}
private void AulaPicker_SelectedIndexChanged(object sender, EventArgs e)
{
if (AulaPicker.SelectedItem == null)
{
return;
}
string aulaSeleccionada = AulaPicker.SelectedItem.ToString();
List<Equipo> filtrados = new List<Equipo>();
foreach (var equipo in App.Equipos.ObtenerTodos())
{
if (equipo.Aula == aulaSeleccionada)
{
filtrados.Add(equipo);
}
}
EquiposListView.ItemsSource = filtrados;
}
}