public ActionResult ListarEventosDeOrganizador(string nombreEvento = "", string nombreOrganizador = "")
        {
            if (!this.esOrganizador() && !this.esAdmin())
            {
                return(RedirectToAction("Logout", "Home", new { mensaje = @"Usted no tiene los permisos necesarios 
                                                            para utilizar el recurso.
                                                            Por favor inicie sesión con las credenciales adecuadas" }));
            }

            EventoServicioContratadoViewModel vm = null;

            if (this.esOrganizador())//si el rol del usuario autenticado es Organizador
            {
                vm = new EventoServicioContratadoViewModel();
                using (GestionEventosContext db = new GestionEventosContext())
                {
                    string org = Session["OrganizadorLogueado"].ToString();
                    //cargo los eventos asociados al Organizador autenticado
                    vm.Eventos = db.Eventos.Include("Organizador").Include("TipoEvento").Where(p => p.Organizador.NombreOrganizador == org).ToList();
                    if (nombreEvento != "")
                    {//cuando un evento es seleccionado en la vista se pasa el nombre del evento por parametro para cargar sus ServicioContratado
                        ViewBag.NombreEvento    = nombreEvento;
                        vm.ServiciosContratados = db.ServicioContratados.Where(p => p.NombreEvento == nombreEvento).ToList();
                    }
                    else
                    {
                        ViewBag.NombreEvento = null;
                    }
                }
            }
            if (this.esAdmin())//si el rol del usuario autenticado es Administrador
            {
                vm = new EventoServicioContratadoViewModel();
                using (GestionEventosContext db = new GestionEventosContext())
                {
                    //cargo la lista de Organizadores
                    vm.Organizadores = db.Organizadores.ToList();
                    if (nombreOrganizador != "")
                    {//al seleccionar un Organizador en la vista se pasa su nombre por parametro para cargar los eventos asociados al Organizador
                        ViewBag.NombreOrganizador = nombreOrganizador;
                        vm.Eventos = db.Eventos.Where(p => p.Organizador.NombreOrganizador == nombreOrganizador).ToList();
                    }
                    else
                    {
                        ViewBag.NombreOrganizador = null;
                    }
                    if (nombreEvento != "")
                    {//cuando un evento es seleccionado en la vista se pasa el nombre del evento por parametro para cargar sus ServicioContratado
                        ViewBag.NombreEvento    = nombreEvento;
                        vm.ServiciosContratados = db.ServicioContratados.Where(p => p.NombreEvento == nombreEvento).ToList();
                    }
                    else
                    {
                        ViewBag.NombreEvento = null;
                    }
                }
            }

            return(View(vm));
        }
 public ActionResult CalificarProveedor(string nombreEvento = "")
 {
     if (!this.esOrganizador())
     {
         return(RedirectToAction("Logout", "Home", new { mensaje = @"Usted no tiene los permisos necesarios 
                                                     para utilizar el recurso.
                                                     Por favor inicie sesión con las credenciales adecuadas" }));
     }
     else
     {
         EventoServicioContratadoViewModel vm = new EventoServicioContratadoViewModel();
         using (GestionEventosContext db = new GestionEventosContext())
         {
             string org = Session["OrganizadorLogueado"].ToString();
             //cargo los eventos realizados asociados al Organizador autenticado
             vm.Eventos = db.Eventos.Include("Organizador").Include("TipoEvento").Where(p => p.Fecha < DateTime.Now).Where(p => p.Realizado).Where(p => p.Organizador.NombreOrganizador == org).ToList();
             if (nombreEvento != "")
             {//cuando un evento es seleccionado en la vista se pasa el nombre del evento por parametro para cargar sus ServicioContratado
                 ViewBag.NombreEvento    = nombreEvento;
                 vm.ServiciosContratados = db.ServicioContratados.Where(p => p.NombreEvento == nombreEvento).ToList();
             }
             else
             {
                 ViewBag.NombreEvento = null;
             }
         }
         return(View(vm));
     }
 }
        public ActionResult EventosEntreFechas(DateTime?fechaInicial = null, DateTime?fechaFinal = null)
        {
            if (!this.esAdmin())
            {
                return(RedirectToAction("Logout", "Home", new { mensaje = @"Usted no tiene los permisos necesarios 
                                                            para utilizar el recurso.
                                                            Por favor inicie sesión con las credenciales adecuadas" }));
            }
            else
            {
                //Si la fecha inicial es mayor a la final devuelvo un error
                if (fechaInicial > fechaFinal)
                {
                    ModelState.AddModelError("", "La fecha incial debe ser menor a la fecha final.");
                }

                EventoServicioContratadoViewModel vm = new EventoServicioContratadoViewModel();
                using (GestionEventosContext db = new GestionEventosContext())
                {
                    if (ModelState.IsValid)
                    {
                        bool evaluarOtrosCasos = true;
                        if (fechaInicial != null & fechaFinal != null) //si las dos fechas fueron ingresadas
                        {
                            evaluarOtrosCasos = false;                 //no evaluo los demas casos
                            vm.Eventos        = db.Eventos.Include("Organizador").Include("TipoEvento").Where(p => p.Fecha >= fechaInicial).Where(p => p.Fecha <= fechaFinal).ToList();
                        }
                        if (evaluarOtrosCasos)//compruebo si fue ingresada alguna de las fechas o ninguna
                        {
                            if (fechaInicial != null)
                            {
                                vm.Eventos = db.Eventos.Include("Organizador").Include("TipoEvento").Where(p => p.Fecha >= fechaInicial).ToList();
                            }

                            if (fechaFinal != null)
                            {
                                vm.Eventos = db.Eventos.Include("Organizador").Include("TipoEvento").Where(p => p.Fecha <= fechaFinal).ToList();
                            }
                            if (fechaFinal == null && fechaInicial == null)
                            {
                                vm.Eventos = db.Eventos.Include("Organizador").Include("TipoEvento").ToList();
                            }
                        }
                    }
                }
                return(View(vm));
            }
        }