package siprp.medicina.locais_analise;

import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Date;

import siprp.medicina.locais_realizacao.LocaisRealizacaoConstants;
import siprp.medicina.locais_realizacao.LocaisRealizacaoDataProvider;
import siprp.medicina.prestadores.PrestadoresDataProvider;

import com.evolute.utils.data.IDObject;
import com.evolute.utils.ui.DialogException;

class EnviarAnalisesWindowLogic
{
	protected final EnviarAnalisesWindow window;
	protected final LocaisAnaliseLogic logic;
	protected final PrestadoresDataProvider prestadoresProvider;
	protected final LocaisRealizacaoDataProvider locaisRealizacaoProvider;
	
	public EnviarAnalisesWindowLogic( EnviarAnalisesWindow window )
		throws Exception
	{
		this.window = window;
		logic = LocaisAnaliseLogic.getInstance();
		prestadoresProvider = PrestadoresDataProvider.getProvider();
		locaisRealizacaoProvider = LocaisRealizacaoDataProvider.getProvider();
		initWindow();
	}
	
	protected void initWindow()
		throws Exception
	{
		window.addWindowListener( new WindowAdapter(){
			public void windowActivated( WindowEvent e )
			{
				try
				{
					IDObject prestadores[] = prestadoresProvider.getPrestadoresActivos();
					IDObject prestadoresCompleto[] = 
						new IDObject[ prestadores.length + 1 ];
					prestadoresCompleto[ 0 ] = LocaisRealizacaoConstants.PRESTADOR_SIPRP;
					for( int n = 0; n < prestadores.length; n++ )
					{
						prestadoresCompleto[ n + 1 ] = prestadores[ n ];
					}
					window.setPrestadores( prestadoresCompleto );
				}
				catch( Exception ex )
				{
					DialogException.showExceptionMessage( ex, "Erro a carregar prestadores", true );
				}
			}
		} );
	}
	
	protected void dateChanged( Date data )
		throws Exception
	{
System.out.println( "EnviarAnalisesWindowLogic.dateChanged: " + data );
		if( data != null )
		{
			Integer idsMarcacoes[] = 
				locaisRealizacaoProvider.getMarcacoesEcdsIdsByDataAndPrestadorId( data, LocaisRealizacaoConstants.PRESTADOR_ID_SIPRP );
System.out.println( "idsMarcacoes.length : "  +idsMarcacoes.length );
			IDObject grupos[] = logic.getGruposEcdsByMarcacoes( idsMarcacoes );
			window.setEcds( grupos );
			window.fill( logic.getDataPrestadorEGruposByData( data ) );
		}
		else
		{
			window.setEcds( new IDObject[ 0 ] );
			window.fill( null );
		}
	}
	
	protected void save()
		throws Exception
	{
		Object dados[] = ( Object[] ) window.save();
		logic.savePrestadorEGruposData( ( Date ) dados[ 0 ], ( Integer ) dados[ 1 ], ( Integer[] ) dados[ 2 ] );
	}
}
