// GET: Monedas/SeleccionRango
        public ActionResult SeleccionRango()
        {
            //Precargo valores necesario para crear una categoria
            ReporteFeha reportefecha = new ReporteFeha();

            reportefecha.FecInicial = DateTime.Now;
            reportefecha.FecFinal   = DateTime.Now;
            return(PartialView("_ReporteFecha", reportefecha));
        }
        // GET: Inicio
        public ActionResult Index(int?id, int?rango)
        {
            Dashboard miDashboard = new Dashboard();
            DateTime  Fecha, FechInicial, FechFinal;

            Fecha = DateTime.Today;
            bool FiltrarxCuenta            = true;
            List <tmovimiento> Movimientos = new List <tmovimiento>();

            try
            {
                //Actulizo valores de los filtros
                if ((id != null && Sesion.Cuentas.Any(c => c.Id == id)) || id == 0)
                {
                    Sesion.CuentaFiltro = Convert.ToInt16(id);
                }
                if (rango == null)
                {
                    rango = Sesion.RangoFiltro;
                }


                Sesion.RangoFiltro = Convert.ToInt16(rango);
                if (Sesion.CuentaFiltro == 0)
                {
                    FiltrarxCuenta       = false;
                    ViewBag.CuentaFiltro = 0;
                }
                else
                {
                    ViewBag.CuentaFiltro = Sesion.CuentaFiltro;
                }
                // Filtro por fecha 1= Dia 2=Semana 3=Mes 4=Ano 5=Rango
                switch (rango)
                {
                case 1:
                {
                    ViewBag.Rango       = "Movimientos del día ";
                    ViewBag.RangoFiltro = Fecha.ToString("dd/MM/yyyy");
                    rango = 1;         // Se valida el parametro
                    if (FiltrarxCuenta)
                    {
                        Movimientos = db.tmovimientoes.Where(m => m.Id_Usuario == Sesion.Usuario.Id &&
                                                             m.Fecha.Day == Fecha.Day &&
                                                             m.Fecha.Month == Fecha.Month &&
                                                             m.Fecha.Year == Fecha.Year &&
                                                             m.Id_Cuenta == Sesion.CuentaFiltro).Include(c => c.tcuenta).ToList();
                    }
                    else
                    {
                        Movimientos = db.tmovimientoes.Where(m => m.Id_Usuario == Sesion.Usuario.Id &&
                                                             m.Fecha.Day == Fecha.Day &&
                                                             m.Fecha.Month == Fecha.Month &&
                                                             m.Fecha.Year == Fecha.Year).Include(c => c.tcuenta).ToList();
                    }
                    break;
                }

                case 2:
                {
                    if (TempData.ContainsKey("FiltroFecha"))
                    {
                        ViewBag.Rango = "Rango de Fechas";
                        ReporteFeha rangoFeha = (ReporteFeha)TempData["FiltroFecha"];
                        FechInicial = rangoFeha.FecFinal;
                        FechFinal   = rangoFeha.FecFinal.AddHours(23.9999);
                    }
                    else
                    {
                        ViewBag.Rango = "Semana Actual";
                        // lastMonday is always the Monday before nextSunday. When date is a
                        // Sunday, lastMonday will be tomorrow.
                        int offset = Fecha.DayOfWeek - DayOfWeek.Monday;
                        FechInicial = Fecha.AddDays(-offset);
                        FechFinal   = Fecha.AddDays(7 - (int)Fecha.DayOfWeek).AddHours(23.9999);
                    }
                    ViewBag.RangoFiltro = FechInicial.ToString("dd/MM/yyyy") + " hasta " + FechFinal.ToString("dd/MM/yyyy");
                    if (FiltrarxCuenta)
                    {
                        Movimientos = db.tmovimientoes.Where(m => m.Id_Usuario == Sesion.Usuario.Id &&
                                                             m.Fecha >= FechInicial && m.Fecha <= FechFinal && m.Id_Cuenta == Sesion.CuentaFiltro).Include(c => c.tcuenta).ToList();
                    }
                    else
                    {
                        Movimientos = db.tmovimientoes.Where(m => m.Id_Usuario == Sesion.Usuario.Id &&
                                                             m.Fecha >= FechInicial && m.Fecha <= FechFinal).Include(c => c.tcuenta).ToList();
                    }

                    break;
                }

                case 4:
                {
                    ViewBag.Rango       = "Año Actual";
                    ViewBag.RangoFiltro = Fecha.Year;
                    if (FiltrarxCuenta)
                    {
                        Movimientos = db.tmovimientoes.Where(m => m.Id_Usuario == Sesion.Usuario.Id &&
                                                             m.Fecha.Year == Fecha.Year &&
                                                             m.Id_Cuenta == Sesion.CuentaFiltro).Include(c => c.tcuenta).ToList();
                    }
                    else
                    {
                        Movimientos = db.tmovimientoes.Where(m => m.Id_Usuario == Sesion.Usuario.Id &&
                                                             m.Fecha.Year == Fecha.Year).Include(c => c.tcuenta).ToList();
                    }
                    break;
                }

                case 5:
                {
                    ViewBag.Rango       = "Lista";
                    ViewBag.RangoFiltro = "Todos los movimientos";
                    if (FiltrarxCuenta)
                    {
                        Movimientos = db.tmovimientoes.Where(m => m.Id_Usuario == Sesion.Usuario.Id &&
                                                             m.Id_Cuenta == Sesion.CuentaFiltro).Include(c => c.tcuenta).ToList();
                    }
                    else
                    {
                        Movimientos = db.tmovimientoes.Where(m => m.Id_Usuario == Sesion.Usuario.Id).Include(c => c.tcuenta).ToList();
                    }
                    break;
                }

                default:
                {
                    ViewBag.Rango       = "Mes Actual";
                    ViewBag.RangoFiltro = Fecha.Month + " del " + Fecha.Year;
                    if (FiltrarxCuenta)
                    {
                        Movimientos = db.tmovimientoes.Where(m => m.Id_Usuario == Sesion.Usuario.Id &&
                                                             m.Fecha.Month == Fecha.Month &&
                                                             m.Fecha.Year == Fecha.Year &&
                                                             m.Id_Cuenta == Sesion.CuentaFiltro).Include(c => c.tcuenta).ToList();
                    }
                    else
                    {
                        Movimientos = db.tmovimientoes.Where(m => m.Id_Usuario == Sesion.Usuario.Id &&
                                                             m.Fecha.Month == Fecha.Month &&
                                                             m.Fecha.Year == Fecha.Year).Include(c => c.tcuenta).ToList();
                    }
                    break;
                }
                }
                miDashboard.Categorias  = Movimientos.Select(c => c.tcategoria).Distinct().ToList();
                miDashboard.Monedas     = Movimientos.Select(c => c.tcuenta.tmoneda).Distinct().ToList();
                miDashboard.Movimientos = Movimientos.OrderByDescending(c => c.Id).ToList();
                miDashboard.Cuentas     = Movimientos.Select(c => c.tcuenta).Distinct().ToList();
            }
            catch
            {
                AddMsgWeb("Error crítico al acceder a los datos", ToastType.Error);
            }
            return(View(miDashboard));
        }
 public ActionResult SeleccionRango([Bind(Include = "FecInicial,FecFinal")] ReporteFeha reporteFeha)
 {
     TempData["FiltroFecha"] = reporteFeha;
     return(RedirectToAction("Index", "Inicio", new { id = Sesion.CuentaFiltro, rango = 2 }));
 }