package com.rjconsultores.ventaboletos.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.rjconsultores.ventaboletos.dao.HeaderEsquemaCorridaDAO;
import com.rjconsultores.ventaboletos.entidad.HeaderTabelaEsquemaCorrida;
import com.rjconsultores.ventaboletos.service.HeaderEsquemaCorridaService;

@Service("headerEsquemaCorridaService")
public class HeaderEsquemaCorridaServiceImpl implements HeaderEsquemaCorridaService {

	@Autowired
	private HeaderEsquemaCorridaDAO headerEsquemaCorridaDAO;

	@Override
	public List<HeaderTabelaEsquemaCorrida> obtenerTodos() {
		return null;
	}

	@Override
	public HeaderTabelaEsquemaCorrida obtenerID(Integer id) {
		return null;
	}
	
	@Override
	public Integer[] buscarHeader() {
		HeaderTabelaEsquemaCorrida header = headerEsquemaCorridaDAO.buscarHeader();
		
		if(header == null) {
			//Se for nulo retorna com o valor padrao
			header = new HeaderTabelaEsquemaCorrida(1, "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16");
		}
		
		String headerString = header.getSequenciaHeader();
		
		String[] arrayString = headerString.split(",");
				
		Integer[] arrayInt = new Integer[16];
		
		int i = 0;
		for(String pos : arrayString) {
			arrayInt[i] = Integer.valueOf(pos);
			i++;
		}
		
		if(arrayString.length == 15) {
			arrayInt[15] = 16;
		}
		
		return arrayInt;
	}

	@Override
	@Transactional
	public HeaderTabelaEsquemaCorrida suscribir(HeaderTabelaEsquemaCorrida entidad) {
		//o Id vai ser sempre 1
		entidad.setHeaderEsquemaCorridaId(1);
		return headerEsquemaCorridaDAO.suscribir(entidad);
	}

	@Override
	@Transactional
	public HeaderTabelaEsquemaCorrida actualizacion(HeaderTabelaEsquemaCorrida entidad) {
		entidad.setHeaderEsquemaCorridaId(1);
		return headerEsquemaCorridaDAO.actualizacion(entidad);
	}

	@Override
	public void borrar(HeaderTabelaEsquemaCorrida entidad) {
		// TODO Auto-generated method stub
	}

	@Override
	@Transactional
	public void salvarPosicoesHeader(Integer[] posicoesColunasTabela) {
		HeaderTabelaEsquemaCorrida header = headerEsquemaCorridaDAO.buscarHeader();
		
		StringBuilder pos = new StringBuilder();
		
		int i = 1;
		for(Integer posicao : posicoesColunasTabela) {
			
			if(i < 16) {
				pos.append(posicao).append(",");
			} else {
				pos.append(posicao);
			}
				
			i++;
		}
		
		if(header == null) {
			//Se for nulo retorna com o valor padrao
			header = new HeaderTabelaEsquemaCorrida(1, pos.toString());
			suscribir(header);
		} else {
			header.setSequenciaHeader(pos.toString());
			actualizacion(header);
		}
		
	}

}
