package com.rjconsultores.ventaboletos.rest;

import javax.annotation.security.RolesAllowed;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import com.rjconsultores.ventaboletos.rest.bean.ParamsOperadorDetalhesCorrida;
import com.rjconsultores.ventaboletos.rest.service.ConsultarOperadorDetalhesCorridaService;
import com.rjconsultores.ventaboletos.vo.embarcada.DetalheCorridaVO;
import com.rjconsultores.ventaboletos.web.utilerias.spring.AppContext;

@Path("/consultarOperadorDetalhesCorrida")
public class ConsultarOperadorDetalhesCorrida {
	private static Logger log = LogManager.getLogger(ConsultarOperadorDetalhesCorrida.class);
			
	@POST
	@Consumes({ MediaType.APPLICATION_JSON })
	@RolesAllowed("EMBARCADA")
	@Produces({ MediaType.APPLICATION_JSON })
	public DetalheCorridaVO buscarDetalhesCorrida(ParamsOperadorDetalhesCorrida params) {
		long start = System.currentTimeMillis();
		
		ConsultarOperadorDetalhesCorridaService service = (ConsultarOperadorDetalhesCorridaService) AppContext.getApplicationContext().getBean("consultarOperadorDetalhesCorridaService");
		DetalheCorridaVO vo = service.buscarDetalhesCorrida(params); 
		
		printInfo("/consultarOperadorDetalhesCorrida", start);
		
		return vo;
	}
	
	private void printInfo(String service, long start) {
		long milliseconds = System.currentTimeMillis() - start;
		long minutes = (milliseconds / 1000) / 60;
		long seconds = (milliseconds / 1000) % 60;

		String info = String.format("[%s] %d minutos e %d segundos", service, minutes, seconds);
		
		if ((minutes + seconds) == 0) {
			info = String.format("[%s] %d milissegundos", service, milliseconds);
		}
		
		log.info(info);
	}
}
