예제 #1
0
 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();
         }
     }
 }
예제 #2
0
 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();
     }
 }
예제 #3
0
 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;
     }
 }
예제 #4
0
 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();
         }
     }
 }
예제 #5
0
        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();
            }
        }
예제 #6
0
        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();
            }
        }
예제 #7
0
 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();
         }
     }
 }
예제 #8
0
        /// <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();
                }
            }
        }
예제 #9
0
 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();
         }
     }
 }
예제 #10
0
 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();
         }
     }
 }