package com.ejie.ab79.service.inspecciones;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.List;
import java.util.Locale;

import javax.activation.MimetypesFileTypeMap;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;

import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.context.support.ReloadableResourceBundleMessageSource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.ejie.ab79.comun.Constantes;
import com.ejie.ab79.dao.RelEstInsDao;
import com.ejie.ab79.dao.expedientes.DatosDireccionesDao;
import com.ejie.ab79.dao.expedientes.DatosTercerosDao;
import com.ejie.ab79.dao.inspecciones.CampainasInspeccionDao;
import com.ejie.ab79.dao.inspecciones.EstadosInspeccionDao;
import com.ejie.ab79.model.Inspectores;
import com.ejie.ab79.model.RelEstIns;
import com.ejie.ab79.model.AB63.EstablecimientosRegistrados;
import com.ejie.ab79.model.expedientes.DatosDirecciones;
import com.ejie.ab79.model.expedientes.DatosTerceros;
import com.ejie.ab79.model.expedientes.Expedientes;
import com.ejie.ab79.model.expedientes.TiposDireccion;
import com.ejie.ab79.model.inspecciones.CampainasInspeccion;
import com.ejie.ab79.model.inspecciones.EstadosInspeccion;
import com.ejie.ab79.model.inspecciones.Inspecciones;
import com.ejie.ab79.model.inspecciones.ResultadosInspeccion;
import com.ejie.x38.dto.TableRequestDto;
import com.ejie.x38.dto.TableResponseDto;
import com.ejie.x38.dto.TableRowDto;

/**
 * CampainasInspeccionServiceImpl  
 * 
 *  
 */

@Service(value = "campainasInspeccionService")
public class CampainasInspeccionServiceImpl implements CampainasInspeccionService {

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

	@Autowired
	private CampainasInspeccionDao campainasInspeccionDao;

	@Autowired
	private InspeccionesService inspeccionesService;

	@Autowired
	private DatosTercerosDao datosTercerosDao;

	@Autowired
	private DatosDireccionesDao datosDireccionesDao;

	@Autowired
	private RelEstInsDao relEstInsDao;

	@Autowired
	private EstadosInspeccionDao estadosInspeccionDao;

	@Resource
	private ReloadableResourceBundleMessageSource appMessageSource;

	@Override
	@Transactional(rollbackFor = Throwable.class)
	public CampainasInspeccion add(CampainasInspeccion campainasInspeccion) {

		CampainasInspeccion campainasInspeccionAux;

		String identificadorCampaina;
		String idCampainaAux = "";
		String direccion = "";
		Calendar cal = Calendar.getInstance();
		String anio = String.valueOf(cal.get(Calendar.YEAR))
				.substring(String.valueOf(cal.get(Calendar.YEAR)).length() - 2);

		if (campainasInspeccion.getDireccion().getIdDireccion() == Constantes.ID_TURISMO_DIRECCION) {
			direccion = Constantes.IDENTIFICADOR_CAMPAINA_TURISMO;

			// Sacamos el pr锟絰imo idCampaina de la secuencia turismo
			idCampainaAux = String.valueOf(this.campainasInspeccionDao.getNextIdCampainaTurismo());

		} else if (campainasInspeccion.getDireccion().getIdDireccion() == Constantes.ID_COMERCIO_DIRECCION) {
			direccion = Constantes.IDENTIFICADOR_CAMPAINA_COMERCIO;

			// Sacamos el pr锟絰imo idCampaina de la secuencia comercio
			idCampainaAux = String.valueOf(this.campainasInspeccionDao.getNextIdCampainaComercio());
		}

		if (idCampainaAux.length() == Constantes.MAGIC_NUMBER_1) {
			idCampainaAux = Constantes.MAGIC_NUMBER_0 + idCampainaAux;
		}

		identificadorCampaina = String.valueOf(idCampainaAux) + "-" + direccion + "-" + anio;

		campainasInspeccion.setIdentificadorCampaina(identificadorCampaina);

		campainasInspeccionAux = this.campainasInspeccionDao.add(campainasInspeccion);

		return campainasInspeccionAux;
	}

	@Override
	@Transactional(rollbackFor = Throwable.class)
	public CampainasInspeccion update(CampainasInspeccion campainasInspeccion) {

		String[] identificadorCampaina = campainasInspeccion.getIdentificadorCampaina().split("-");
		if (campainasInspeccion.getDireccion().getIdDireccion() == Constantes.ID_TURISMO_DIRECCION) {
			identificadorCampaina[1] = Constantes.IDENTIFICADOR_CAMPAINA_TURISMO;
		} else if (campainasInspeccion.getDireccion().getIdDireccion() == Constantes.ID_COMERCIO_DIRECCION) {
			identificadorCampaina[1] = Constantes.IDENTIFICADOR_CAMPAINA_COMERCIO;
		}
		Calendar cal = Calendar.getInstance();
		identificadorCampaina[2] = String.valueOf(cal.get(Calendar.YEAR))
				.substring(String.valueOf(cal.get(Calendar.YEAR)).length() - 2);

		campainasInspeccion.setIdentificadorCampaina(
				identificadorCampaina[0] + "-" + identificadorCampaina[1] + "-" + identificadorCampaina[2]);

		return this.campainasInspeccionDao.update(campainasInspeccion);
	}

	@Override
	public CampainasInspeccion find(CampainasInspeccion campainasInspeccion) {
		return this.campainasInspeccionDao.find(campainasInspeccion);
	}

	@Override
	@Transactional(rollbackFor = Throwable.class)
	public void remove(CampainasInspeccion campainasInspeccion) {
		this.campainasInspeccionDao.remove(campainasInspeccion);
	}

	@Override
	public List<CampainasInspeccion> findAll(CampainasInspeccion campainasInspeccion, TableRequestDto tableRequestDto) {
		return this.campainasInspeccionDao.findAll(campainasInspeccion, tableRequestDto);
	}

	@Override
	public List<CampainasInspeccion> findAllLike(CampainasInspeccion campainasInspeccion,
			TableRequestDto tableRequestDto, Boolean startsWith) {
		return this.campainasInspeccionDao.findAllLike(campainasInspeccion, tableRequestDto, startsWith);
	}

	@Override
	public TableResponseDto<CampainasInspeccion> filter(CampainasInspeccion filterCampainasInspeccion,
			TableRequestDto tableRequestDto, Boolean startsWith) {
		List<CampainasInspeccion> listaCampainasInspeccion = this.campainasInspeccionDao
				.findAllLike(filterCampainasInspeccion, tableRequestDto, false);

		for (CampainasInspeccion campainasInspeccion : listaCampainasInspeccion) {
			campainasInspeccion.setNumeroInspeccionados(
					this.campainasInspeccionDao.calcularNumeroInspeccionados(campainasInspeccion));
		}

		Long recordNum = this.campainasInspeccionDao.findAllLikeCount(
				filterCampainasInspeccion != null ? filterCampainasInspeccion : new CampainasInspeccion(), false);

		TableResponseDto<CampainasInspeccion> usuarioDto = new TableResponseDto<CampainasInspeccion>(tableRequestDto,
				recordNum, listaCampainasInspeccion);

		if (tableRequestDto.getMultiselection().getSelectedIds() != null) {
			List<TableRowDto<CampainasInspeccion>> reorderSelection = this.campainasInspeccionDao
					.reorderSelection(filterCampainasInspeccion, tableRequestDto, startsWith);
			usuarioDto.setReorderedSelection(reorderSelection);
			usuarioDto.addAdditionalParam("reorderedSelection", reorderSelection);
			usuarioDto.addAdditionalParam("selectedAll", tableRequestDto.getMultiselection().getSelectedAll());
		}
		if (tableRequestDto.getSeeker().getSelectedIds() != null) {
			tableRequestDto.setMultiselection(tableRequestDto.getSeeker());
			List<TableRowDto<CampainasInspeccion>> reorderSeeker = this.campainasInspeccionDao
					.reorderSelection(filterCampainasInspeccion, tableRequestDto, startsWith);
			usuarioDto.setReorderedSeeker(reorderSeeker);
			usuarioDto.addAdditionalParam("reorderedSeeker", reorderSeeker);
		}
		return usuarioDto;
	}

	@Override
	public Integer calcularNumeroInspeccionados(CampainasInspeccion campainasInspeccion) {
		return this.campainasInspeccionDao.calcularNumeroInspeccionados(campainasInspeccion);
	}

	@Override
	@Transactional
	public EstablecimientosRegistrados aniadirEstablecimiento(EstablecimientosRegistrados establecimiento) {

		// Creamos una inspecci锟絥 con los datos recibidos
		CampainasInspeccionServiceImpl.logger.info("[a锟絘dirEstablecimiento] : Creamos inspecci锟絥");
		Inspecciones inspeccion = new Inspecciones();

		String identificadorInspeccion = this.inspeccionesService
				.crearIdentificadorInspeccion(establecimiento.getCampaina().getDireccion().getIdDireccion());

		inspeccion.setIdentificadorInspeccion(identificadorInspeccion);
		inspeccion.setResultadoInspeccion(new ResultadosInspeccion(null));
		inspeccion.setDireccion(establecimiento.getCampaina().getDireccion());
		inspeccion.setIdProtocolo(establecimiento.getCampaina().getProtocolo());
		inspeccion.setExpediente(new Expedientes(null));
		inspeccion.setCampaina(establecimiento.getCampaina());
		inspeccion.setIdOrigenInspeccion(Constantes.ORIGEN_CAMPAINA);
		inspeccion.setInspector(new Inspectores(null));
		inspeccion.setObjetoInspeccion(establecimiento.getObservaciones());
		inspeccion.setUsuarioRegistro(establecimiento.getUsuarioRegistro());

		EstadosInspeccion estadoInspeccion = this.estadosInspeccionDao.findByOrigenDireccion(
				inspeccion.getIdOrigenInspeccion(), inspeccion.getDireccion().getIdDireccion(),
				Constantes.ESTADO_PENDIENTE);

		if (estadoInspeccion != null) {
			inspeccion.setEstadoInspeccion(estadoInspeccion);
		} else {
			inspeccion.setEstadoInspeccion(new EstadosInspeccion());
		}

		// Insertamos inspecci锟絥
		CampainasInspeccionServiceImpl.logger.info("[a锟絘dirEstablecimiento] : Insertamos inspecci锟絥");
		inspeccion = this.inspeccionesService.add(inspeccion);

		establecimiento.setInspeccion(inspeccion);

		// Creamos los datosTercero con los datos recibidos si el usuario ha
		// introducido alg锟絥 dato
		if (establecimiento.getDatosTercero() != null) {
			CampainasInspeccionServiceImpl.logger.info("[a锟絘dirEstablecimiento] : Creamos datosTercero");
			DatosTerceros datosTercero = new DatosTerceros();
			datosTercero.setDocumento(establecimiento.getDatosTercero().getDocumento());
			datosTercero.setTipoDocumento(establecimiento.getDatosTercero().getTipoDocumento());
			datosTercero.setNombre(establecimiento.getDatosTercero().getNombre());
			datosTercero.setApellido1(establecimiento.getDatosTercero().getApellido1());
			datosTercero.setApellido2(establecimiento.getDatosTercero().getApellido2());
			datosTercero.setSexo(establecimiento.getDatosTercero().getSexo());
			datosTercero.setTelefono(establecimiento.getDatosTercero().getTelefono());
			datosTercero.setEmail(establecimiento.getDatosTercero().getEmail());
			datosTercero.setIdioma(establecimiento.getDatosTercero().getIdioma());
			datosTercero.setTipoParticipante(Constantes.PARTICIPANTE_TITULAR);
			datosTercero.setUsuarioRegistro(establecimiento.getUsuarioRegistro());

			// Insertamos datosTercero
			CampainasInspeccionServiceImpl.logger.info("[a锟絘dirEstablecimiento] : Insertamos datos tercero");
			datosTercero = this.datosTercerosDao.add(datosTercero);
			establecimiento.setDatosTercero(datosTercero);

		}

		// Creamos los datosDireccion con los datos recibidos si el usuario ha
		// introducido alg锟絥 dato
		if (establecimiento.getDatosDireccion() != null) {
			CampainasInspeccionServiceImpl.logger.info("[a锟絘dirEstablecimiento] : Creamos datos direcci锟絥");
			DatosDirecciones datosDireccion = new DatosDirecciones();
			if (establecimiento.getDatosTercero() != null) {
				datosDireccion.setDatosTerceros(establecimiento.getDatosTercero());
			} else {
				datosDireccion.setDatosTerceros(new DatosTerceros(null));
			}
			datosDireccion.setTiposDireccion(new TiposDireccion(Constantes.ID_UBICACION_INVERSION));
			datosDireccion.setDireccion(establecimiento.getDatosDireccion().getDireccion());
			datosDireccion.setNumero(establecimiento.getDatosDireccion().getNumero());
			datosDireccion.setEscalera(establecimiento.getDatosDireccion().getEscalera());
			datosDireccion.setPiso(establecimiento.getDatosDireccion().getPiso());
			datosDireccion.setLetra(establecimiento.getDatosDireccion().getLetra());
			datosDireccion.setCodigoPostal(establecimiento.getDatosDireccion().getCodigoPostal());
			datosDireccion.setIdProvincia(establecimiento.getDatosDireccion().getIdProvincia());
			datosDireccion.setIdMunicipio(establecimiento.getDatosDireccion().getIdMunicipio());
			datosDireccion.setIdLocalidad(establecimiento.getDatosDireccion().getIdLocalidad());
			datosDireccion.setEstablecimiento(establecimiento.getDatosDireccion().getEstablecimiento());
			datosDireccion.setComplementoDireccion(establecimiento.getDatosDireccion().getComplementoDireccion());
			datosDireccion.setIdentificadorEstablecimiento(
					establecimiento.getDatosDireccion().getIdentificadorEstablecimiento());
			datosDireccion.setUsuarioRegistro(establecimiento.getUsuarioRegistro());

			// Insertamos datosDireccion
			CampainasInspeccionServiceImpl.logger.info("[a锟絘dirEstablecimiento] : Insertamos datos direcci锟絥");
			datosDireccion = this.datosDireccionesDao.add(datosDireccion);
			establecimiento.setDatosDireccion(datosDireccion);

		}

		// Creamos la relaci锟絥 del establecimiento con la inspecci锟絥
		CampainasInspeccionServiceImpl.logger
				.info("[a锟絘dirEstablecimiento] : Creamos relaci锟絥 establecimiento-inspecci锟絥");
		RelEstIns relEstIns = new RelEstIns();
		relEstIns.setInspeccionBD(inspeccion);
		if (establecimiento.getDatosTercero() != null) {
			relEstIns.setIdTercero(establecimiento.getDatosTercero().getIdTercero());
		}
		if (establecimiento.getDatosDireccion() != null) {
			relEstIns.setIdDireccion(establecimiento.getDatosDireccion().getIdDireccion());
		}

		String titulo;

		if (establecimiento.getDatosDireccion() != null
				&& establecimiento.getDatosDireccion().getIdProvincia() != null) {

			String idProvincia = String.valueOf(establecimiento.getDatosDireccion().getIdProvincia());

			if (idProvincia.length() == Constantes.MAGIC_NUMBER_1) {
				idProvincia = String.valueOf(Constantes.MAGIC_NUMBER_0)
						+ String.valueOf(establecimiento.getDatosDireccion().getIdProvincia());
			}

			titulo = "(" + idProvincia + ") [" + establecimiento.getCampaina().getIdentificadorCampaina() + "] ";
		} else {
			titulo = "[" + establecimiento.getCampaina().getIdentificadorCampaina() + "] ";
		}

		if (establecimiento.getDatosDireccion() != null
				&& establecimiento.getDatosDireccion().getIdentificadorEstablecimiento() != null) {
			titulo += "[" + establecimiento.getDatosDireccion().getIdentificadorEstablecimiento() + "] ";
		}

		if (establecimiento.getDatosTercero() != null) {

			if (establecimiento.getDatosTercero().getNombre() != null) {
				titulo += establecimiento.getDatosTercero().getNombre() + " ";
			}
			if (establecimiento.getDatosTercero().getApellido1() != null) {
				titulo += establecimiento.getDatosTercero().getApellido1() + " ";
			}
			if (establecimiento.getDatosTercero().getApellido2() != null) {
				titulo += establecimiento.getDatosTercero().getApellido2() + " ";
			}

		}
		relEstIns.setTitulo(titulo);
		relEstIns.setUsuarioRegistro(establecimiento.getUsuarioRegistro());

		// Insertamos la relaci髇 del establecimiento con la inspecci锟絥
		CampainasInspeccionServiceImpl.logger
				.info("[a馻dirEstablecimiento] : Insertamos relaci锟絥 establecimiento-inspecci锟絥");
		this.relEstInsDao.add(relEstIns);

		return establecimiento;

	}

	@Override
	public void getExcel(List<CampainasInspeccion> listaCampainas, HttpServletResponse response) {

		Locale locale = LocaleContextHolder.getLocale();

		boolean castellano = false;
		boolean euskera = false;

		// Configuramos variables de idioma.
		if (locale.toString().equals(Constantes.CASTELLANO)) {
			castellano = true;
		} else if (locale.toString().equals(Constantes.EUSKERA)) {
			euskera = true;
		}

		try {
			// Nombre del archivo
			String fileName = appMessageSource.getMessage("excel.campainasInspeccion.sheetName", null, locale)
					+ Constantes.EXTENSION_EXCEL;

			// Creamos la hoja
			HSSFWorkbook workbook = new HSSFWorkbook();
			HSSFSheet sheet = workbook
					.createSheet(appMessageSource.getMessage("excel.campainasInspeccion.sheetName", null, locale));

			// Definimos los estilos y fuentes de la hoja
			HSSFFont font = workbook.createFont();
			font.setFontName(HSSFFont.FONT_ARIAL);
			font.setFontHeightInPoints((short) 12);
			font.setBoldweight(Font.BOLDWEIGHT_BOLD);

			HSSFCellStyle headerStyle = workbook.createCellStyle();
			headerStyle.setBorderBottom(CellStyle.BORDER_MEDIUM);
			headerStyle.setFont(font);
			headerStyle.setAlignment(CellStyle.ALIGN_CENTER);

			// Creamos la fila cabecera
			HSSFRow rowHead = sheet.createRow(0);

			rowHead.createCell(0).setCellValue(
					appMessageSource.getMessage("excel.campainasInspeccion.identificadorCampaina", null, locale));
			rowHead.createCell(1)
					.setCellValue(appMessageSource.getMessage("excel.campainasInspeccion.direccion", null, locale));
			rowHead.createCell(2)
					.setCellValue(appMessageSource.getMessage("excel.campainasInspeccion.procedimiento", null, locale));
			rowHead.createCell(3).setCellValue(
					appMessageSource.getMessage("excel.campainasInspeccion.nombreCampaina", null, locale));
			rowHead.createCell(4)
					.setCellValue(appMessageSource.getMessage("excel.campainasInspeccion.fechaInicio", null, locale));
			rowHead.createCell(5)
					.setCellValue(appMessageSource.getMessage("excel.campainasInspeccion.fechaFin", null, locale));
			rowHead.createCell(6).setCellValue(
					appMessageSource.getMessage("excel.campainasInspeccion.numeroInspeccionados", null, locale));

			rowHead.getCell(0).setCellStyle(headerStyle);
			rowHead.getCell(1).setCellStyle(headerStyle);
			rowHead.getCell(2).setCellStyle(headerStyle);
			rowHead.getCell(3).setCellStyle(headerStyle);
			rowHead.getCell(4).setCellStyle(headerStyle);
			rowHead.getCell(5).setCellStyle(headerStyle);
			rowHead.getCell(6).setCellStyle(headerStyle);
			rowHead.setHeightInPoints(20);

			// Creamos el resto de filas con sus celdas
			int rowCount = 1;
			for (CampainasInspeccion campaina : listaCampainas) {

				HSSFRow campainaRow = sheet.createRow(rowCount++);

				campainaRow.createCell(0).setCellValue(campaina.getIdentificadorCampaina());

				if (castellano) {
					campainaRow.createCell(1).setCellValue(campaina.getDireccion().getDescripcionCastellano());
					campainaRow.createCell(2).setCellValue(campaina.getProcedimiento().getDescripcionEs());
					campainaRow.createCell(3).setCellValue(campaina.getDescripcionCastellano());
				} else if (euskera) {
					campainaRow.createCell(1).setCellValue(campaina.getDireccion().getDescripcionEuskera());
					campainaRow.createCell(2).setCellValue(campaina.getProcedimiento().getDescripcionEu());
					campainaRow.createCell(3).setCellValue(campaina.getDescripcionEuskera());
				}

				if (campaina.getFechaInicio() != null) {

					SimpleDateFormat sdf = new SimpleDateFormat();

					if (castellano) {
						sdf = new SimpleDateFormat(Constantes.FORMATO_FECHA_ES);
					} else if (euskera) {
						sdf = new SimpleDateFormat(Constantes.FORMATO_FECHA_EU);
					}

					String fechaInicioComoCadena = sdf.format(campaina.getFechaInicio());
					campainaRow.createCell(4).setCellValue(fechaInicioComoCadena);
				} else {
					campainaRow.createCell(4).setCellValue("");
				}

				if (campaina.getFechaFin() != null) {

					SimpleDateFormat sdf = new SimpleDateFormat();

					if (castellano) {
						sdf = new SimpleDateFormat(Constantes.FORMATO_FECHA_ES);
					} else if (euskera) {
						sdf = new SimpleDateFormat(Constantes.FORMATO_FECHA_EU);
					}

					String fechaFinComoCadena = sdf.format(campaina.getFechaFin());
					campainaRow.createCell(5).setCellValue(fechaFinComoCadena);
				} else {
					campainaRow.createCell(5).setCellValue("");
				}

				campainaRow.createCell(6).setCellValue(campaina.getNumeroInspeccionados());
				campainaRow.setHeightInPoints(20);
			}

			// Anchura de las columnas
			sheet.autoSizeColumn(0);
			sheet.autoSizeColumn(1);
			sheet.autoSizeColumn(2);
			sheet.autoSizeColumn(3);
			sheet.autoSizeColumn(4);
			sheet.autoSizeColumn(5);
			sheet.autoSizeColumn(6);

			FileOutputStream fileOut = new FileOutputStream(fileName);
			workbook.write(fileOut);
			fileOut.close();

			CampainasInspeccionServiceImpl.logger.info("[GET - exportarExcel] : Archivo generado");

			// Creamos el archivo a descargar
			File fileToDownload = new File(fileName);
			InputStream in = new FileInputStream(fileToDownload);

			// Recogemos el MIME type del fichero
			String mimeType = new MimetypesFileTypeMap().getContentType(fileName);

			if (mimeType == null) {
				// Si no se encuentra lo seteamos manualmente
				mimeType = "application/octet-stream";
			}
			CampainasInspeccionServiceImpl.logger.info("[GET - exportarExcel] : MIME type: " + mimeType);

			// Seteamos el contentType de la response
			response.setContentType(mimeType);
			response.setContentLength((int) fileToDownload.length());

			// Descargamos el archivo
			response.setHeader("Content-Disposition", "attachment; filename=\"" + fileToDownload.getName() + "\"");

			// Obtenemos el outputStream de la response
			OutputStream outStream = response.getOutputStream();

			byte[] buffer = new byte[4096];
			int bytesRead = -1;

			while ((bytesRead = in.read(buffer)) != -1) {
				outStream.write(buffer, 0, bytesRead);
			}

			// Cerramos el InputStream y el OutputStream
			in.close();
			outStream.close();

			CampainasInspeccionServiceImpl.logger.info("[GET - exportarExcel] : Archivo descargado con 锟絰ito");

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

	}

	@Override
	public List<CampainasInspeccion> findAllREST(CampainasInspeccion filterCampainas) {
		return this.campainasInspeccionDao.findAllREST(filterCampainas);
	}

}
