public ActionResult EditCiudad(int IdPais, int IdEstado, int Id)
        {
            if (User == null || User.GetType().ToString() == "System.Security.Principal.GenericPrincipal")
                return RedirectToAction("Index", "Home");

            ViewBag.Title = Resources.TablasResource.EditCiudadPageTitle;
            string _NombreEstado = string.Empty;
            Pais_Estado _estado;

            using (SeguricelEntities db = new SeguricelEntities())
            {
                Pais _pais = db.Pais.Where(x => x.IdPais == IdPais).FirstOrDefault();
                _estado = db.Pais_Estado.Where(x => x.IdPais == IdPais && x.IdEstado == IdEstado).FirstOrDefault();

                _NombreEstado = string.Format("{0}, {1}", _pais.Nombre, _estado.Nombre);
                ViewBag.PageHeader = string.Format("{0} {1}",
                    Resources.TablasResource.EditCiudadHeaderPage,
                    (db.Pais_Estado.Where(x => x.IdPais == IdPais && x.IdEstado == IdEstado).Select(x => x.Nombre).FirstOrDefault() ?? string.Empty));
            }
            CiudadViewModel model = new CiudadViewModel();

            using (SeguricelEntities db = new SeguricelEntities())
            {
                model = (db.Pais_Estado_Ciudad.Where(x => x.IdPais == IdPais && x.IdEstado == IdEstado && x.IdCiudad == Id)
                            .Select(x => new CiudadViewModel
                            {
                                Activo = x.Activo,
                                Id = x.IdCiudad,
                                IdEstado = x.IdEstado,
                                IdPais = IdPais,
                                Nombre = x.Nombre,
                                Latitud = _estado.Ubicacion.Latitude.ToString(),
                                Longitud = _estado.Ubicacion.Longitude.ToString(),
                                PaisEstadoCiudad = _NombreEstado
                            }).FirstOrDefault());

                if (string.IsNullOrEmpty(model.Longitud))
                    model.Longitud = (db.Pais_Estado_Ciudad.Where(x => x.IdPais == model.IdPais && x.IdEstado == model.IdEstado).Select(x => x.Ubicacion.Longitude.ToString()).FirstOrDefault() ?? db.Pais.Where(x => x.IdPais == IdPais).Select(x => x.Ubicacion.Longitude.ToString()).FirstOrDefault());
                if (string.IsNullOrEmpty(model.Latitud))
                    model.Latitud = (db.Pais_Estado_Ciudad.Where(x => x.IdPais == model.IdPais && x.IdEstado == model.IdEstado).Select(x => x.Ubicacion.Latitude.ToString()).FirstOrDefault() ?? db.Pais.Where(x => x.IdPais == IdPais).Select(x => x.Ubicacion.Latitude.ToString()).FirstOrDefault());
            }

            return View(model);
        }
        public ActionResult EditCiudad(CiudadViewModel model)
        {
            if (User == null || User.GetType().ToString() == "System.Security.Principal.GenericPrincipal")
                return RedirectToAction("Index", "Home");

            if (!ModelState.IsValid)
            {
                ViewBag.Title = Resources.TablasResource.EditCiudadPageTitle;
                ViewBag.PageHeader = Resources.TablasResource.EditCiudadHeaderPage;
                return View(model);
            }

            using (SeguricelEntities db = new SeguricelEntities())
            {
                ViewBag.PageHeader = string.Format("{0} {1}",
                    Resources.TablasResource.EditCiudadHeaderPage,
                    (db.Pais.Where(x => x.IdPais == model.IdPais).Select(x => x.Nombre).FirstOrDefault() ?? string.Empty));
            }

            using (SeguricelEntities db = new SeguricelEntities())
            {
                Pais_Estado_Ciudad regPais_Ciudad = (db.Pais_Estado_Ciudad.Where(x => x.IdPais == model.IdPais && x.IdEstado == model.IdEstado && x.IdCiudad == model.Id).FirstOrDefault());
                regPais_Ciudad.Activo = model.Activo;
                regPais_Ciudad.Nombre = model.Nombre;
                regPais_Ciudad.Ubicacion = DbGeography.FromText(string.Format("POINT({0} {1})", model.Longitud, model.Latitud));
                db.SaveChanges();

                ClasesVarias.AddBitacoraUsuario(db,
                   "Ciudad " + model.Nombre + " del Estado " + db.Pais_Estado.Where(x => x.IdPais == model.IdPais && x.IdEstado == model.IdEstado).Select(x => x.Nombre).FirstOrDefault() + " del País " + db.Pais.Where(x => x.IdPais == model.IdPais).Select(x => x.Nombre).FirstOrDefault(),
                   190000005,
                   "Actualizar");

            }
            return RedirectToAction("Ciudades", new { IdPais = model.IdPais, IdEstado = model.IdEstado });
        }
        public ActionResult CreateCiudad(int IdPais, int IdEstado)
        {
            if (User == null || User.GetType().ToString() == "System.Security.Principal.GenericPrincipal")
                return RedirectToAction("Index", "Home");

            Nullable<int> NextId = null;

            ViewBag.Title = Resources.TablasResource.CreateCiudadPageTitle;
            string _NombreEstado = string.Empty;

            using (SeguricelEntities db = new SeguricelEntities())
            {
                Pais _pais = db.Pais.Where(x => x.IdPais == IdPais).FirstOrDefault();
                Pais_Estado _estado = db.Pais_Estado.Where(x => x.IdPais == IdPais && x.IdEstado == IdEstado).FirstOrDefault();

                _NombreEstado = string.Format("{0}, {1}", _pais.Nombre, _estado.Nombre);

                ViewBag.PageHeader = string.Format("{0} {1}",
                    Resources.TablasResource.CreateCiudadHeaderPage,
                    (db.Pais_Estado.Where(x => x.IdPais == IdPais && x.IdEstado == IdEstado).Select(x => x.Nombre).FirstOrDefault() ?? string.Empty));

                NextId = (db.Pais_Estado_Ciudad.Where(x => x.IdPais == IdPais && x.IdEstado == IdEstado).Select(x => (int?)x.IdCiudad).Max() ?? 0);
            }
            if (NextId == null)
                NextId = 0;

            NextId += 1;

            CiudadViewModel model = new CiudadViewModel();
            model.IdPais = IdPais;
            model.IdEstado = IdEstado;
            model.Id = (int)NextId;
            model.PaisEstadoCiudad = _NombreEstado;
            return View(model);
        }