using Controladora;
using Entidades;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.Common;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Vista
{
    public partial class FrmOrdenesDeCompras : Form
    {
        public FrmOrdenesDeCompras()
        {
            InitializeComponent();
            CargaDatos();
        }

        private void CargaDatos()
        {
            ActualizarGrilla();
        }

        private void BtnAdd_Click(object sender, EventArgs e)
        {
            using (var form = new FrmOrdenDeCompra())
            {
                form.ShowDialog();
                ActualizarGrilla();
            }
        }

        private void ActualizarGrilla()
        {
            dgvOrdenDeCompra.DataSource = null;
            dgvOrdenDeCompra.DataSource = ControladoraOrdenDeCompras.Instance.Listar();
            foreach (DataGridViewColumn column in dgvOrdenDeCompra.Columns)
            {
                column.Visible = column.Name == "Id" || column.Name == "NombreProveedor"
                                 || column.Name == "MontoTotal";
            }

        }

        private void BtnEliminar_Click(object sender, EventArgs e)
        {
            // Verifica si hay filas seleccionadas en dgvPresupuestos
            if (dgvOrdenDeCompra.SelectedRows.Count == 0)
            {
                MessageBox.Show("Por favor, selecciona una orden de Compra para eliminar.");
                return;
            }

            // Recupera el ID del presupuesto seleccionado
            int ordenId = Convert.ToInt32(dgvOrdenDeCompra.SelectedRows[0].Cells["Id"].Value.ToString());

            // Crea un objeto de Presupuesto con el ID recuperado
            var orden = new OrdenDeCompra { Id = ordenId };

            // Confirma la eliminación con el usuario
            var result = MessageBox.Show("¿Estás seguro de que deseas eliminar esta orden?", "Confirmar Eliminación", MessageBoxButtons.YesNo);
            if (result == DialogResult.Yes)
            {
                try
                {
                    // Llama al método Eliminar de la controladora con el objeto Presupuesto
                    ControladoraOrdenDeCompras.Instance.Eliminar(orden);

                    // Actualiza la grilla de presupuestos después de eliminar el presupuesto
                    ActualizarGrilla();

                    MessageBox.Show("Orden eliminado exitosamente.");
                }
                catch (Exception ex)
                {
                    MessageBox.Show($"Error al eliminar la Orden de Compra: {ex.Message}");
                }
            }
        }

        private void dgvOrdenDeCompra_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (dgvOrdenDeCompra.SelectedRows.Count == 0) return;

            int ordenid = Convert.ToInt32(dgvOrdenDeCompra.SelectedRows[0].Cells["Id"].Value.ToString());

            var orden = new OrdenDeCompra { Id = ordenid };

            var detallesorden = ControladoraOrdenDeCompras.Instance.ListarDetalles(orden);

            dgvDetalles.DataSource = null;
            dgvDetalles.DataSource = detallesorden;

            foreach (DataGridViewColumn column in dgvDetalles.Columns)
            {
                column.Visible = column.Name == "IdPresupuesto" || column.Name == "NombreProducto" || column.Name == "MontoCU"
            || column.Name == "Cantidad" || column.Name == "SubTotal";
            }
        }
    }
}
