public async Task <ActionResult <UsuarioGetViewModel> > Create([FromBody] UsuarioCreateViewModel viewModel)
        {
            UsuarioEntity usuario = viewModel;

            await _usuarioApplication.Add(usuario);

            return(CreatedAtAction(nameof(Get), new { id = usuario.Id }, usuario));
        }
        // GET: Admin/Usuario/Create
        public ActionResult Create()
        {
            UsuarioCreateViewModel viewModel = new UsuarioCreateViewModel();

            viewModel.InicializarDesplegables();



            return(View(viewModel));
        }
        private static UsuarioModel ConvertViewModelToModel(UsuarioCreateViewModel usuarioCreateViewModel)
        {
            var usuarioModel = new UsuarioModel
            {
                FotoPerfil     = null,
                IdentityUser   = usuarioCreateViewModel.IdentityUser,
                Cpf            = usuarioCreateViewModel.Cpf,
                DataNascimento = usuarioCreateViewModel.DataNascimento,
                Nome           = usuarioCreateViewModel.Nome,
                Sobrenome      = usuarioCreateViewModel.Sobrenome
            };

            return(usuarioModel);
        }
Exemple #4
0
        public async Task <IActionResult> Crear([FromBody] UsuarioCreateViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var email = model.email.ToLower();

            if (await _context.Usuarios.AnyAsync(u => u.email == email))
            {
                return(BadRequest("El email ya existe"));
            }

            CrearPasswordHash(model.password, out byte[] passwordHash, out byte[] passwordSalt);

            var     fechaHora = DateTime.Now;
            Usuario usuario   = new Usuario
            {
                rolId         = model.rolId,
                personaId     = model.personaId,
                userid        = model.userid,
                telefono      = model.telefono,
                email         = model.email.ToLower(),
                password_hash = passwordHash,
                password_salt = passwordSalt,
                pxch          = model.pxch,
                iduseralta    = model.iduseralta,
                fecalta       = fechaHora,
                iduserumod    = model.iduseralta,
                fecumod       = fechaHora,
                activo        = true
            };

            _context.Usuarios.Add(usuario);
            try
            {
                await _context.SaveChangesAsync();
            }
            catch (Exception)
            {
                return(BadRequest());
            }

            return(Ok());
        }
        public async Task <IActionResult> Create(UsuarioCreateViewModel usuarioCreateViewModel)
        {
            if (ModelState.IsValid)
            {
                var user = new IdentityUser {
                    UserName = usuarioCreateViewModel.Email, Email = usuarioCreateViewModel.Email, PhoneNumber = usuarioCreateViewModel.Celular
                };
                var result = await _userManager.CreateAsync(user);

                if (result.Succeeded)
                {
                    try
                    {
                        var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                        code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code));

                        var callbackUrl = Url.Page(
                            "/Account/ConfirmEmail",
                            pageHandler: null,
                            values: new { area = "Identity", userId = user.Id, code = code },
                            protocol: Request.Scheme);

                        await _usuarioAppServices.CreateAsync(new UsuarioViewModel(user.Id, usuarioCreateViewModel.Usuario.NomeCompleto,
                                                                                   false, usuarioCreateViewModel.Usuario.BloqueioManual, usuarioCreateViewModel.Usuario.Administrador, true, 0.0, false), user.Email, callbackUrl);

                        usuarioCreateViewModel.StatusModel = "Success";
                        ModelState.AddModelError(string.Empty, "Usuário cadastrado com sucesso");
                    }
                    catch (Exception)
                    {
                        await _userManager.DeleteAsync(user);

                        usuarioCreateViewModel.StatusModel = "Error";
                        ModelState.AddModelError(string.Empty, "Ocorreu um erro inesperado ao salvar o cadastro. Tente novamente");
                    }
                }
            }

            return(View(usuarioCreateViewModel));
        }
        public async Task <IActionResult> Create([Bind("Nome,Sobrenome,Cpf,DataNascimento,Email,Password,ConfirmPassword,IdentityUser")] UsuarioCreateViewModel usuarioCreateViewModel, IFormFile ImageFile)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    var user = new IdentityUser
                    {
                        UserName = usuarioCreateViewModel.Email, Email = usuarioCreateViewModel.Email
                    };

                    using var scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled);
                    var result = await _userManager.CreateAsync(user, usuarioCreateViewModel.Password);

                    if (result.Succeeded)
                    {
                        usuarioCreateViewModel.IdentityUser = user.Id;

                        var usuarioModel = ConvertViewModelToModel(usuarioCreateViewModel);

                        await _usuarioServices.CreateAsync(usuarioModel, ConvertIFormFileToBase64(ImageFile));

                        scope.Complete();
                    }
                    foreach (var error in result.Errors)
                    {
                        ModelState.AddModelError(string.Empty, error.Description);
                    }


                    return(RedirectToAction("Index", "Home"));
                }
                catch (ModelValidationExceptions e)
                {
                    ModelState.AddModelError(e.PropertyName, e.Message);
                }
            }

            return(View("Index"));
        }
        public ActionResult Create(UsuarioCreateViewModel viewModel)
        {
            if (ModelState.IsValid)
            {
                AuthRepository gestorUsuarios = new AuthRepository();
                viewModel.Usuario.UserName     = viewModel.Usuario.Email;
                viewModel.Usuario.PuntosTotal  = 0;
                viewModel.Usuario.PuntosActual = 0;
                var correcto = true;
                if (User.IsInRole("AdministradorGrupo"))
                {
                    var GrupoUsuarioId = Convert.ToInt32(((ClaimsIdentity)User.Identity).FindFirst("GrupoUsuario").Value);
                    viewModel.Usuario.GrupoUsuarioId = GrupoUsuarioId;
                    viewModel.Usuario.TipoUsuarioId  = (int)TiposUsuariosId.Alumno;

                    var grupo = db.GrupoUsuarios.Find(GrupoUsuarioId);
                    if (grupo.NumeroMaximoUsuarios > 0)
                    {
                        var nUsuario = db.Users.Where(us => us.GrupoUsuarioId.HasValue).Count(us => us.GrupoUsuarioId.Value == viewModel.Usuario.GrupoUsuarioId);

                        if (nUsuario >= grupo.NumeroMaximoUsuarios)
                        {
                            correcto = false;
                            ModelState.AddModelError("Usuario.Email", "Ha sobrepasado el número máximo de usuarios del grupo");
                        }
                    }
                }
                if (correcto)
                {
                    var userResult = gestorUsuarios.Create(viewModel.Usuario, viewModel.Password);

                    //Add User Admin to Role Admin
                    if (userResult.Succeeded)
                    {
                        string oldPathAndName = "~/media/upload/avatar/sin-avatar.jpg";
                        string newPathAndName = "~/media/upload/avatar/" + viewModel.Usuario.Id + ".jpg";

                        System.IO.File.Copy(Server.MapPath(oldPathAndName), Server.MapPath(newPathAndName));

                        List <int> listaSubtemasAccesso = new List <int>();
                        if (viewModel.Usuario.BloquearSubtemas)
                        {
                            foreach (var acceso in viewModel.AccesoTemas)
                            {
                                foreach (var accesoSubtema in acceso.SubTemas)
                                {
                                    if (accesoSubtema.Selected)
                                    {
                                        SubTemaAccesoUsuario subtemaAcceso = new SubTemaAccesoUsuario();
                                        subtemaAcceso.AlumnoId    = viewModel.Usuario.Id;
                                        subtemaAcceso.FechaAcceso = DateTime.Now;
                                        subtemaAcceso.SubTemaId   = Convert.ToInt32(accesoSubtema.Value);

                                        db.SubTemaAccesoUsuarios.Add(subtemaAcceso);
                                        db.SaveChanges();

                                        listaSubtemasAccesso.Add(subtemaAcceso.SubTemaId);
                                    }
                                }
                            }
                            var subtemasAcceso = db.SubTemaAccesoUsuarios.Where(sa => sa.AlumnoId == viewModel.Usuario.Id).Select(sa => sa.SubTema).ToList();
                            var temas          = subtemasAcceso.Select(su => su.TemaId);
                            foreach (var temaId in temas)
                            {
                                var subtemaInicial = subtemasAcceso.Where(sa => sa.TemaId == temaId).OrderBy(su => su.Orden).FirstOrDefault();
                                if (subtemaInicial != null)
                                {
                                    if (!db.SubTemaDesbloqueados.Any(sd => sd.SubTemaId == subtemaInicial.SubTemaId && sd.AlumnoId == viewModel.Usuario.Id))
                                    {
                                        SubTemaDesbloqueado desbloqueado = new SubTemaDesbloqueado();
                                        desbloqueado.AlumnoId        = viewModel.Usuario.Id;
                                        desbloqueado.FechaDesbloqueo = DateTime.Now;
                                        desbloqueado.SubTemaId       = subtemaInicial.SubTemaId;

                                        db.SubTemaDesbloqueados.Add(desbloqueado);
                                        db.SaveChanges();
                                    }
                                }
                            }
                        }

                        List <int> temasCliente = db.ClienteTemas.Where(te => te.ClienteId == viewModel.Usuario.ClienteId).Select(te => te.TemaId).ToList();

                        List <SubTema> subtemasIniciales = db.SubTemas.Where(sub => temasCliente.Contains(sub.TemaId) && sub.Orden == 1).ToList();
                        foreach (SubTema subtema in subtemasIniciales)
                        {
                            bool anyadir = true;
                            if (viewModel.Usuario.BloquearSubtemas)
                            {
                                if (!listaSubtemasAccesso.Contains(subtema.SubTemaId))
                                {
                                    anyadir = false;
                                }
                            }
                            if (anyadir)
                            {
                                if (!db.SubTemaDesbloqueados.Any(sd => sd.SubTemaId == subtema.SubTemaId && sd.AlumnoId == viewModel.Usuario.Id))
                                {
                                    SubTemaDesbloqueado desbloqueado = new SubTemaDesbloqueado();
                                    desbloqueado.AlumnoId        = viewModel.Usuario.Id;
                                    desbloqueado.FechaDesbloqueo = DateTime.Now;
                                    desbloqueado.SubTemaId       = subtema.SubTemaId;

                                    db.SubTemaDesbloqueados.Add(desbloqueado);
                                    db.SaveChanges();
                                }
                            }
                        }

                        var result = gestorUsuarios.AddToRole(viewModel.Usuario.Id, "Alumno");
                        if (viewModel.Usuario.TipoUsuarioId == (int)TiposUsuariosId.AdministradorGrupo)
                        {
                            result = gestorUsuarios.AddToRole(viewModel.Usuario.Id, "AdministradorGrupo");
                        }
                        if (result.Succeeded)
                        {
                            return(RedirectToAction("Index"));
                        }
                        else
                        {
                            ModelState.AddModelError("Usuario.Email", userResult.Errors.First());
                        }
                    }
                    else
                    {
                        ModelState.AddModelError("Usuario.Email", userResult.Errors.First());
                    }
                }
            }

            viewModel.InicializarDesplegables();
            return(View(viewModel));
        }