Example #1
0
        public void ModificarTelefonos(EntidadesCompartidas.Cliente unCliente)
        {
            SqlConnection _cnn = new SqlConnection(Conexion.MiConexion);

            SqlTransaction _miTransaccion = null;

            try
            {
                //Abrimos la conexion
                _cnn.Open();

                //determino que voy a trabajar en una unica transaccion
                _miTransaccion = _cnn.BeginTransaction();

                //elimino todos los telefonos
                PersitenciaTelefono.EliminarTelsCliente(unCliente, _miTransaccion);

                //genero alta para los telefonos nuevos
                foreach (EntidadesCompartidas.Telefono unTel in unCliente.LosTelefonos)
                {
                    PersitenciaTelefono.Alta(unTel, unCliente.CodCLi, _miTransaccion);
                }
                _miTransaccion.Commit();
            }
            catch (Exception ex)
            {
                _miTransaccion.Rollback();
                throw ex;
            }
            finally
            {
                _cnn.Close();
            }
        }
        //operaciones
        public void Alta(Cliente unCliente)
        {
            SqlConnection _cnn = new SqlConnection(Conexion.Cnn);

            SqlCommand _comando = new SqlCommand("ClienteAlta", _cnn);

            _comando.CommandType = System.Data.CommandType.StoredProcedure;
            _comando.Parameters.AddWithValue("@NomCli", unCliente.NomCli);
            _comando.Parameters.AddWithValue("@DirCli", unCliente.DirCli);
            _comando.Parameters.AddWithValue("@UsuCli", unCliente.UsuCli);
            _comando.Parameters.AddWithValue("@PassCli", unCliente.PassCli);

            SqlParameter _ParmRetorno = new SqlParameter("@Retorno", SqlDbType.Int);

            _ParmRetorno.Direction = ParameterDirection.ReturnValue;
            _comando.Parameters.Add(_ParmRetorno);

            SqlTransaction _miTransaccion = null;

            try
            {
                // conecto a la bd
                _cnn.Open();

                //determino que voy a trabajar en una unica transaccion
                _miTransaccion = _cnn.BeginTransaction();

                //ejecuto comando de alta del cliente en la transaccion
                _comando.Transaction = _miTransaccion;
                _comando.ExecuteNonQuery();

                //verifico si hay errores
                int _Codcli = Convert.ToInt32(_ParmRetorno.Value);
                if (_Codcli == -1)
                {
                    throw new Exception("Cliente ya existente");
                }
                else if (_Codcli == -2)
                {
                    throw new Exception("Error en chequeos de datos en la tabla");
                }

                //si llego aca es pq pude dar de alta al cliente

                //genero alta para sus telefonos
                foreach (EntidadesCompartidas.Telefono unTel in unCliente.ListaTelefonos)
                {
                    PersitenciaTelefono.Alta(unTel, _Codcli, _miTransaccion);
                }

                //si llegue aca es pq no hubo problemas con los telefonos
                _miTransaccion.Commit();
            }
            catch (Exception ex)
            {
                _miTransaccion.Rollback();
                throw new Exception(ex.Message);
            }
            finally
            {
                _cnn.Close();
            }
        }
        public void Modificar(Cliente unCliente)
        {
            SqlConnection _cnn = new SqlConnection(Conexion.Cnn);

            SqlCommand _comando = new SqlCommand("ClienteModificar", _cnn);

            _comando.CommandType = System.Data.CommandType.StoredProcedure;
            _comando.Parameters.AddWithValue("@NumCli", unCliente.NumCli);
            _comando.Parameters.AddWithValue("@NomCli", unCliente.NomCli);
            _comando.Parameters.AddWithValue("@DirCli", unCliente.DirCli);
            _comando.Parameters.AddWithValue("@UsuCli", unCliente.UsuCli);
            _comando.Parameters.AddWithValue("@PassCli", unCliente.PassCli);

            SqlParameter _retorno = new SqlParameter("@Retorno", System.Data.SqlDbType.Int);

            _retorno.Direction = System.Data.ParameterDirection.ReturnValue;
            _comando.Parameters.Add(_retorno);

            SqlTransaction _miTransaccion = null;

            try
            {
                // conecto a la bd
                _cnn.Open();

                //determino que voy a trabajar en una unica transaccion
                _miTransaccion = _cnn.BeginTransaction();

                //elimino todos los telefonos anteriores
                PersitenciaTelefono.EliminarTelsCliente(unCliente, _miTransaccion);

                //mando a modificar al cliente
                _comando.Transaction = _miTransaccion;
                _comando.ExecuteNonQuery();
                if ((int)_retorno.Value == -1)
                {
                    throw new Exception("El cliente no existe");
                }
                else if ((int)_retorno.Value == -2)
                {
                    throw new Exception("Error en Modificacion del cliente");
                }

                //si llego aca es pq pude modificar al cliente

                //genero alta para sus telefonos
                foreach (EntidadesCompartidas.Telefono unTel in unCliente.ListaTelefonos)
                {
                    PersitenciaTelefono.Alta(unTel, unCliente.NumCli, _miTransaccion);
                }

                //si llegue aca es pq no hubo problemas con los telefonos
                _miTransaccion.Commit();
            }
            catch (Exception ex)
            {
                _miTransaccion.Rollback();
                throw ex;
            }
            finally
            {
                _cnn.Close();
            }
        }
Example #4
0
        public void Alta(EntidadesCompartidas.Cliente unCliente)
        {
            SqlConnection _cnn = new SqlConnection(Conexion.MiConexion);

            SqlCommand _comando = new SqlCommand("AltaCliente", _cnn);

            _comando.CommandType = CommandType.StoredProcedure;
            _comando.Parameters.AddWithValue("@NomCli", unCliente.NomCli);
            _comando.Parameters.AddWithValue("@DirCli", unCliente.DirCli);

            SqlParameter _ParmRetorno = new SqlParameter("@Retorno", SqlDbType.Int);

            _ParmRetorno.Direction = ParameterDirection.ReturnValue;
            _comando.Parameters.Add(_ParmRetorno);

            SqlTransaction _miTransaccion = null;

            //el sql transaction tiene que estar por fuera del try poque sino no podemos acceder
            //

            try
            {
                //Conecto a la bd
                _cnn.Open();

                //determino que voy a a trabajar en una unica transaccion
                _miTransaccion = _cnn.BeginTransaction();

                //ejecuto comando de alta del cliente en la transaccion
                _comando.Transaction = _miTransaccion;
                _comando.ExecuteNonQuery();

                //verifico si hay errores
                int _CodCli = Convert.ToInt32(_ParmRetorno.Value);

                if (_CodCli == -1)
                {
                    throw new Exception("Cliente ya existente mi pari");
                }
                else if (_CodCli == 0)
                {
                    throw new Exception("Error no Especifiado");
                }
                //si llego aca es porque puedo dar de alta un cliente
                //genero alta para sus telefonos
                foreach (EntidadesCompartidas.Telefono unTel in unCliente.LosTelefonos)
                {
                    PersitenciaTelefono.Alta(unTel, _CodCli, _miTransaccion);
                    /*a las acciones que se van a repetir le pasamos la transaccion y no la coneccion porque la transaccion sabe que conexion usar*/
                }
                //si llege aca es porque no hubo problemas con los telefonos
                _miTransaccion.Commit();
            }
            catch (Exception ex)
            {
                _miTransaccion.Rollback();
                throw ex;
            }
            finally
            {
                _cnn.Close();
            }
        }//Fin de la op alta