private async Task <bool> InviteUser(Domain.Entities.Contact contact)
        {
            // NOTE: An appropriate email will be generated by the Sign In Service.
            var invitationResult = await _dfeSignInService.InviteUser(contact.Email, contact.GivenNames, contact.FamilyName, contact.Id);

            if (!invitationResult.IsSuccess)
            {
                if (invitationResult.UserExists)
                {
                    await _contactRepository.UpdateSignInId(contact.Id, invitationResult.ExistingUserId);

                    return(true);
                }

                return(false);
            }

            return(true);
        }
        public async Task <bool> Handle(CreateAccountRequest request, CancellationToken cancellationToken)
        {
            var existingContact = await _contactRepository.GetContact(request.Email);

            if (existingContact == null)
            {
                var newContact = await _contactRepository.CreateContact(request.Email, request.GivenName, request.FamilyName, request.FromAssessor? "AssessorSignIn" : "ASLogin");

                if (!request.FromAssessor)
                {
                    var invitationResult = await _dfeSignInService.InviteUser(request.Email, request.GivenName,
                                                                              request.FamilyName, newContact.Id);

                    if (!invitationResult.IsSuccess)
                    {
                        if (invitationResult.UserExists)
                        {
                            await _contactRepository.UpdateSignInId(newContact.Id, invitationResult.ExistingUserId);

                            return(true);
                        }
                        return(false);
                    }
                }
            }
            else
            {
                if (!request.FromAssessor)
                {
                    var invitationResult = await _dfeSignInService.InviteUser(request.Email, request.GivenName,
                                                                              request.FamilyName, existingContact.Id);

                    if (!invitationResult.IsSuccess)
                    {
                        if (invitationResult.UserExists)
                        {
                            await _contactRepository.UpdateSignInId(existingContact.Id, invitationResult.ExistingUserId);

                            return(true);
                        }
                        return(false);
                    }
                }
//                if (existingContact.SigninId == null)
//                {
                // They have signed up in Apply, but we have yet to receive a DfE Sign In id from DfE.
                // This is either because they haven't followed the link and signed up in DfE yet, or
                // there was a problem with the Callback from DfE.
                // If it was a problem with the Callback, then this extra call to InviteUser will kick off another one without
                // sending them another Invite email.
//                    var invitationResult = await _dfeSignInService.InviteUser(request.Email, request.GivenName, request.FamilyName, existingContact.Id);
//                    if (!invitationResult.IsSuccess)
//                    {
//                        return false;
//                    }
                //}
                // otherwise advise they already have an account (by Email)
                //await _emailServiceObject.SendEmailToContact(EmailTemplateName.APPLY_SIGNUP_ERROR, existingContact, new { });
            }

            return(true);
        }