/// <summary>
        /// Realiza uma pergunta em um anuncio
        /// </summary>
        /// <param name="sch"></param>
        /// <param name="a"></param>
        /// <param name="p"></param>
        /// <returns></returns>
        public JsonResult json11(string sch, int a, string p, bool v)
        {
            try
            {
                VerificaSessao(sch);


                var bll        = new BLLAnuncioPergunta();
                var bllAnuncio = new BLLAnuncio(bll._context);
                var Anuncio    = bllAnuncio.SelectByKey(a);

                var ap = new AnuncioPergunta();
                ap.DataInc      = DateTime.Now;
                ap.Pergunta     = p;
                ap.IdUsuarioInc = UsuarioLogado_ID.GetValueOrDefault();
                ap.IdAnuncio    = a;
                ap.Privada      = v;
                bll.InsertAndSave(ap);

                return(Json(new RetornoJsonPadrao(null, true, null)));
            }
            catch (Exception ex)
            {
                return(Json(new RetornoJsonPadrao(ex.Message, false, null)));
            }
        }
        /// <summary>
        /// Excluir um Anuncio
        /// </summary>
        /// <param name="sch"></param>
        /// <param name="anuncio_id"></param>
        /// <returns></returns>
        public JsonResult json13(string sch, int a)
        {
            try
            {
                VerificaSessao(sch);

                var bll = new BLLAnuncio();

                bll.Arquivar(a, UsuarioLogado_ID.GetValueOrDefault());

                return(Json(new RetornoJsonPadrao("Anuncio excluido com sucesso.", true, null)));
            }
            catch (Exception ex)
            {
                return(Json(new RetornoJsonPadrao(ex.Message, false, null)));
            }
        }
        /// <summary>
        /// 05 - Submete o pré-cadastro de um usuário
        /// </summary>
        /// <param name="sch">Token de Verificação da Sessão</param>
        /// <param name="n">Nome de usuário</param>
        /// <param name="e">Email do usuário</param>
        /// <returns></returns>
        public JsonResult json05(string sch, string n, string e)
        {
            try
            {
                VerificaSessao(sch);

                var bll = new BLLUsuario();


                var u = new Usuario();
                u.Nome          = n;
                u.Usuario1      = n;
                u.Email         = e;
                u.DataInc       = DateTime.Now;
                u.Situacao      = 0;
                u.Administrador = false;
                u.Senha         = new Random().Next(100000, 999999).ToString();

                if (UsuarioLogado_ID != null)
                {
                    u.UsuarioIndicou_ID = UsuarioLogado_ID;
                }

                //enviar email com senha
                bll.InsertAndSave(u);

                if (u.ID != 0)
                {
                    Tuitar("@henricavalcante " + u.Nome + "foi Cadastrado" + UsuarioLogado_ID.GetValueOrDefault(0));
                }
                if (UsuarioLogado_ID != null)
                {
                    return(Json(new RetornoJsonPadrao(String.Format("Usuário convidado com sucesso, em instantes será enviado um email à {0} com o convite.", e), true, null)));
                }
                else
                {
                    return(Json(new RetornoJsonPadrao(String.Format("Usuário cadastrado com sucesso, verifique o email {0} com as instruções para concluir o cadastro.", e), true, null)));
                }
            }
            catch (Exception ex)
            {
                return(Json(new RetornoJsonPadrao(Excecao.Trata(ex), false, null)));
            }
        }
        /// <summary>
        /// Ofertar em um anuncio
        /// </summary>
        /// <param name="sch"></param>
        /// <param name="anuncio_id"></param>
        /// <param name="ofertas"></param>
        /// <param name="descricao"></param>
        /// <param name="valor"></param>
        /// <returns></returns>
        public JsonResult json12(string sch, int anuncio_id, List <int> ofertas, string descricao, string valor)
        {
            try
            {
                VerificaSessao(sch);

                var bll = new BLLAnuncioOferta();

                var o = new AnuncioOferta();

                if (ofertas != null)
                {
                    foreach (var item in ofertas)
                    {
                        var a = new AnuncioOfertaAnuncio();
                        a.Anuncio_ID = item;
                        o.AnuncioOfertaAnuncio.Add(a);
                    }
                }


                o.OfertaDescricao = descricao;
                o.OfertaValor     = decimal.Parse(valor);
                o.Anuncio_ID      = anuncio_id;
                o.UsuarioInc_ID   = UsuarioLogado_ID.GetValueOrDefault();


                bll.InsertAndSave(o);



                return(Json(new RetornoJsonPadrao("Oferta realizada com sucesso.", true, null)));
            }
            catch (Exception ex)
            {
                return(Json(new RetornoJsonPadrao(ex.Message, false, null)));
            }
        }
        /// <summary>
        /// 02 - Salva um anuncio
        /// </summary>
        /// <param name="values"></param>
        /// <returns></returns>
        public JsonResult json02(int?ID,
                                 List <string> fotos,
                                 string titulo,
                                 string subtitulo,
                                 string descricao,
                                 int categoria,
                                 int tipo,
                                 int conservacao,
                                 string preco,
                                 string cor,
                                 string garantia,
                                 string tamanho,
                                 short?disponibilidade,
                                 short?quantidade,
                                 int Veiculo_Cor,
                                 int Veiculo_Combustivel,
                                 int?Veiculo_Ano_Fabricacao,
                                 int?Veiculo_Ano_Modelo,
                                 string Veiculo_Km,
                                 List <string> Veiculo_Acessorios,
                                 int?Imovel_Quartos,
                                 int?Imovel_Suites,
                                 int?Imovel_Vagas_Garagem,
                                 int?Imovel_Idade,
                                 string Imovel_IPTU,
                                 string Imovel_Area_Terreno,
                                 string Imovel_Area_Util,
                                 string Imovel_Condominio_Nome,
                                 int?Imovel_Condominio_Andar,
                                 int?Imovel_Condominio_Andares,
                                 int?Imovel_Condominio_Unidades_Por_Andar,
                                 string Imovel_Condominio_Valor,
                                 string Imovel_Condominio_Administradora,
                                 List <string> Imovel_condominio_infraestrutura,
                                 List <string> Imovel_instalacoes,
                                 List <string> Imovel_lazer)
        {
            try
            {
                var bll = new BLLAnuncio();

                Anuncio a = new Anuncio();

                a.Titulo                = titulo;
                a.Descricao             = descricao;
                a.SubTitulo             = subtitulo;
                a.AnuncioTipo_ID        = tipo;
                a.AnuncioConservacao_ID = conservacao;
                a.Categoria_ID          = categoria;
                a.Preco = decimal.Parse(preco);

                a.C_Cor      = cor;
                a.C_Garantia = garantia;
                a.C_Tamanho  = tamanho;

                if (disponibilidade != null)
                {
                    a.C_Disponibilidade = disponibilidade.GetValueOrDefault();
                }
                if (quantidade != null)
                {
                    a.C_Quantidade = quantidade.GetValueOrDefault();
                }


                a.C_Veiculo_Cor_ID         = Veiculo_Cor;
                a.C_Veiculo_Ano_Fabricacao = Veiculo_Ano_Fabricacao;
                a.C_Veiculo_Ano_Modelo     = Veiculo_Ano_Modelo;
                a.C_Veiculo_Combustivel_ID = Veiculo_Combustivel;
                if (Veiculo_Km != null && Veiculo_Km != string.Empty)
                {
                    a.C_Veiculo_Km = int.Parse(Veiculo_Km.Replace(".", ""));
                }
                if (Veiculo_Acessorios != null && Veiculo_Acessorios.Count > 0)
                {
                    a.C_Veiculo_Acessorios = string.Join("|", Veiculo_Acessorios);
                }


                a.C_Imovel_Quartos                       = (byte?)Imovel_Quartos;
                a.C_Imovel_Suites                        = (byte?)Imovel_Suites;
                a.C_Imovel_Vagas_Garagem                 = (byte?)Imovel_Vagas_Garagem;
                a.C_Imovel_Idade                         = (byte?)Imovel_Idade.GetValueOrDefault();
                a.C_Imovel_IPTU                          = decimal.Parse(Imovel_IPTU);
                a.C_Imovel_Area_Terreno                  = decimal.Parse(Imovel_Area_Terreno);
                a.C_Imovel_Area_Util                     = decimal.Parse(Imovel_Area_Util);
                a.C_Imovel_Condominio_Nome               = Imovel_Condominio_Nome;
                a.C_Imovel_Condominio_Andar              = (byte?)Imovel_Condominio_Andar;
                a.C_Imovel_Condominio_Andares            = (byte?)Imovel_Condominio_Andares;
                a.C_Imovel_Condominio_Unidades_Por_Andar = (byte?)Imovel_Condominio_Unidades_Por_Andar;
                a.C_Imovel_Condominio_Valor              = decimal.Parse(Imovel_Condominio_Valor);
                a.C_Imovel_Condominio_Administradora     = Imovel_Condominio_Administradora;
                if (Imovel_condominio_infraestrutura != null && Imovel_condominio_infraestrutura.Count > 0)
                {
                    a.C_Imovel_Condominio_Infraestrutura = string.Join("|", Imovel_condominio_infraestrutura);
                }
                if (Imovel_instalacoes != null && Imovel_instalacoes.Count > 0)
                {
                    a.C_Imovel_Instalacoes = string.Join("|", Imovel_instalacoes);
                }
                if (Imovel_lazer != null && Imovel_lazer.Count > 0)
                {
                    a.C_Imovel_Lazer = string.Join("|", Imovel_lazer);
                }


                a.UsuarioInc_ID = UsuarioLogado_ID.GetValueOrDefault();

                if (fotos != null && fotos.Count > 0)
                {
                    a.NomeArquivoFotoPrincipal = fotos.FirstOrDefault();

                    for (int i = 0; i < fotos.Count; i++)
                    {
                        var af = new AnuncioFoto();
                        af.NomeArquivo = fotos[i];
                        af.DataInc     = DateTime.Now;
                        a.AnuncioFoto.Add(af);
                    }
                }



                if (ID != null && ID > 0)
                {
                    a.ID = (int)ID;
                    bll.UpdateAndSave(a);
                    return(Json(new RetornoJsonPadrao("Anuncio alterado com sucesso.", true, a.ID)));
                }
                else
                {
                    Tuitar("A: " + a.Titulo + " U: " + UsuarioLogado_ID);
                    bll.InsertAndSave(a);
                    return(Json(new RetornoJsonPadrao("Anuncio cadastrado com sucesso.", true, a.ID)));
                }
            }
            catch (Exception ex)
            {
                return(Json(new RetornoJsonPadrao(Excecao.Trata(ex), false, null)));
            }
        }