You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

206 lines
5.6 KiB

package siprp.database.cayenne.objects;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import siprp.MedicinaConstants;
import siprp.database.cayenne.objects.auto._TrabalhadoresEcdsDatas;
import com.evolute.adt.OrderedMap;
public class TrabalhadoresEcdsDatas extends _TrabalhadoresEcdsDatas implements MedicinaConstants
{
private static final long serialVersionUID = 1L;
public String getDataString()
{
return getData() == null ? "" : DATE_FORMAT.format( getData() );
}
public String getEstadoString()
{
return getEstado() == null || getEstado() >= ESTADOS_EXAME_STR.length ? "" : ESTADOS_EXAME_STR[getEstado()];
}
public HashMap<Integer, String> getEstados()
{
HashMap<Integer, String> result = new HashMap<Integer, String>();
for( int i = 0; i < ESTADOS_EXAME_STR.length; ++i )
{
if( ESTADOS_EXAME_STR[i] != null )
{
result.put( new Integer( i ), ESTADOS_EXAME_STR[i] );
}
}
return result;
}
@Override
public void setData( Date date )
{
if( date != null && this.getToTrabalhadoresEcds() != null && this.getEstado() != null && new Integer( ESTADO_POR_REALIZAR ).equals( this.getEstado() ) )
{
this.getToTrabalhadoresEcds().setData( date );
}
super.setData( date );
}
@Override
public String toString()
{
return getDataString() + ": " + getEstadoString();
}
public OrderedMap<PrtGruposProtocolo> getStatesForeGruposExames()
{
OrderedMap<PrtGruposProtocolo> grupos = new OrderedMap<PrtGruposProtocolo>();
List<TrabalhadoresEcd> exames = this.getTrabalhadoresEcdArray();
if( exames != null )
{
for( TrabalhadoresEcd exame : exames )
{
String estadoString = MedicinaConstants.ESTADOS_EXAME_STR[exame.getEstado()];
PrtGruposProtocolo grupo = exame.getToPrtTiposElementosProtocolo().getToPrtGruposProtocolo();
if( !grupos.containsKey( grupo ) )
{
grupos.putLast( grupo, grupo.getDescricao() );
grupos.putLast( grupo, estadoString );
}
}
}
grupos.order();
return grupos;
}
private List<PrtTiposElementosProtocolo> getAllEcdForGrupoForThisMarcacao( PrtGruposProtocolo grupo )
{
List<PrtTiposElementosProtocolo> result = new ArrayList<PrtTiposElementosProtocolo>();
for( TrabalhadoresEcd ecd : (List<TrabalhadoresEcd>) getTrabalhadoresEcdArray() )
{
if( grupo.equals( ecd.getToPrtTiposElementosProtocolo().getToPrtGruposProtocolo() ) )
{
result.add( ecd.getToPrtTiposElementosProtocolo() );
}
}
return result;
}
private List<PrtTiposElementosProtocolo> getAllEcdForGrupoAndCurrentPerfil( PrtGruposProtocolo grupo )
{
Trabalhadores trabalhador = getToTrabalhadoresEcds().getToTrabalhadores();
List<PrtTiposElementosProtocolo> result = new ArrayList<PrtTiposElementosProtocolo>();
Integer perfil = trabalhador.getPerfil();
if( perfil != null )
{
Empresas empresa = trabalhador.getToEstabelecimentos().getToEmpresas();
List<PrtElementosProtocolo> ecdsPerfil = (List<PrtElementosProtocolo>) empresa.getPrtElementosProtocoloArray();
for( PrtElementosProtocolo ecdPerfil : ecdsPerfil )
{
if( perfil.equals( ecdPerfil.getNumeroPerfil() ) )
{
PrtTiposElementosProtocolo ecd = ecdPerfil.getToPrtTiposElementosProtocolo();
if( ecd != null )
{
if( ecd.getToPrtGruposProtocolo().equals( grupo ) && !result.contains( ecd ) )
{
result.add( ecd );
}
}
}
}
}
return result;
}
public void marcarGrupoExames( PrtGruposProtocolo grupo )
{
for( PrtTiposElementosProtocolo ecd : getAllEcdForGrupoAndCurrentPerfil( grupo ) )
{
TrabalhadoresEcd trabEcd = new TrabalhadoresEcd();
trabEcd.setEstado( MedicinaConstants.ESTADO_POR_REALIZAR );
trabEcd.setToPrtTiposElementosProtocolo( ecd );
trabEcd.setToTrabalhadoresEcdsDatas( this );
addToTrabalhadoresEcdArray( trabEcd );
}
getToTrabalhadoresEcds().getGruposExamesForPerfil();
}
public void setStateForGrupoProtocolo( PrtGruposProtocolo grupo, Integer estado )
{
List<PrtTiposElementosProtocolo> group = getAllEcdForGrupoForThisMarcacao( grupo );
for(TrabalhadoresEcd ecd : (List<TrabalhadoresEcd>) getTrabalhadoresEcdArray())
{
if(group.contains( ecd.getToPrtTiposElementosProtocolo()))
{
ecd.setEstado( estado );
}
}
}
public void setStateForGrupoProtocolo( PrtGruposProtocolo grupo, String estado )
{
for( int i = 0; i < ESTADOS_EXAME_STR.length; ++i )
{
String currentEstado = ESTADOS_EXAME_STR[i];
if( currentEstado != null && new Integer( i ).equals( estado ) )
{
setStateForGrupoProtocolo( grupo, i );
break;
}
}
}
public void anular()
{
setEstadoForAllEcd( MedicinaConstants.ESTADO_ANULADO );
}
public void realizar()
{
setEstadoForAllEcd( MedicinaConstants.ESTADO_REALIZADO );
}
public void porRealizar()
{
setEstadoForAllEcd( MedicinaConstants.ESTADO_POR_REALIZAR );
}
public void desmarcarSIPRP()
{
setEstadoForAllEcd( MedicinaConstants.ESTADO_DESMARCADO_EMPRESA );
}
public void desmarcarTrabalhador()
{
setEstadoForAllEcd( MedicinaConstants.ESTADO_DESMARCADO_TRABALHADOR );
}
public void faltou()
{
setEstadoForAllEcd( MedicinaConstants.ESTADO_FALTOU );
}
public void setEstadoForAllEcd( Integer estado )
{
List<TrabalhadoresEcd> allEcd = (List<TrabalhadoresEcd>) getTrabalhadoresEcdArray();
if(allEcd != null)
{
for(TrabalhadoresEcd ecd : allEcd )
{
ecd.setEstado( estado );
}
}
super.setEstado( estado );
getToTrabalhadoresEcds().getGruposExamesForPerfil();
}
@Override
public void setEstado( Integer estado ){
super.setEstado( estado );
getToTrabalhadoresEcds().getGruposExamesForPerfil();
}
}