// GET: Solicitud/Delete
        public ActionResult Delete(int id)
        {
            if (Session["usuario"] == null)
            {
                return(RedirectToAction("Login", "Sesion"));
            }

            SolicitudCEN solicitudCEN = new SolicitudCEN();
            SolicitudEN  solicitudEN  = solicitudCEN.ReadOID(id);

            Solicitud solicitud = new AssemblerSolicitud().ConvertENToModelUI(solicitudEN);

            //Cliente
            if (Session["modoAdmin"].ToString() == "false")
            {
                return(View("./VistaUsuario/DeleteCliente", solicitud));
            }

            //Admin
            if (Session["esAdmin"].ToString() == "true")
            {
                if (Session["modoAdmin"].ToString() == "false")
                {
                    Session["modoAdmin"] = "true";
                }
            }

            return(View(solicitud));
        }
        // GET: Solicitud
        public ActionResult Index(int?pag)
        {
            if (Session["usuario"] == null)
            {
                return(RedirectToAction("Login", "Sesion"));
            }
            if (Session["esAdmin"].ToString() == "false")
            {
                return(View("../NoAdministrador"));
            }
            if (Session["modoAdmin"].ToString() == "false")
            {
                Session["modoAdmin"] = "true";
            }

            SolicitudCEN      solicitudCEN  = new SolicitudCEN();
            UsuarioCEN        usuarioCEN    = new UsuarioCEN();
            IList <UsuarioEN> listaUsuarios = usuarioCEN.ReadAll(0, -1).ToList();
            ArrayList         listaNicks    = new ArrayList();

            foreach (var e in listaUsuarios)
            {
                listaNicks.Add(e.Nick);
            }

            ViewData["ListaNicks"] = listaNicks;

            ArrayList listaEstados = new ArrayList();

            listaEstados.Add("Todos");
            listaEstados.Add("Pendiente");
            listaEstados.Add("Aceptada");
            listaEstados.Add("Rechazada");
            ViewData["estados"] = listaEstados;


            //Paginacion
            int tamPag  = 10;
            int numPags = (solicitudCEN.ReadAll(0, -1).Count - 1) / tamPag;

            if (pag == null || pag < 0)
            {
                pag = 0;
            }
            else if (pag >= numPags)
            {
                pag = numPags;
            }
            ViewData["pag"]           = pag;
            ViewData["numeroPaginas"] = numPags;
            int inicio = (int)pag * tamPag;

            IList <SolicitudEN>     listaSolicitudes = solicitudCEN.ReadAll(inicio, tamPag).ToList();
            IEnumerable <Solicitud> solicitudes      = new AssemblerSolicitud().ConvertListENToModel(listaSolicitudes).ToList();

            return(View(solicitudes));
        }
        // GET: Solicitud/DetailsCliente/5
        public ActionResult DetailsCliente(int id)
        {
            if (Session["usuario"] == null)
            {
                return(RedirectToAction("Login", "Sesion"));
            }

            SolicitudCEN solicitudCEN = new SolicitudCEN();
            SolicitudEN  solicitudEN  = solicitudCEN.ReadOID(id);

            Solicitud solicitud = new AssemblerSolicitud().ConvertENToModelUI(solicitudEN);

            return(View("./VistaUsuario/DetailsCliente", solicitud));
        }
        // GET: Solicitud/Details
        public ActionResult Details(int id)
        {
            if (Session["usuario"] == null)
            {
                return(RedirectToAction("Login", "Sesion"));
            }
            if (Session["esAdmin"].ToString() == "false")
            {
                return(View("../NoAdministrador"));
            }
            if (Session["modoAdmin"].ToString() == "false")
            {
                Session["modoAdmin"] = "true";
            }

            SolicitudCEN solicitudCEN = new SolicitudCEN();
            SolicitudEN  solicitudEN  = solicitudCEN.ReadOID(id);

            Solicitud solicitud = new AssemblerSolicitud().ConvertENToModelUI(solicitudEN);

            return(View(solicitud));
        }
        // GET: Solicitud/AdministrarSolicitudes
        public ActionResult AdministrarSolicitudes(int proyectoId, int?pag)
        {
            if (Session["usuario"] == null)
            {
                return(RedirectToAction("Login", "Sesion"));
            }

            SessionInitialize();
            UsuarioCAD   usuarioCAD   = new UsuarioCAD(session);
            MensajeCAD   solicitudCAD = new MensajeCAD(session);
            SolicitudCEN solicitudCEN = new SolicitudCEN();

            UsuarioCEN usuarioCEN = new UsuarioCEN();
            UsuarioEN  usuarioEN  = usuarioCEN.ReadNick(Session["usuario"].ToString());

            ProyectoCEN proyectoCEN = new ProyectoCEN();
            ProyectoEN  proyectoEN  = proyectoCEN.ReadOID(proyectoId);


            if (proyectoEN == null)
            {
                TempData["mal"] = "No existe ningún proyecto con la id " + proyectoId;
                return(RedirectToAction("../Proyecto/ProyectosPresentados"));
            }

            ViewData["nombreProyecto"] = proyectoEN.Nombre;
            ViewData["proyectoId"]     = proyectoId;


            IList <SolicitudEN> listaSolicitudes = new List <SolicitudEN>();
            IList <SolicitudEN> aux = new List <SolicitudEN>();

            listaSolicitudes = solicitudCEN.ReadAll(0, -1);
            aux = solicitudCEN.ReadAll(0, -1);



            //Eliminamos las solicitudes que no tengan ese proyecto
            foreach (SolicitudEN s in listaSolicitudes)
            {
                if (s.ProyectoSolicitado.Id != proyectoEN.Id)
                {
                    aux.Remove(s);
                }
            }
            ViewData["filtro"] = proyectoEN.Nombre + " (Proyecto) ";



            listaSolicitudes = aux;

            //Paginacion
            int tamPag  = 10;
            int numPags = (listaSolicitudes.Count - 1) / tamPag;

            if (pag == null || pag < 0)
            {
                pag = 0;
            }
            else if (pag >= numPags)
            {
                pag = numPags;
            }

            int inicio = (int)pag * tamPag;

            numPags = (listaSolicitudes.Count - 1) / tamPag;
            if (pag == null || pag < 0)
            {
                pag = 0;
            }
            else if (pag >= numPags)
            {
                pag = numPags;
            }

            ViewData["pag"]           = pag;
            ViewData["numeroPaginas"] = numPags;

            IEnumerable <Solicitud> solicitudes = new AssemblerSolicitud().ConvertListENToModel(listaSolicitudes).ToList();

            SessionClose();
            return(View("./VistaUsuario/AdministrarSolicitudes", solicitudes));
        }
        public ActionResult FiltroUsuarioProyectoEstado(int?pag, FormCollection filtro)
        {
            if (filtro == null)
            {
                //Falta el mensajito de pagina no encontraada
                return(RedirectToAction("Index"));
            }

            SessionInitialize();
            UsuarioCAD   usuarioCAD   = new UsuarioCAD(session);
            MensajeCAD   solicitudCAD = new MensajeCAD(session);
            UsuarioCEN   usuarioCEN   = new UsuarioCEN();
            ProyectoCEN  proyectoCEN  = new ProyectoCEN();
            SolicitudCEN solicitudCEN = new SolicitudCEN();

            ArrayList listaEstados = new ArrayList();

            listaEstados.Add("Todos");
            listaEstados.Add("Pendiente");
            listaEstados.Add("Aceptada");
            listaEstados.Add("Rechazada");
            ViewData["estados"] = listaEstados;

            IList <SolicitudEN> listaSolicitudes = new List <SolicitudEN>();
            IList <SolicitudEN> aux = new List <SolicitudEN>();

            listaSolicitudes = solicitudCEN.ReadAll(0, -1);
            aux = solicitudCEN.ReadAll(0, -1);

            if (filtro["proyecto"] != "")
            {
                //Optenemos el Id del proyecto por el que queremos filtrar
                ProyectoEN proyectoEN = proyectoCEN.ReadNombre(filtro["proyecto"]);
                if (proyectoEN == null)
                {
                    TempData["mal"] = "No existe ningún proyecto de nombre " + filtro["proyecto"];
                    return(RedirectToAction("Index"));
                }
                //Eliminamos las solicitudes que no tengan ese proyecto
                foreach (SolicitudEN s in listaSolicitudes)
                {
                    if (s.ProyectoSolicitado.Id != proyectoEN.Id)
                    {
                        aux.Remove(s);
                    }
                }
                ViewData["filtro"] = filtro["proyecto"] + " (Proyecto) ";
            }

            if (filtro["usuario"] != "")
            {
                //Optenemos el Id del usuario por el que queremos filtrar
                UsuarioEN usuarioEN = usuarioCEN.ReadNick(filtro["usuario"]);
                //Eliminamos las solicitudes que no tengan ese usuario
                if (usuarioEN == null)
                {
                    TempData["mal"] = "No existe ningún usuario con el Nick " + filtro["usuario"];
                    return(RedirectToAction("Index"));
                }
                foreach (SolicitudEN s in listaSolicitudes)
                {
                    if (s.UsuarioSolicitante.Id != usuarioEN.Id)
                    {
                        aux.Remove(s);
                    }
                }
                ViewData["filtro"] = ViewData["filtro"] + filtro["usuario"] + " (Usuario) ";
            }

            if (filtro["estado"] != "" && filtro["estado"] != "Todos")
            {
                //Eliminamos las solicitudes que no tengan ese estado
                foreach (SolicitudEN s in listaSolicitudes)
                {
                    if (s.Estado.ToString() != filtro["estado"])
                    {
                        aux.Remove(s);
                    }
                }
                ViewData["filtro"] = ViewData["filtro"] + filtro["estado"] + " (Estado) ";
            }
            if (listaSolicitudes.Count <= 0)
            {
                TempData["mal"] = "No hay resultados con esos filtros";
            }

            listaSolicitudes = aux;

            //Paginacion
            int tamPag  = 10;
            int numPags = (listaSolicitudes.Count - 1) / tamPag;

            if (pag == null || pag < 0)
            {
                pag = 0;
            }
            else if (pag >= numPags)
            {
                pag = numPags;
            }

            int inicio = (int)pag * tamPag;

            numPags = (listaSolicitudes.Count - 1) / tamPag;
            if (pag == null || pag < 0)
            {
                pag = 0;
            }
            else if (pag >= numPags)
            {
                pag = numPags;
            }

            ViewData["pag"]           = pag;
            ViewData["numeroPaginas"] = numPags;

            IEnumerable <Solicitud> solicitudes = new AssemblerSolicitud().ConvertListENToModel(listaSolicitudes).ToList();

            SessionClose();
            return(View(solicitudes));
        }