Baixe o app para aproveitar ainda mais
Prévia do material em texto
Treinamento em C# WebDeveloper Aula 13 Quarta-feira, 28 de Novembro de 2018 Desenvolvimento Web com Asp.Net MVC Página para adicionar perfil ao usuário: @model Projeto.Presentation.Areas.AreaRestrita.Models.AdicionarPerfilModel @{ ViewBag.Title = "AdicionarPerfil"; Layout = "~/Areas/AreaRestrita/Views/Shared/Layout.cshtml"; } <h2>Adicionar Perfil para Usuário</h2> <a href="/AreaRestrita/Principal/Index">Voltar</a> <hr/> @using (Html.BeginForm("AdicionarPerfil", "Principal", FormMethod.Post)) { <label>Selecione o Usuário:</label> @Html.DropDownListFor(model => model.IdUsuario, Model.ListagemDeUsuarios, "Selecione uma opção", new { @class = "form-control col-md-6" }) <span class="text-danger"> @Html.ValidationMessageFor(model => model.IdUsuario) </span> <br/> <label>Selecione o Perfil:</label> @Html.DropDownListFor(model => model.IdPerfil, Model.ListagemDePerfis, "Selecione uma opção", new { @class = "form-control col-md-6" }) <span class="text-danger"> @Html.ValidationMessageFor(model => model.IdPerfil) </span> <br /> <input type="submit" class="btn btn-success" value="Adicionar Perfil ao Usuário"/> <br/> <br/> <strong>@ViewBag.Mensagem</strong> } Criando um método no repositorio para adicionar um perfil a um usuario: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Projeto.Repository.Entities; namespace Projeto.Repository.Contracts { public interface IPerfilRepository { List<Perfil> Consultar(); List<Perfil> Consultar(string loginUsuario); void AdicionarPerfilUsuario(int idPerfil, int idUsuario); } } -------------------------------------- using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Projeto.Repository.Entities; using Projeto.Repository.Contracts; using System.Data.SqlClient; namespace Projeto.Repository.Repositories { public class PerfilRepository : Conexao, IPerfilRepository { public void AdicionarPerfilUsuario(int idPerfil, int idUsuario) { string query = "insert into UsuarioPerfil(IdUsuario, IdPerfil) " + "values(@IdUsuario, @IdPerfil)"; Command = new SqlCommand(query, Connection); Command.Parameters.AddWithValue("@IdUsuario", idUsuario); Command.Parameters.AddWithValue("@IdPerfil", idPerfil); Command.ExecuteNonQuery(); } public List<Perfil> Consultar() { string query = "select * from Perfil"; Command = new SqlCommand(query, Connection); DataReader = Command.ExecuteReader(); List<Perfil> lista = new List<Perfil>(); while(DataReader.Read()) //percorrendo a consulta.. { Perfil perfil = new Perfil(); perfil.IdPerfil = Convert.ToInt32(DataReader["IdPerfil"]); perfil.Nome = Convert.ToString(DataReader["Nome"]); lista.Add(perfil); } return lista; } public List<Perfil> Consultar(string loginUsuario) { string query = "select p.IdPerfil, p.Nome from Perfil p " + "inner join UsuarioPerfil up " + "on p.IdPerfil = up.IdPerfil " + "inner join Usuario u " + "on u.IdUsuario = up.IdUsuario " + "where u.Login = @Login"; Command = new SqlCommand(query, Connection); Command.Parameters.AddWithValue("@Login", loginUsuario); DataReader = Command.ExecuteReader(); List<Perfil> lista = new List<Perfil>(); while (DataReader.Read()) //percorrendo a consulta.. { Perfil perfil = new Perfil(); perfil.IdPerfil = Convert.ToInt32(DataReader["IdPerfil"]); perfil.Nome = Convert.ToString(DataReader["Nome"]); lista.Add(perfil); } return lista; } } } ------------------------- Camada de regras de negócio: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Projeto.Repository.Entities; using Projeto.Repository.Repositories; using Projeto.Business.Results; using System.Diagnostics; namespace Projeto.Business { public class PerfilBusiness { public BusinessResult AdicionarPerfilUsuario(int idPerfil, int idUsuario) { PerfilRepository repository = new PerfilRepository(); BusinessResult result = new BusinessResult(); try { repository.AbrirConexao(); repository.AdicionarPerfilUsuario(idPerfil, idUsuario); result.Tipo = TipoResultado.Sucesso; result.Mensagem = "Perfil adicionado com sucesso para o usuário"; } catch(Exception e) { Debug.WriteLine(e.Message); result.Tipo = TipoResultado.Falha; result.Mensagem = "Não foi possivel adicionar o perfil ao usuario."; } finally { repository.FecharConexao(); } return result; } public List<Perfil> ConsultarTodos() { PerfilRepository repository = new PerfilRepository(); List<Perfil> lista = new List<Perfil>(); try { repository.AbrirConexao(); lista = repository.Consultar(); } catch(Exception e) { Debug.WriteLine(e.Message); } finally { repository.FecharConexao(); } return lista; } public List<Perfil> ConsultarPorUsuario(string loginUsuario) { PerfilRepository repository = new PerfilRepository(); List<Perfil> lista = new List<Perfil>(); try { repository.AbrirConexao(); lista = repository.Consultar(loginUsuario); } catch (Exception e) { Debug.WriteLine(e.Message); } finally { repository.FecharConexao(); } return lista; } } } Voltando ao PrincipalController no MVC: (AreaRestrita) using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using Projeto.Presentation.Filters; using Newtonsoft.Json; using Projeto.Repository.Entities; using Projeto.Business; using Projeto.Presentation.Models; using Projeto.Presentation.Areas.AreaRestrita.Models; using Projeto.Business.Results; namespace Projeto.Presentation.Areas.AreaRestrita.Controllers { [Authorize] public class PrincipalController : Controller { // GET: AreaRestrita/Principal [NoCache] public ActionResult Index() { //verificar se não existe uma sessão criada //com os dados do usuario.. if(Session["USUARIO"] == null) { //obter o ticket do usuario que está autenticado.. string json = User.Identity.Name; //deserializar o conteudo do JSON.. var model = JsonConvert.DeserializeObject <UsuarioCredencialAcessoModel>(json); //acessar a camada de negócio para obter os dados do usuário.. UsuarioBusiness business = new UsuarioBusiness(); Usuario usuario =business.ObterUsuario(model.LoginUsuario); UsuarioLogadoModel usuarioLogado = new UsuarioLogadoModel() { IdUsuario = usuario.IdUsuario, Nome = usuario.Nome, Login = usuario.Login, Foto = usuario.Foto, DataHoraAcesso = model.DataHoraAcesso, Perfil = model.PerfilAcesso }; //armazenar os dados do usuario em sessão.. Session["USUARIO"] = usuarioLogado; } return View(); } [Authorize(Roles = "Administrador")] [NoCache] public ActionResult ConsultaUsuario() { return View(); } [Authorize(Roles = "Administrador")] [NoCache] public ActionResult AdicionarPerfil() { AdicionarPerfilModel model = CarregarModelAdicionarPerfil(); //enviando a model para a página return View(model); } [Authorize(Roles = "Administrador")] [NoCache] [HttpPost] public ActionResult AdicionarPerfil(AdicionarPerfilModel model) { if(ModelState.IsValid) { PerfilBusiness perfilBusiness = new PerfilBusiness(); var result = perfilBusiness.AdicionarPerfilUsuario (model.IdPerfil, model.IdUsuario); if(result.Tipo == TipoResultado.Sucesso) { ModelState.Clear(); } ViewBag.Mensagem = result.Mensagem; } AdicionarPerfilModel modelResultado = CarregarModelAdicionarPerfil(); //enviando a model para a página return View(modelResultado); } [Authorize(Roles = "Administrador")] [NoCache] public ActionResult RemoverPerfil() { return View(); } private static AdicionarPerfilModel CarregarModelAdicionarPerfil() { //instanciar a classe de modelo.. AdicionarPerfilModel model = new AdicionarPerfilModel(); UsuarioBusiness usuarioBusiness = new UsuarioBusiness(); PerfilBusiness perfilBusiness = new PerfilBusiness(); List<Usuario> usuarios = usuarioBusiness.ConsultarTodos(); List<Perfil> perfis = perfilBusiness.ConsultarTodos(); //populando as propriedades da model.. model.ListagemDeUsuarios = new List<SelectListItem>(); foreach (Usuario u in usuarios) { SelectListItem item = new SelectListItem(); item.Value = u.IdUsuario.ToString(); item.Text = $"{u.Nome} ({u.Login})"; model.ListagemDeUsuarios.Add(item); } model.ListagemDePerfis = new List<SelectListItem>(); foreach (Perfil p in perfis) { SelectListItem item = new SelectListItem(); item.Value = p.IdPerfil.ToString(); item.Text = p.Nome; model.ListagemDePerfis.Add(item); } return model; } } } -------------------------- ----------------------- 8
Compartilhar