package com.rjconsultores.ventaboletos.vo.busquedapacotes.transformer;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.hibernate.transform.ResultTransformer;

import com.rjconsultores.ventaboletos.vo.busquedapacotes.ClientePacoteVO;

public class DatosClientePacoteResultTransformer implements ResultTransformer {

	private static final long serialVersionUID = 1L;

	@Override
	@SuppressWarnings({ "unchecked", "rawtypes" })
	public List<ClientePacoteVO> transformList(List mapList) {
		Map<Long, ClientePacoteVO> passageiros = new HashMap<Long, ClientePacoteVO>();
		
		for (Object objmap : mapList) {
			Map<String, Object> tupleMap = (Map<String, Object>) objmap;
			Long vendapacoteId = (Long) tupleMap.get("VENDAPACOTE_ID");
			
			if(!passageiros.containsKey(vendapacoteId)){
				ClientePacoteVO clientePacote = new ClientePacoteVO();
				clientePacote.setVendapacoteId(vendapacoteId);
				setDatosClientePacote(clientePacote, tupleMap);
				passageiros.put(vendapacoteId, clientePacote);				
			}
		}
				
		List<ClientePacoteVO> clientesPacoteList = new ArrayList<ClientePacoteVO>();
		clientesPacoteList.addAll(passageiros.values());
		
		return clientesPacoteList;
	}
	
	@Override
	public Object transformTuple(Object[] data, String[] aliases) {
		Map<String,Object> row = new HashMap<String,Object>();
		
		for(int index = 0; index < aliases.length; index++){
			row.put(aliases[index], data[index]);
		}
		
		return row;
	}

	private void setDatosClientePacote(ClientePacoteVO clientePacote, Map<String, Object> tupleMap) {
		StringBuilder sRazaoSocial = new StringBuilder();
		if(tupleMap.get("NOMBCLIENTE") != null) {
			sRazaoSocial.append(tupleMap.get("NOMBCLIENTE"));
		}
		if(tupleMap.get("APELLIDOPATERNO") != null) {
			if(sRazaoSocial.length() > 0) {
				sRazaoSocial.append(" ");
			}
			sRazaoSocial.append(tupleMap.get("APELLIDOPATERNO"));
		}
		if(tupleMap.get("APELLIDOMATERNO") != null) {
			if(sRazaoSocial.length() > 0) {
				sRazaoSocial.append(" ");
			}
			sRazaoSocial.append(tupleMap.get("APELLIDOMATERNO"));
		}
		clientePacote.setRazaoSocial(sRazaoSocial.toString());
		clientePacote.setCpfCnpj((String) tupleMap.get("NUMIDENTIFICAUNO"));
		clientePacote.setDescemail((String) tupleMap.get("DESCCORREO"));
		clientePacote.setDesctelefone((String) tupleMap.get("DESCTELEFONE"));
		clientePacote.setCep((String) tupleMap.get("CODPOSTAL"));
		clientePacote.setEndereco((String) tupleMap.get("DESCCALLE"));
		clientePacote.setNumero((String) tupleMap.get("NUMINTERIOR"));
		clientePacote.setComplemento((String) tupleMap.get("DESCCALLECOMP"));
		clientePacote.setEstado((String) tupleMap.get("DESESTADO"));
		clientePacote.setCidade((String) tupleMap.get("DESCIUDAD"));
		clientePacote.setBairro((String) tupleMap.get("DESCCOLONIA"));
	}

}
