public App(string filename)
        {
            InitializeComponent();

            Pedido_Repository         = new Pedido_Repository(filename);
            PlacaBase_Repository      = new PlacaBase_Repository(filename);
            Chasis_Repository         = new Chasis_Repository(filename);
            Procesador_Repository     = new Procesador_Repository(filename);
            Ram_Repository            = new RAM_Repository(filename);
            TarjetaGrafica_Repository = new TarjetaGrafica_Repository(filename);
            Usuario_Repository        = new Usuario_Repository(filename);

            MainPage = new LogIn_View();
        }
        /// <summary>
        /// Realiza las comprobaciones de que el formulario esta rellenado correctamente, y comprueba que el usuario y la contraseña son correctos.
        /// </summary>
        /// <returns></returns>
        public async Task IniciarSesion()
        {
            // Primero comprobamos que el usuario no ha dejado algún campo vacío.
            if (string.IsNullOrEmpty(txtNombre.Text.ToString()) || string.IsNullOrEmpty(txtContrasenia.Text.ToString()))
            {
                await Page.DisplayAlert("ERROR", "No deben haber campos vacíos.", "OK");
            }
            else if (txtContrasenia.Text.Length < 10)
            {
                await Page.DisplayAlert("ERROR", "La contraseña es demasiado corta. Mínimo 10 caracteres.", "OK");
            }
            else
            {
                // Luego se comprueba si el usuario existe en la base de datos.
                if (!await Usuario_Repository.ComprobarNombre(txtNombre.Text))
                {
                    await Page.DisplayAlert("ERROR", "No existe un usuario registrado con ese nombre.", "OK");
                }
                else
                {
                    Usuario = await Usuario_Repository.GetUsuario(txtNombre.Text);

                    // Luego comprobamos si la contraseña introducida es correcta.
                    if (Usuario.Contrasenia != txtContrasenia.Text)
                    {
                        await Page.DisplayAlert("ERROR", "Contraseña incorrecta.", "OK");
                    }
                    else
                    {
                        // Si es cliente inicia la sesión de cliente
                        if (Usuario.Tipo == "C")
                        {
                            Cliente_View Cliente_View = new Cliente_View(Usuario);
                            await Navigation.PushModalAsync(Cliente_View);
                        }

                        // Si no, inicia la sesión de vendor
                        else
                        {
                            Vendor_View Vendor_View = new Vendor_View(Usuario);
                            await Navigation.PushModalAsync(Vendor_View);
                        }
                    }
                }
            }
        }
        /// <summary>
        /// Recupera de cada pedido realizado el nombre del usuario que lo ha realizado, el nombre de cada componente y el precio total.
        /// </summary>
        /// <returns>Una lista de los pedidos realizados.</returns>
        public async Task <List <LineaPedido> > CargarPedidos()
        {
            pedidos = await App.Pedido_Repository.GetAllPedidosAsync();

            List <LineaPedido> lineasPedido = new List <LineaPedido>();
            PlacaBase          placabase;
            Procesador         procesador;
            Chasis             chasis;
            RAM            ram;
            TarjetaGrafica tarjetaGrafica;
            Usuario        usuarioPedido;

            for (int i = 0; i < pedidos.Count; i++)
            {
                placabase = await PlacaBase_Repository.ComprobarId(pedidos[i].PlacaBase);

                procesador = await Procesador_Repository.ComprobarId(pedidos[i].Procesador);

                chasis = await Chasis_Repository.ComprobarId(pedidos[i].Chasis);

                ram = await RAM_Repository.ComprobarId(pedidos[i].RAM);

                tarjetaGrafica = await TarjetaGrafica_Repository.ComprobarId(pedidos[i].TarjetaGrafica);

                usuarioPedido = await Usuario_Repository.ComprobarId(pedidos[i].Usuario);

                lineasPedido.Add(new LineaPedido(
                                     pedidos[i].Id,
                                     usuarioPedido.Nombre,
                                     placabase.Nombre,
                                     procesador.Nombre,
                                     tarjetaGrafica.Nombre,
                                     chasis.Nombre,
                                     ram.Nombre,
                                     placabase.Precio + procesador.Precio + chasis.Precio + ram.Precio + tarjetaGrafica.Precio
                                     ));
            }

            return(lineasPedido);
        }