/// <summary> /// Retorna contratos dada uma condição /// </summary> /// <param name="atributo">Atributo a comparar</param> /// <param name="operador">Tipo de comparação</param> /// <param name="valor">Valor a comparar</param> /// <returns></returns> public static List <Contrato> Where(string atributo, string operador, object valor) { List <Contrato> contratos = new List <Contrato>(); DBConnection db = new DBConnection(); DataTable table; int id, utilizador_id, morada_id; string codigo; DateTime dataInicio; Utilizador utilizador; Morada morada; table = db.Query("SELECT * FROM contrato WHERE " + atributo + " " + operador + " @0", valor); //Percorrer todas as linhas retornadas da base de dados foreach (DataRow row in table.Rows) { id = row.Field <int>("id"); codigo = row.Field <string>("codigo"); utilizador_id = row.Field <int>("utilizador_id"); morada_id = row.Field <int>("morada_id"); dataInicio = row.Field <DateTime>("data_inicio"); morada = Moradas.GetById(morada_id); utilizador = Utilizadores.GetById(utilizador_id); contratos.Add(new Contrato(id, dataInicio, codigo, morada, utilizador)); } return(contratos); }
/// <summary> /// Devolve todos os contratos /// </summary> /// <returns></returns> public static List <Contrato> GetAll() { List <Contrato> todosContratos = new List <Contrato>(); DBConnection con = new DBConnection(); DataTable table; int id, utilizador_id, morada_id; string codigo; DateTime dataInicio; Utilizador uti; Morada morada; table = con.Query("SELECT * FROM contrato"); foreach (DataRow row in table.Rows) { id = row.Field <int>("id"); codigo = row.Field <string>("codigo"); dataInicio = row.Field <DateTime>("data_inicio"); utilizador_id = row.Field <int>("utilizador_id"); morada_id = row.Field <int>("utilizador_id"); uti = Utilizadores.GetById(utilizador_id); morada = Moradas.GetById(morada_id); todosContratos.Add(new Contrato(id, dataInicio, codigo, morada, uti)); } contratos.RemoveAll(x => x.Id != 0); contratos.AddRange(todosContratos.ToList()); return(todosContratos); }
/// <summary> /// Devolve contrato pelo ID /// </summary> /// <param name="id">ID do contrato a pedir</param> /// <returns>Objecto contrato</returns> public static Contrato GetById(int id) { DBConnection db; Contrato contrato = contratos.FindLast(x => x.Id == id); DataTable table; int utilizador_id, morada_id; string codigo; DateTime dataInicio; Utilizador uti; Morada morada; //1º tenta ver se ja tem esse tipo em memoria if (contrato != null) { return(contrato); } //Caso nao tenha esse tipo em memoria vai à base de dados db = new DBConnection(); table = db.Query("SELECT * FROM contrato 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(null); } //criar variaveis necessarias par ao objeto de utilizador codigo = table.Rows[0].Field <string>("codigo"); utilizador_id = table.Rows[0].Field <int>("utilizador_id"); morada_id = table.Rows[0].Field <int>("morada_id"); dataInicio = table.Rows[0].Field <DateTime>("data_inicio"); uti = Utilizadores.GetById(utilizador_id); morada = Moradas.GetById(morada_id); //Criar novo objeto de Utilizador contrato = new Contrato(id, dataInicio, codigo, morada, uti); contratos.Add(contrato); return(contrato); }