Example #1
0
        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);
        }