public ActionResult AtualizaReceita(ReceitaModelAtualizar model)
        {
            try
            {
                Usuario u = (Usuario)Session["usuario"];
                ReceitaDal rd = new ReceitaDal();

                if (ModelState.IsValid
                    && u != null)
                {
                    Receita r = new Receita();
                    r.IdReceita = model.IdReceita;
                    r.Nome = model.Nome;
                    r.Valor = model.Valor;
                    r.DataRecebimento = model.DataRecebimento;
                    r.IdUsuario = u.IdUsuario;
                    rd.Update(r);

                    ViewBag.Mensagem = "A Receita " + model.Nome + ", foi atualizada com sucesso !";

                    ModelState.Clear();
                }
            }
            catch (Exception ex)
            {

                ViewBag.Mensagem = ex.Message;
            }

            CarregarReceitas();

            return View("EditarReceita");
        }
        //
        // GET: /UsuarioAutenticado/
        public Double SomaTotalReceitas(int IdUsuario)
        {
            Double Soma = 0;

            try
            {
                ReceitaDal dl = new ReceitaDal();

                List<Receita> list = dl.FindByUsuario(IdUsuario);

                foreach (Receita r in list)
                {
                    Soma = Soma + r.Valor;
                }

            }
            catch (Exception ex)
            {
               ViewBag.Mensagem = ex.Message;
            }

            return Soma;
        }
        public ReceitaModelAtualizar SelecionarReceitas(int IdReceita)
        {
            ReceitaModelAtualizar model = new ReceitaModelAtualizar();
            try
            {
                ReceitaDal rd = new ReceitaDal();

                Receita r = rd.FindById(IdReceita);

                if (r != null)
                {
                    model.IdReceita = r.IdReceita;
                    model.DataRecebimento = r.DataRecebimento;
                    model.Nome = r.Nome;
                    model.Valor = r.Valor;
                }
            }
            catch (Exception ex )
            {
                ViewBag.Mensagem = ex.Message;
            }

            return model;
        }
        public ActionResult GerarBuscaRelatorioReceita(FormCollection fomulario)
        {
            try
            {
                DateTime DataIncio = DateTime.MinValue;
                DateTime DataFim = DateTime.MinValue;
                Usuario u = (Usuario)Session["usuario"];

                if (!Request["DataIncio"].ToString().Equals(string.Empty))
                {
                    try
                    {
                        DataIncio = Convert.ToDateTime(Request["DataIncio"].ToString());
                    }
                    catch
                    {
                        ViewBag.Mensagem = "Data Inicio Invalida! ";
                    }

                }

                if (!Request["DataFim"].ToString().Equals(string.Empty))
                {
                    try
                    {
                        DataFim = Convert.ToDateTime(Request["DataFim"].ToString());
                    }
                    catch
                    {
                        ViewBag.Mensagem = "Data Final Invalida! ";
                    }
                }

                if (DataIncio > DataFim)
                {
                    throw new Exception("A Data de Incio não pode ser menor que a data Final.");
                }

                string formato = Request["formato"].ToString();

                ReceitaDal d = new ReceitaDal();
                List<Receita> Lista = d.FindByRelatorio(DataIncio, DataFim, u.IdUsuario);
                DataSetReceita ds = new DataSetReceita();
                DataTable dt = ds.RECEITA;

                foreach (Receita r in Lista)
                {
                    DataRow registro = dt.NewRow();
                    registro["CODIGO"] = r.IdReceita;
                    registro["NOME"] = r.Nome;
                    registro["DATARECEBIMENTO"] = r.DataRecebimento;
                    registro["VALOR"] = r.Valor;

                    dt.Rows.Add(registro);
                }

                RelReceita rel = new RelReceita();

                rel.SetDataSource(dt);

                Stream arquivo = null;

                switch (formato)
                {
                    case "1": //PDF
                        arquivo = rel.ExportToStream(ExportFormatType.PortableDocFormat);
                        return File(arquivo, "application/pdf", "relatorio.pdf");

                    case "2": //Word
                        arquivo = rel.ExportToStream(ExportFormatType.WordForWindows);
                        return File(arquivo, "application/msword", "relatorio");

                    case "3": //Excel
                        arquivo = rel.ExportToStream(ExportFormatType.Excel);
                        return File(arquivo, "application/excel", "relatorio");
                }
            }
            catch(Exception e)
            {

                ViewBag.Mensagem = e.Message;
            }

            return View("BuscaReceita");
        }
        public ActionResult DeletaReceita(ReceitaModelAtualizar model)
        {
            try
            {
                ReceitaDal rd = new ReceitaDal();

                if (ModelState.IsValid)
                {
                    rd.Delete(model.IdReceita);

                    ViewBag.Mensagem = "A Receita " + model.Nome + ", foi deletada com sucesso !";

                    ModelState.Clear();
                }
            }
            catch (Exception ex)
            {

                ViewBag.Mensagem = ex.Message;
            }

            CarregarReceitas();

            return View("DeletarReceita");
        }
        public void CarregarReceitas()
        {
            try
            {
                Usuario u = (Usuario)Session["usuario"];

                if( u != null)
                {
                 ReceitaDal rd = new ReceitaDal();

                 ViewBag.Receitas = new SelectList(rd.FindByUsuario(u.IdUsuario), "IdReceita", "Nome");

                }

            }
            catch (Exception ex)
            {

                ViewBag.Mensagem = ex.Message;
            }
        }
        public ActionResult CadastrarReceita(ReceitaModelCadastro model)
        {
            try
            {
                Usuario u = (Usuario)Session["usuario"];
                ReceitaDal rd = new ReceitaDal();

                if (   ModelState.IsValid
                    && u != null )
                {
                   Receita r = new Receita();

                   r.IdUsuario = u.IdUsuario;
                   r.Nome = model.Nome;
                   r.Valor = model.Valor;
                   r.DataRecebimento = model.DataRecebimento;

                   rd.Insert(r);

                   ViewBag.Mensagem = "A Receita " + model.Nome + ", foi cadastrada com sucesso !";

                   ModelState.Clear();
                }
            }
            catch (Exception ex)
            {

                ViewBag.Mensagem = ex.Message;
            }

            return View("Receita");
        }