public ActionResult BaixarMensalidades([Bind(Include = "ID,Mes,CalendarioID,IntegranteID,DataPagamento")] MensalidadeIntegrante mensalidadeIntegrante)
        {
            try
            {
                MensalidadeIntegranteBll mensalidadeIntegranteBll = new MensalidadeIntegranteBll();

                mensalidadeIntegranteBll.Atualizar(mensalidadeIntegrante);

                LogBll.GravarInformacao(string.Format(Resources.Mensalidades.SalvaLog, mensalidadeIntegrante.ID), string.Empty, User.Identity.Name);
                return RedirectToAction("Mensalidade", "Mensalidades",
                    new { CalendarioID = mensalidadeIntegrante.CalendarioID, IntegranteID = mensalidadeIntegrante.IntegranteID })
                    .ComMensagem(Resources.Mensalidades.MensalidadeSalva, TipoMensagem.Sucesso);
            }
            catch(Exception exception)
            {
                LogBll.GravarErro(exception, User.Identity.Name);
                return RedirectToAction("Index", "Mensalidades").ComMensagem(Resources.Geral.ContateAdministrador, TipoMensagem.Erro);
            }
        }
        /// <summary>
        /// Criar mensalidades para todos os integrantes que ainda não possuem
        /// </summary>
        /// <param name="calendarioID"></param>
        public void CriarMensalidadesIntegrante(Integrante integrante)
        {
            IList <MensalidadeIntegrante> mensalidades    = new List <MensalidadeIntegrante>();
            IQueryable <Calendario>       calendarios     = CalendarioBll.ListarCalendarios();
            MensalidadeIntegranteBll      mensalidadesBll = new MensalidadeIntegranteBll();

            foreach (Calendario calendario in calendarios)
            {
                int mesesAno = 12;

                for (int i = 1; i <= mesesAno; 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();
        }
        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);
            }
        }
        /// <summary>
        /// Criar mensalidades para todos os integrantes que ainda não possuem
        /// </summary>
        /// <param name="calendarioID"></param>
        public void CriarMensalidadesIntegrante(Integrante integrante)
        {
            IList<MensalidadeIntegrante> mensalidades = new List<MensalidadeIntegrante>();
            IQueryable<Calendario> calendarios = CalendarioBll.ListarCalendarios();
            MensalidadeIntegranteBll mensalidadesBll = new MensalidadeIntegranteBll();

            foreach (Calendario calendario in calendarios)
            {
                int mesesAno = 12;

                for (int i = 1; i <= mesesAno; 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();
        }