package com.ejie.ab79.service;

import com.ejie.ab79.exceptions.Ab79Exception;
import com.ejie.ab79.model.ActuacionesJson;
import com.ejie.ab79.model.DocumentosJson;
import com.ejie.ab79.model.EnviosJson;
import com.ejie.ab79.model.InspeccionesJson;
import com.ejie.ab79.model.PreguntasJson;

public interface TrazabilidadService {

	/**
	 * Resetea el parámetro activo para que compruebe en base de datos el estado
	 * de la trazabilidad. Ejecutarlo al principio de cada método que utilice
	 * este servicio.
	 */
	void resetActivo();

	/**
	 * Inserts a single row in the EnviosJson table.
	 *
	 * @param enviosJson
	 *            EnviosJson
	 * @return EnviosJson
	 * @throws Ab79Exception
	 */
	EnviosJson addEnviosJson(EnviosJson enviosJson) throws Ab79Exception;

	/**
	 * Inserts a single row in the PreguntasJson table.
	 *
	 * @param preguntasJson
	 *            PreguntasJson
	 * @return PreguntasJson
	 * @throws Ab79Exception
	 */
	PreguntasJson addPreguntasJson(PreguntasJson preguntasJson) throws Ab79Exception;

	/**
	 * Inserts a single row in the InspeccionesJson table.
	 *
	 * @param enviosJson
	 *            InspeccionesJson
	 * @return InspeccionesJson
	 * @throws Ab79Exception
	 */
	InspeccionesJson addInspeccionesJson(InspeccionesJson inspeccionesJson) throws Ab79Exception;

	/**
	 * Inserts a single row in the DocumentosJson table.
	 *
	 * @param documentosJson
	 *            DocumentosJson
	 * @return DocumentosJson
	 * @throws Ab79Exception
	 */
	DocumentosJson addDocumentosJson(DocumentosJson documentosJson) throws Ab79Exception;

	/**
	 * Inserts a single row in the ActuacionesJson table.
	 *
	 * @param actuacionesJson
	 *            ActuacionesJson
	 * @return ActuacionesJson
	 * @throws Ab79Exception
	 */
	ActuacionesJson addActuacionesJson(ActuacionesJson actuacionesJson) throws Ab79Exception;

	/**
	 * Updates the status column of a single row in the EnviosJson table.
	 * 
	 * @param enviosJson
	 *            EnviosJson
	 * @return EnviosJson
	 * @throws Ab79Exception
	 */
	EnviosJson updateEnviosJson(EnviosJson enviosJson) throws Ab79Exception;
}
