public ActionResult LogOn(string email, string senha, string returnUrl)
        {
            try
            {
                IntegranteBll integranteBll = new IntegranteBll();

                Integrante integrante = integranteBll.LogOn(email, senha);

                if (integrante != null)
                {
                    FormsAuthentication.SetAuthCookie(email, false);

                    if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")
                        && !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))
                    {
                        return Redirect(returnUrl);
                    }
                    else
                    {
                        return RedirectToAction("Index", "Mensalidades");
                    }
                }
                else
                {
                    return View().ComMensagem(Resources.Geral.EmailSenhaInvalidos, TipoMensagem.Aviso);
                }
            }
            catch (Exception exception)
            {
                LogBll.GravarErro(exception, "LogOn");
                return View().ComMensagem(Resources.Geral.ContateAdministrador, TipoMensagem.Erro);
            }
        }
        /// <summary>
        /// Insere as mensalidades do ano no banco
        /// </summary>
        /// <param name="mensalidades"></param>
        /// <returns></returns>
        public IEnumerable <MensalidadeIntegrante> CriarMensalidadesTodosIntegrantesCalendario(Calendario calendario)
        {
            IList <MensalidadeIntegrante> mensalidades = new List <MensalidadeIntegrante>();
            IQueryable <Integrante>       integrantes  = IntegranteBll.RetornarIntegrantesAtivos();

            //Percorre todos integrantes ativos
            foreach (Integrante integrante in integrantes)
            {
                int mesesAno = 12;

                //
                for (int i = 1; i <= mesesAno; i++)
                {
                    if (!VerificarExisteMensalidadeIntegranteCalendario(integrante.ID, calendario.ID, i))
                    {
                        MensalidadeIntegrante mensalidade = new MensalidadeIntegrante();

                        mensalidade.Mes          = i;
                        mensalidade.IntegranteID = integrante.ID;
                        mensalidade.CalendarioID = calendario.ID;
                        mensalidades.Add(mensalidade);
                    }
                }
            }

            db.MensalidadesIntegrante.AddRange(mensalidades);
            db.SaveChanges();

            return(mensalidades);
        }
        // GET: Integrantes
        public ActionResult Index(string sortOrder, string filtroAtual,
                                    string filtro, int? page,
                                    string ativoFiltro,
                                    string ativoFiltroAtual)
        {
            try
            {
                ViewBag.CurrentSort = sortOrder;
                ViewBag.NomeSort = string.IsNullOrEmpty(sortOrder) ? "nome_desc" : "";

                if (filtro != null)
                {
                    page = 1;
                }
                else
                {
                    filtro = filtroAtual;
                }

                if (ativoFiltro != null)
                {
                    page = 1;
                }
                else
                {
                    ativoFiltro = ativoFiltroAtual;
                }

                ViewBag.FiltroAtual = filtro;

                IntegranteBll integranteBll = new IntegranteBll();

                return View("~/Views/Integrantes/Index.cshtml", integranteBll.BuscarIntegrantes(page, filtro, sortOrder, ativoFiltro, 10));
            }
            catch (Exception exception)
            {
                LogBll.GravarErro(exception, User.Identity.Name);
                return View("~/Views/Integrantes/Index.cshtml").ComMensagem(Resources.Geral.ContateAdministrador, TipoMensagem.Erro);
            }
        }
        public ActionResult Integrante([Bind(Include = "ID,Nome,DataNascimento,Telefone,Email,Ativo,Senha")] Integrante integrante)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    IntegranteBll integranteBll = new IntegranteBll();

                    if (integrante.ID > 0)
                    {
                        if (IntegranteBll.VericarEmailExistente(integrante, TipoOperacao.Update))
                        {
                            return View().ComMensagem(Resources.Integrantes.IntegranteExistente, TipoMensagem.Aviso);
                        }
                        else
                        {
                            integranteBll.Atualizar(integrante);

                            MensalidadeIntegranteBll mensalidadeIntegranteBll = new MensalidadeIntegranteBll();
                            mensalidadeIntegranteBll.CriarMensalidadesIntegrante(integrante);

                            LogBll.GravarInformacao(string.Format(Resources.Integrantes.AtualizacaoLog, integrante.ID), "", User.Identity.Name);
                            return RedirectToAction("Index").ComMensagem(Resources.Integrantes.IntegranteSalvo, TipoMensagem.Sucesso);
                        }
                    }
                    else
                    {
                        if (IntegranteBll.VericarEmailExistente(integrante, TipoOperacao.Create))
                        {
                            return View().ComMensagem(Resources.Integrantes.IntegranteExistente, TipoMensagem.Aviso);
                        }
                        else
                        {
                            integranteBll.Criar(integrante);
                            LogBll.GravarInformacao(string.Format(Resources.Calendario.CriacaoLog, integrante.ID), "", User.Identity.Name);

                            MensalidadeIntegranteBll mensalidadeIntegranteBll = new MensalidadeIntegranteBll();
                            mensalidadeIntegranteBll.CriarMensalidadesIntegrante(integrante);

                            return RedirectToAction("Index").ComMensagem(Resources.Integrantes.IntegranteSalvo, TipoMensagem.Sucesso);
                        }
                    }
                }

                return View(integrante);
            }
            catch(Exception exception)
            {
                LogBll.GravarErro(exception, User.Identity.Name);
                return RedirectToAction("Index").ComMensagem(Resources.Geral.ContateAdministrador, TipoMensagem.Erro);
            }
        }