public ActionResult AvaliarTransportadora(Transportadora t)
        {
            UsuarioAuth auth = new UsuarioAuth();

            //Verifica se já avaliou uma tranportadora antes
            if (auth.getAvaliacao(t.Codigo) != AVALIACAO_TIPO.Nenhuma)
            {
                ModelState.AddModelError("", "Voce já avaliou esta tranportadora!");
            }
            else
            {
                int avaliacao = -1;
                try
                {
                    avaliacao = Convert.ToInt32(HttpContext.Request.Params.Get("avaliacao"));

                    if (avaliacao < 0)
                    {
                        ModelState.AddModelError("", "Selecione uma avaliação!");
                    }
                    else
                    {
                        //Avalia a tranpostadora e retorna para pagina inicial
                        auth.avaliarTransportadora(t, avaliacao);
                        return RedirectToAction("Index");
                    }
                }
                catch (FormatException /*Verificar uma possivel passagem de parametros maliciosa em 'avaliacao' */)
                {
                    ModelState.AddModelError("", "Valor inválido!");
                }
            }
            return View(t);
        }
        public override string[] GetRolesForUser(string username)
        {
            UsuarioAuth auth = new UsuarioAuth();

            List<String> listaPermissoes = auth.getPermissoesDoUsuario();

            if (listaPermissoes == null)
            {
                return new string[] { };
            }

            return listaPermissoes.ToArray();
        }
        public ActionResult Login(Usuario user)
        {
            if (ModelState.IsValid)
            {
                UsuarioAuth auth = new UsuarioAuth();

                if (auth.AutenticaUsuario(user.UserName, user.Password))
                {
                    return RedirectToAction("Index", "Home");
                }
                else
                {
                    ModelState.AddModelError("", "Informações de login incorretas!");
                }
            }
            return View(user);
        }
        /// <summary>
        /// Transporma em object
        /// </summary>
        /// <param name="reader"></param>
        /// <returns></returns>
        private List <Transportadora> TransformaReaderEmListaDeObjeto(SqlDataReader reader)
        {
            var transportadoras = new List <Transportadora>();

            while (reader.Read())
            {
                var temObjeto = new Transportadora()
                {
                    Codigo            = int.Parse(reader["Codigo"].ToString()),
                    Nome              = reader["Nome"].ToString(),
                    Telefone          = reader["Telefone"].ToString(),
                    Endereco          = reader["Endereco"].ToString(),
                    Email             = reader["Email"].ToString(),
                    InscricaoEstadual = Convert.ToInt32(reader["InscricaoEstadual"]),
                    Cnpj              = reader["Cnpj"].ToString(),
                };

                UsuarioAuth user = new UsuarioAuth();
                temObjeto.Avaliacao = user.getAvaliacao(temObjeto.Codigo);
                transportadoras.Add(temObjeto);
            }
            reader.Close();
            return(transportadoras);
        }
        public ActionResult Index()
        {
            UsuarioAuth auth = new UsuarioAuth();//coleta usuaro autenticado
            var permissoes = auth.getPermissoesDoUsuario();//Coleta permissoes

            //Coloca na viewbag para mostrar na View
            ViewBag.isAdministrador = permissoes.Contains("Administrador");
            ViewBag.isUsuario = permissoes.Contains("Usuario");
            ViewBag.Usario = auth.getUsuarioLogado();

            //Coleta lista de transportadoras
            var appTransportadora = new TransportadoraAplicacao();
            var listaDeAlunos = appTransportadora.ListarTodos();

            return View(listaDeAlunos);
        }
        public ActionResult Detalhes(int id)
        {
            TransportadoraAplicacao transportadoraApp = new TransportadoraAplicacao();
            Transportadora transportadora = transportadoraApp.ListarPorId(id);

            UsuarioAuth auth = new UsuarioAuth();
            var permissoes = auth.getPermissoesDoUsuario();

            //é necessário enviar para view um valor lógico mostrando que este usuario pode avaliar a transportadora
            ViewBag.podeAvaliar = permissoes.Contains("Usuario") && auth.getAvaliacao(transportadora.Codigo) == AVALIACAO_TIPO.Nenhuma;

            //teoricamente transportadora nunca vai ser null, mas por segurança coloquei este check null
            if (transportadora == null)
            {
                return RedirectToAction("Index");
            }

            return View(transportadora);
        }
        /// <summary>
        /// Transporma em object
        /// </summary>
        /// <param name="reader"></param>
        /// <returns></returns>
        private List<Transportadora> TransformaReaderEmListaDeObjeto(SqlDataReader reader)
        {
            var transportadoras = new List<Transportadora>();
            while (reader.Read())
            {
                var temObjeto = new Transportadora()
                {

                    Codigo = int.Parse(reader["Codigo"].ToString()),
                    Nome = reader["Nome"].ToString(),
                    Telefone = reader["Telefone"].ToString(),
                    Endereco = reader["Endereco"].ToString(),
                    Email = reader["Email"].ToString(),
                    InscricaoEstadual = Convert.ToInt32(reader["InscricaoEstadual"]),
                    Cnpj = reader["Cnpj"].ToString(),
                };

                UsuarioAuth user = new UsuarioAuth();
                temObjeto.Avaliacao = user.getAvaliacao(temObjeto.Codigo);
                transportadoras.Add(temObjeto);
            }
            reader.Close();
            return transportadoras;
        }