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 javax.ws.rs.core.Response;

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

import com.rjconsultores.ventaboletos.rest.bean.ParamsSincronizarOperador;
import com.rjconsultores.ventaboletos.rest.service.SincronizarOperadorService;
import com.rjconsultores.ventaboletos.vo.embarcada.OperadorEmbarcadaVO;
import com.rjconsultores.ventaboletos.web.utilerias.spring.AppContext;

@Path("/sincronizarOperador")
public class SincronizarOperador {
	private static Logger log = LogManager.getLogger(SincronizarOperador.class);
			
	@POST
	@Consumes({ MediaType.APPLICATION_JSON })
	@RolesAllowed("EMBARCADA")
	@Produces({ MediaType.APPLICATION_JSON })
	public Response buscarDadosOperador(ParamsSincronizarOperador params) {
		long start = System.currentTimeMillis();
		
		SincronizarOperadorService service = (SincronizarOperadorService) AppContext.getApplicationContext().getBean("sincronizarOperadorService");
		
		OperadorEmbarcadaVO vo = null; 
				
		try {
			vo = service.buscarDadosOperador(params);
		} catch (Exception e) {
			return Response.status(Response.Status.NOT_FOUND).entity(e.getMessage()).build();
		}
		
		printInfo("/sincronizarOperador", start);
		
		return Response.ok(vo, MediaType.APPLICATION_JSON).build();
	}
	
	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);
	}
}
