diff --git a/trunk/siprp/medicina/MedicinaDataProvider.java b/trunk/siprp/medicina/MedicinaDataProvider.java index 1498cf5f..b3d507ba 100644 --- a/trunk/siprp/medicina/MedicinaDataProvider.java +++ b/trunk/siprp/medicina/MedicinaDataProvider.java @@ -17,7 +17,6 @@ import com.evolute.utils.data.*; import com.evolute.utils.db.*; import com.evolute.utils.metadb.*; import com.evolute.utils.sql.*; -import com.evolute.utils.strings.*; import com.evolute.utils.tables.*; import siprp.*; @@ -157,14 +156,32 @@ public class MedicinaDataProvider extends MetaProvider new Field( "marcacao_trabalhador_id" ).isEqual( marcacaoID ) ); Virtual2DArray array = executer.executeQuery( select ); Integer ids[] = new Integer[ array.columnLength() ]; - for( int n = 0; n < ids.length; n++ ) + for( int n = 0; n < array.columnLength(); n++ ) { ids[ n ] = ( Integer ) array.get( n, 0 ); } return ids; } - public void deleteDetalhesRealziadosForMarcacao( Integer marcacaoID ) + public Integer[] getDetalhesRealizadosForEstadosMarcacao( Integer marcacaoID ) + throws Exception + { + Select select = + new Select( new String[]{ "marcacoes_grupos_realizados", "marcacoes_trabalhador_estados" }, + new String[]{ "grupo_protocolo_id" }, + new Field( "marcacoes_trabalhador_estados.marcacao_id" ).isEqual( marcacaoID ).and( + new Field( "marcacoes_trabalhador_estados.id" ).isEqual( + new Field( "marcacoes_grupos_realizados.marcacoes_trabalhador_estado_id" ) ) ) ); + Virtual2DArray array = executer.executeQuery( select ); + Integer ids[] = new Integer[ array.columnLength() ]; + for( int n = 0; n < array.columnLength(); n++ ) + { + ids[ n ] = ( Integer ) array.get( n, 0 ); + } + return ids; + } + + public void deleteDetalhesRealizadosForMarcacao( Integer marcacaoID ) throws Exception { Delete delete = @@ -401,4 +418,15 @@ public class MedicinaDataProvider extends MetaProvider Virtual2DArray array = executer.executeQuery( select ); return array.getObjects(); } + + public Integer getTrabalhadorIDByMarcacaoID( Integer marcacaoID ) + throws Exception + { + Select select = + new Select( new String[]{ "marcacoes_trabalhador" }, + new String[]{ "trabalhador_id" }, + new Field( "id" ).isEqual( marcacaoID ) ); + Virtual2DArray array = executer.executeQuery( select ); + return ( Integer ) array.get( 0, 0 ); + } } diff --git a/trunk/siprp/medicina/presencas/actions/RealizouAction.java b/trunk/siprp/medicina/presencas/actions/RealizouAction.java index 008ffdf3..119508e1 100644 --- a/trunk/siprp/medicina/presencas/actions/RealizouAction.java +++ b/trunk/siprp/medicina/presencas/actions/RealizouAction.java @@ -9,9 +9,16 @@ package siprp.medicina.presencas.actions; +import com.evolute.utils.data.IDObject; +import com.evolute.utils.ui.DialogException; import java.awt.event.ActionEvent; +import java.util.Arrays; +import java.util.Vector; import javax.swing.AbstractAction; +import siprp.clientes.ClientesDataProvider; +import siprp.medicina.MedicinaDataProvider; import siprp.medicina.presencas.Presenca; +import siprp.medicina.presencas.PresencasDataProvider; /** * @@ -30,6 +37,35 @@ public class RealizouAction extends AbstractAction public void actionPerformed(ActionEvent e) { + try + { + PresencasDataProvider provider = PresencasDataProvider.getProvider(); + ClientesDataProvider clientesProvider = + ( ClientesDataProvider ) ClientesDataProvider.getProvider(); + MedicinaDataProvider medicinaProvider = + ( MedicinaDataProvider ) MedicinaDataProvider.getProvider(); + Integer trabalhadorID = medicinaProvider.getTrabalhadorIDByMarcacaoID( presenca.getID() ); + Integer empresaID = clientesProvider.getEmpresaIDByTrabalhadorID( trabalhadorID ); + Integer realizados[] = medicinaProvider.getDetalhesRealizadosForEstadosMarcacao( presenca.getID() ); + Vector realizadosVector = new Vector(); + realizadosVector.addAll( Arrays.asList( realizados ) ); + IDObject validos[] = medicinaProvider.getDetalhesValidosTrabalhador( empresaID, trabalhadorID ); + Vector aRealizar = new Vector(); + for( int n = 0; n < validos.length; n++ ) + { + Integer id = validos[ n ].getID(); + if( !realizadosVector.contains( id ) ) + { + aRealizar.add( id ); + } + } + provider.marcarRealizado( presenca.getID(), ( Integer[] ) aRealizar.toArray( new Integer[ aRealizar.size() ] ) ); + setEnabled( false ); + } + catch( Exception ex ) + { + DialogException.showExceptionMessage( ex, "Erro a marcar", true ); + } } }