package shst.medicina.fichasclinicas.provider; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import pt.evolute.data.ProviderSpringBean; import shst.medicina.fichasclinicas.data.fichasclinicas.FcFichaData; import shst.medicina.fichasclinicas.data.fichasclinicas.FcMotivosData; import shst.medicina.fichasclinicas.data.fichasclinicas.FcTipoFichaData; import shst.medicina.fichasclinicas.data.fichasclinicas.TrbEstadoCivilData; import shst.medicina.fichasclinicas.data.fichasclinicas.TrbHabilitacoesData; import shst.medicina.fichasclinicas.data.shst.EmpresasData; import shst.medicina.fichasclinicas.data.shst.EstabelecimentosData; import shst.medicina.fichasclinicas.data.shst.TrabalhadoresData; import com.evolute.utils.arrays.Virtual2DArray; import com.evolute.utils.sql.Expression; import com.evolute.utils.sql.Field; import com.evolute.utils.sql.Select; public class FichasClinicasDataProvider { @Autowired(required = true) @Qualifier("defaultProvider") ProviderSpringBean fichasProvidersBean; @Autowired(required = true) @Qualifier("siprpProvider") ProviderSpringBean siprpProvidersBean; public List getEmpresas(Integer userID, String filter) throws Exception { Expression dataFilter = new Field(EmpresasData.INACTIVO).isDifferent("y").and(new Field(EmpresasData.DATA_CANCELAMENTO).isEqual(null)); if(!filter.isEmpty()) { dataFilter = dataFilter.and(new Field(EmpresasData.DESIGNACAO_SOCIAL).isILike("%"+filter+"%")) ; } /* filtros do utilizador */ return siprpProvidersBean.getENTITY_PROVIDER().listLoad(EmpresasData.class, dataFilter, new String[]{EmpresasData.DESIGNACAO_SOCIAL}, null); } public List getEstabelecimentos(Integer userID, Integer empresaID, String filter) throws Exception { Expression dataFilter = new Field(EstabelecimentosData.INACTIVO).isDifferent("y").and(new Field(EstabelecimentosData.EMPRESA_ID).isEqual(empresaID)); if(!filter.isEmpty()) { dataFilter = dataFilter.and(new Field(EstabelecimentosData.NOME).isILike("%"+filter+"%")) ; } /* filtros do utilizador */ return siprpProvidersBean.getENTITY_PROVIDER().listLoad(EstabelecimentosData.class, dataFilter, new String[]{EstabelecimentosData.NOME}, null); } public List getTrabalhadores(Integer userID, Integer estabelecimentoID, String filter) throws Exception { Expression dataFilter = new Field(TrabalhadoresData.INACTIVO).isDifferent("y") .and(new Field(TrabalhadoresData.ESTABELECIMENTO_ID).isEqual(estabelecimentoID)) .and(new Field(TrabalhadoresData.DATA_DEMISSAO).isEqual(null)); if(!filter.isEmpty()) { dataFilter = dataFilter.and(new Field("PLAIN("+TrabalhadoresData.NOME+")").isILike("%"+filter+"%")) ; } /* filtros do utilizador */ return siprpProvidersBean.getENTITY_PROVIDER().listLoad(TrabalhadoresData.class, dataFilter, new String[]{TrabalhadoresData.NOME}, null); } public List getTiposFicha(Integer userID) throws Exception { Expression dataFilter = new Field(FcTipoFichaData.DELETED_STAMP).isEqual(null); /* filtros do utilizador */ return fichasProvidersBean.getENTITY_PROVIDER().listLoad(FcTipoFichaData.class, dataFilter, new String[]{FcTipoFichaData.DESCRICAO}, null); } public TrabalhadoresData getTrabalhador(Integer userID, Integer trabalhadorID, boolean forceLoad) throws Exception { Expression dataFilter = new Field(TrabalhadoresData.ID).isEqual(trabalhadorID); if(!forceLoad) { dataFilter = dataFilter.and(new Field(TrabalhadoresData.INACTIVO).isDifferent("y")).and(new Field(TrabalhadoresData.DATA_DEMISSAO).isEqual(null)); } /* filtros do utilizador */ TrabalhadoresData result = null; List trabs = siprpProvidersBean.getENTITY_PROVIDER().listLoad(TrabalhadoresData.class, dataFilter, new String[]{TrabalhadoresData.NOME}, null); if(trabs.size() > 0) { result = trabs.get(0); } return result; } public List getFichasTrabalhador(Integer userID, Integer trabalhadorID) throws Exception { Expression dataFilter = new Field(FcFichaData.TRABALHADOR_ID).isEqual(trabalhadorID).and(new Field(FcFichaData.DELETED_STAMP).isEqual(null)); /* filtros do utilizador */ //dataFilter = dataFilter.and(new Field(FcFichaData.CREATED_USER_ID).isEqual(userID)); return fichasProvidersBean.getENTITY_PROVIDER().listLoad(FcFichaData.class, dataFilter, new String[]{FcFichaData.ID}, null); } public FcFichaData getFicha(Integer fichaID) throws Exception { return fichasProvidersBean.getENTITY_PROVIDER().load(FcFichaData.class, new Object[]{fichaID,null}, new String[]{FcFichaData.ID,FcFichaData.DELETED_STAMP}, null); } public FcFichaData atomSave(FcFichaData fichaBD,Set> others) throws Exception { Object trx = null; try { trx = fichasProvidersBean.getENTITY_PROVIDER().begin(); //fichasProvidersBean.getENTITY_PROVIDER().save(fichaBD, trx); fichaBD.setProvider(fichasProvidersBean.getENTITY_PROVIDER()); fichaBD.save(trx); for(com.evolute.entity.evo.EvoDataObject other : others) { //fichasProvidersBean.getENTITY_PROVIDER().save(other, trx); other.setProvider(fichasProvidersBean.getENTITY_PROVIDER()); other.save(trx); } fichasProvidersBean.getENTITY_PROVIDER().commit(trx); trx = null; return fichaBD; } catch(Exception ex) { if(trx != null) { try { fichasProvidersBean.getENTITY_PROVIDER().rollback(trx); } catch(Exception i_ex) { ;// silent fall } } throw ex; } } public Map getServerDateFichaConclusion(Integer fichaID) throws Exception { String queryString = "SELECT 0 AS "+FcFichaData.ID+", NOW() AS"+FcFichaData.DATA_CONCLUSAO; if(fichaID != null) { queryString = queryString + " UNION " + "SELECT "+FcFichaData.ID+" , "+FcFichaData.DATA_CONCLUSAO+" FROM "+FcFichaData.TABLENAME+" WHERE "+FcFichaData.ID+" = "+fichaID ;//+" AND "+FcFichaData.DATA_CONCLUSAO+" IS NULL"+ //" ORDER BY "+FcFichaData.ID+" DESC"; } Virtual2DArray queryResult = fichasProvidersBean.getDBMANAGER().getSharedExecuter(this).executeQuery(new Select(queryString)); Map rst = new HashMap(); for(int i = 0 ; i < queryResult.rowCount(); i++) { rst.put((Integer)queryResult.get(i, 0), (Date)queryResult.get(i, 1)); } return rst; } public FcTipoFichaData getTipoFichaByID(Integer tipoFichaID) throws Exception { return fichasProvidersBean.getENTITY_PROVIDER().load(FcTipoFichaData.class, new Object[]{tipoFichaID,null}, new String[]{FcTipoFichaData.ID,FcTipoFichaData.DELETED_STAMP}); } public List getHabilitacoes() throws Exception { Expression dataFilter = new Field(TrbHabilitacoesData.DELETED_STAMP).isEqual(null); return fichasProvidersBean.getENTITY_PROVIDER().listLoad(TrbHabilitacoesData.class, dataFilter, new String[]{TrbHabilitacoesData.DESCRICAO}, null); } public List getEstadosCivis() throws Exception { Expression dataFilter = new Field(TrbEstadoCivilData.DELETED_STAMP).isEqual(null); return fichasProvidersBean.getENTITY_PROVIDER().listLoad(TrbEstadoCivilData.class, dataFilter, new String[]{TrbEstadoCivilData.DESCRICAO}, null); } public List getMotivos(String prefix) throws Exception { Expression dataFilter = new Field(FcMotivosData.DELETED_STAMP).isEqual(null).and(new Field("LEFT("+FcMotivosData.CODIGO+","+prefix.length()+")").isEqual(prefix)); return fichasProvidersBean.getENTITY_PROVIDER().listLoad(FcMotivosData.class, dataFilter, new String[]{FcMotivosData.DESCRICAO}, null); } }