package br.com.centralit.citcorpore.integracao; import java.util.ArrayList; import java.util.Collection; import java.util.List; import br.com.centralit.citcorpore.bean.AssociacaoDeviceAtendenteDTO; import br.com.centralit.citcorpore.bean.UsuarioDTO; import br.com.citframework.dto.IDto; import br.com.citframework.excecao.PersistenceException; import br.com.citframework.integracao.CrudDaoDefaultImpl; import br.com.citframework.integracao.Field; import br.com.citframework.integracao.Order; import br.com.citframework.util.Constantes; /** * DAO para persist�ncia de {@link AssociacaoDeviceAtendenteDTO} * * @author bruno.ribeiro - <a href="mailto:bruno.ribeiro@centrait.com.br">bruno.ribeiro@centrait.com.br</a> * @since 15/11/2014 */ public class AssociacaoDeviceAtendenteDAO extends CrudDaoDefaultImpl { public AssociacaoDeviceAtendenteDAO() { super(Constantes.getValue("DATABASE_ALIAS"), null); } @Override public Collection<AssociacaoDeviceAtendenteDTO> find(final IDto obj) throws PersistenceException { return null; } @Override public Collection<AssociacaoDeviceAtendenteDTO> list() throws PersistenceException { final List<Order> ordenacao = new ArrayList<>(); ordenacao.add(new Order("id")); ordenacao.add(new Order("idusuario")); return super.list(ordenacao); } @Override public Collection<Field> getFields() { final List<Field> fields = new ArrayList<>(); fields.add(new Field("id", "id", true, true, false, true)); fields.add(new Field("idusuario", "idUsuario", false, false, false, false)); fields.add(new Field("token", "token", false, false, false, false)); fields.add(new Field("connection", "connection", false, false, false, false)); fields.add(new Field("deviceplatform", "devicePlatform", false, false, false, false)); fields.add(new Field("active", "active", false, false, false, false)); return fields; } /** * Lista {@link AssociacaoDeviceAtendenteDTO} ativos de mesmo token, conex�o, device e usu�rio * * @param associacao * {@link AssociacaoDeviceAtendenteDTO} contendo os dados * @return {@link AssociacaoDeviceAtendenteDTO} dever� ser apenas um * @throws Exception * @author bruno.ribeiro - <a href="mailto:bruno.ribeiro@centrait.com.br">bruno.ribeiro@centrait.com.br</a> * @date 17/11/2014 */ public List<AssociacaoDeviceAtendenteDTO> listActiveWithSameProperties(final AssociacaoDeviceAtendenteDTO associacao) throws PersistenceException { final StringBuilder sql = new StringBuilder(); sql.append("SELECT asso.id, "); sql.append(" asso.idusuario, "); sql.append(" asso.connection, "); sql.append(" asso.token, "); sql.append(" asso.devicePlatform, "); sql.append(" emp.nome AS nomeAtendente "); sql.append("FROM associacaodeviceatendente AS asso "); sql.append(" LEFT JOIN usuario usu "); sql.append(" ON usu.idusuario = asso.idusuario "); sql.append(" LEFT JOIN empregados emp "); sql.append(" ON emp.idempregado = usu.idempregado "); sql.append("WHERE asso.idusuario = ? "); sql.append(" AND asso.token = ? "); sql.append(" AND UPPER(asso.connection) = UPPER(?) "); sql.append(" AND asso.active = ?"); final Object[] params = new Object[] {associacao.getIdUsuario(), associacao.getToken(), associacao.getConnection(), 1}; final List<?> result = this.execSQL(sql.toString(), params); List<AssociacaoDeviceAtendenteDTO> associacoes = new ArrayList<>(); if (result.size() > 0) { final List<String> fields = new ArrayList<>(); fields.add("id"); fields.add("idUsuario"); fields.add("connection"); fields.add("token"); fields.add("devicePlatform"); fields.add("nomeAtendente"); associacoes = this.listConvertion(this.getBean(), result, fields); } return associacoes; } /** * Lista {@link AssociacaoDeviceAtendenteDTO} ativas de acordo com o usu�rio informado * * @param usuario * usu�rio para o qual ser�o listadas as associa��es * @param connection * "conex�o" no mobile, que � a URI acessada * @return lista de {@link AssociacaoDeviceAtendenteDTO} ativas do usu�rio * @throws Exception * @author bruno.ribeiro - <a href="mailto:bruno.ribeiro@centrait.com.br">bruno.ribeiro@centrait.com.br</a> * @date 17/11/2014 */ public List<AssociacaoDeviceAtendenteDTO> listActiveAssociationForUser(final UsuarioDTO usuario, final String connection) throws PersistenceException { final StringBuilder sql = new StringBuilder(); sql.append("SELECT asso.id, "); sql.append(" asso.idusuario, "); sql.append(" asso.token, "); sql.append(" asso.connection, "); sql.append(" asso.devicePlatform, "); sql.append(" asso.active "); sql.append("FROM associacaodeviceatendente AS asso "); sql.append("WHERE asso.idusuario = ? "); sql.append(" AND UPPER(asso.connection) = UPPER(?) "); sql.append(" AND asso.active = ?"); final Object[] params = new Object[] {usuario.getIdUsuario(), connection, 1}; final List<?> result = this.execSQL(sql.toString(), params); List<AssociacaoDeviceAtendenteDTO> associacoes = new ArrayList<>(); if (result.size() > 0) { associacoes = this.listConvertion(this.getBean(), result, (List<Field>) this.getFields()); } return associacoes; } @Override public String getTableName() { return "associacaodeviceatendente"; } @Override public Class<AssociacaoDeviceAtendenteDTO> getBean() { return AssociacaoDeviceAtendenteDTO.class; } }