/// <summary> /// Procura um TipoUtilizador que tenha o ID especificado /// </summary> /// <param name="id">Id a procurar</param> /// <returns>Retorna um TipoUtilizador com o ID pedido ou null se nao existir</returns> public static TipoUtilizador GetById(int id) { DBConnection db; TipoUtilizador tipo = tiposUtilizador.Find(x => x.Id == id); DataTable table; //1º tenta ver se ja tem esse tipo em memoria if (tipo != null) { return(tipo); } //Caso nao tenha esse tipo em memoria vai à base de dados db = new DBConnection(); table = db.Query("SELECT * FROM tipo_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(null); } //Criar novo objeto de TipoUtilizador tipo = new TipoUtilizador(table.Rows[0].Field <int>("id"), table.Rows[0].Field <string>("denominacao")); tiposUtilizador.Add(tipo); return(tipo); }
public ActionResult Edit(FormCollection dadosTipoUtilizador, int id) { //Obtém, de acordo com o ID, o tipo de utilizador respetivo para editar TipoUtilizador editTipoUtilizador = db.TipoUtilizadors.Single(t => t.idTipoUtilizador == id); //Verifica cada dado introduzido pelo utilizador por inconsistências (se os campos estão preenchidos, se os campos são válidos, etc.) if (string.IsNullOrEmpty(dadosTipoUtilizador["TipoUtilizador.nome"]) == true) { ModelState.AddModelError("TipoUtilizador.nome", "Tem de introduzir um nome para o novo tipo de utilizador!"); } else { //Se o nome do tipo de utilizador introduzido não for igual ao que estava, mas se já existe um tipo de utilizador com o novo nome introduzido, retorna erro if (editTipoUtilizador.nome != dadosTipoUtilizador["TipoUtilizador.nome"] && db.TipoUtilizadors.SingleOrDefault(t => t.nome == dadosTipoUtilizador["TipoUtilizador.nome"]) != default(TipoUtilizador)) { ModelState.AddModelError("TipoUtilizador.nome", "Um tipo de utilizador com este nome já se encontra criado!"); } } if (ModelState.IsValid == true) { //Associa os novos dados ao tipo de utilizador editTipoUtilizador.nome = dadosTipoUtilizador["TipoUtilizador.nome"]; //Apaga todas as relações permissão-tipo associadas a este tipo de utilizador particular db.Permissao_TipoUtilizadors.DeleteAllOnSubmit(db.Permissao_TipoUtilizadors.Where(pt => pt.idTipoUtilizador == id)); db.SubmitChanges(); //Depois das relações apagadas, volta a criar novas relações permissão-tipo, com base nas novas checkboxes seleccionadas foreach (Permissao p in db.Permissaos) { //Visto que o ASP.NET MVC faz umas coisas esquisitas com as checkboxes, este workaround certifica que a checkbox de cada permissão é corretamente validada if (dadosTipoUtilizador[string.Concat("permissao", p.idPermissao)].Contains("true") == true) { Permissao_TipoUtilizador newPermissaoTipoUtilizador = new Permissao_TipoUtilizador(); newPermissaoTipoUtilizador.idTipoUtilizador = editTipoUtilizador.idTipoUtilizador; newPermissaoTipoUtilizador.idPermissao = p.idPermissao; db.Permissao_TipoUtilizadors.InsertOnSubmit(newPermissaoTipoUtilizador); } } db.SubmitChanges(); return(RedirectToAction("Index")); } else { //Compõe o ViewModel para a página de edição do tipo de utiizador TiposUtilizadorViewModel editViewModel = new TiposUtilizadorViewModel(); editViewModel.TipoUtilizador = db.TipoUtilizadors.Single(t => t.idTipoUtilizador == id); editViewModel.PermissoesTipoUtilizadorList = db.Permissao_TipoUtilizadors.Where(pt => pt.idTipoUtilizador == id).ToList(); editViewModel.PermissoesList = db.Permissaos.ToList(); return(View(editViewModel)); } }
public ActionResult Create(FormCollection dadosTipoUtilizador) { //Verifica cada dado introduzido pelo utilizador por inconsistências (se os campos estão preenchidos, se os campos são válidos, etc.) if (string.IsNullOrEmpty(dadosTipoUtilizador["TipoUtilizador.nome"]) == true) { ModelState.AddModelError("TipoUtilizador.nome", "Tem de introduzir um nome para o novo tipo de utilizador!"); } else { //Se já existe um tipo de utilizador com o nome introduzido, retorna erro if (db.TipoUtilizadors.SingleOrDefault(t => t.nome == dadosTipoUtilizador["nome"]) != default(TipoUtilizador)) { ModelState.AddModelError("TipoUtilizador.nome", "Um tipo de utilizador com este nome já se encontra criado!"); } } if (ModelState.IsValid == true) { TipoUtilizador newTipoUtilizador = new TipoUtilizador(); newTipoUtilizador.nome = dadosTipoUtilizador["TipoUtilizador.nome"]; db.TipoUtilizadors.InsertOnSubmit(newTipoUtilizador); db.SubmitChanges(); foreach (Permissao p in db.Permissaos) { //Visto que o ASP.NET MVC faz umas coisas esquisitas com as checkboxes, este workaround certifica que a checkbox de cada permissão é corretamente validada if (dadosTipoUtilizador[string.Concat("permissao", p.idPermissao)].Contains("true") == true) { Permissao_TipoUtilizador newPermissaoTipoUtilizador = new Permissao_TipoUtilizador(); newPermissaoTipoUtilizador.idTipoUtilizador = newTipoUtilizador.idTipoUtilizador; newPermissaoTipoUtilizador.idPermissao = p.idPermissao; db.Permissao_TipoUtilizadors.InsertOnSubmit(newPermissaoTipoUtilizador); } } db.SubmitChanges(); return(RedirectToAction("Index")); } else { TiposUtilizadorViewModel createViewModel = new TiposUtilizadorViewModel(); createViewModel.PermissoesList = db.Permissaos.ToList(); return(View(createViewModel)); } }
public ActionResult Delete(int?id) { TipoUtilizador tipoUtilizador = db.TipoUtilizador.Find(id); if (tipoUtilizador != null) { db.TipoUtilizador.Remove(tipoUtilizador); db.SaveChanges(); TempData["Message"] = tipoUtilizador.Tipo + " removido com sucesso"; } else { TempData["Message"] = "erro ao remover o tipo de utilizador"; } return(RedirectToAction("Index")); }
public ActionResult Create(TipoUtilizador tipoUtilizador) { try { if (!db.TipoUtilizador.Any(n => n.Tipo == tipoUtilizador.Tipo)) { db.TipoUtilizador.Add(tipoUtilizador); db.SaveChanges(); } ModelState.Clear(); return(RedirectToAction("Index")); } catch { return(View()); } }
public TiposUtilizadorViewModel() { tipoUtilizador = new TipoUtilizador(); permissoesTipoUtilizadorList = new List <Permissao_TipoUtilizador>(); permissoesList = new List <Permissao>(); }
/// <summary> /// Cria um novo utilizador /// </summary> /// <param name="email">Email do Utilizador</param> /// <param name="dataNascimento">Data de nascimento</param> /// <param name="nome">Nome</param> /// <param name="password">Password</param> /// <param name="telemovel">Numero de Telemovel</param> /// <param name="nif">Numero de identificação fiscarl</param> /// <param name="tipo">Tipo de utilizador</param> /// <returns>Instancia de utilizador acabade de criar</returns> public static Utilizador Novo(string email, DateTime dataNascimento, string nome, string password, string telemovel, string nif, TipoUtilizador tipo) { int id = 0; string pwd = BCrypt.Net.BCrypt.HashPassword(password); int rows; Utilizador newUser; DBConnection conn = new DBConnection(); DataTable dt; //Inserir user na base de dados rows = conn.NonQuery("INSERT INTO utilizador (email, data_nascimento, nome, password, telemovel, nif, tipo_utilizador_id) VALUES (@0, @1, @2, @3, @4, @5, @6)", email, dataNascimento, nome, pwd, telemovel, nif, tipo.Id); dt = conn.Query("SELECT * FROM utilizador WHERE email = @0", email); id = dt.Rows[dt.Rows.Count - 1].Field <int>("id"); newUser = new Utilizador(id, nome, nif, email, dataNascimento, telemovel, tipo); utilizadores.Add(newUser); return(newUser); }