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); }
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)); }