public void limpioInconsistencia(Cliente clienteActualizado)
        {
            //PRIMERO LIMPIO LAS IDENTIDADES DUPLICADAS
            RepositorioIdentidad repoIdentidad = new RepositorioIdentidad();

            List <Identidad> identidadesDuplicadas = new List <Identidad>();

            //Configuraciones de la consulta
            String        connectionString = ConfigurationManager.AppSettings["BaseLocal"];
            SqlConnection sqlConnection    = new SqlConnection(connectionString);
            SqlCommand    sqlCommand       = new SqlCommand();
            SqlDataReader reader;

            sqlCommand.Parameters.AddWithValue("@idIdentidad", clienteActualizado.getIdentidad().getIdIdentidad());
            sqlCommand.Parameters.AddWithValue("@Mail", clienteActualizado.getIdentidad().getMail());
            sqlCommand.Parameters.AddWithValue("@Num", clienteActualizado.getIdentidad().getNumeroDocumento());
            sqlCommand.Parameters.AddWithValue("@Tipo", clienteActualizado.getIdentidad().getTipoDocumento());

            sqlCommand.CommandType = CommandType.Text;
            sqlCommand.Connection  = sqlConnection;
            sqlCommand.CommandText = @"
                SELECT identidad.idIdentidad 
                FROM LOS_BORBOTONES.Identidad identidad
                WHERE identidad.idIdentidad <> @idIdentidad
                  AND (identidad.TipoDocumento = @Tipo AND identidad.NumeroDocumento = @Num)

                UNION

                SELECT identidad.idIdentidad 
                FROM LOS_BORBOTONES.Identidad identidad
                WHERE identidad.idIdentidad <> @idIdentidad
                  AND (identidad.Mail = @Mail)
            ";

            sqlConnection.Open();

            reader = sqlCommand.ExecuteReader();

            while (reader.Read())
            {
                identidadesDuplicadas.Add(repoIdentidad.getById(reader.GetInt32(reader.GetOrdinal("idIdentidad"))));
            }

            //Cierro Primera Consulta
            sqlConnection.Close();

            identidadesDuplicadas.ForEach(identDup => repoIdentidad.limpiarDuplicadoMarcarInconsistente(identDup));
        }
        override public Cliente getById(int idCliente)
        {
            //Elementos del Cliente a devolver
            Cliente              cliente;
            int                  idIdentidad   = 0;
            Identidad            identidad     = null;
            RepositorioIdentidad repoIdentidad = new RepositorioIdentidad();
            Boolean              activo        = false;
            List <Reserva>       reservas      = new List <Reserva>();
            Boolean              inconsistente = false;

            //Configuraciones de la consulta
            String        connectionString = ConfigurationManager.AppSettings["BaseLocal"];
            SqlConnection sqlConnection    = new SqlConnection(connectionString);
            SqlCommand    sqlCommand       = new SqlCommand();
            SqlDataReader reader;

            //Primera Consulta
            sqlCommand.Parameters.AddWithValue("@idCliente", idCliente);
            sqlCommand.CommandType = CommandType.Text;
            sqlCommand.Connection  = sqlConnection;
            sqlCommand.CommandText = "SELECT * FROM LOS_BORBOTONES.Cliente WHERE idCliente = @idCliente";

            sqlConnection.Open();

            reader = sqlCommand.ExecuteReader();

            while (reader.Read())
            {
                idIdentidad   = reader.GetInt32(reader.GetOrdinal("IdIdentidad"));
                identidad     = repoIdentidad.getById(idIdentidad);
                activo        = reader.GetBoolean(reader.GetOrdinal("Activo"));
                inconsistente = reader.GetBoolean(reader.GetOrdinal("Inconsistente"));
            }

            //Cierro Primera Consulta
            sqlConnection.Close();

            //Si no encuentro elemento con ese ID tiro una excepción
            if (identidad.Equals(null))
            {
                throw new NoExisteIDException("No existe cliente con el ID asociado");
            }

            //Segunda Consulta
            sqlCommand.CommandText = @"
                
                SELECT r.idReserva
                FROM LOS_BORBOTONES.Reserva_X_Habitacion_X_Cliente rhc 
                INNER JOIN LOS_BORBOTONES.Reserva r ON r.idReserva = rhc.idReserva
                WHERE rhc.idCliente = @idCliente

            ";

            sqlConnection.Open();
            reader = sqlCommand.ExecuteReader();

            //Colecto las reservas
            while (reader.Read())
            {
                int idReserva = reader.GetInt32(reader.GetOrdinal("idReserva"));
                //RepositorioReserva repoReserva = new RepositorioReserva();
                //reservas.Add(repoReserva.getById(idReserva));
            }

            sqlConnection.Close();

            //Armo el cliente completo
            cliente = new Cliente(idCliente, identidad, activo, reservas, inconsistente);

            return(cliente);
        }
        override public Usuario getById(int idUsuario)
        {
            //Elementos del usuario a devolver
            Usuario              usuario;
            Boolean              activo                = false;
            int                  idIdentidad           = 0;
            Identidad            identidad             = null;
            RepositorioIdentidad repoIdentidad         = new RepositorioIdentidad();
            String               username              = "";
            String               password              = "";
            int                  intentosFallidosLogin = 0;
            List <Rol>           roles   = new List <Rol>();
            List <Hotel>         hoteles = new List <Hotel>();

            //Configuraciones de la consulta
            String        connectionString = ConfigurationManager.AppSettings["BaseLocal"];
            SqlConnection sqlConnection    = new SqlConnection(connectionString);
            SqlCommand    sqlCommand       = new SqlCommand();
            SqlDataReader reader;

            //Primera Consulta
            sqlCommand.Parameters.AddWithValue("@idUsuario", idUsuario);
            sqlCommand.CommandType = CommandType.Text;
            sqlCommand.Connection  = sqlConnection;
            sqlCommand.CommandText = "SELECT * FROM LOS_BORBOTONES.Usuario WHERE idUsuario = @idUsuario";

            sqlConnection.Open();

            reader = sqlCommand.ExecuteReader();

            while (reader.Read())
            {
                username = reader.GetString(reader.GetOrdinal("Username"));
                password = reader.GetString(reader.GetOrdinal("Password"));
                activo   = reader.GetBoolean(reader.GetOrdinal("Activo"));
                intentosFallidosLogin = reader.GetInt32(reader.GetOrdinal("IntentosFallidosLogin"));
                idIdentidad           = reader.GetInt32(reader.GetOrdinal("idIdentidad"));
                identidad             = repoIdentidad.getById(idIdentidad);
            }

            //Cierro Primera Consulta
            sqlConnection.Close();

            //Si no encuentro elemento con ese ID tiro una excepción
            if (username.Equals(""))
            {
                throw new NoExisteIDException("No existe usuario con el ID asociado");
            }

            //Segunda Consulta para llenar los roles
            sqlCommand.CommandText = @"
                SELECT r.idRol
                FROM LOS_BORBOTONES.Rol_X_Usuario ru
                INNER JOIN LOS_BORBOTONES.Rol r ON r.idRol = ru.idRol
                WHERE ru.idUsuario = @idUsuario
            ";

            sqlConnection.Open();
            reader = sqlCommand.ExecuteReader();

            //Colecto los roles
            while (reader.Read())
            {
                //lleno el rol con el getbyID
                int            idRol   = reader.GetInt32(reader.GetOrdinal("idRol"));
                RepositorioRol repoRol = new RepositorioRol();
                roles.Add(repoRol.getById(idRol));
            }

            sqlConnection.Close();

            //Tercera Consulta para llenar los hoteles
            sqlCommand.CommandText = @"
                SELECT h.idHotel
                FROM LOS_BORBOTONES.Hotel_X_Usuario hu
                INNER JOIN LOS_BORBOTONES.Hotel h ON h.idHotel = hu.idHotel
                WHERE hu.idUsuario = @idUsuario
            ";

            sqlConnection.Open();
            reader = sqlCommand.ExecuteReader();

            //Colecto los hoteles
            while (reader.Read())
            {
                //lleno el hotel con el getbyID
                int idHotel = reader.GetInt32(reader.GetOrdinal("idHotel"));
                RepositorioHotel repoHotel = new RepositorioHotel();
                hoteles.Add(repoHotel.getById(idHotel));
            }

            sqlConnection.Close();

            //Armo el usuario completo
            usuario = new Usuario(idUsuario, identidad, username, password, intentosFallidosLogin, activo, roles, hoteles);

            return(usuario);
        }