public async Task <UsuarioDTO> Agregar(UsuarioDTO usuarioDTO) { try { string passInicial = Generador.GenerarPassword(25); usuarioDTO.Token = Generador.GenerarToken(); Usuario usuario = mapper.Map <UsuarioDTO, Usuario>(usuarioDTO); usuario.Password = Encriptacion.GetSHA256(passInicial); Proveedor proveedorBuscado = null; if (usuarioDTO.Proveedor != null) { proveedorBuscado = await db.Proveedores.FindAsync(usuarioDTO.Proveedor.Id); } if (proveedorBuscado != null && usuarioDTO.TipoUsuario == SD.TipoUsuario.ProveedorIngPlt.ToString()) { //guardar en BD db.Entry(proveedorBuscado).State = EntityState.Unchanged; usuario.Proveedor = proveedorBuscado; var addUsuario = await db.Usuarios.AddAsync(usuario); await db.SaveChangesAsync(); UsuarioDTO uFinal = mapper.Map <Usuario, UsuarioDTO>(addUsuario.Entity); uFinal.PassInicial = passInicial; return(uFinal); } else if (usuarioDTO.TipoUsuario != SD.TipoUsuario.ProveedorIngPlt.ToString()) { var addUsuario = await db.Usuarios.AddAsync(usuario); await db.SaveChangesAsync(); UsuarioDTO uFinal = mapper.Map <Usuario, UsuarioDTO>(addUsuario.Entity); uFinal.PassInicial = passInicial; return(uFinal); } else { return(null); } } catch (Exception e) { return(null); } }