public async Task <bool> Register(string username, string password, string email, double curLat, double curLong) { if (await Database.Authenticators.AsAsyncEnumerable().AnyAsync(e => e.Email.Equals(email, StringComparison.CurrentCultureIgnoreCase))) { return(false); } username = Censor(username); User user = new(0, username, email); user = (await Database.AddAsync(user)).Entity; Authenticator auth = new(email, CreatePasswordHash(password), DateTime.UtcNow, user); var newChal = await GroupExtensions.GetNewChallenge(null, Database.Challenges, curLong, curLat, true); Group g = new Group(newChal); g = (await Database.AddAsync(g)).Entity; await Database.SaveChangesAsync(); user.GroupMember = new GroupMember(true, false, g); g.SignalRId = g.Id.ToString(); await Groups.AddToGroupAsync(Context.ConnectionId, auth.User.GroupMember.Group.Id.ToString()); //Add to sessionlog var entry = new SessionLogEntry(SessionLogEntryType.UserCreated, user.Id.ToString(), DateTime.UtcNow, user); await Database.AddAsync(entry); await Database.SaveChangesAsync(); return(true); }