public void Activate(Promocion p) { using (MySqlConnection conn = new MySqlConnection(Constants.QueryConn)) { try { conn.Open(); var platos = GetPlatosByPromo(p); PlatoDao platoDao = new PlatoDao(); foreach (var pl in platos) { var plato = platoDao.GetOne(pl.Plato_Id); if (plato.Estado != "DISPONIBLE") { throw new DataException("No se puede marcar como DISPONIBLE una promoción que contiene platos NO DISPONIBLES"); } } if (conn.Execute(Constants.ActivatePromo, p, null, null, CommandType.Text) == -1) { throw new DataException("No se actualizó la promoción como DISPONIBLE"); } } catch (Exception ex) { throw ex; } finally { conn.Close(); } } }
private void buttonActivatePromo_Click(object sender, EventArgs e) { if (TextIdPromo.Text == null || TextIdPromo.Text == "") { MessageBox.Show("Debe seleccionar una promoción para marcar como disponible", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } DialogResult res = MessageBox.Show("¿Realmente desea marcar como disponible la promoción?", "Confirmar actualización", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning); if (res == DialogResult.OK) { PromocionesOperations po = new PromocionesOperations(); try { Promocion p = new Promocion(); p.Id = Convert.ToUInt32(TextIdPromo.Text); po.Activate(p); } catch (Exception ex) { MessageBox.Show("No se puede marcar como disponible una promoción con platos no disponibles", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error); } ReloadGridPromos(); ReloadGridPromos(); ClearAllPromo(); } }
public int DeleteAllPlatos(Promocion p, MySqlConnection conn, MySqlTransaction trans) { try { return conn.Execute(Constants.DeletePlatosByPromo, p, trans, null, CommandType.Text); } catch (Exception ex) { throw ex; } }
public int DeleteAllPlatos(Promocion p) { using (MySqlConnection conn = new MySqlConnection(Constants.QueryConn)) { try { conn.Open(); return conn.Execute(Constants.DeletePlatosByPromo, p, null, null, CommandType.Text); } catch (Exception ex) { throw ex; } finally { conn.Close(); } } }
private void ButtonSavePromo_Click(object sender, EventArgs e) { if (dataGridPlatosPromo.DataSource == null || ((List<Plato>)dataGridPlatosPromo.DataSource).Count == 0) { MessageBox.Show("Debe ingresar un plato a la promoción", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (TextDescPromo.Text == "") { MessageBox.Show("Debe ingresar una descripción", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (TextPricePromo.Text == "") { MessageBox.Show("Debe ingresar un precio", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } DialogResult res = MessageBox.Show("¿Realmente desea actualizar la promoción?", "Confirmar actualización", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning); if (res == DialogResult.OK) { Promocion p = new Promocion(); p.Id = Convert.ToUInt32(TextIdPromo.Text); p.Descripcion = TextDescPromo.Text; try { p.Precio = (float)(Convert.ToDouble(TextPricePromo.Text)); } catch (FormatException ex) { MessageBox.Show("Debe ingresar un valor numérico en el precio", "Error numérico", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } PromocionesOperations po = new PromocionesOperations(); try { po.Update(p, (List<Plato>)dataGridPlatosPromo.DataSource); } catch (Exception ex) { MessageBox.Show("Error inesperado en actualización", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } ReloadGridPromos(); ClearAllPromo(); } }
private void ButtonDeletePromo_Click(object sender, EventArgs e) { DialogResult res = MessageBox.Show("¿Realmente desea marcar como no disponible la promoción?", "Confirmar actualización", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning); if (res == DialogResult.OK) { Promocion p = new Promocion(); p.Id = Convert.ToUInt32(TextIdPromo.Text); PromocionesOperations po = new PromocionesOperations(); try { po.Inactivate(p); } catch (Exception ex) { //TODO: } ReloadGridPromos(); ClearAllPromo(); } }
public void Update(Promocion p, IEnumerable<Plato> platos) { if (platos == null || platos.Count() == 0) { throw new DataException("No se pueden quitar todos los platos de una promoción"); } using (MySqlConnection conn = new MySqlConnection(Constants.QueryConn)) { MySqlTransaction trans = null; try { conn.Open(); trans = conn.BeginTransaction(); if (conn.Execute(Constants.UpdatePromo, p, trans, null, CommandType.Text) == -1) { //Promo not updated throw new DataException("Error al actualizar la promoción"); } if (DeleteAllPlatos(p, conn, trans) == -1) { //Update de platos no realizado throw new DataException("Error al actualizar los platos asociados a la promoción"); } foreach (var plato in platos) { Plato_Promocion pp = new Plato_Promocion(); pp.Plato_Id = plato.Id; pp.Promocion_Id = p.Id; if (conn.Execute(Constants.InsertPlatoPromo, pp, trans, null, CommandType.Text) == -1) { throw new DataException("Error al actualizar los platos asociados a la promoción"); } } trans.Commit(); } catch (Exception ex) { trans.Rollback(); throw ex; } finally { conn.Close(); } } }
/// <summary> /// Genera una nueva promocion con los platos asociados, si algo sale mal, lanza exception /// </summary> public void Insert(Promocion p, IEnumerable<Plato> platos) { if (platos == null || platos.Count() == 0) { throw new DataException("No se puede generar una promoción sin platos asociados"); } using (MySqlConnection conn = new MySqlConnection(Constants.QueryConn)) { MySqlTransaction trans = null; try { conn.Open(); trans = conn.BeginTransaction(); if (conn.Execute(Constants.InsertPromo, p, trans, null, CommandType.Text) == -1) { //Promo not updated throw new DataException("Error al generar la nueva promoción"); } long id = conn.Query<long>(Constants.SelectLastId, null, trans, true, null, CommandType.Text).ElementAt(0); foreach (var plato in platos) { Plato_Promocion pp = new Plato_Promocion(); pp.Plato_Id = plato.Id; pp.Promocion_Id = Convert.ToUInt32(id); if (conn.Execute(Constants.InsertPlatoPromo, pp, trans, null, CommandType.Text) == -1) { throw new DataException("Error al generar la nueva promoción"); } } trans.Commit(); } catch (Exception ex) { trans.Rollback(); throw ex; } finally { conn.Close(); } } }
public int Inactivate(Promocion p) { using (MySqlConnection conn = new MySqlConnection(Constants.QueryConn)) { try { conn.Open(); return conn.Execute(Constants.DeletePromo, p, null, null, CommandType.Text); } catch (Exception ex) { throw new DataException("Error al marcar como no disponible una promocion", ex); } finally { conn.Close(); } } }
public IEnumerable<Plato_Promocion> GetPlatosByPromo(Promocion p) { using (MySqlConnection conn = new MySqlConnection(Constants.QueryConn)) { try { conn.Open(); var lista = conn.Query<Plato_Promocion>(Constants.SelectPlatosByPromo, p, null, true, null, CommandType.Text); return lista; } catch (Exception ex) { throw ex; } finally { conn.Close(); } } }