/// <summary> /// Pesquisa por um utilizador /// </summary> /// <param name="atributo">Nome do atributo</param> /// <param name="operador">Operador a aplicar</param> /// <param name="valor">Valor do atributo</param> /// <returns>Todas as instancias que coorespondam à condição</returns> public static List <Utilizador> Where(string atributo, string operador, object valor) { List <Utilizador> users = new List <Utilizador>(); DBConnection db = new DBConnection(); DataTable table; int id; string email, nome, nif, telemovel; DateTime dataNascimento; TipoUtilizador tipo; table = db.Query("SELECT * FROM utilizador WHERE " + atributo + " " + operador + " @0", valor); if (table == null) { return(users); } //Percorrer todas as linhas retornadas da base de dados foreach (DataRow row in table.Rows) { id = row.Field <int>("id"); email = row.Field <string>("email"); nome = row.Field <string>("nome"); nif = row.Field <string>("nif"); telemovel = row.Field <string>("telemovel"); dataNascimento = row.Field <DateTime>("data_nascimento"); tipo = TiposUtilizador.GetById(row.Field <int>("tipo_utilizador_id")); users.Add(new Utilizador(id, nome, nif, email, dataNascimento, telemovel, tipo)); } return(users); }
/// <summary> /// Procura um utilizador pelo id /// </summary> /// <param name="id">ID a procurar</param> /// <returns>Instancia de utilizador coorespondente ou null se nao existir</returns> public static Utilizador GetById(int id) { DBConnection db; Utilizador utilizador = utilizadores.FindLast(x => x.Id == id); DataTable table; string email, nome, nif, telemovel; DateTime dataNascimento; TipoUtilizador tipo; //1º tenta ver se ja tem esse tipo em memoria if (utilizador != null) { return(utilizador); } //Caso nao tenha esse tipo em memoria vai à base de dados db = new DBConnection(); table = db.Query("SELECT * FROM utilizador WHERE id = @0", id); //Se o id não existir também na base de dados retorna objeto default if (table.Rows.Count == 0) { return(utilizador); } //criar variaveis necessarias par ao objeto de utilizador email = table.Rows[0].Field <string>("email"); nome = table.Rows[0].Field <string>("nome"); nif = table.Rows[0].Field <string>("nif"); telemovel = table.Rows[0].Field <string>("telemovel"); dataNascimento = table.Rows[0].Field <DateTime>("data_nascimento"); tipo = TiposUtilizador.GetById(table.Rows[0].Field <int>("tipo_utilizador_id")); //Criar novo objeto de Utilizador utilizador = new Utilizador(id, nome, nif, email, dataNascimento, telemovel, tipo); utilizadores.Add(utilizador); return(utilizador); }