private async Task <Either <ActionResult, Unit> > CreateExistingUserReleaseInvite(Release release, string email,
                                                                                          User user)
        {
            if (!await _userReleaseInviteRepository.UserHasInvite(release.Id, email, PrereleaseViewer))
            {
                var sendEmail = release.ApprovalStatus == ReleaseApprovalStatus.Approved;

                if (sendEmail)
                {
                    var emailResult = await SendPreReleaseInviteEmail(release, email, isNewUser : false);

                    if (emailResult.IsLeft)
                    {
                        return(emailResult);
                    }
                }

                await _userReleaseInviteRepository.Create(
                    releaseId : release.Id,
                    email : email,
                    releaseRole : PrereleaseViewer,
                    emailSent : sendEmail,
                    createdById : _userService.GetUserId(),
                    accepted : true); // accepted as user already exists

                await _userReleaseRoleRepository.CreateIfNotExists(
                    userId : user.Id,
                    releaseId : release.Id,
                    role : PrereleaseViewer,
                    createdById : _userService.GetUserId());
            }

            return(Unit.Instance);
        }