// Método get para la vista unificada
        public ActionResult Unificado(string id)
        {
            ModeloIntermedio modelo = new ModeloIntermedio();

            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            USUARIOS user = db.USUARIOS.Find(id);

            if (user == null)
            {
                return(HttpNotFound());
            }
            TELEFONOS tel = new TELEFONOS();

            tel.CEDULA = id;
            List <TELEFONOS> listaTelefs = db.TELEFONOS.ToList();

            foreach (var item in listaTelefs)
            {
                if ((user.CEDULA == id) && (user.CEDULA == item.CEDULA))
                {
                    tel.NUMERO = item.NUMERO;
                }
            }

            TELEFONOS tel2 = new TELEFONOS();

            tel2.CEDULA = id;
            foreach (var item in listaTelefs)
            {
                if ((user.CEDULA == id) && (user.CEDULA == item.CEDULA) && (item.NUMERO != tel.NUMERO))
                {
                    tel2.NUMERO = item.NUMERO;
                }
            }

            CORREOS email = new CORREOS();

            email.CEDULA = id;
            List <CORREOS> listaEmails = db.CORREOS.ToList();

            foreach (var item in listaEmails)
            {
                if ((user.CEDULA == id) && (user.CEDULA == item.CEDULA))
                {
                    email.CORREO = item.CORREO;
                }
            }

            CORREOS email2 = new CORREOS();

            email2.CEDULA = id;
            foreach (var item in listaEmails)
            {
                if ((user.CEDULA == id) && (user.CEDULA == item.CEDULA) && (item.CORREO != email.CORREO))
                {
                    email2.CORREO = item.CORREO;
                }
            }

            modelo.modeloAsp = db.AspNetUsers.Find(user.ID_ASP);

            //ViewBag.Rol = GetRolesForUser(user.ID_ASP);

            modelo.modeloUsuario   = user;
            modelo.modeloTelefono  = tel;
            modelo.modeloTelefono2 = tel2;
            modelo.modeloCorreo    = email;
            modelo.modeloCorreo2   = email2;


            var fg        = new AspNetUsers();          //instancia AspNetUser para usuario actual
            var listauser = db.AspNetUsers.ToArray();

            for (int i = 0; i < listauser.Length; i++)
            {                           //de todos los AspNetUser del sistema, encuentra el que tenga el email activo actualmente
                if (listauser[i].Email == User.Identity.Name)
                {
                    fg = listauser[i];                  //obtiene el AspNetUser actual
                }
            }

            AspNetRoles role = fg.AspNetRoles.First();  //consigue el rol del usuario
            var         per  = role.PERMISOS;           //copia los permisos que tiene asignado

            foreach (PERMISOS p in role.PERMISOS)
            {     //los copia a un HashSet<string>
                modelo.verificaPermisos.Add(p.ID);
            }



            return(View(modelo));
        }
        // GET: Usuarios/Details/5
        public ActionResult Details(string id)
        {
            ModeloIntermedio modelo = new ModeloIntermedio();

            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            USUARIOS user = db.USUARIOS.Find(id);

            if (user == null)
            {
                return(HttpNotFound());
            }
            TELEFONOS        tel         = new TELEFONOS();
            List <TELEFONOS> listaTelefs = db.TELEFONOS.ToList();

            foreach (var item in listaTelefs)
            {
                if ((user.CEDULA == id) && (user.CEDULA == item.CEDULA))
                {
                    tel.NUMERO = item.NUMERO;
                    tel.CEDULA = id;
                }
            }

            TELEFONOS tel2 = new TELEFONOS();

            foreach (var item in listaTelefs)
            {
                if ((user.CEDULA == id) && (user.CEDULA == item.CEDULA) && (item.NUMERO != tel.NUMERO))
                {
                    tel2.NUMERO = item.NUMERO;
                    tel2.CEDULA = id;
                }
            }

            CORREOS        email       = new CORREOS();
            List <CORREOS> listaEmails = db.CORREOS.ToList();

            foreach (var item in listaEmails)
            {
                if ((user.CEDULA == id) && (user.CEDULA == item.CEDULA))
                {
                    email.CORREO = item.CORREO;
                    email.CEDULA = id;
                }
            }

            CORREOS email2 = new CORREOS();

            foreach (var item in listaEmails)
            {
                if ((user.CEDULA == id) && (user.CEDULA == item.CEDULA) && (item.CORREO != email.CORREO))
                {
                    email2.CORREO = item.CORREO;
                    email2.CEDULA = id;
                }
            }

            //ViewBag.Rol = GetRolesForUser(id);

            modelo.modeloUsuario   = user;
            modelo.modeloTelefono  = tel;
            modelo.modeloTelefono2 = tel2;
            modelo.modeloCorreo    = email;
            modelo.modeloCorreo2   = email2;
            return(View(modelo));
        }
        public async Task <ActionResult> Create(ModeloIntermedio modelo)
        {
            if (db.USUARIOS.Find(modelo.modeloUsuario.CEDULA) != null)
            {
                TempData["Create"] = "Existe";
                return(RedirectToAction("Create"));
            }

            if (ModelState.IsValid)
            {
                var user = new ApplicationUser {
                    UserName = modelo.modeloCorreo.CORREO, Email = modelo.modeloCorreo.CORREO
                };
                user.EmailConfirmed       = true;
                user.PhoneNumberConfirmed = true;
                var result = await UserManager.CreateAsync(user, "Pass.123");

                if (result.Succeeded)
                {
                    var usuarioNuevo = modelo.modeloUsuario;

                    var aspUser   = new AspNetUsers();
                    var listauser = db.AspNetUsers.ToArray();

                    for (int i = 0; i < listauser.Length; i++)
                    {
                        if (listauser[i].Email == modelo.modeloCorreo.CORREO)
                        {
                            aspUser = listauser[i];
                        }
                    }
                    var role = db.AspNetRoles.Where(r => r.Id == modelo.rol).First();
                    aspUser.AspNetRoles.Add(role);
                    var id = aspUser.Id;
                    usuarioNuevo.ID_ASP = id;
                    db.USUARIOS.Add(usuarioNuevo);

                    //correo1 nunca va a ser nulo
                    CORREOS cor1 = modelo.modeloCorreo;
                    cor1.CEDULA = usuarioNuevo.CEDULA;
                    db.CORREOS.Add(cor1);

                    if (modelo.modeloCorreo2.CORREO != null)
                    {
                        CORREOS cor2 = modelo.modeloCorreo2;
                        cor2.CEDULA = usuarioNuevo.CEDULA;
                        db.CORREOS.Add(cor2);
                    }
                    if (modelo.modeloTelefono.NUMERO != null)
                    {
                        TELEFONOS tel1 = modelo.modeloTelefono;
                        tel1.CEDULA = usuarioNuevo.CEDULA;
                        db.TELEFONOS.Add(tel1);
                    }
                    if (modelo.modeloTelefono2.NUMERO != null)
                    {
                        TELEFONOS tel2 = modelo.modeloTelefono2;
                        tel2.CEDULA = usuarioNuevo.CEDULA;
                        db.TELEFONOS.Add(tel2);
                    }
                    db.SaveChanges();

                    //SendEmailViewModel email = new SendEmailViewModel();
                    //email.FirstName = modelo.modeloUsuario.NOMBRE;
                    //email.Email = modelo.modeloCorreo.CORREO;
                    //var message = await EMailTemplate("WelcomeEmail");
                    //message = message.Replace("@ViewBag.Name", CultureInfo.CurrentCulture.TextInfo.ToTitleCase(email.FirstName));
                    //await MessageServices.SendEmailAsync(email.Email, "Bienvenido", message);

                    TempData["Create"] = "Exito";
                }
                else
                {
                    TempData["Create"] = "Error";
                }
            }

            return(RedirectToAction("Create"));
            //ViewBag.PRYCTOID = new SelectList(db.PROYECTO, "ID", "NOMBRE", modelo.modeloUsuario.PRYCTOID);
            //return View(modelo);
        }