package br.com.centralit.citcorpore.negocio;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import br.com.centralit.citcorpore.bean.BaseConhecimentoDTO;
import br.com.centralit.citcorpore.bean.PesquisaProblemaDTO;
import br.com.centralit.citcorpore.bean.ProblemaDTO;
import br.com.centralit.citcorpore.bean.ProblemaItemConfiguracaoDTO;
import br.com.centralit.citcorpore.bean.ProblemaMudancaDTO;
import br.com.centralit.citcorpore.bean.ProblemaRelacionadoDTO;
import br.com.centralit.citcorpore.bean.RelatorioProblemaIncidentesDTO;
import br.com.centralit.citcorpore.bean.RelatorioQuantitativoProblemaDTO;
import br.com.centralit.citcorpore.bean.UsuarioDTO;
import br.com.citframework.dto.IDto;
import br.com.citframework.excecao.LogicException;
import br.com.citframework.excecao.PersistenceException;
import br.com.citframework.excecao.ServiceException;
import br.com.citframework.integracao.TransactionControler;
import br.com.citframework.service.CrudService;
@SuppressWarnings("rawtypes")
public interface ProblemaService extends CrudService {
public void createAll(ProblemaDTO problema, ArrayList<ProblemaItemConfiguracaoDTO> ics, ArrayList<ProblemaMudancaDTO> rdm, UsuarioDTO usuarioDto) throws ServiceException, LogicException;
public void updateAll(ProblemaDTO problema, ArrayList<ProblemaItemConfiguracaoDTO> ics, ArrayList<ProblemaMudancaDTO> rdm, UsuarioDTO usuarioDto) throws ServiceException, LogicException;
public void deleteAll(ProblemaDTO problema) throws ServiceException, LogicException;
public Collection findByIdProblema(Integer parm) throws Exception;
public void deleteByIdProblema(Integer parm) throws Exception;
public Collection findByStatus(String parm) throws Exception;
public void deleteByStatus(String parm) throws Exception;
public Collection findByPrioridade(Integer parm) throws Exception;
public void deleteByPrioridade(Integer parm) throws Exception;
public Collection findByIdCriador(Integer parm) throws Exception;
public void deleteByIdCriador(Integer parm) throws Exception;
public Collection findByIdProprietario(Integer parm) throws Exception;
public void deleteByIdProprietario(Integer parm) throws Exception;
public Collection findByTitulo(String parm) throws Exception;
public void deleteByTitulo(String parm) throws Exception;
public Collection findByDescricao(String parm) throws Exception;
public void deleteByDescricao(String parm) throws Exception;
public Collection findByIdCategoriaProblema(Integer parm) throws Exception;
public void deleteByIdCategoriaProblema(Integer parm) throws Exception;
public Collection findByImpacto(String parm) throws Exception;
public void deleteByImpacto(String parm) throws Exception;
public Collection findByUrgencia(String parm) throws Exception;
public void deleteByUrgencia(String parm) throws Exception;
public Collection findByProativoReativo(String parm) throws Exception;
public void deleteByProativoReativo(String parm) throws Exception;
public Collection findByMsgErroAssociada(String parm) throws Exception;
public void deleteByMsgErroAssociada(String parm) throws Exception;
public Collection findByIdProblemaItemConfiguracao(Integer parm) throws Exception;
public void deleteByIdProblemaItemConfiguracao(Integer parm) throws Exception;
public Collection findByIdErrosConhecidos(Integer parm) throws Exception;
public void deleteByIdErrosConhecidos(Integer parm) throws Exception;
public Collection findByIdProblemaMudanca(Integer parm) throws Exception;
public void deleteByIdProblemaMudanca(Integer parm) throws Exception;
public Collection findByIdProblemaIncidente(Integer parm) throws Exception;
public void deleteByIdProblemaIncidente(Integer parm) throws Exception;
public List<ProblemaDTO> listProblema(ProblemaDTO bean) throws ServiceException, LogicException;
// public Collection<ProblemaDTO> listProblemasFilhos() throws Exception;
public Collection findBySolictacaoServico(ProblemaDTO bean) throws ServiceException, LogicException;
/**
* Retorna Problemas associados ao conhecimento informado.
*
* @param baseConhecimentoDto
* @return Collection
* @throws ServiceException
* @throws LogicException
* @author Vadoilo Damasceno
*/
public Collection findByConhecimento(BaseConhecimentoDTO baseConhecimentoDto) throws ServiceException, LogicException;
public List<ProblemaDTO> listProblemaByIdItemConfiguracao(Integer idItemConfiguracao) throws PersistenceException;
public Collection<ProblemaDTO> quantidadeProblemaPorBaseConhecimento(ProblemaDTO problema) throws Exception;
public Collection<ProblemaDTO> listaProblemaPorBaseConhecimento(ProblemaDTO problema) throws Exception;
public ProblemaDTO restoreAll(Integer idProblema) throws Exception;
public void suspende(UsuarioDTO usuarioDto, ProblemaDTO problemaDto) throws Exception;
public void reativa(UsuarioDTO usuarioDto, ProblemaDTO problemaDto) throws Exception;
public boolean validacaoAvancaFluxo(ProblemaDTO problemaDTO, TransactionControler tc) throws Exception;
public void notificarPrazoSolucionarProblemaExpirou(ProblemaDTO problemaDTO) throws Exception;
/**
*
* @param obj
* @throws Exception
*
*/
public void updateNotNull(IDto obj) throws Exception;
/**
* Retorna a quantidade de problema com prazo limite experado
*
* @param usuarioDTO
* @return
* @throws Exception
* @author thiago
*/
public int contarProblemasComPrazoLimiteContornoExpirado(UsuarioDTO usuarioDTO) throws Exception;
/**
* Retorna uma lista de problemas com prazo limite expeirado.
*
* @param UsuarioDTO
* - usuarioDTO
* @return Collection
* @throws Exception
* @author thays.araujo
*/
public Collection<ProblemaDTO> listaProblemasComPrazoLimiteContornoExpirado(UsuarioDTO usuarioDTO) throws Exception;
/**
* @param parm
* @return Collection
* @throws ServiceException
* @throws LogicException
* @ riubbe
*/
public Collection findByIdSolictacaoServico(Integer parm) throws ServiceException, LogicException;
/**
* @param pesquisaProblemaDto
* @return Collection
* @throws Exception
* @author geber
*/
public Collection<PesquisaProblemaDTO> listProblemaByCriterios(PesquisaProblemaDTO pesquisaProblemaDto) throws Exception;
/**
* Retorna a url
*
* @param solicitacaoServicoDto
* @return
* @throws Exception
* @author thays.araujo
*/
public String getUrlInformacoesComplementares(ProblemaDTO problemaDto) throws Exception;
/**
* @param solicitacaoServicoDto
* @throws Exception
* @author thays.araujo
*/
public void deserializaInformacoesComplementares(ProblemaDTO problemaDto) throws Exception;
/**
* @param relatorioProblemaIcidentesDto
* @return Collection
* @throws Exception
* @author riubbe.oliveira Retorna um objeto(RelatorioProblemaIncidentesDTO) contendo todos os incidentes relacionados ao problema
*/
public Collection<RelatorioProblemaIncidentesDTO> listProblemasIncidentes(RelatorioProblemaIncidentesDTO relatorioProblemaIcidentesDto) throws Exception;
public ProblemaDTO restoreAll(ProblemaDTO problema) throws Exception;
public ProblemaDTO restauraTodos(ProblemaDTO param) throws Exception;
/**
* Retorna uma lista quantitativa de problema por situa��o
*
* @param relatorioQuantitativoProblemaDto
* @return Collection<RelatorioQuantitativoProblemaDTO>
* @throws Exception
* @author thays.araujo
*/
public Collection<RelatorioQuantitativoProblemaDTO> listaQuantidadeProblemaPorSituacao(RelatorioQuantitativoProblemaDTO relatorioQuantitativoProblemaDto) throws Exception;
/**
* Retorna uma lista quantitativa de problema por grupo
*
* @param relatorioQuantitativoProblemaDto
* @return Collection<RelatorioQuantitativoProblemaDTO>
* @throws Exception
* @author thays.araujo
*/
public Collection<RelatorioQuantitativoProblemaDTO> listaQuantidadeProblemaPorGrupo(RelatorioQuantitativoProblemaDTO relatorioQuantitativoProblemaDto) throws Exception;
/**
* Retorna uma lista quantitativa de problema por origem
*
* @param relatorioQuantitativoProblemaDto
* @return Collection<RelatorioQuantitativoProblemaDTO>
* @throws Exception
* @author thays.araujo
*/
public Collection<RelatorioQuantitativoProblemaDTO> listaQuantidadeProblemaPorOrigem(RelatorioQuantitativoProblemaDTO relatorioQuantitativoProblemaDto) throws Exception;
/**
* Retorna uma lista quantitativa de problema por solicitante
*
* @param relatorioQuantitativoProblemaDto
* @return Collection<RelatorioQuantitativoProblemaDTO>
* @throws Exception
* @author thays.araujo
*/
public Collection<RelatorioQuantitativoProblemaDTO> listaQuantidadeProblemaPorSolicitante(RelatorioQuantitativoProblemaDTO relatorioQuantitativoProblemaDto) throws Exception;
/**
* Retorna uma lista quantitativa de problema por prioridade
*
* @param relatorioQuantitativoProblemaDto
* @return Collection<RelatorioQuantitativoProblemaDTO>
* @throws Exception
* @author thays.araujo
*/
public Collection<RelatorioQuantitativoProblemaDTO> listaQuantidadeProblemaPorPrioridade(RelatorioQuantitativoProblemaDTO relatorioQuantitativoProblemaDto) throws Exception;
/**
* Retorna uma lista quantitativa de problema por categoria problema
*
* @param relatorioQuantitativoProblemaDto
* @return Collection<RelatorioQuantitativoProblemaDTO>
* @throws Exception
* @author thays.araujo
*/
public Collection<RelatorioQuantitativoProblemaDTO> listaQuantidadeProblemaPorCategoria(RelatorioQuantitativoProblemaDTO relatorioQuantitativoProblemaDto) throws Exception;
/**
* Retorna uma lista quantitativa de problema por proprietario
*
* @param relatorioQuantitativoProblemaDto
* @return Collection<RelatorioQuantitativoProblemaDTO>
* @throws Exception
* @author thays.araujo
*/
public Collection<RelatorioQuantitativoProblemaDTO> listaQuantidadeProblemaPorProprietario(RelatorioQuantitativoProblemaDTO relatorioQuantitativoProblemaDto) throws Exception;
/**
* Retorna uma lista quantitativa de problema por impacto
*
* @param relatorioQuantitativoProblemaDto
* @return Collection<RelatorioQuantitativoProblemaDTO>
* @throws Exception
* @author thays.araujo
*/
public Collection<RelatorioQuantitativoProblemaDTO> listaQuantidadeProblemaPorImpacto(RelatorioQuantitativoProblemaDTO relatorioQuantitativoProblemaDto) throws Exception;
/**
* Retorna uma lista quantitativa de problema por urgencia
*
* @param relatorioQuantitativoProblemaDto
* @return Collection<RelatorioQuantitativoProblemaDTO>
* @throws Exception
* @author thays.araujo
*/
public Collection<RelatorioQuantitativoProblemaDTO> listaQuantidadeProblemaPorUrgencia(RelatorioQuantitativoProblemaDTO relatorioQuantitativoProblemaDto) throws Exception;
public boolean verificaPermissaoGrupoCancelar(Integer idTipoProblema, Integer idGrupo) throws ServiceException, Exception;
public Collection findByProblemaRelacionado(ProblemaRelacionadoDTO bean) throws Exception;
/**
* M�todo criado para que o create de Problema compartilhe da mesma transa��o que est� sendo utilizada em outra rotina ou entidade.
*
* @param problemaDto
* - ProblemaDTO
* @param tc
* - TransactionControler
* @author valdoilo.damasceno
* @throws Exception
* @since 05.12.2014
*/
public void create(ProblemaDTO problemaDto, TransactionControler tc) throws Exception;
}