Example #1
0
        public bool Add(Proyecto unP)
        {
            //Tendría todo el código de ADO.NET para hacer el INSERT  a través de comandos.

            if (unP == null || Proyecto.Validar(unP) != "ok")
            {
                return(false);
            }

            Conexion      unaCon = new Conexion();
            SqlConnection cn     = unaCon.CrearConexion();
            SqlCommand    cmd    = new SqlCommand("INSERT INTO Proyecto VALUES (@Titulo, @Descripcion, @Monto, @Cuotas, @Tasa, @Fecha )", cn);

            cmd.Parameters.Add(new SqlParameter("@Titulo", unP.Titulo));
            cmd.Parameters.Add(new SqlParameter("@Descripcion", unP.Descripcion));
            cmd.Parameters.Add(new SqlParameter("@Monto", unP.MontoSolicitado));
            cmd.Parameters.Add(new SqlParameter("@CantidadCuotas", unP.CantidadCuotas));
            cmd.Parameters.Add(new SqlParameter("@Tasa", unP.Tasa));
            cmd.Parameters.Add(new SqlParameter("@Fecha", unP.Fecha));


            SqlCommand cmd2 = new SqlCommand();

            cmd2.Connection = cn;
            SqlTransaction trn = null;

            try
            {
                if (unaCon.AbrirConexion(cn))
                {
                    //Inicia la transacción
                    trn = cn.BeginTransaction();
                    //Asignarle la transacción a cada uno de los comandos
                    //que querés que sean transaccionales:
                    cmd.Transaction = trn;
                    int idAsignado = (int)cmd.ExecuteScalar();
                    if (unP is Personal)
                    {
                        Personal p = (Personal)unP;
                        cmd2.CommandText = "INSERT INTO ProductoImportado VALUES (@Explicacion)";
                        cmd2.Parameters.Add(new SqlParameter("@Explicacion", p.Explicacion));
                    }
                    else if (unP is Cooperativo)
                    {
                        Cooperativo c = (Cooperativo)unP;
                        cmd2.CommandText = "INSERT INTO ProductoNacional VALUES (@Integrantes)";
                        cmd2.Parameters.Add(new SqlParameter("@Integrantes", c.Integrantes));
                    }
                    else
                    {
                        return(false);
                    }
                    cmd2.Transaction = trn;

                    cmd2.ExecuteNonQuery();
                    trn.Commit();
                    return(true);
                }
                return(false);
            }
            catch (Exception ex)
            {
                trn.Rollback();
                return(false);
            }
            finally
            {
                unaCon.CerrarConexion(cn);
            }
        }