public async Task<ActionResult> Nuevo([Bind(Include = "id,nombre,subSelect,color")] LineasForm lineas)
        {
            if (ModelState.IsValid)
            {
                Lineas nuevaL = new Lineas();
                nuevaL.nombre = lineas.nombre;
                if (String.IsNullOrEmpty(lineas.color))
                {

                    lineas.color = "#d450b7";
                }
                else {
                    nuevaL.color = lineas.color;
                }
               
                db.Lineas.Add(nuevaL);
                await db.SaveChangesAsync();

                List<Subestaciones_Linea> sub_li = new List<Subestaciones_Linea>();

                foreach(var e in lineas.subSelect){
                    Subestaciones_Linea ne = new Subestaciones_Linea();
                    ne.id_linea = nuevaL.id;
                    ne.id_subestacion = e;
                    sub_li.Add(ne);                
                }

                db.Subestaciones_Linea.AddRange(sub_li);
                await db.SaveChangesAsync();

                Historial nuevo = new Historial("Creó", User.Identity.GetUserId(), "Lineas", lineas.id, lineas.nombre, Request.UserHostAddress);
                TempData["Mensaje"] = "Línea creada correctamente.";
                return RedirectToAction("Index");
            }

            TempData["Mensaje"] = "Error al crear la Línea.";
            return View(lineas);
        }
        public async Task<ActionResult> Editar(string id)
        {
            LineasForm lineas = await new LineasForm().FindId(id);
            if (lineas == null)
            {
                return HttpNotFound();
            }

            bool comprobar = new Lineas().ComprobarLinea(id,User.Identity.GetUserId());

            if(!comprobar){

                TempData["MensajeAP"] = "Prohibido el acceso a esta Línea con tus credenciales";
                return RedirectToAction("Index", "Acceso");
                //throw new HttpException(404,"No tiene permisos");
            }
            return View(lineas);
        }
        // POST: Lineas/Eliminar/5
        public async Task<ActionResult> Eliminar(string id)
        {
            Lineas lineas = await db.Lineas.FindAsync(id);
            if (lineas == null)
            {
                return HttpNotFound();
            }

            bool comprobar = new Lineas().ComprobarLinea(lineas.id, User.Identity.GetUserId());
            if (!comprobar)
            {
                TempData["MensajeAP"] = "No tiene credenciales para realizar esta operación.";
                return RedirectToAction("Index", "Acceso");
            }

            db.Lineas.Remove(lineas);
            await db.SaveChangesAsync();
            bool el = new Ficheros().EliminarDirectorio(3, id);
            Historial nuevo = new Historial("Eliminó", User.Identity.GetUserId(), "Lineas", lineas.id, lineas.nombre, Request.UserHostAddress);
            TempData["Mensaje"] = "Líneas eliminada correctamente.";
            return RedirectToAction("Index");
        }
        public async Task<ActionResult> EliminarFichero(string id)
        {
            Lineas_Documentos eliminar = db.Lineas_Documentos.SingleOrDefault(m => m.id == id);
            bool comprobar = new Lineas().ComprobarLinea(eliminar.linea_id, User.Identity.GetUserId());
            if (!comprobar)
            {
                TempData["MensajeAP"] = "No tiene credenciales para realizar esta operación.";
                return RedirectToAction("Index", "Acceso");
                //throw new HttpException(401, "No tiene permisos");
            }

            string id_r = await new Ficheros().EliminarFicheros(id, 3);

            TempData["Mensaje"] = "Documento eliminado correctamente.";
            return RedirectToAction("Editar", "Lineas", new { id = id_r });
        }
        public async Task<ActionResult> Ficheros(string id)
        {
            bool comprobar = new Lineas().ComprobarLinea(id, User.Identity.GetUserId());
            if (!comprobar)
            {
                TempData["MensajeAP"] = "No tiene credenciales para realizar esta operación.";
                return RedirectToAction("Index", "Acceso");
                //throw new HttpException(401, "No tiene permisos");
            }

            Ficheros nuevo = new Ficheros();

            await nuevo.SubirFicheros(Request.Files, id, "Lineas", "Ficheros", 3);

            return RedirectToAction("Editar", "Lineas", new { id = id });
        }
        public async Task<ActionResult> Editar([Bind(Include = "id,nombre,subSelect,color")] LineasForm lineas)
        {

            bool comprobar = new Lineas().ComprobarLinea(lineas.id, User.Identity.GetUserId());
            if (!comprobar)
            {
                TempData["MensajeAP"] = "Prohibido el acceso a esta Línea con tus credenciales";
                return RedirectToAction("Index", "Acceso");
                //throw new HttpException(401, "No tiene permisos");
            }


            if (ModelState.IsValid)
            {
                Lineas editarL = new Lineas();
                editarL.id = lineas.id;
                editarL.color = lineas.color;
                editarL.nombre = lineas.nombre;
                db.Entry(editarL).State = EntityState.Modified;
                await db.SaveChangesAsync();

                var listSub_Li = db.Subestaciones_Linea.Where(m => m.id_linea == editarL.id).ToList();

                if (listSub_Li.Count > 0) {
                    db.Subestaciones_Linea.RemoveRange(listSub_Li);
                    await db.SaveChangesAsync();
                }


                List<Subestaciones_Linea> sub_li = new List<Subestaciones_Linea>();

                if (lineas.subSelect != null)
                {
                    foreach (var e in lineas.subSelect)
                    {
                        Subestaciones_Linea ne = new Subestaciones_Linea();
                        ne.id_linea = editarL.id;
                        ne.id_subestacion = e;
                        sub_li.Add(ne);
                    }
                }
                db.Subestaciones_Linea.AddRange(sub_li);
                await db.SaveChangesAsync();

                Historial nuevo = new Historial("Editó", User.Identity.GetUserId(), "Lineas", lineas.id, lineas.nombre, Request.UserHostAddress);
                TempData["Mensaje"] = "Línea editada correctamente.";
                return RedirectToAction("Editar", "Lineas", new {id=editarL.id });
            }
            TempData["Mensaje"] = "Error al editar la Línea.";
            return RedirectToAction("Editar", "Lineas", new { id = lineas.id });
        }