package com.ejie.ab79.control.propuestaSancion;

import java.util.ArrayList;
import java.util.List;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.SessionAttributes;

import com.ejie.ab79.clientesWS.ab61WebService.DocumentoExpediente;
import com.ejie.ab79.model.propuestaSancion.DocumentosInspeccion;
import com.ejie.ab79.service.DocumentosInspeccionService;
import com.ejie.ab79.webservice.adaptadores.ab61WebServiceAdaptador;
import com.ejie.x38.control.bind.annotation.RequestJsonBody;
import com.ejie.x38.dto.TableRequestDto;
import com.ejie.x38.dto.TableResponseDto;

/**
 * 
 * PropuestaSancionController
 * 
 *  
 *
 */
@Controller
@SessionAttributes("usuario")
@RequestMapping(value = "propuestaSancionDocumentosInspeccion")
public class PropuestaSancionDocumentosInspeccionController {

	private static final Logger logger = LoggerFactory.getLogger(PropuestaSancionDocumentosInspeccionController.class);

	@Autowired
	private DocumentosInspeccionService documentosInspeccionService;

	@Autowired
	private ab61WebServiceAdaptador ab61WebServiceAdaptadorService;

	/**
	 * 
	 * @param filterDocumentoPropuesta
	 *            DocumentosPropuesta
	 * @param tableRequestDto
	 *            TableRequestDto
	 * 
	 * @return TableResponseDto<DocumentosPropuesta>
	 */
	@RequestMapping(value = "/filter", method = RequestMethod.POST)
	public @ResponseBody TableResponseDto<DocumentosInspeccion> filter(
			@RequestJsonBody(param = "filter") DocumentosInspeccion filterDocumentoInspeccionPropuesta,
			@RequestJsonBody TableRequestDto tableRequestDto) {
		List<DocumentosInspeccion> listaDocumentosInspeccion = new ArrayList<DocumentosInspeccion>();
		try {
			List<DocumentoExpediente> listaDocumentosExpediente = ab61WebServiceAdaptadorService
					.obtenerDocumentosExpediente(filterDocumentoInspeccionPropuesta.getFolderId(),
							filterDocumentoInspeccionPropuesta.getProcedureId(), 1);

			for (int contador = 0; contador < listaDocumentosExpediente.size(); contador++) {
				DocumentosInspeccion documentoInspeccion = new DocumentosInspeccion();
				documentoInspeccion.setNombreDocumento(listaDocumentosExpediente.get(contador).getNombreDocumento());
				documentoInspeccion.setTipoDocumento(listaDocumentosExpediente.get(contador).getTipoDocumento());
				documentoInspeccion.setOidDokusi(listaDocumentosExpediente.get(contador).getOidDokusi());

				listaDocumentosInspeccion.add(documentoInspeccion);
			}

		} catch (Exception e) {
			PropuestaSancionDocumentosInspeccionController.logger.error(e.getMessage(), e);
		}

		Long recordNum = (long) listaDocumentosInspeccion.size();
		TableResponseDto<DocumentosInspeccion> tablaResultados = new TableResponseDto<DocumentosInspeccion>(
				tableRequestDto, recordNum, listaDocumentosInspeccion);

		List<DocumentosInspeccion> listAux = new ArrayList<DocumentosInspeccion>();
		for (DocumentosInspeccion documentoInspeccion : listaDocumentosInspeccion) {
			listAux.add(documentoInspeccion);
		}
		tablaResultados.setRows(listAux);

		return tablaResultados;
	}

	@RequestMapping(value = "/obtenerEnviados/{idInspeccion}", method = RequestMethod.GET)
	public @ResponseBody List<String> obtenerEnviados(@PathVariable int idInspeccion) {

		List<String> listaOids = new ArrayList<String>();
		List<DocumentosInspeccion> listaDocumentosInspecicon = this.documentosInspeccionService
				.obtenerEnviados(idInspeccion);

		for (DocumentosInspeccion documentoInspeccion : listaDocumentosInspecicon) {
			listaOids.add(documentoInspeccion.getOidDokusi());
		}

		return listaOids;
	}

}
