@GET
  @Produces(MediaType.APPLICATION_JSON)
  @Path("amigosDeUsuario/{usuario}")
  public RespuestaAmigoDTO amigosDeUsuario(@PathParam("usuario") long usuario) {

    RespuestaAmigoDTO respuestaAmigoDTO = new RespuestaAmigoDTO(0, "OK");
    respuestaAmigoDTO.setCodigoUsuario(Long.toString(usuario));

    UsuarioDTO usuarioDTO = new UsuarioDTO();
    usuarioDTO.setCodigo(usuario);

    Client client = ClientBuilder.newClient();
    WebTarget targetMensaje = client.target(servicioObtenerUsuarioSesion);
    RespuestaSeguridadDTO resu =
        targetMensaje
            .request("application/json")
            .post(
                Entity.entity(usuarioDTO, MediaType.APPLICATION_JSON), RespuestaSeguridadDTO.class);

    System.out.println("RESU " + resu.getCodigo());
    System.out.println("RESU " + resu.getMensaje());

    if (resu.getCodigo() == 0) {

      try {

        List<Amigo> Amigos = amigoBeanLocal.amigosDeUsuario(usuario);
        client = ClientBuilder.newClient();
        targetMensaje = client.target(getUsuarioPorCodigo);
        for (Amigo a : Amigos) {
          AmigoDTO amigoDTO = new AmigoDTO(a.getId(), a.getCodUsuario(), a.getCodAmigo());
          targetMensaje = client.target(getUsuarioPorCodigo + a.getCodAmigo());
          RespuestaUsuarioDTO respuesta =
              targetMensaje.request("application/json").get(RespuestaUsuarioDTO.class);
          if (respuesta != null) {
            if (respuesta.getCodigo() == 0) {
              usuarioDTO = respuesta.getUsuarios().get(0);
              amigoDTO.setNombres(usuarioDTO.getNombres());
              amigoDTO.setApellidos(usuarioDTO.getApellidos());
              amigoDTO.setCorreo(usuarioDTO.getCorreo());
              amigoDTO.setFoto(usuarioDTO.getFoto());
            }
          }
          respuestaAmigoDTO.getAmigos().add(amigoDTO);
        }

      } catch (Exception e) {

        respuestaAmigoDTO.setCodigo(1);
        respuestaAmigoDTO.setMensaje("Hubo un error en el sistema");
        e.printStackTrace();
      }
    } else {
      respuestaAmigoDTO.setCodigo(10);
      respuestaAmigoDTO.setMensaje(resu.getMensaje());
    }

    return respuestaAmigoDTO;
  }
  @GET
  @Produces(MediaType.APPLICATION_JSON)
  @Path("encontrarUsuariosNoAmigos/{usuario}/{completar}")
  public RespuestaAmigoDTO encontrarUsuariosNoAmigos(
      @PathParam("usuario") Long usuario, @PathParam("completar") String completar) {

    RespuestaAmigoDTO respuestaAmigoDTO = new RespuestaAmigoDTO(0, "OK");
    respuestaAmigoDTO.setCodigoUsuario(Long.toString(usuario));

    UsuarioDTO usuarioDTO = new UsuarioDTO();
    usuarioDTO.setCodigo(usuario);

    Client client = ClientBuilder.newClient();
    WebTarget targetMensaje = client.target(servicioObtenerUsuarioSesion);
    RespuestaSeguridadDTO resu =
        targetMensaje
            .request("application/json")
            .post(
                Entity.entity(usuarioDTO, MediaType.APPLICATION_JSON), RespuestaSeguridadDTO.class);

    if (resu.getCodigo() == 0) {
      try {
        List<UsuarioDTO> usuarios =
            amigoBeanLocal.encontrarUsuariosNoAmigos(completar, usuario, 20);
        respuestaAmigoDTO.setUsuarioDTOs(usuarios);
      } catch (Exception e) {

        respuestaAmigoDTO.setCodigo(1);
        respuestaAmigoDTO.setMensaje("Hubo un error en el sistema");
        e.printStackTrace();
      }
    } else {
      respuestaAmigoDTO.setCodigo(10);
      respuestaAmigoDTO.setMensaje(resu.getMensaje());
    }

    return respuestaAmigoDTO;
  }
  @DELETE
  @Produces(MediaType.APPLICATION_JSON)
  @Path("removerAmigo/{id}/{codUsuario}/{codAmigo}")
  public RespuestaAmigoDTO removerAmigo(
      @PathParam("id") Long id,
      @PathParam("codUsuario") Long codUsuario,
      @PathParam("codAmigo") Long codAmigo) {

    RespuestaAmigoDTO respuestaAmigoDTO = new RespuestaAmigoDTO(0, "OK");
    respuestaAmigoDTO.setCodigoUsuario(Long.toString(codUsuario));

    UsuarioDTO usuarioDTO = new UsuarioDTO();
    usuarioDTO.setCodigo(codUsuario);

    Client client = ClientBuilder.newClient();
    WebTarget targetMensaje = client.target(servicioObtenerUsuarioSesion);
    RespuestaSeguridadDTO resuSeg =
        targetMensaje
            .request("application/json")
            .post(
                Entity.entity(usuarioDTO, MediaType.APPLICATION_JSON), RespuestaSeguridadDTO.class);

    System.out.println("RESU " + resuSeg.getCodigo());
    System.out.println("RESU " + resuSeg.getMensaje());

    if (resuSeg.getCodigo() == 0) {

      try {

        // Validar si el amigo existe en el sistema
        Amigo amigoRemover = amigoBeanLocal.encontrarPorId(Amigo.class, id);

        if (amigoRemover != null) {

          if (amigoRemover.getCodUsuario().longValue() == codUsuario.longValue()
              && amigoRemover.getCodAmigo().longValue() == codAmigo.longValue()) {

            amigoBeanLocal.remover(amigoRemover, amigoRemover.getId());

          } else {

            respuestaAmigoDTO.setCodigo(4);
            respuestaAmigoDTO.setMensaje(
                "El Amigo : " + codAmigo + " No pertence al Usuario " + codUsuario);
          }

        } else {
          System.out.println(amigoRemover);
          respuestaAmigoDTO.setCodigo(1);
          respuestaAmigoDTO.setMensaje("El Amigo con Id:  " + id + " no existe en el sistema");
        }

      } catch (Exception e) {

        respuestaAmigoDTO.setCodigo(2);
        respuestaAmigoDTO.setMensaje("Hubo un error en el sistema");
      }

    } else {
      respuestaAmigoDTO.setCodigo(10);
      respuestaAmigoDTO.setMensaje(resuSeg.getMensaje());
    }

    return respuestaAmigoDTO;
  }
  @POST
  @Produces(MediaType.APPLICATION_JSON)
  @Consumes(MediaType.APPLICATION_JSON)
  @Path("crearAmigo")
  public RespuestaAmigoDTO crearAmigo(AmigoDTO aDTO) {

    RespuestaAmigoDTO respuestaAmigoDTO = new RespuestaAmigoDTO(0, "OK");
    respuestaAmigoDTO.setCodigoUsuario(aDTO.getCodUsuario().toString());

    UsuarioDTO usuarioDTO = new UsuarioDTO();
    usuarioDTO.setCodigo(aDTO.getCodUsuario());

    Client client = ClientBuilder.newClient();
    WebTarget targetMensaje = client.target(servicioObtenerUsuarioSesion);
    RespuestaSeguridadDTO resuSeg =
        targetMensaje
            .request("application/json")
            .post(
                Entity.entity(usuarioDTO, MediaType.APPLICATION_JSON), RespuestaSeguridadDTO.class);

    System.out.println("RESU " + resuSeg.getCodigo());
    System.out.println("RESU " + resuSeg.getMensaje());

    if (resuSeg.getCodigo() == 0) {

      if ((aDTO.getCodUsuario() != null && aDTO.getCodAmigo() != null)
          && (aDTO.getCodUsuario() != aDTO.getCodAmigo())) {

        try {

          client = ClientBuilder.newClient();
          targetMensaje = client.target(servicioGetEncontrarUsuario + aDTO.getCodUsuario());
          RespuestaUsuarioDTO resuCodUsuario =
              targetMensaje.request("application/json").get(RespuestaUsuarioDTO.class);

          if (resuCodUsuario != null && resuCodUsuario.getCodigo() == 0) {

            targetMensaje = client.target(servicioGetEncontrarUsuario + aDTO.getCodAmigo());
            RespuestaUsuarioDTO resuCodAmigo =
                targetMensaje.request("application/json").get(RespuestaUsuarioDTO.class);

            if (resuCodAmigo != null && resuCodAmigo.getCodigo() == 0) {

              boolean yaAmigo =
                  amigoBeanLocal.amigoDeUsuario(aDTO.getCodUsuario(), aDTO.getCodAmigo());

              if (!yaAmigo) {

                Amigo amigo = new Amigo();

                amigo.setCodUsuario(aDTO.getCodUsuario());
                amigo.setCodAmigo(aDTO.getCodAmigo());

                amigoBeanLocal.insertar(amigo);

                // Inicio Otorga Puntos por Fidelizacion
                try {
                  RegistrarPuntosDTO registrarPuntosDTO = new RegistrarPuntosDTO();
                  registrarPuntosDTO.setCodigoUsuario(usuarioDTO.getCodigo().toString());
                  registrarPuntosDTO.setServicio("crearAmigo");

                  client = ClientBuilder.newClient();
                  targetMensaje = client.target(servicioRegistrarServicio);
                  RespuestaDTO resuDTO =
                      targetMensaje
                          .request("application/json")
                          .post(
                              Entity.entity(registrarPuntosDTO, MediaType.APPLICATION_JSON),
                              RespuestaDTO.class);
                } catch (Exception exc) {
                  System.out.println("Fidelizacion deshabilidado");
                }
                // Fin Otorga Puntos por Fidelizacion

              } else {
                respuestaAmigoDTO.setCodigo(5);
                respuestaAmigoDTO.setMensaje("Codigo de Amigo Ya Existe ... ");
              }

            } else {
              respuestaAmigoDTO.setCodigo(3);
              respuestaAmigoDTO.setMensaje("Codigo de Amigo No Existe ... ");
            }

          } else {
            respuestaAmigoDTO.setCodigo(2);
            respuestaAmigoDTO.setMensaje("Codigo de Usuario No Existe ... ");
          }

        } catch (Exception e) {
          respuestaAmigoDTO.setCodigo(4);
          respuestaAmigoDTO.setMensaje("Error Interno del Sistema ...");
        }

      } else {
        respuestaAmigoDTO.setCodigo(1);
        respuestaAmigoDTO.setMensaje(
            "Faltan Campos Obligatorios o Codigo de Usuario igual a Codigo de amigo");
      }

    } else {
      respuestaAmigoDTO.setCodigo(10);
      respuestaAmigoDTO.setMensaje(resuSeg.getMensaje());
    }

    return respuestaAmigoDTO;
  }