public void InvitePlayer(PlayerInvitation playerInvitation, ApplicationUser currentUser)
{
GamingGroup gamingGroup = dataContext.FindById<GamingGroup>(currentUser.CurrentGamingGroupId);
string existingUserId = (from ApplicationUser user in dataContext.GetQueryable<ApplicationUser>()
where user.Email == playerInvitation.InvitedPlayerEmail
select user.Id).FirstOrDefault();
GamingGroupInvitation gamingGroupInvitation = new GamingGroupInvitation
{
DateSent = DateTime.UtcNow,
GamingGroupId = currentUser.CurrentGamingGroupId,
InviteeEmail = playerInvitation.InvitedPlayerEmail,
InvitingUserId = currentUser.Id,
PlayerId = playerInvitation.InvitedPlayerId,
RegisteredUserId = existingUserId
};
GamingGroupInvitation savedGamingGroupInvitation = dataContext.Save<GamingGroupInvitation>(gamingGroupInvitation, currentUser);
//commit so we can get the Id back
dataContext.CommitAllChanges();
string urlRoot = configurationManager.AppSettings[APP_SETTING_URL_ROOT];
string messageBody = string.Format(PlayerInviter.EMAIL_MESSAGE_INVITE_PLAYER,
currentUser.UserName,
gamingGroup.Name,
urlRoot,
playerInvitation.CustomEmailMessage,
savedGamingGroupInvitation.Id,
"<br/><br/>");
var message = new IdentityMessage
{
Body = messageBody,
Destination = playerInvitation.InvitedPlayerEmail,
Subject = playerInvitation.EmailSubject
};
emailService.SendAsync(message);
}
}