Gestión de Equipos en C# con .NET MAUI: Inserción, Validación y Filtrado por Aula

Informática y Telecomunicaciones4,34 KB

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;
    }
}

Descargar

PDF Word HTML