public async Task <ActionResult> Details(int?id)
        {
            if (Session["Empresa"] != null || Session["UserId"] != null)
            {
                if (Session["Empresa"].ToString() != "0")
                {
                    return(View("~/Views/Shared/_OutraEmpresa.cshtml"));
                }
                else
                {
                    var acesso_perfil = new List <perfis_usuario>(db.perfis_usuario.ToList().Where(x => x.pus_usuariogerente == (int)Session["UserId"]));

                    if (acesso_perfil != null && acesso_perfil.Any(x => x.pus_ler_usuariogerente_details))
                    {
                        if (id == null)
                        {
                            return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
                        }
                        usuario_gerente usuario_gerente = await db.usuario_gerente.FindAsync(id);

                        if (usuario_gerente == null)
                        {
                            return(HttpNotFound());
                        }

                        return(View(usuario_gerente));
                    }
                    return(View("~/Views/Shared/_SemAutorizacao.cshtml"));
                }
            }
            else
            {
                return(RedirectToAction("Login", "Manager"));
            }
        }
        public async Task <ActionResult> MudarSenha([Bind(Include = "uss_codigo,uss_usuario,uss_senha,uss_lembrar_me,uss_nome,uss_sobrenome,uss_endereco,uss_numero,uss_complemento,uss_bairro,uss_cidade,uss_estado,uss_cep,uss_telefone,uss_email,uss_ativo,uss_perfil")] usuario_gerente usuario_gerente)
        {
            if (Session["Empresa"] != null || Session["UserId"] != null)
            {
                if (Session["Empresa"].ToString() != "0")
                {
                    return(View("~/Views/Shared/_OutraEmpresa.cshtml"));
                }
                else
                {
                    var acesso_perfil = new List <perfis_usuario>(db.perfis_usuario.ToList().Where(x => x.pus_usuariogerente == (int)Session["UserId"]));

                    if (acesso_perfil != null && acesso_perfil.Any(x => x.pus_lerescrever_usuariogerente_mudarsenha))
                    {
                        if (ModelState.IsValid)
                        {
                            usuario_gerente.uss_senha       = ManagerController.CriarMD5(usuario_gerente.uss_senha);
                            db.Entry(usuario_gerente).State = EntityState.Modified;
                            await db.SaveChangesAsync();

                            return(RedirectToAction("Index"));
                        }

                        return(View(usuario_gerente));
                    }
                    return(View("~/Views/Shared/_SemAutorizacao.cshtml"));
                }
            }
            else
            {
                return(RedirectToAction("Login", "Manager"));
            }
        }
        public async Task <ActionResult> DeleteConfirmed(int id)
        {
            if (Session["Empresa"] != null || Session["UserId"] != null)
            {
                if (Session["Empresa"].ToString() != "0")
                {
                    return(View("~/Views/Shared/_OutraEmpresa.cshtml"));
                }
                else
                {
                    var acesso_perfil = new List <perfis_usuario>(db.perfis_usuario.ToList().Where(x => x.pus_usuariogerente == (int)Session["UserId"]));

                    if (acesso_perfil != null && acesso_perfil.Any(x => x.pus_lerescrever_usuariogerente_delete))
                    {
                        usuario_gerente usuario_gerente = await db.usuario_gerente.FindAsync(id);

                        db.usuario_gerente.Remove(usuario_gerente);
                        await db.SaveChangesAsync();

                        return(RedirectToAction("Index"));
                    }
                    return(View("~/Views/Shared/_SemAutorizacao.cshtml"));
                }
            }
            else
            {
                return(RedirectToAction("Login", "Manager"));
            }
        }
        public async Task <ActionResult> Create([Bind(Include = "uss_codigo,uss_usuario,uss_senha,uss_lembrar_me,uss_nome,uss_sobrenome,uss_endereco,uss_numero,uss_complemento,uss_bairro,uss_cidade,uss_estado,uss_cep,uss_telefone,uss_email,uss_ativo,uss_perfil")] usuario_gerente usuario_gerente, string estados)
        {
            if (Session["Empresa"] != null || Session["UserId"] != null)
            {
                if (Session["Empresa"].ToString() != "0")
                {
                    return(View("~/Views/Shared/_OutraEmpresa.cshtml"));
                }
                else
                {
                    var acesso_perfil = new List <perfis_usuario>(db.perfis_usuario.ToList().Where(x => x.pus_usuariogerente == (int)Session["UserId"]));

                    if (acesso_perfil != null && acesso_perfil.Any(x => x.pus_lerescrever_usuariogerente_create))
                    {
                        if (ModelState.IsValid)
                        {
                            // checa no banco se o usuário já existe e impede a criação de um novo com o mesmo nome de usuário
                            var checar = db.usuario_gerente.FirstOrDefault(s => s.uss_usuario == usuario_gerente.uss_usuario);


                            if (checar == null)
                            {
                                usuario_gerente.uss_estado = estados;
                                usuario_gerente.uss_senha  = ManagerController.CriarMD5(usuario_gerente.uss_senha);
                                usuario_gerente.uss_ativo  = true;
                                db.usuario_gerente.Add(usuario_gerente);
                                await db.SaveChangesAsync();

                                return(RedirectToAction("Index"));
                            }
                            else
                            {
                                ViewBag.UsuarioErro = "Usuário já cadastrado";
                            }
                        }
                        ViewBag.Estados = new SelectList(new Estados().ListaEstados(), "data_sigla_estado", "data_nome_estado");
                        return(View(usuario_gerente));
                    }
                    return(View("~/Views/Shared/_SemAutorizacao.cshtml"));
                }
            }
            else
            {
                return(RedirectToAction("Login", "Manager"));
            }
        }
        public ActionResult Registrar([Bind(Include = "uss_codigo,uss_usuario,uss_senha,uss_lembrar_me,uss_perfil,uss_nome")] usuario_gerente usuario_gerente)
        {
            if (ModelState.IsValid)
            {
                //Checa se o usuário já existe no banco de dados para que não seja permitida a criação de dois logins iguais
                var checar = db.usuario_gerente.FirstOrDefault(s => s.uss_usuario == usuario_gerente.uss_usuario);
                if (checar == null)
                {
                    //perfis_usuario perfis_usuario = new perfis_usuario();
                    //perfis_usuario.pus_lerescrever_clienteempresaunidade_create = true;
                    //perfis_usuario.pus_lerescrever_clienteempresaunidade_delete = true;
                    //perfis_usuario.pus_lerescrever_clienteempresaunidade_edit = true;
                    //perfis_usuario.pus_lerescrever_clienteempresausuario_create = true;
                    //perfis_usuario.pus
                    //cliente_empresa cliente_empresa = await db.cliente_empresa.FindAsync(empresa);
                    //var usuario_ativo = cliente_empresa.cle_quantidade_usuario_ativo;
                    //usuario_ativo++;
                    //cliente_empresa.cle_quantidade_usuario_ativo = usuario_ativo;
                    //db.Entry(cliente_empresa).State = EntityState.Modified;



                    //usuario_gerente.uss_perfil = 2;
                    usuario_gerente.uss_senha = CriarMD5(usuario_gerente.uss_senha);
                    db.Configuration.ValidateOnSaveEnabled = false;
                    usuario_gerente.uss_ativo = true;
                    db.usuario_gerente.Add(usuario_gerente);
                    db.SaveChanges();
                    return(RedirectToAction("Login"));
                }
                else
                {
                    ViewBag.error = "Usuário Já Existe";
                    return(View());
                }
            }

            return(View());
        }
        public ActionResult Login(LoginViewModel login, string returnUrl)
        {
            if (ModelState.IsValid)
            {
                usuario_gerente         gerente_login = new usuario_gerente();
                cliente_empresa_usuario cliente_login = new cliente_empresa_usuario();
                //perfil_usuario_empresa perfil_usuario_empresa = new perfil_usuario_empresa();

                // Chama a função a criação de MD5 para que ambas as senhas (a que já existe no banco e a que está sendo inserida)
                // sejam as mesmas
                var validar_senha      = CriarMD5(login.mng_senha);
                var checar_uss_usuario = db.usuario_gerente.Where(m => m.uss_usuario.Equals(login.mng_usuario) && m.uss_senha.Equals(validar_senha) && m.uss_ativo.Equals(true)).FirstOrDefault();


                if (checar_uss_usuario != null)
                {
                    FormsAuthentication.SetAuthCookie(login.mng_usuario, login.mng_lembrar_me);
                    Session["UserId"]      = checar_uss_usuario.uss_codigo;
                    Session["UserName"]    = checar_uss_usuario.uss_nome;
                    Session["Empresa"]     = "0";
                    Session["NomeEmpresa"] = "gerente";


                    if (Url.IsLocalUrl(returnUrl))
                    {
                        return(Redirect(returnUrl));
                    }
                    else
                    {
                        return(RedirectToAction("Index", "Home"));
                    }
                }
                else
                {
                    var checar_cli_usuario = db.cliente_empresa_usuario.Where(m => m.cus_usuario.Equals(login.mng_usuario) && m.cus_senha.Equals(validar_senha) && m.cus_ativo.Equals(true)).FirstOrDefault();
                    if (checar_cli_usuario != null)
                    {
                        FormsAuthentication.SetAuthCookie(login.mng_usuario, login.mng_lembrar_me);
                        // Variáveis para a sessão
                        Session["UserId"]      = checar_cli_usuario.cus_codigo;
                        Session["UserName"]    = checar_cli_usuario.cus_nome;
                        Session["Empresa"]     = checar_cli_usuario.cus_empresa;
                        Session["NomeEmpresa"] = checar_cli_usuario.cliente_empresa.cle_razaosocial_principal;

                        if (Url.IsLocalUrl(returnUrl))
                        {
                            return(Redirect(returnUrl));
                        }
                        else
                        {
                            return(RedirectToAction("Index", "Home"));
                        }
                    }
                }
            }
            else
            {
                ModelState.AddModelError("", "Usuário ou Senha Inválidos");
            }
            return(View(login));
        }