/*
 * TratarMarcacaoTrabalhadorAction.java
 *
 * Created on January 31, 2007, 6:21 PM
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package siprp.lembretes.remarcacoes.actions;

import com.evolute.utils.Singleton;
import com.evolute.utils.data.IDObject;
import com.evolute.utils.jdo.JDOProvider;
import com.evolute.utils.ui.DialogException;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.JOptionPane;
import siprp.SIPRPTracker;
import siprp.SingletonConstants;
import siprp.data.EmpresaData;
import siprp.data.EstabelecimentoData;
import siprp.data.MarcacaoTrabalhadorData;
import siprp.data.TrabalhadorData;
import siprp.lembretes.Lembrete;
import siprp.lembretes.LembretesDataProvider;

/**
 *
 * @author fpalma
 */
public class TratarMarcacaoTrabalhadorAction extends AbstractAction
{
	private LembretesDataProvider lembretesProvider;
	private JDOProvider JDO;
	private SIPRPTracker tracker;
	
	private Integer lembreteID;
	
	/**
	 * Creates a new instance of TratarMarcacaoTrabalhadorAction
	 */
	public TratarMarcacaoTrabalhadorAction( IDObject lembrete )
	{
		super( "Tratar" );
		try
		{
			lembreteID = lembrete.getID();
			lembretesProvider = LembretesDataProvider.getProvider();
			JDO = (JDOProvider) Singleton.getInstance( Singleton.DEFAULT_JDO_PROVIDER );
		}
		catch( Exception ex )
		{
			ex.printStackTrace();
		}
	}

	public void actionPerformed(ActionEvent e)
	{
		try
		{
			tracker = ( SIPRPTracker ) Singleton.getInstance( SingletonConstants.SIPRP_TRACKER );
			Lembrete lembrete = lembretesProvider.getLembreteByID( lembreteID );
			if( lembrete == null )
			{
				JOptionPane.showMessageDialog( null, "Este lembrete j\u00e1 foi tratado.", "J\u00e1 tratado",
					JOptionPane.WARNING_MESSAGE );
				return;
			}
			MarcacaoTrabalhadorData marcacao = ( MarcacaoTrabalhadorData ) JDO.load( MarcacaoTrabalhadorData.class, lembrete.getMarcacaoTrabalhadorID() );
			TrabalhadorData trabalhador = ( TrabalhadorData ) marcacao.get( MarcacaoTrabalhadorData.TRABALHADOR );
			EstabelecimentoData estabelecimento = ( EstabelecimentoData ) trabalhador.get( TrabalhadorData.ESTABELECIMENTO );
			EmpresaData empresa = ( EmpresaData ) estabelecimento.get( EstabelecimentoData.EMPRESA );
			
			lembretesProvider.apagarLembreteByID( lembreteID );
			setEnabled( false );
			tracker.getMedicinaWindow().setVisible( true );
			tracker.getMedicinaWindow().setEmpresaAndEstabelecimentoAndTrabalhador( (Integer) empresa.get( EmpresaData.ID ),
													( Integer ) estabelecimento.get( EstabelecimentoData.ID ),
													( Integer ) trabalhador.get( TrabalhadorData.ID ) );
		}
		catch( Exception ex )
		{
			DialogException.showExceptionMessage( ex, "Erro a tratar", true );
		}
	}
	
}
