package com.ejie.ad74a.dao;

import java.util.List;

import com.ejie.ad74a.model.Avisos;
import com.ejie.ad74a.model.InformeSocial;
import com.ejie.ad74a.model.Informes;
import com.ejie.x38.dto.JerarquiaDto;
import com.ejie.x38.dto.TableRequestDto;
import com.ejie.x38.dto.TableRowDto;

/**
 * InformesDao generated by UDA, 19-abr-2023 16:38:34.
 * 
 * @author UDA
 */

public interface InformesDao {

	/**
	 * Inserts a single row in the Informes table.
	 *
	 * @param informes Informes
	 * @return Informes
	 */
	Informes add(Informes informes);

	/**
	 * Updates a single row in the Informes table.
	 *
	 * @param informes Informes
	 * @return Informes
	 */
	Informes update(Informes informes);

	/**
	 * Finds a single row in the Informes table.
	 *
	 * @param informes Informes
	 * @return Informes
	 */
	Informes find(Informes informes);

	/**
	 * Removes a single row in the Informes table.
	 *
	 * @param informes Informes
	 */
	void remove(Informes informes);

	/**
	 * Finds a List of rows in the Informes table.
	 *
	 * @param informes        Informes
	 * @param tableRequestDto TableRequestDto
	 * @return List
	 */
	List<Informes> findAll(Informes informes, TableRequestDto tableRequestDto);

	List<Informes> findAllTodosEstados(Informes informes, TableRequestDto tableRequestDto);

	/**
	 * Finds rows in the Informes table using like.
	 *
	 * @param informes        Informes
	 * @param tableRequestDto TableRequestDto
	 * @param startsWith      Boolean
	 * @return List
	 */
	List<Informes> findAllLike(Informes informes, TableRequestDto tableRequestDto, Boolean startsWith);

	List<Informes> findAllLikePorUsuario(Informes informes, TableRequestDto tableRequestDto, Boolean startsWith,
			Integer usuario);

	/*
	 * OPERACIONES RUP_TABLE
	 */

	/**
	 * Filter in the Informes table.
	 *
	 * @param tableRequestDto TableRequestDto
	 */
	void removeMultiple(TableRequestDto tableRequestDto);

	/**
	 * Counts rows in the Informes table using like.
	 *
	 * @param informes   Informes
	 * @param startsWith Boolean
	 * @return Long
	 */
	Long findAllLikeCount(Informes informes, Boolean startsWith);

	Long findAllLikeCountPorUsuario(Informes informes, Boolean startsWith, Integer usuario);

	/**
	 * Counts rows in the Informes table.
	 *
	 * @param informes Informes
	 * @return Long
	 */
	Long findAllCount(Informes informes);

	/**
	 * Reorder selection.
	 *
	 * @param filterInformes  Informes
	 * @param tableRequestDto TableRequestDto
	 * @param startsWith      Boolean
	 * @return List<TableRowDto<Informes>>
	 */
	List<TableRowDto<Informes>> reorderSelection(Informes filterInformes, TableRequestDto tableRequestDto,
			Boolean startsWith, Integer usuario);

	/**
	 * Searches in the Usuario table.
	 *
	 * @param filterInformes  Informes
	 * @param searchInformes  Informes
	 * @param tableRequestDto TableRequestDto
	 * @param startsWith      Boolean
	 * @return List<TableRowDto<Informes>>
	 */
	List<TableRowDto<Informes>> search(Informes filterInformes, Informes searchInformes,
			TableRequestDto tableRequestDto, Boolean startsWith);

	/*
	 * OPERACIONES RUP_TABLE JERARQUIA
	 */

	/**
	 * Filter in the hierarchical Informes table.
	 *
	 * @param filterInformes  Informes
	 * @param tableRequestDto TableRequestDto
	 * @return List<JerarquiaDto<Informes>>
	 */
	List<JerarquiaDto<Informes>> findAllLikeJerarquia(Informes filterInformes, TableRequestDto tableRequestDto);

	/**
	 * Count rows in hierarchy
	 *
	 * @param filterInformes  Informes
	 * @param tableRequestDto TableRequestDto
	 * @return Long
	 */
	Long findAllLikeCountJerarquia(Informes filterInformes, TableRequestDto tableRequestDto);

	/**
	 * Find dependent hierarchical rows
	 *
	 * @param filterInformes  Informes
	 * @param tableRequestDto TableRequestDto
	 * @return List<TableRowDto<Informes>>
	 */
	List<TableRowDto<Informes>> findAllChild(Informes filterInformes, TableRequestDto tableRequestDto);

	/**
	 * Exporta Datos al clipBoard
	 *
	 */
	List<Informes> getMultiple(Informes filterInformes, TableRequestDto tableRequestDto, Boolean startsWith);

	List<Informes> filterComplete(Informes filterInformes, TableRequestDto tableRequestDto);

	Informes addInformeSocial(Informes informes);

	Informes aportar(Informes informes);

	Informes updateInforme(Informes informes);

	List<Informes> filterCompleteNoInfSoc(Informes filterInformes);

	Informes relacionInformePorMatch(Informes informes);

	Informes ocultar(Informes informes);

	Informes mostrar(Informes informes);

	Informes obtenerInforme(Informes informes);

	Informes updateDocInforme(Informes informes);

	Informes eliminar(Informes informes, InformeSocial infSoc);

	Informes updateEstado(Informes informes);

	Informes updateEnvioAdmon(Informes informes);

	Informes borrarDocumento(Informes informes);

	Informes addDesdeAvisos(Informes informes);

	Avisos aportarExpediente(Avisos avisos);

	Long tieneExpediente(Long idInforme);

	Informes actualizarEstadoInformeDisponible(Informes informe);

	List<Informes> getInformesDisponiblesSinExpAsociado(Long idSolicitante);
}
