package br.gov.mj.sislegis.app.rest;
import java.io.IOException;
import java.util.Collection;
import java.util.List;
import javax.inject.Inject;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.HeaderParam;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.jboss.resteasy.annotations.GZIP;
import br.gov.mj.sislegis.app.model.Notificacao;
import br.gov.mj.sislegis.app.model.Usuario;
import br.gov.mj.sislegis.app.rest.authentication.UsuarioAutenticadoBean;
import br.gov.mj.sislegis.app.service.NotificacaoService;
@Path("/notificacao")
@GZIP
public class NotificacaoEndpoint {
@Inject
private NotificacaoService notificacaoService;
@Inject
private UsuarioAutenticadoBean controleUsuarioAutenticado;
@GET
@Path("/usuario")
@Produces(MediaType.APPLICATION_JSON)
public List<Notificacao> buscarPorUsuario(@HeaderParam("Authorization") String authorization) {
try {
Usuario user = controleUsuarioAutenticado.carregaUsuarioAutenticado(authorization);
return notificacaoService.listaNotificacoesParaUsuario(user);
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
@GET
@Path("/usuario/{categoria:[A-Z]*}")
@Produces(MediaType.APPLICATION_JSON)
public List<Notificacao> buscarPorUsuarioCategoria(@HeaderParam("Authorization") String authorization,
@PathParam("categoria") String categoria) {
try {
Usuario user = controleUsuarioAutenticado.carregaUsuarioAutenticado(authorization);
return notificacaoService.listaNotificacoesParaUsuario(user, categoria);
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
@POST
@Path("/marcarVisualizadas")
@Consumes(MediaType.APPLICATION_JSON)
public Response marcarComoVisualizadas(Collection<Long> idNotificacoes) {
notificacaoService.marcarComoVisualizada(idNotificacoes);
return Response.noContent().build();
}
}