/** POST <url_kupca>/partneri/<id_dobavljaca>/fakture/ */
  @POST
  @Path("{id_dobavljaca}/fakture")
  @Consumes(MediaType.APPLICATION_XML)
  public Response create(@PathParam("id_dobavljaca") String dobavljacId, Faktura faktura) {
    Faktura retVal = null;
    Response r;

    if (!checkPP(dobavljacId)) {
      return Response.status(Status.FORBIDDEN).build();
    }

    try {
      retVal = fakturaDao.persist(faktura);
      r =
          Response.created(
                  new URI(String.format("/partneri/%s/fakture/%s", dobavljacId, faktura.getId())))
              .build();
    } catch (JAXBException e) {
      r = Response.status(Status.BAD_REQUEST).build();
      log.error(e.getMessage(), e);
    } catch (Exception e) {
      r = Response.status(Status.SERVICE_UNAVAILABLE).build();
      log.error(e.getMessage(), e);
    }
    return r;
  }
  /** PUT <url_kupca>/partneri/<id_dobavljaca>/fakture/<id_fakture>/stavke/<red_br> */
  @PUT
  @Path("{id_dobavljaca}/fakture/{id_fakture}/stavke/{red_br}")
  @Consumes(MediaType.APPLICATION_XML)
  public Response updateFakturaStavka(
      @PathParam("id_dobavljaca") String dobavljacId,
      @PathParam("id_fakture") Long fakturaId,
      @PathParam("red_br") Long stavkaRbr,
      FakturaStavka stavka) {
    Faktura retVal = null;
    Response r;

    if (!checkPP(dobavljacId)) {
      return Response.status(Status.FORBIDDEN).build();
    }

    try {
      retVal = fakturaDao.updateFakturaStavka(dobavljacId, fakturaId, stavkaRbr, stavka);
      r = Response.ok().build();
    } catch (JAXBException e) {
      r = Response.status(Status.BAD_REQUEST).build();
      log.error(e.getMessage(), e);
    } catch (Exception e) {
      r = Response.status(Status.SERVICE_UNAVAILABLE).build();
      log.error(e.getMessage(), e);
    }
    return r;
  }
  @DELETE
  public Response dropDatabase() {
    Response r;

    try {
      fakturaDao.dropDatabase();
      r = Response.ok().build();
    } catch (Exception e) {
      r = Response.status(Status.SERVICE_UNAVAILABLE).build();
      log.error(e.getMessage(), e);
    }
    return r;
  }
  /** GET <url_kupca>/partneri/<id_dobavljaca>/fakture */
  @GET
  @Path("{id_dobavljaca}/fakture")
  public List<Faktura> getFaktureSve(@PathParam("id_dobavljaca") String dobavljacId) {
    List<Faktura> retVal = null;

    if (!checkPP(dobavljacId)) {
      return null;
    }
    try {
      retVal = fakturaDao.findAllFakture(dobavljacId);
    } catch (Exception e) {
      log.error(e.getMessage(), e);
    }
    return retVal;
  }
  /** GET <url_kupca>/partneri/<id_dobavljaca>/fakture/<id_fakture> */
  @GET
  @Path("{id_dobavljaca}/fakture/{id_fakture}")
  public Response getFaktura(
      @PathParam("id_dobavljaca") String dobavljacId, @PathParam("id_fakture") Long fakturaId) {
    Faktura retVal = null;
    Response r;

    if (!checkPP(dobavljacId)) {
      return Response.status(Status.FORBIDDEN).build();
    }

    try {
      retVal = fakturaDao.findFaktura(dobavljacId, fakturaId);
      r = Response.ok(retVal, MediaType.APPLICATION_XML).build();
    } catch (Exception e) {
      r = Response.status(Status.SERVICE_UNAVAILABLE).build();
      log.error(e.getMessage(), e);
    }
    return r;
  }
  /** DELETE <url_kupca>/partneri/<id_dobavljaca>/fakture/<id_fakture>/stavke/<red_br> */
  @DELETE
  @Path("{id_dobavljaca}/fakture/{id_fakture}/stavke/{red_br}")
  public Response removeFakturaStavka(
      @PathParam("id_dobavljaca") String dobavljacId,
      @PathParam("id_fakture") Long fakturaId,
      @PathParam("red_br") Long stavkaRbr) {
    Response r;

    if (!checkPP(dobavljacId)) {
      return Response.status(Status.FORBIDDEN).build();
    }

    try {
      fakturaDao.removeStavkaFromFaktura(dobavljacId, fakturaId, stavkaRbr);
      r = Response.ok().build();
    } catch (Exception e) {
      r = Response.status(Status.SERVICE_UNAVAILABLE).build();
      log.error(e.getMessage(), e);
    }
    return r;
  }