/// <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> /// 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> /// Pedir para se regista na aplicação /// </summary> /// <returns></returns> public static bool PedidoAcesso(string nif, string email) { Log.Info("A pedir acesso para o nif " + nif); MyRestClient rest; List <Utilizador> users = Utilizadores.Where("nif", "=", nif); List <PedidoAcesso> pedidos = PedidosAcesso.Where("nif", "=", nif); JObject jsonObject; PedidoAcesso pedido; //Se ja existir um utilizador com o nif registado retornar falso if (users.Count > 0) { Log.Info("Nif existe na base de dados local, não permitir novo pedido de acesso!"); return(false); } Log.Info("Nif não existe na base de dados local"); //Se ja existe um pedido para aquele nif if (pedidos.Count > 0) { Log.Info("Ja existe um pedido com o nif, não permitir novo pedido de acesso!"); return(false); } rest = new MyRestClient("http://utentes.cloudapp.net/Utentes.svc/rest/utente/getbynifnoauth/" + nif); jsonObject = rest.GetJsonObject(); if (jsonObject == null) { Log.Erro("Nao foi possivel estabelecer conexão com o servidor do municipio."); return(false); } if ((bool)jsonObject.GetValue("Sucesso")) { //fazer codigo para pedir acesso Log.Info("Nif existe na base de dados do municipio"); pedido = PedidosAcesso.Novo(nif, email); Log.Info("Foi feito um pedido de acesso para o nif " + nif + " com o id " + pedido.Id + " com o codigo " + pedido.Codigo + "."); } else { Log.Info("Nif NÃO existe na base de dados do municipio"); return(false); } return(true); }
public static Avaria GetById(int id) { DBConnection db; Avaria avaria = avarias.FindLast(x => x.Id == id); DataTable table; int contrato_id, tipo_id, utilizador_id, estado_id; string descricao, imagem; Utilizador uti; Contrato contrato; TipoAvaria tipo; EstadoAvaria estado; //1º tenta ver se ja tem esse tipo em memoria if (avaria != null) { return(avaria); } //Caso nao tenha esse tipo em memoria vai à base de dados db = new DBConnection(); table = db.Query("SELECT * FROM avaria 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 descricao = table.Rows[0].Field <string>("descricao"); utilizador_id = table.Rows[0].Field <int>("utilizador_id"); contrato_id = table.Rows[0].Field <int>("contrato_id"); imagem = table.Rows[0].Field <string>("imagem"); tipo_id = table.Rows[0].Field <int>("tipo_avaria_id"); estado_id = table.Rows[0].Field <int>("estado_id"); uti = Utilizadores.GetById(utilizador_id); contrato = Contratos.GetById(contrato_id); tipo = TiposAvaria.GetById(tipo_id); estado = EstadosAvaria.GetById(estado_id); //Criar novo objeto de Utilizador avaria = new Avaria(id, tipo, descricao, imagem, estado); avarias.Add(avaria); return(avaria); }
/// <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); }
/// <summary> /// Faz o login do utilizador /// </summary> /// <param name="nif">NIF do utilizador</param> /// <param name="password">Password</param> /// <returns>Verdadeiro se o login for bem sucedido e falso se falhar</returns> public static bool Login(string nif, string password) { Utilizador user; DataTable table; DBConnection db; Regex reg = new Regex(@"\d{9}"); string dbHashedPassword; bool success; if (!reg.Match(nif).Success) { return(false); } db = new DBConnection(); table = db.Query("SELECT id, password FROM utilizador WHERE nif = @0", nif); if (table.Rows.Count != 1) { return(false); } dbHashedPassword = table.Rows[0].Field <string>("password"); success = BCrypt.Net.BCrypt.Verify(password, dbHashedPassword); if (success) { user = Utilizadores.GetById(table.Rows[0].Field <int>("id")); utilizadores.Add(user); autenticado = user; return(true); } //O login falhou return(false); }