// ----------------------------------------------------------------------------------------------- /* * 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); }
public static void InsertAvaliaçao(Avaliaçao av) { try { // Abre a conexão à Base de Dados connection.Open(); MySqlCommand command; string sqlCommand; bool isNull = true; if (av.realizada) { // Foi realizado, logo não preenchemos os valores da tabela "Avaliaçao_Realizada" a null isNull = false; } /* * Comando SQL para inserir uma Avaliação à tabela de avaliações realizadas */ sqlCommand = "insert into Avaliaçao_Realizada values (@ID, " + av.composiçao_Corporal.ToSql(isNull) + ", " + av.perimetros.ToSql(isNull) + ")"; command = new MySqlCommand(sqlCommand, connection); command.Parameters.Add(new MySqlParameter("@ID", MySqlDbType.Int32)); command.Parameters["@ID"].Value = av.id; av.composiçao_Corporal.IniParamSql(command); av.perimetros.IniParamSql(command); command.ExecuteScalar(); /* * Comando SQL para inserir uma Avaliação à tabela de avaliações agendadas */ sqlCommand = "insert into Avaliaçao_Agendada values(@DATA, @INSTRUTOR_EMAIL, " + "@CLIENTE_EMAIL, @ID)"; command = new MySqlCommand(sqlCommand, connection); command.Parameters.Add(new MySqlParameter("@DATA", MySqlDbType.DateTime)); command.Parameters["@DATA"].Value = av.data.ToString("yyyy-MM-dd HH:mm:ss"); command.Parameters.Add(new MySqlParameter("@INSTRUTOR_EMAIL", MySqlDbType.VarChar)); command.Parameters["@INSTRUTOR_EMAIL"].Value = av.instrutor_email; command.Parameters.Add(new MySqlParameter("@CLIENTE_EMAIL", MySqlDbType.VarChar)); command.Parameters["@CLIENTE_EMAIL"].Value = av.cliente_email; command.Parameters.Add(new MySqlParameter("@ID", MySqlDbType.Int32)); command.Parameters["@ID"].Value = av.id; command.ExecuteScalar(); } catch (Exception e) { Console.WriteLine(e.ToString()); } finally { // Fecha a conexão à Base de Dados connection.Close(); } }
// 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); }