/// <summary> /// Llena los campos del panel usado para editar con los datos del artículo previamente seleccionado. /// </summary> /// <param name="article"></param> /// Contiene los datos del artículo seleccionado. /// <param name="index"></param> /// Índice del artículo seleccionado. public void fillDetails(ArticlePOJO article, int index) { lblIdArticle.Text = "Clave: " + article.IdArticle; lblNameArticle.Text = article.Name; txtaDescriptionDetails.Text = article.Description; lblQuantityArticle.Text = "Existencia: " + dgvArticles.Rows[index].Cells[2].Value; if (article.Image != null) { var newFilepath = Path.Combine(Common.Util.GetSolutionFolder(), "Common", "Resources\\Articles", article.Image); if (myComputer.FileSystem.FileExists(newFilepath)) { sourceFileName = newFilepath; pbxDetails.ImageLocation = newFilepath; } else { pbxDetails.Image = null; } } else { pbxDetails.Image = null; } }
/// <summary> /// Filtra los resultados mostrados en la tabla según el parámetro ingresado, dicha búsqueda se realiza /// ya sea por clave o por nombre. /// </summary> /// <param name="parameter"></param> /// Contiene el valor a buscar. public void filterResults(string parameter) { dgvArticles.Rows.Clear(); for (int i = 0; i < articlesList.Count; i++) { if (rbtnNameArticle.Checked == true) { if (articlesList[i].Name.ToLower().Contains(parameter) == true) { dgvArticles.Rows.Add(articlesList[i].IdArticle, articlesList[i].Name, articlesList[i].Quantity); } } else if (rbtnIdArticle.Checked == true) { if ((articlesList[i].IdArticle + "").Contains(parameter) == true) { dgvArticles.Rows.Add(articlesList[i].IdArticle, articlesList[i].Name, articlesList[i].Quantity); } } } if (dgvArticles.RowCount == 0) { pnlDetails.Visible = false; } else { selectedItem = ArticleDAO.getOneById(int.Parse(dgvArticles.Rows[0].Cells[0].Value + "")); index = 0; fillDetails(selectedItem, index); dgvArticles.Rows[index].Selected = true; } }
/// <summary> /// Actualiza los datos del artículo ingresado como parámetro. /// </summary> /// <param name="newArticle"></param> /// Contiene los datos que sobrescribirán a los anteriores. public static void updateArticle(ArticlePOJO newArticle) { try { Conexion con = new Conexion(); MySqlCommand cmd = new MySqlCommand("UPDATE articles SET idArticle = @P0, name = @P1, " + "description = @P2, image = @P3 WHERE idArticle = @P0;"); cmd.Parameters.AddWithValue("@P0", newArticle.IdArticle); cmd.Parameters.AddWithValue("@P1", newArticle.Name); cmd.Parameters.AddWithValue("@P2", newArticle.Description); cmd.Parameters.AddWithValue("@P3", newArticle.Image); con.ejecutarSentencia(cmd, false); } catch (Exception ex) { return; } finally { if (Conexion.conexion != null) { Conexion.conexion.Close(); } } }
/// <summary> /// Inserta un nuevo artículo en la base de datos. /// </summary> /// <param name="newArticle"></param> /// Contiene los datos que conforman un artículo. /// <returns> /// Retorna -1 si la sentencia no se ejecuto correctamente. /// </returns> public static int insertArticle(ArticlePOJO newArticle) { try { Conexion con = new Conexion(); MySqlCommand cmd = new MySqlCommand("INSERT INTO articles VALUES(@P0,@P1,@P2,@P3);"); cmd.Parameters.AddWithValue("@P0", newArticle.IdArticle); cmd.Parameters.AddWithValue("@P1", newArticle.Name); cmd.Parameters.AddWithValue("@P2", newArticle.Description); cmd.Parameters.AddWithValue("@P3", newArticle.Image); return(con.ejecutarSentencia(cmd, true)); } catch (Exception ex) { Console.WriteLine(ex.Message); return(-1); } finally { if (Conexion.conexion != null) { Conexion.conexion.Close(); } } }
/// <summary> /// Permite ubicar al artículo seleccionado para posteriores operaciones. /// </summary> private void dgvArticles_CellClick(object sender, DataGridViewCellEventArgs e) { try { index = e.RowIndex; dgvArticles.Rows[index].Selected = true; pnlDetails.Visible = true; pnlAddEdit.Visible = false; btnsShowHide(true, true, true); selectedItem = ArticleDAO.getOneById(int.Parse(dgvArticles.Rows[index].Cells[0].Value + "")); fillDetails(selectedItem, index); } catch (Exception) { } }
/// <summary> /// Permite o restringe funciones dependiendo de si existen o no artículos en la base de datos. /// </summary> /// <returns> /// Retorna true si no existen artículos en la base de datos, de otro modo retorna false. /// </returns> public bool isEmpty() { if (articlesList.Count == 0) { btnsShowHide(true, false, false); cleanPanelAddEdit(); pnlAddEdit.Visible = false; pnlDetails.Visible = false; return(true); } pnlDetails.Visible = true; selectedItem = articlesList[0]; index = 0; fillDetails(selectedItem, index); dgvArticles.Rows[index].Selected = true; return(false); }
/// <summary> /// Guarda ya sea un nuevo artículo o los cambios realizado a un artículo existente. /// </summary> private void btnSave_Click(object sender, EventArgs e) { if (((spnIdArticle.Value) + "").Length == 0 || txtNameArticle.Text == "") { MessageBox.Show("Clave y nombre son campos obligatorios", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (btnSave.Text == "Guardar") { if (ArticleDAO.getOneById(int.Parse((spnIdArticle.Value) + "")) != null) { MessageBox.Show("Clave duplicada, pruebe con otra", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } DialogResult dr = MessageBox.Show("¿Está seguro que desea guardar el artículo?", "Info", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (dr == DialogResult.No) { return; } ArticlePOJO newArticle = new ArticlePOJO(); newArticle.IdArticle = int.Parse(spnIdArticle.Text); newArticle.Name = txtNameArticle.Text; newArticle.Description = txtaDescriptionAddEdit.Text; if (lblPath.Text != "") { if (myComputer.FileSystem.FileExists(destinationFileName)) { MessageBox.Show("Actualmente existe un archivo con el mismo nombre", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } myComputer.FileSystem.CopyFile(sourceFileName, destinationFileName); newArticle.Image = lblPath.Text; lblPath.Text = ""; } else { newArticle.Image = null; } ArticleDAO.insertArticle(newArticle); updateTable(); cleanPanelAddEdit(); pnlAddEdit.Visible = false; } else { DialogResult dr = MessageBox.Show("¿Está seguro que desea cambiar el artículo?", "Info", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (dr == DialogResult.No) { return; } ArticlePOJO newArticle = new ArticlePOJO(); newArticle.IdArticle = int.Parse((spnIdArticle.Value) + ""); newArticle.Name = txtNameArticle.Text; newArticle.Description = txtaDescriptionAddEdit.Text; if (lblPath.Text != "") { if (myComputer.FileSystem.FileExists(destinationFileName)) { MessageBox.Show("Actualmente existe un archivo con el mismo nombre", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } var newFilepath = Path.Combine(Common.Util.GetSolutionFolder(), "Common", "Resources\\Articles", selectedItem.Image); if (myComputer.FileSystem.FileExists(newFilepath)) { myComputer.FileSystem.DeleteFile(newFilepath); } myComputer.FileSystem.CopyFile(sourceFileName, destinationFileName); newArticle.Image = lblPath.Text; lblPath.Text = ""; } else { newArticle.Image = selectedItem.Image; } ArticleDAO.updateArticle(newArticle); updateTable(); cleanPanelAddEdit(); pnlAddEdit.Visible = false; } pnlDetails.Visible = true; selectedItem = articlesList[0]; index = 0; fillDetails(selectedItem, index); dgvArticles.Rows[index].Selected = true; btnsShowHide(true, true, true); }