public void SetUp() { dataContextMock = MockRepository.GenerateMock<IDataContext>(); emailServiceMock = MockRepository.GenerateMock<IIdentityMessageService>(); configurationManagerMock = MockRepository.GenerateMock<IConfigurationManager>(); playerInvitation = new PlayerInvitation { CustomEmailMessage = "custom message", EmailSubject = "email subject", InvitedPlayerEmail = "player email", InvitedPlayerId = 1 }; currentUser = new ApplicationUser { CurrentGamingGroupId = 15, UserName = "******" }; player = new Player { Id = playerInvitation.InvitedPlayerId, GamingGroupId = 135 }; gamingGroup = new GamingGroup { Id = currentUser.CurrentGamingGroupId, Name = "jake's Gaming Group" }; gamingGroupInvitation = new GamingGroupInvitation { Id = Guid.NewGuid() }; dataContextMock.Expect(mock => mock.FindById<GamingGroup>(currentUser.CurrentGamingGroupId)) .Return(gamingGroup); List<ApplicationUser> applicationUsers = new List<ApplicationUser> { new ApplicationUser { Email = playerInvitation.InvitedPlayerEmail, Id = existingUserId } }; dataContextMock.Expect(mock => mock.GetQueryable<ApplicationUser>()) .Return(applicationUsers.AsQueryable()); dataContextMock.Expect(mock => mock.Save<GamingGroupInvitation>(Arg<GamingGroupInvitation>.Is.Anything, Arg<ApplicationUser>.Is.Anything)) .Return(gamingGroupInvitation); configurationManagerMock.Expect(mock => mock.AppSettings[PlayerInviter.APP_SETTING_URL_ROOT]) .Return(rootUrl); emailServiceMock.Expect(mock => mock.SendAsync(Arg<IdentityMessage>.Is.Anything)) .Return(Task.FromResult<object>(null)); playerInviter = new PlayerInviter(dataContextMock, emailServiceMock, configurationManagerMock); }
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); }
public virtual ActionResult InvitePlayer(PlayerInvitationViewModel playerInvitationViewModel, ApplicationUser currentUser) { var playerInvitation = new PlayerInvitation { InvitedPlayerId = playerInvitationViewModel.PlayerId, InvitedPlayerEmail = playerInvitationViewModel.EmailAddress.Trim(), EmailSubject = playerInvitationViewModel.EmailSubject, CustomEmailMessage = playerInvitationViewModel.EmailBody }; playerInviter.InvitePlayer(playerInvitation, currentUser); SetToastMessage(TempMessageKeys.TEMP_MESSAGE_KEY_PLAYER_INVITED,$"Mail to invite {playerInvitationViewModel.PlayerName} sended succesfully"); return new RedirectResult(Url.Action(MVC.GamingGroup.ActionNames.Index, MVC.GamingGroup.Name)); }