// GET: Zonas/Editar/5
        public async Task<ActionResult> Editar(string id)
        {
            ZonasLista zonas = await db.ZonasLista.FindAsync(id);
      
            if (zonas == null)
            {
                return HttpNotFound();
            }

            bool comprobar = new Zonas().ComprobarZona(id, User.Identity.GetUserId());
            if (!comprobar)
            {
                TempData["MensajeAP"] = "Prohibido el acceso a esta Zona con tus credenciales";
                return RedirectToAction("Index", "Acceso");
                //throw new HttpException(404, "No tiene permisos");
            }

            try 
            {
                zonas.ficheros = db.Zonas_Documentos.Where(m => m.zona_id == id).ToList();
            }
            catch(Exception e)
            {

            }
            TempData["confirmacion"] = "Desea Eliminar este Documento?";
            return View(zonas);
        }
        public async Task<ActionResult> Nuevo([Bind(Include = "id,nombre,zonastring")] ZonasLista zonas)
        {
            if (ModelState.IsValid)
            {
                Zonas zonasNueva = new Zonas();
                zonasNueva.id = Guid.NewGuid().ToString();
                zonasNueva.nombre = zonas.nombre;
                zonasNueva.poligono = DbGeography.PolygonFromText(zonas.zonastring, 4326).AsBinary();
                zonas.tipo = "77268b47-79d5-49a7-8475-acf6f618e9f8";
                db.Zonas.Add(zonasNueva);                
                await db.SaveChangesAsync();

                Historial nuevo = new Historial("Creó", User.Identity.GetUserId(), "Zonas", zonasNueva.id, zonasNueva.nombre, Request.UserHostAddress);
                TempData["Mensaje"] = "Zonas creada correctamente.";
                return RedirectToAction("Editar", "Zonas", new { id = zonasNueva.id });
            }

            TempData["Mensaje"] = "Error al crear la Zonas.";
            return View(zonas);
        }
        public ActionResult Editar([Bind(Include="id,nombre,zonastring")] ZonasLista zonas)
        {
            if (ModelState.IsValid)
            {
                bool comprobar = new Zonas().ComprobarZona(zonas.id, User.Identity.GetUserId());
                if (!comprobar)
                {
                    TempData["MensajeAP"] = "Prohibido el acceso a esta Zona con tus credenciales";
                    return RedirectToAction("Index", "Acceso");
                    //throw new HttpException(404, "No tiene permisos");
                }


                if(new Zonas().U_Zona(zonas)){
                    TempData["Mensaje"] = "Zonas creada correctamente.";
                    return RedirectToAction("Editar", "Zonas", new { id = zonas.id });                
                }
            }

            TempData["Mensaje"] = "Error al editar la Zonas.";
            return RedirectToAction("Editar","Zonas",new{id=zonas.id});
        }
        public async Task<ActionResult> Eliminar(string id)
        {
            Zonas zonas = await db.Zonas.FindAsync(id);
            if (zonas == null)
            {
                return HttpNotFound();
            }

            bool comprobar = new Zonas().ComprobarZona(id, User.Identity.GetUserId());
            if (!comprobar)
            {
                TempData["MensajeAP"] = "No tiene credenciales para realizar esta operación.";
                return RedirectToAction("Index", "Acceso");
                //throw new HttpException(404, "No tiene permisos");
            }

            db.Zonas.Remove(zonas);
            await db.SaveChangesAsync();
            Historial nuevo = new Historial("Eliminó", User.Identity.GetUserId(), "Zonas", zonas.id, zonas.nombre, Request.UserHostAddress);
            TempData["Mensaje"] = "Zonas eliminado correctamente.";
            return RedirectToAction("Index");
        }
        public async Task<ActionResult> EliminarFichero(string id)
        {
            Zonas_Documentos eliminar = db.Zonas_Documentos.SingleOrDefault(m => m.id == id);
            bool comprobar = new Zonas().ComprobarZona(eliminar.zona_id, User.Identity.GetUserId());
            if (!comprobar)
            {
                TempData["MensajeAP"] = "No tiene credenciales para realizar esta operación.";
                return RedirectToAction("Index", "Acceso");
                //throw new HttpException(404, "No tiene permisos");
            }

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

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

            Ficheros nuevo = new Ficheros();

            await nuevo.SubirFicheros(Request.Files, id, "Zonas", "Ficheros", 6);

            return RedirectToAction("Editar", "Lineas", new { id = id });
        }
 public JsonResult GetJsonDataUsuariosZonasGeoJson(string id)
 {
     var retorno = new Zonas().UsuariosZonasGeoJson(id);
     return Json(retorno, JsonRequestBehavior.AllowGet);
 }
 public JsonResult GetJsonDataZonasCreadasGeoJson(string id)
 {
     var retorno = new Zonas().ZonasCreadasGeoJson();
     return Json(retorno, JsonRequestBehavior.AllowGet);
 }