public List<Direccion> selectAll_Direccion()
        {
            try
            {
                List<Direccion> direcciones = new List<Direccion>();
                Direccion d = new Direccion();

                DataTable dt = new DataTable();
                SqlDataAdapter sda = new SqlDataAdapter();
                string ConnString = ConfigurationManager.ConnectionStrings["barabaresConnectionString"].ConnectionString;
                using (SqlConnection SqlConn = new SqlConnection(ConnString))
                {
                    try
                    {
                        SqlConn.Open();
                    }
                    catch (Exception ex)
                    {
                        Debug.WriteLine(ex.ToString());
                        return direcciones;
                    }

                    SqlCommand sqlCmd = new SqlCommand("DIRECCION_SELECT_ALL", SqlConn);
                    sqlCmd.CommandType = CommandType.StoredProcedure;

                    sqlCmd.Parameters.Add("@ipsAccion", SqlDbType.VarChar).Value = Constantes.LOG_LISTAR;
                    sqlCmd.Parameters.Add("@ipsClase", SqlDbType.VarChar).Value = d.GetType().Name;
                    sqlCmd.Parameters.Add("@ipnIdUsuario", SqlDbType.Int).Value = 1;

                    sda.SelectCommand = sqlCmd;
                    sda.Fill(dt);
                    SqlConn.Close();
                    sqlCmd.Dispose();
                    sda.Dispose();
                }

                DataRow[] rows = dt.Select();

                for (int i = 0; i < rows.Length; i++)
                {
                    d = Utils.direccion_parse(rows[i]);
                    direcciones.Add(d);
                }

                return direcciones;

            }
            catch (Exception ex)
            {
                Direccion d = new Direccion();

                LogBarabares b = new LogBarabares()
                {
                    Accion = Constantes.LOG_LISTAR,
                    Servicio = Constantes.SelectAll_Direccion,
                    Input = "",
                    Descripcion = ex.ToString(),
                    Clase = d.GetType().Name,
                    Aplicacion = Constantes.ENTORNO_SERVICIOS,
                    Estado = Constantes.FALLA,
                    Ip = "",
                    IdUsuario = 1 //TODO: obtener usuario de la sesión

                };

                Utils.add_LogBarabares(b);

                return new List<Direccion>();
            }
        }
        public ResponseBD add_Direccion(Direccion d)
        {
            try
            {
                ResponseBD response = new ResponseBD();

                string ConnString = ConfigurationManager.ConnectionStrings["barabaresConnectionString"].ConnectionString;
                using (SqlConnection SqlConn = new SqlConnection(ConnString))
                {
                    try
                    {
                        SqlConn.Open();
                    }
                    catch (Exception ex)
                    {
                        Debug.WriteLine(ex.ToString());
                        response.Flujo = Constantes.FALLA;
                        response.Mensaje = "Error al abrir la conexión a BD";
                        return response;
                    }

                    SqlCommand sqlCmd = new SqlCommand("DIRECCION_INSERT", SqlConn);
                    sqlCmd.CommandType = CommandType.StoredProcedure;

                    SqlParameter flujo = new SqlParameter("@opsFlujo", SqlDbType.VarChar)
                    {
                        Direction = ParameterDirection.Output,
                        Size = 10

                    };

                    SqlParameter mensaje = new SqlParameter("@opsMsj", SqlDbType.VarChar)
                    {
                        Direction = ParameterDirection.Output,
                        Size = 100
                    };

                    sqlCmd.Parameters.Add("@ipsReferencia", SqlDbType.VarChar).Value = d.Referencia;
                    sqlCmd.Parameters.Add("@ipnNumero", SqlDbType.Int).Value = d.Numero;
                    sqlCmd.Parameters.Add("@ipsInterior", SqlDbType.VarChar).Value = d.Interior;
                    sqlCmd.Parameters.Add("@ipsMzLt", SqlDbType.VarChar).Value = d.Mzlt;
                    sqlCmd.Parameters.Add("@ipnIdtipoUrb", SqlDbType.Int).Value = d.IdTipoUrb;
                    sqlCmd.Parameters.Add("@ipnIdtipoCalle", SqlDbType.Int).Value = d.IdTipoCalle;
                    sqlCmd.Parameters.Add("@ipnIdDistrito", SqlDbType.Int).Value = d.IdDistrito;
                    sqlCmd.Parameters.Add("@ipnIdProvincia", SqlDbType.Int).Value = d.IdProvincia;
                    sqlCmd.Parameters.Add("@ipnIdDepartamento", SqlDbType.Int).Value = d.IdDepartamento;
                    sqlCmd.Parameters.Add("@ipsUrbanizacion", SqlDbType.VarChar).Value = d.Urbanizacion;
                    sqlCmd.Parameters.Add("@ipsCalle", SqlDbType.VarChar).Value = d.Calle;

                    sqlCmd.Parameters.Add("@ipsAccion", SqlDbType.VarChar).Value = Constantes.LOG_CREAR;
                    sqlCmd.Parameters.Add("@ipsClase", SqlDbType.VarChar).Value = d.GetType().Name;
                    sqlCmd.Parameters.Add("@ipnIdUsuario", SqlDbType.Int).Value = 1;

                    sqlCmd.Parameters.Add(flujo);
                    sqlCmd.Parameters.Add(mensaje);

                    sqlCmd.ExecuteNonQuery();

                    response.Flujo = flujo.Value.ToString();
                    response.Mensaje = mensaje.Value.ToString();

                    SqlConn.Close();

                }

                return response;
            }
            catch (Exception ex)
            {
                LogBarabares b = new LogBarabares()
                {
                    Accion = Constantes.LOG_CREAR,
                    Servicio = Constantes.Add_Direccion,
                    Input = JsonSerializer.add_Direccion(d),
                    Descripcion = ex.ToString(),
                    Clase = (d == null) ? "null" : d.GetType().Name,
                    Aplicacion = Constantes.ENTORNO_SERVICIOS,
                    Estado = Constantes.FALLA,
                    Ip = "",
                    IdUsuario = 1 //TODO: obtener usuario de la sesión

                };

                Utils.add_LogBarabares(b);

                ResponseBD response = new ResponseBD();
                response.Flujo = Constantes.FALLA;
                response.Mensaje = "Error al abrir la conexión a BD";
                return response;
            }
        }