public async Task <ValidateRegistrationResponse <ValidateRegistrationResult> > Handle(ValidateRegistrationCommand cmd, CancellationToken cancellationToken)
            {
                var mapper = new Mapper(_mapperConfiguration);

                InvitedUser invitedUser = await _mediator.Send(new GetUserInGatedRegistrationByEmailAddressQuery(cmd.EmailAddress));

                if (invitedUser != null)
                {
                    if (invitedUser.Invited)
                    {
                        if (invitedUser.Verify(cmd.EntryCode))
                        {
                            if (!invitedUser.Registered)
                            {
                                invitedUser.Register();
                                invitedUser.Log(true, 204, cmd.EntryCode);
                                return(await _mediator.Send(new UpdateUserInGatedRegistrationCommand(invitedUser, HttpStatusCode.NoContent, "User successfully registered")));
                            }
                            else
                            {
                                // user is in database and was invited and has already registered
                                // log entry attempt, return false
                                invitedUser.Log(false, 208, cmd.EntryCode);
                                return(await _mediator.Send(new UpdateUserInGatedRegistrationCommand(invitedUser, HttpStatusCode.AlreadyReported, "User has already registered")));
                            }
                        }
                        else
                        {
                            //user attempted to log in with invalid entry code
                            invitedUser.Log(false, 401, cmd.EntryCode);
                            return(await _mediator.Send(new UpdateUserInGatedRegistrationCommand(invitedUser, HttpStatusCode.Unauthorized, "User attempted to register with invalid entry code")));
                        }
                    }
                    else
                    {
                        // user is in database but is uninvited, capture email, log entry attempt, return false
                        invitedUser.Log(false, 302, cmd.EntryCode);
                        return(await _mediator.Send(new UpdateUserInGatedRegistrationCommand(invitedUser, HttpStatusCode.Found, "User is in database but is uninvited")));
                    }
                }
                else
                {
                    // add user to database as uninvited, capture email, log entry attempt return false
                    InvitedUser newUser = InvitedUser.Create(string.Empty, string.Empty, string.Empty, cmd.EmailAddress, string.Empty, string.Empty, "0F0F0F", false, false, DateTime.MinValue, new List <InvitedUserLogEntry>());
                    newUser.Log(false, 200, cmd.EntryCode);

                    return(await _mediator.Send(new AddUserToGatedRegistrationCommand(newUser, HttpStatusCode.OK, "User was added to database as uninvited")));
                }
            }