Buscar

Aula_28 11 18

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

Continue navegando