diff --git a/trunk/siprp/FichaDataProvider.java b/trunk/siprp/FichaDataProvider.java index cbcb94f1..0b797a73 100644 --- a/trunk/siprp/FichaDataProvider.java +++ b/trunk/siprp/FichaDataProvider.java @@ -456,12 +456,32 @@ public class FichaDataProvider extends MetaProvider implements SearchExecuter { public Integer getMarcacaoIDByTrabalhador( Integer trabalhadorID ) throws Exception { - Select select = + Select realizadaSelect = new Select( new String[]{ "marcacoes_trabalhador" }, - new String[]{ "id" }, + new String[]{ "MAX(data)" }, new Field( "trabalhador_id" ).isEqual( trabalhadorID ).and( - new Field( "data" ).isGreater( new Date() ) ).and( + new Field( "estado" ).isEqual( new Integer( 2 ) ) ).and( new Field( "tipo" ).isEqual( new Integer( siprp.data.MarcacaoTrabalhadorData.TIPO_CONSULTA ) ) ) ); + Virtual2DArray realizadaArray = executer.executeQuery( realizadaSelect ); + Date realizada = (Date) realizadaArray.get( 0, 0 ); + Select select; + if( realizada == null ) + { + select = new Select( new String[]{ "marcacoes_trabalhador" }, + new String[]{ "MIN(id)" }, + new Field( "trabalhador_id" ).isEqual( trabalhadorID ).and( + new Field( "estado" ).isEqual( new Integer( 0 ) ) ).and( + new Field( "tipo" ).isEqual( new Integer( siprp.data.MarcacaoTrabalhadorData.TIPO_CONSULTA ) ) ) ); + } + else + { + select = new Select( new String[]{ "marcacoes_trabalhador" }, + new String[]{ "MIN(id)" }, + new Field( "trabalhador_id" ).isEqual( trabalhadorID ).and( + new Field( "estado" ).isEqual( new Integer( 0 ) ) ).and( + new Field( "data" ).isGreater( realizada ) ).and( + new Field( "tipo" ).isEqual( new Integer( siprp.data.MarcacaoTrabalhadorData.TIPO_CONSULTA ) ) ) ); + } Virtual2DArray array = executer.executeQuery( select ); if( array.columnLength() == 0 ) {