using compabetov2.database; using compabetov2.database.modelos; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace compabetov2.admin { public partial class crud : Form { private LoginModel loginPrincipal; private List productos = new List(); public crud() { InitializeComponent(); llenarLayout(); } public void llenarLayout() { AdminPanel.Controls.Clear(); productos.Clear(); productos = service.conseguirProductos(); foreach (Producto producto in productos) { TableLayoutPanel filaLayout = new TableLayoutPanel(); filaLayout.RowCount = 1; filaLayout.ColumnCount = 2; filaLayout.Height = 100; filaLayout.Width = 1115; filaLayout.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F)); filaLayout.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F)); filaLayout.RowStyles.Add(new RowStyle(SizeType.Percent, 100F)); TableLayoutPanel informacionProducto = new TableLayoutPanel(); informacionProducto.RowCount = 1; informacionProducto.ColumnCount = 2; informacionProducto.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 20F)); informacionProducto.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 80F)); informacionProducto.RowStyles.Add(new RowStyle(SizeType.Percent, 100F)); informacionProducto.Dock = DockStyle.Fill; Label idProducto = new Label(); idProducto.Text = producto.idProducto.ToString(); idProducto.BackColor = Color.FromArgb(82, 82, 82); idProducto.ForeColor = Color.White; idProducto.AutoSize = true; idProducto.Dock = DockStyle.Left; PictureBox imagen = new PictureBox(); string rutaImg = Path.Combine(Application.StartupPath, "Resources", producto.img); imagen.Image = Image.FromFile(rutaImg); imagen.Dock = DockStyle.Fill; imagen.BackgroundImageLayout = ImageLayout.Stretch; imagen.SizeMode = PictureBoxSizeMode.Zoom; imagen.Controls.Add(idProducto); Label nombreStock = new Label(); nombreStock.Text = producto.nombre; nombreStock.Font = new Font(nombreStock.Font.FontFamily, 18); nombreStock.Dock = DockStyle.Fill; nombreStock.TextAlign = ContentAlignment.MiddleCenter; //panel de agregar stock TableLayoutPanel agregarPanel = new TableLayoutPanel(); agregarPanel.Dock = DockStyle.Fill; agregarPanel.RowCount = 1; agregarPanel.ColumnCount = 3; agregarPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33F)); agregarPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33F)); agregarPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33F)); agregarPanel.RowStyles.Add(new RowStyle(SizeType.Percent, 100F)); Button btnEditar = new Button(); btnEditar.Text = "Editar"; btnEditar.Font = new Font(btnEditar.Font.FontFamily, 20); btnEditar.ForeColor = Color.White; btnEditar.FlatStyle = FlatStyle.Flat; btnEditar.FlatAppearance.BorderSize = 0; btnEditar.BackColor = Color.FromArgb(33, 90, 255); btnEditar.Dock = DockStyle.Fill; btnEditar.Click += new EventHandler(delegate (object sender, EventArgs e) { editar editar = new editar(producto, this); editar.Owner = this; editar.Show(); }); Button btnVariante = new Button(); btnVariante.Text = "Variante"; btnVariante.Width = 60; btnVariante.Height = 60; btnVariante.Font = new Font(btnVariante.Font.FontFamily, 20); btnVariante.ForeColor = Color.Black; btnVariante.BackColor = Color.Yellow; btnVariante.FlatStyle = FlatStyle.Flat; btnVariante.FlatAppearance.BorderSize = 0; btnVariante.Dock = DockStyle.Fill; btnVariante.Click += new EventHandler(delegate (object sender, EventArgs e) { Variantes variantes = new Variantes(this); variantes.Owner = this; variantes.Show(); }); Button btnEliminar = new Button(); btnEliminar.Text = "Eliminar"; btnEliminar.Font = new Font(btnEliminar.Font.FontFamily, 20); btnEliminar.ForeColor = Color.White; btnEliminar.FlatStyle = FlatStyle.Flat; btnEliminar.FlatAppearance.BorderSize = 0; btnEliminar.BackColor = Color.Red; btnEliminar.Dock = DockStyle.Fill; btnEliminar.Click += new EventHandler(delegate (object sender, EventArgs e) { DialogResult result = MessageBox.Show($"¿Está seguro de que desea eliminar el producto {producto.nombre}?", "Confirmación", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (result == DialogResult.Yes) { if (service.eliminarProducto(producto)) { //eliminar imagen antigua string destinationFolder = Path.Combine(Application.StartupPath, "Resources"); string imagenEliminada = Path.Combine(destinationFolder, producto.img); llenarLayout(); //se pone a esperar 1 segundo antes de eliminar la imagen //esto para que al programa le de tiempo de dejar de utilizar la imagen y no lance una excepcion Timer timer = new Timer(); timer.Interval = 1000; // 1 segundos timer.Tick += delegate (object sender2, EventArgs e2) { try { File.Delete(imagenEliminada); timer.Stop(); } catch (Exception ex) { // Manejar la excepción de eliminación de archivo temporal Console.WriteLine("Error al eliminar archivo temporal: " + ex.Message); } }; timer.Start(); } } }); informacionProducto.Controls.Add(imagen, 0, 0); informacionProducto.Controls.Add(nombreStock, 1, 0); agregarPanel.Controls.Add(btnEditar, 0, 0); agregarPanel.Controls.Add(btnVariante, 1, 0); agregarPanel.Controls.Add(btnEliminar, 2, 0); filaLayout.Controls.Add(informacionProducto, 0, 0); filaLayout.Controls.Add(agregarPanel, 1, 0); AdminPanel.Controls.Add(filaLayout); } } private void crud_Load(object sender, EventArgs e) { } private void button1_Click(object sender, EventArgs e) { // Cerrar el formulario de ventas this.Close(); // Verificar si ya hay una instancia del formulario principal MenuPrincipal menuprincipalForm = Application.OpenForms.OfType().FirstOrDefault(); if (menuprincipalForm == null) { // Si no hay una instancia, crear una nueva menuprincipalForm = new MenuPrincipal(loginPrincipal); // Establecer el formulario principal como el formulario MDI padre menuprincipalForm.MdiParent = this.MdiParent; // Mostrar el formulario principal menuprincipalForm.Show(); } else { // Si ya hay una instancia, simplemente llevarlo al frente menuprincipalForm.BringToFront(); } } private void btnAgregar_Click(object sender, EventArgs e) { agregarproducto agregarproducto = new agregarproducto(this); agregarproducto.Owner = this; agregarproducto.Show(); } } }