public ActionResult BuscarLocation(string nomeCidade, string nomeBairro)
        {
            var iLoja = new lojaBusinessModels(bd);
            var dadosBusca = new BuscaViewModel();
            var ibairro = new BairroRepository(bd);
            var iCliente = new clienteBusinessModels(bd);

            var _bairro = ibairro.ObterLojas(nomeCidade, nomeBairro);

            if (_bairro == null)
            {
                return PartialView("Busca", dadosBusca);
            }

            dadosBusca.Loja = iLoja.ObterPorBairro(_bairro.id).Take(20);

            dadosBusca.Cliente = iCliente.ObterClientePorBairro(_bairro.id).Take(20);

            if (dadosBusca.Cliente == null)
            {
                ViewBag.ClienteBuscaMsg = "Sem resultados";
            }
            if (dadosBusca.Loja == null)
            {
                ViewBag.LojaBuscaMsg = "Sem resultados";
            }

            return PartialView("Busca", dadosBusca);
        }
        public ActionResult Create(LojaCadastroViewModel dadosLoja)
        {
            try
            {
                if (ModelState.IsValid)
                {

                    lojaBusinessModels iLoja = new lojaBusinessModels(bd);
                    var result = iLoja.CriarLoja(dadosLoja);
                    if (result.Item2)
                    {
                        return RedirectToAction("Entrar","Home", new { msg = "Agora é só logar com sua conta criada!" });
                    }
                    else
                    {
                        ViewBag.Error = result.Item3;
                    }
               }
                //mensagem do model state
            }
            catch (Exception ex)
            {
                ViewBag.Error = ex;
            }
            return PartialView("New", dadosLoja);
        }
        public ActionResult Principal()
        {
            var iLoja = new lojaBusinessModels(bd);

            var session = Session["UserSession"] as UserSession;

            IQueryable<loja> dadosLojas = null;

            if (session != null)
            {
                dadosLojas = iLoja.ObterPorBairro((long)session.idBairro);
                if (dadosLojas.Count() <= 0)
                {
                    var iBairro = new BairroRepository(bd);
                    string nomeCidade = iBairro.ObterBairro(session.idBairro).cidade.nome;
                    return Redirect("~/lojas/" + nomeCidade);
                }
            }
            else
            {
                dadosLojas = iLoja.Obter();
            }

            return View(dadosLojas);
        }
        public ActionResult Logar(string username, string password, string msg)
        {
            UsuarioRepository iUsuario = new UsuarioRepository(bd);

            var usuario = iUsuario.ObterConta(username, password);

            var session = new UserSession();

            if (usuario.Item2)
            {
                if(usuario.Item3)
                {
                    clienteBusinessModels iCliente = new clienteBusinessModels(bd);

                    session.idConta = usuario.Item1.id;
                    var cliente = iCliente.ObterPerfilPorConta(session.idConta);
                    session.isCliente = true;
                    session.idCliente = cliente.id;
                    session.idConta = cliente.idUsername;
                    session.meuPerfil = "Cliente/Perfil/" + cliente.idUsername;
                    session.idBairro = cliente.idBairro;
                    session.nome = cliente.nome;
                    session.email = cliente.usuario.email;

                    Session["UserSession"] = session;
                    return RedirectToAction("Perfil", "Cliente", new { idConta = usuario.Item1.id });
                }
                else
                {
                    var iLoja = new lojaBusinessModels(bd);

                    session.idConta = usuario.Item1.id;
                    session.isCliente = false;
                    var loja = iLoja.ObterPerfilPorConta(session.idConta);
                    session.idConta = loja.idUsername;
                    session.idCliente = 0;
                    session.meuPerfil = "Loja/Perfil/" + loja.idUsername;
                    session.idBairro = loja.idBairro;
                    session.nome = loja.nome;
                    session.email = loja.usuario.email;

                    Session["UserSession"] = session;
                    return RedirectToAction("Perfil", "Loja", new { idConta = usuario.Item1.id });
                }
            }
            else
            {
                ViewBag.Login = usuario.Item4;
                return View("Entrar");
            }
        }
        public bool AtualizaPerfil(string cam, bool isCliente, bool isPerfil)
        {
            try
            {
                var session = Session["UserSession"] as UserSession;

                if (!isCliente)
                {
                    var iLoja = new lojaBusinessModels(bd);

                    var loja = iLoja.ObterPerfilPorConta(session.idConta);

                    if(isPerfil)
                    {
                        loja.fotoperfil = cam;
                    }
                    else
                    {
                        loja.fotowall = cam;
                    }

                    iLoja.Editar(loja, loja.id);
                    iLoja.Persistir();
                }
                else
                {
                    var iCliente = new clienteBusinessModels(bd);

                    var cliente = iCliente.ObterPerfilPorConta(session.idConta);

                    if (isPerfil)
                    {
                        cliente.fotoperfil = cam;
                    }
                    else
                    {
                        cliente.fotowall = cam;
                    }

                    iCliente.Editar(cliente, cliente.id);
                    iCliente.Persistir();
                }

                return true;
            }
            catch
            {
                return false;
            }
        }
        public ActionResult Principal(string nomeCidade, string nomeBairro)
        {
            var iBairro = new BairroRepository(bd);
            var bairro = iBairro.ObterLojas(nomeCidade, nomeBairro);

            if (bairro == null)
            {
                return Redirect("~/lojas/" + nomeCidade);
            }

            var iLoja = new lojaBusinessModels(bd);
            var dadosLojas = iLoja.ObterPorBairro(bairro.id);

            ViewBag.RefLocation = (string)nomeBairro;
            return View(dadosLojas);
        }
        public ActionResult BuscarNome(string chave)
        {
            var iLoja = new lojaBusinessModels(bd);
            var dadosBusca = new BuscaViewModel();

            dadosBusca.Loja = iLoja.BuscaLoja(chave).Take(30);

            var iCliente = new clienteBusinessModels(bd);

            dadosBusca.Cliente = iCliente.BuscaCliente(chave).Take(20);

            if (dadosBusca.Cliente == null)
            {
                ViewBag.ClienteBuscaMsg = "Sem resultado";
            }
            if (dadosBusca.Loja == null)
            {
                ViewBag.LojaBuscaMsg = "Sem resultado";
            }
            return PartialView("Busca",dadosBusca);
        }
        public ActionResult CreateProduto(produto dadosProduto)
        {
            try
            {
                var session = Session["UserSession"] as UserSession;
                var iLoja = new lojaBusinessModels(bd);
                var iProduto = new ProdutoRepository(bd);

                var loja = iLoja.ObterPerfilPorConta(session.idConta);

                dadosProduto.idLoja = loja.id;
                dadosProduto.idCategoria = loja.categoria.FirstOrDefault().id;
                dadosProduto.prioridade = dadosProduto.prioridade / 100;
                iProduto.CriarProduto(dadosProduto);

                return RedirectToAction("LojaConfig");
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public ActionResult Perfil(long idConta)
        {
            var iLoja = new lojaBusinessModels(bd);

            var loja = iLoja.ObterPerfilPorConta(idConta);

            return View(loja);
        }
        public ActionResult LojaConfig()
        {
            var session = Session["UserSession"] as UserSession;
            if (session.isCliente)
            {
                ViewBag.ErrorMsg = "Você não tem acesso a essa página.";
                return View("Erro");
            }
            else
            {
                var iLoja = new lojaBusinessModels(bd);
                var loja = iLoja.ObterPerfilPorConta(session.idConta);

                ViewBag.ImageWall = loja.fotowall;
                ViewBag.ImagePerfil = loja.fotoperfil;

                return View(loja);
            }
        }