// ----------------------------------------------------------------------------------------------- /* * Funções gerais que recebem um comando SQL e retornam uma Lista ou um elemento de Avaliações * Estas funções são usadas noutras queries mais expecíficas */ /* * Função geral que recebe um comando SQL e, a partir deste, retorna * uma lista de Avaliações pretendidas */ public static List <Avaliaçao> GenericListaAvR(MySqlCommand command) { List <Avaliaçao> listAv = new List <Avaliaçao>(); try { // Abre a conexão à Base de Dados connection.Open(); Perimetros p; Composiçao_Corporal cc; MySqlDataReader reader = command.ExecuteReader(); Avaliaçao ava; // Inicia a leitura do resultado do comando SQL while (reader.Read()) { // Acede à posição(coluna) 0 do resultado SQL int id = reader.GetInt32(0); /* * Caso o atributo "altura" (está na posição 1 do resultado do SQL) da Base de Dados seja null * é porque a Avaliação não foi realizada. */ if (!reader.IsDBNull(1)) { cc = new Composiçao_Corporal(reader.GetInt32(1), reader.GetFloat(2), reader.GetFloat(3), reader.GetFloat(4), reader.GetFloat(5), reader.GetInt32(6)); p = new Perimetros(reader.GetFloat(7), reader.GetFloat(8), reader.GetFloat(9), reader.GetFloat(10), reader.GetFloat(11), reader.GetFloat(12), reader.GetFloat(13), reader.GetFloat(14), reader.GetFloat(15), reader.GetFloat(16), reader.GetFloat(17), reader.GetFloat(18)); ava = new Avaliaçao(id, reader.GetDateTime(19), reader.GetString(20), reader.GetString(21), cc, p); listAv.Add(ava); } } reader.Close(); } catch (Exception e) { Console.WriteLine(e.ToString()); } finally { // Fecha a conexão à Base de Dados connection.Close(); } return(listAv); }
// Cria uma Avaliação <Agendada> (tem os valores de composição corporal e perimetros a 0) public Avaliaçao(int id, DateTime data, string instrutor_email, string cliente_email) { this.id = id; this.data = data; this.instrutor_email = instrutor_email; this.cliente_email = cliente_email; this.realizada = false; this.composiçao_Corporal = new Composiçao_Corporal(); this.perimetros = new Perimetros(); }
// Cria uma Avaliação <Realizada> public Avaliaçao(int id, DateTime data, string instrutor_email, string cliente_email, Composiçao_Corporal cc, Perimetros p) { this.id = id; this.data = data; this.instrutor_email = instrutor_email; this.cliente_email = cliente_email; this.realizada = true; this.composiçao_Corporal = cc; this.perimetros = p; }
// Faz update de uma Avaliação agendada para uma Realizada public void FoiRealizada(Composiçao_Corporal cc, Perimetros p) { this.realizada = true; this.composiçao_Corporal = cc; this.perimetros = p; }
// Vai buscar todas as Avaliações (realizadas ou não) public static List <Avaliaçao> GetTodasAvaliaçoes() { List <Avaliaçao> r = new List <Avaliaçao>(); try { // Abre a conexão à Base de Dados connection.Open(); Perimetros p; Composiçao_Corporal cc; // Comando SQL para aceder aos atributos permitindo a criação da classe Avaliaçao string sqlCommand = "select * from Avaliaçao_Realizada ar, Avaliaçao_Agendada aa " + "where ar.idAvaliaçao = aa.idAvaliaçao"; MySqlCommand command = new MySqlCommand(sqlCommand, connection); MySqlDataReader reader = command.ExecuteReader(); while (reader.Read()) { int id = reader.GetInt32(0); if (!reader.IsDBNull(1)) { cc = new Composiçao_Corporal(reader.GetInt32(1), reader.GetFloat(2), reader.GetFloat(3), reader.GetFloat(4), reader.GetFloat(5), reader.GetInt32(6)); p = new Perimetros(reader.GetFloat(7), reader.GetFloat(8), reader.GetFloat(9), reader.GetFloat(10), reader.GetFloat(11), reader.GetFloat(12), reader.GetFloat(13), reader.GetFloat(14), reader.GetFloat(15), reader.GetFloat(16), reader.GetFloat(17), reader.GetFloat(18)); } else { /* * Como queremos todas avaliações, adicionamos os valores que estão a null na BD * a 0 na classe Avaliaçao (ou seja, quando a avaliação ainda não foi realizada) */ cc = new Composiçao_Corporal(); p = new Perimetros(); } Avaliaçao ava = new Avaliaçao(id, reader.GetDateTime(19), reader.GetString(20), reader.GetString(21), cc, p); r.Add(ava); } reader.Close(); } catch (Exception e) { Console.WriteLine(e.ToString()); } finally { // Fecha a conexão à Base de Dados connection.Close(); } return(r); }