public async Task<ActionResult> Editar(EditarUsuario model)
        {
            if (ModelState.IsValid)
            {

                var user = await UserManager.FindByIdAsync(model.id);
           
                user.nombre = model.nombre;
                user.apellido1 = model.apellido1;
                user.apellido2 = model.apellido2;
                user.telefono = model.telefono;
                user.email = model.email;
                user.UserName = model.UserName;               

                var result = await UserManager.UpdateAsync(user);

                if (result.Succeeded)
                {                  
                    ApplicationDbContext dba = new ApplicationDbContext();
                    Conexion db = new Conexion();
                    List<IdentityUserRole> lista_roles_usu = dba.User_Role.Where(m => m.UserId == user.Id).ToList();
                    dba.User_Role.RemoveRange(lista_roles_usu);
                    dba.SaveChanges();

                    List<UsuariosGrupo> grupoUR = db.UsuariosGrupo.Where(m => m.idusuario == user.Id).ToList();
                    db.UsuariosGrupo.RemoveRange(grupoUR);
                    db.SaveChanges();
                    grupoUR.Clear();


                    try {
                    foreach (var role in model.rol)
                    {
                        UsuariosGrupo inGrupo = new UsuariosGrupo();
                        inGrupo.idgrupousuario = role;
                        inGrupo.idusuario = user.Id;

                        grupoUR.Add(inGrupo);

                        List<GrupoU_Roles> listaRoles = db.GrupoU_Roles.Where(m=>m.idgrupo== role).ToList();

                            foreach (var intro in listaRoles)
                            {
                                var roless = db.Roles.FirstOrDefault(m=>m.Id == intro.idrol);
                            var isInRole = await UserManager.IsInRoleAsync(user.Id, roless.Name);
                                if (!isInRole)
                                {
                                    await UserManager.AddToRoleAsync(user.Id, roless.Name);
                                }
                            }
                        }

                    db.UsuariosGrupo.AddRange(grupoUR);
                    db.SaveChanges();
                    }
                    catch (Exception e)
                    {
                    }

                    Historial nuevo = new Historial("Modificó", User.Identity.GetUserId(), "usuario", user.Id, user.UserName, Request.UserHostAddress);               
                    TempData["Mensaje"] = "Datos del Usuario modificados correctamente.";
                    
                    //Para Crearlo y automaticamente longuearlo
                    //await SignInAsync(user, isPersistent: false);
                    return RedirectToAction("Editar", "Acceso", new {id= user.Id });
                }
                else
                {
                    AddErrors(result);
                }
            }
           
            //Si llegamos a este punto, es que se ha producido un error y volvemos a mostrar el formulario.            

            return View(model);
        }
        public async Task<ActionResult> Nuevo(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {

                StringHash cod_secreto = new StringHash();
                TextoAleatorio text = new TextoAleatorio();

                var user = new ApplicationUser() { UserName = model.UserName,
                                                   nombre = model.nombre,
                                                   apellido1= model.apellido1,
                                                   apellido2 = model.apellido2,
                                                   telefono = model.telefono,
                                                   email= model.email,
                                                   fecha_creado = DateTime.Now,
                                                   cod_secreto = cod_secreto.Encrypt(text.Texto(), true, model.UserName)                                           
                };
                var result = await UserManager.CreateAsync(user, model.Password);
                if (result.Succeeded)
                {
                    //Crea Rol por defecto
                    var rol = await UserManager.AddToRoleAsync(user.Id,"Lector");

                    UsuariosGrupo inGrupo = new UsuariosGrupo();
                    inGrupo.idgrupousuario = "8127f8b1-ff6e-4b21-bdd1-c3c9d1f9e440";
                    inGrupo.idusuario = user.Id;

                    Conexion db = new Conexion();
                    db.UsuariosGrupo.Add(inGrupo);
                    db.SaveChanges();

                    Historial nuevo = new Historial("Creó", User.Identity.GetUserId(), "usuario", user.Id, user.UserName, Request.UserHostAddress);

                    //Para Crearlo y automaticamente longuearlo
                    //await SignInAsync(user, isPersistent: false);
                    return RedirectToAction("Editar", "Acceso", new {id=user.Id });
                }
                else
                {
                    AddErrors(result);
                }
            }

            // Si llegamos a este punto, es que se ha producido un error y volvemos a mostrar el formulario
            return View(model);
        }