public IActionResult GerenciarTempoSocio(int id)
        {
            PessoaViewModel pes = new cl.Controllers.PessoaController().BuscarPessoaPorId(id, false);

            ViewBag.Id = id;
            if (pes != null)
            {
                ViewBag.Nome = pes.Nome;
            }

            return(View());
        }
        public JsonResult GravarSociedadeTempo(IFormCollection form)
        {
            DateTime dataInicio = DateTime.Now;
            DateTime?dataFim = null;
            int      id, ret, pessoaId = 0;

            dataInicio = Convert.ToDateTime(form["DataInicio"]);
            if (form["DataFim"] != "")
            {
                dataFim = Convert.ToDateTime(form["DataFim"]);
            }
            id       = Convert.ToInt32(form["Id"]);
            pessoaId = Convert.ToInt32(form["PessoaId"]);
            ret      = 0;
            if (dataInicio != null && dataInicio < DateTime.Now)
            {
                SociedadeTempoViewModel ST = new SociedadeTempoViewModel()
                {
                    DataInicio = dataInicio,
                    DataFim    = null,
                    PessoaId   = pessoaId,
                };
                if (dataFim != null)
                {
                    ST.DataFim = dataFim;
                    if (dataFim < dataInicio)
                    {
                        return(Json("A data de inicio não deve ser maior que a data de encerramento"));
                    }
                }
                ret = new cl.Controllers.PessoaController().Gravar(ST);
                if (ret == -1)
                {
                    return(Json("Ouve um Problema com a conexão com o servidor!"));
                }
                if (ret == -99)
                {
                    return(Json("Ouve um problema! Verifique se existe um periodo aberto antes de adicionar um novo"));
                }
                else
                {
                    return(Json("Gravado com sucesso"));
                }
            }

            return(Json("Data de início não pode ser vazia ou maior que a data atual"));
        }
        public IActionResult Autenticar(IFormCollection form)
        {
            cl.Controllers.PessoaController pessoa = new cl.Controllers.PessoaController();
            var u = pessoa.Autenticar(form["Email"], CalculateMD5Hash(form["Senha"]));

            if (u != null)
            {
                CookieOptions ckOptions = new CookieOptions();
                ckOptions.Expires = DateTime.Now.AddDays(30);
                Response.Cookies.Append("id", u.Id.ToString(), ckOptions);
                Response.Cookies.Append("email", form["Email"], ckOptions);
                Response.Cookies.Append("senha", form["Senha"], ckOptions);
                Response.Cookies.Append("nome", u.Nome, ckOptions);

                return(Json(u));
            }
            else
            {
                return(Json(""));
            }
        }
        public JsonResult AlterarSenha(IFormCollection form)
        {
            string email     = form["email"];
            string senha     = form["senha"];
            string novaSenha = form["novaSenha"];
            string result    = "";

            cl.Controllers.PessoaController pessoa = new cl.Controllers.PessoaController();
            var u = pessoa.Autenticar(email, CalculateMD5Hash(senha));

            if (u != null)
            {
                if (novaSenha.Length > 8)
                {
                    return(Json("Sua Senha é grande ou curta demais. A senha deve ter entre 4 e 8 caracteres."));
                }
                else
                {
                    List <string> emails = new List <string>();
                    emails.Add(email);
                    result = CalculateMD5Hash(novaSenha);
                    string assunto = "Sua nova senha para acesso ao sistema da A.V.R.A.S";
                    string texto   = " Agora você pode acessar o sistema da A.V.R.A.S de qualquer lugar. Verifique suas mensalidades, compras no bar e fique por sabendo dos aniversariantes do mês para não se esquecer de dar o parabéns. Sua senha para acesso é: " + result;
                    EnviarEmail(u.Nome, emails, assunto, texto);

                    Response.Cookies.Delete("email");
                    Response.Cookies.Delete("nome");
                    Response.Cookies.Delete("senha");
                    Response.Cookies.Delete("id");


                    return(Json(new PessoaDAO().TrocarSenha(email, CalculateMD5Hash(senha), result)));
                }
            }
            else
            {
                return(Json("Usuario ou senha incorretos"));
            }
        }
        public JsonResult BuscarUsuarios(int tipo)
        {
            List <PessoaViewModel> pessoa = new cl.Controllers.PessoaController().BuscarUsuarios(tipo, true); /*váriavel boolean traz ou não o endereço*/

            return(Json(pessoa));
        }
        public JsonResult Gravar(IFormCollection form)
        {
            string     Cpf, Nome, Telefone, Email, Senha, Observacoes, Cep, Cidade, Rua, Bairro, Complemento;
            byte       Socio, Jogador, Isento;
            int        PendenciaId, Id, Numero;
            DateTime   DataNascimento;
            int        resultado;
            List <int> Erros = new List <int>();

            /*
             *   Validações de campos de formulário
             *   Retorna True se for válido
             */
            Id = ValidaId(form["Id"]);
            if (!ValidaCpf(form["Cpf"], out Cpf))
            {
                Erros.Add(-10);
            }
            if (!ValidaNome(form["nome"], out Nome))
            {
                Erros.Add(-10);
            }
            if (!ValidaDataNascimento(form["DataNascimento"], out DataNascimento))
            {
                Erros.Add(-10);
            }
            if (!ValidaTelefone(form["Telefone"], out Telefone))
            {
                Erros.Add(-10);
            }
            if (!ValidaEmail(form["Email"], out Email))
            {
                Erros.Add(-10);
            }
            ValidaSocio(form["Socio"], out Socio);
            ValidaJogador(form["Jogador"], out Jogador);
            ValidaIsento(form["Isento"], out Isento);
            if (!ValidaObservacoes(form["Observacoes"], out Observacoes))
            {
                Erros.Add(-10);
            }
            if (!ValidaPendencia(form["PendenciaId"], out PendenciaId))
            {
                Erros.Add(-10);
            }
            if (!ValidaCep(form["Cep"], out Cep))
            {
                Erros.Add(-10);
            }
            if (!ValidaCidade(form["Cidade"], out Cidade))
            {
                Erros.Add(-10);
            }
            if (!ValidaBairro(form["Bairro"], out Bairro))
            {
                Erros.Add(-10);
            }
            if (!ValidaRua(form["Rua"], out Rua))
            {
                Erros.Add(-10);
            }
            if (!ValidaNumero(form["Numero"], out Numero))
            {
                Erros.Add(-10);
            }
            if (!ValidaComplemento(form["Complemento"], out Complemento))
            {
                Erros.Add(-10);
            }
            if ((Erros.Count == 0) || (Erros == null))
            {
                EnderecoViewModel endereco = new EnderecoViewModel()
                {
                    PessoaId    = Id,
                    Cep         = Cep,
                    Cidade      = Cidade,
                    Bairro      = Bairro,
                    Rua         = Rua,
                    Numero      = Numero,
                    Complemento = Complemento,
                };
                PessoaViewModel pessoa = new PessoaViewModel()
                {
                    Id             = Id,
                    Nome           = Nome,
                    Cpf            = Cpf,
                    DataNascimento = DataNascimento,
                    Telefone       = Telefone,
                    Email          = Email,
                    Socio          = Socio,
                    Jogador        = Jogador,
                    Isento         = Isento,
                    PendenciaId    = PendenciaId,
                    Endereco       = endereco,
                };
                if (Id == 0)
                {
                    Senha        = CriarSenha(Nome, Email); // Envia o email para o usuario depois de criar a Senha;
                    pessoa.Senha = Senha;
                }
                int res = new cl.Controllers.PessoaController().Gravar(pessoa);
                if (res > 0)
                {
                    Erros.Add(100);
                }
                else
                {
                    Erros.Add(res);
                }
            }
            var retorno = new
            {
                Erros
            };

            return(Json(retorno));
        }
        public JsonResult ExcluirSociedadeTempo(int id)
        {
            int ret = new cl.Controllers.PessoaController().ExcluirSociedadeTempo(id);

            return(Json(ret == 0 ? "Não é possível excluir um período em aberto. Feche o Periodo adicionando uma data de fim e depois o exclua." : "Excluido com sucesso!"));
        }
        public JsonResult BuscarSociedadeTempo(int id)
        {
            List <SociedadeTempoViewModel> ret = new cl.Controllers.PessoaController().BuscarSociedadeTempo(id);

            return(Json(ret));
        }