Esempio n. 1
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();
         }
     }
 }
Esempio n. 2
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();
                }
            }
        }