Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal tudo tranquilo?
Estou fazendo um sistema de chamado onde tem 3 níveis de usuários. O usuário técnico tem uma tela de listagem onde tem que aparecer todos os chamados que foram designados para ele como todos os que ele abriu. Tenho na tb_chamado uma coluna id_usuario_abertura e id_usuario_tecnico. Todas as que estiverem com o id do técnico em ambas as colunas tem que aparecer na listagem dele e ainda tenho 2 outros filtros que é o id_status_chamado e o id_chamado onde ele pode colocar algum valor ou não.
O problema que estou tendo e na hora de fazer o comando SQL. A função que faz a listagem na hora de construir os filtros faz uma verificação para ver se os campos não esta vindo vazios ou nulos e depois monta o WHERE que eu dou um implode e monte. O problema e que ele sempre passa o id_usuario_tecnico e o id_usuario_abertura já que é o id do usuário logado que eu pego na sessão e passando esse dois e colocando um AND entre eles ira pegar apenas os campos que tem o mesmo id nos dois campos e eu quero colocar um OR porem eu tenho que continuar verificando e colocando os outros dois filtros que possam vir. Como que eu coloca isso nessa verificação de filtros que eu tenho?
public function listarChamadoTecnico($Chamado=false, $filtrosExtras=array(), $numRows='none', $offSet=0){
if(!$Chamado) $Chamado = new Chamado();
$sql = " SELECT ";
if($numRows=='count') $sql .= " count(0) ";
else $sql .= " ch.id_chamado, ch.id_problema_chamado, ch.id_patrimonio_chamado, ch.id_status_chamado, pb.nom_problema, pt.num_patrimonio, st.nom_status ";
$sql .= " FROM tb_chamado ch "
." INNER JOIN tb_problema pb ON (ch.id_problema_chamado = pb.id_problema) "
." INNER JOIN tb_patrimonio pt ON (ch.id_patrimonio_chamado = pt.id_patrimonio) "
." INNER JOIN tb_status st ON (ch.id_status_chamado = st.id_status) ";
[b]$arrFiltros = array();
if( $Chamado->getIdUsuarioAbertura()!='' && !is_null( $Chamado->getIdUsuarioAbertura() ) && $Chamado->getIdUsuarioAbertura()!='undefined' ) array_push($arrFiltros, "id_usuario_abertura= ".$Chamado->getIdUsuarioAbertura() );
if( $Chamado->getIdUsuarioTecnico()!='' && !is_null( $Chamado->getIdUsuarioTecnico() ) && $Chamado->getIdUsuarioTecnico()!='undefined' ) array_push($arrFiltros, "id_usuario_tecnico= ".$Chamado->getIdUsuarioTecnico() );
if( $Chamado->getIdChamado()!='' && !is_null($Chamado->getIdChamado() ) && $Chamado->getIdChamado()!='undefined' ) array_push($arrFiltros, "id_chamado= ".$Chamado->getIdChamado() );
if( $Chamado->getIdStatusChamado()!='' && !is_null( $Chamado->getIdStatusChamado() ) && $Chamado->getIdStatusChamado() !='null' ) array_push($arrFiltros, "id_status_chamado= ".$Chamado->getIdStatusChamado() );
if( count($arrFiltros)>0 ) $sql .= " WHERE ".implode(" AND ", $arrFiltros);[/b]
if($numRows!='count'){
$sql .= " ORDER BY ";
switch ( $filtrosExtras['desOrderBy'] ){
case 'idChamadoAsc' :
$sql.=" id_chamado ";
break;
case 'idProblemaAsc' :
$sql.=" id_problema_chamado ";
break;
case 'idProblemaDesc' :
$sql.=" id_problema_chamado desc ";
break;
case 'idPatrimonioAsc' :
$sql.=" id_patrimonio_chamado ";
break;
case 'idPatrimonioDesc' :
$sql.=" id_patrimonio_chamado desc ";
break;
case 'idStatusAsc' :
$sql.=" id_status_chamado ";
break;
case 'idStatusDesc' :
$sql.=" id_status_chamado desc ";
break;
default : $sql.=" id_chamado desc ";
}
}
if($numRows=='count'){
return $this->conn->GetOne( $sql );
}else{
$rs = ($numRows=='none') ? $this->conn->Execute( $sql ) : $this->conn->SelectLimit($sql, $numRows, $offSet);
$Chamados = new ArrayObject(array());
while( $row = $rs->FetchRow() ){
$Chamado = new Chamado();
$Chamado->setIdChamado( $row['id_chamado'] );
$Chamado->setIdProblemaChamado( $row['id_problema_chamado'] );
$Chamado->setIdPatrimonioChamado( $row['id_patrimonio_chamado'] );
$Chamado->setIdStatusChamado( $row['id_status_chamado'] );
$Chamado->setNomProblemaChamado( utf8_encode( $row['nom_problema'] ) );
$Chamado->setNumPatrimonioChamado( $row['num_patrimonio'] );
$Chamado->setNomStatusChamado( utf8_encode( $row['nom_status'] ) );
//Adiciona o objeto a lista/array
$Chamados->append( $Chamado );
}
return $Chamados;
}
}Carregando comentários...