public void RunInvitationReminders(ISession session, ManagedSecurityContext sec) { // fetch invitations that are older than a month IEnumerator <AccountInvitation> invitations = session.CreateQuery( string.Format("FROM AccountInvitation WHERE Modified < '{0}'", DateTime.UtcNow.AddMonths(-1).ToString(DateTimeFormatInfo.InvariantInfo))) .Enumerable <AccountInvitation>().GetEnumerator(); while (invitations.MoveNext() && !IsStopping) { AccountInvitation invitation = invitations.Current; if (invitation.Created == invitation.Modified) { try { // this invitation was never resent ManagedAccountInvitation mi = new ManagedAccountInvitation(session, invitation); mi.Send(); } catch (ThreadAbortException) { throw; } catch (Exception ex) { EventLogManager.WriteEntry(string.Format("Error sending an invitation reminder to {0} <{1}>: {2}", invitation.Account.Id, invitation.Email, ex.Message), EventLogEntryType.Warning); } finally { invitation.Modified = DateTime.UtcNow; session.Save(invitation); } } else { // delete an invitation that has not been responded to for over a month session.Delete(invitation); } } }
public void RunInvitationReminders(ISession session, ManagedSecurityContext sec) { // fetch invitations that are older than a month IEnumerator<AccountInvitation> invitations = session.CreateQuery( string.Format("FROM AccountInvitation WHERE Modified < '{0}'", DateTime.UtcNow.AddMonths(-1).ToString(DateTimeFormatInfo.InvariantInfo))) .Enumerable<AccountInvitation>().GetEnumerator(); while (invitations.MoveNext() && ! IsStopping) { AccountInvitation invitation = invitations.Current; if (invitation.Created == invitation.Modified) { try { // this invitation was never resent ManagedAccountInvitation mi = new ManagedAccountInvitation(session, invitation); mi.Send(); } catch (ThreadAbortException) { throw; } catch (Exception ex) { EventLogManager.WriteEntry(string.Format("Error sending an invitation reminder to {0} <{1}>: {2}", invitation.Account.Id, invitation.Email, ex.Message), EventLogEntryType.Warning); } finally { invitation.Modified = DateTime.UtcNow; session.Save(invitation); } } else { // delete an invitation that has not been responded to for over a month session.Delete(invitation); } } }
public void DeclineInvitation(int id, string code) { using (SnCore.Data.Hibernate.Session.OpenConnection()) { ISession session = SnCore.Data.Hibernate.Session.Current; ManagedAccountInvitation invitation = new ManagedAccountInvitation(session, id); if (invitation.Code != code) { throw new ManagedAccount.AccessDeniedException(); } ManagedAccount recepient = new ManagedAccount(session, invitation.AccountId); ManagedSiteConnector.TrySendAccountEmailMessageUriAsAdmin(session, recepient, string.Format("EmailAccountInvitationReject.aspx?id={0}", invitation.Id)); invitation.Delete(ManagedAccount.GetAdminSecurityContext(session)); SnCore.Data.Hibernate.Session.Flush(); } }
public int CreateAccountWithInvitation(int invitationid, string code, TransitAccount ta) { using (SnCore.Data.Hibernate.Session.OpenConnection()) { ISession session = SnCore.Data.Hibernate.Session.Current; ManagedAccountInvitation invitation = new ManagedAccountInvitation(session, invitationid); if (invitation.Code != code) { throw new ManagedAccount.AccessDeniedException(); } ManagedAccount acct = new ManagedAccount(session); int id = acct.Create(invitation.Instance.Email, ta, true, ManagedAccount.GetAdminSecurityContext(session)); // become friends with the person who invited you TransitAccountFriend t_friend = new TransitAccountFriend(); AccountFriend friend = new AccountFriend(); friend.Account = session.Load<Account>(invitation.AccountId); friend.Keen = session.Load<Account>(id); friend.Created = DateTime.UtcNow; session.Save(friend); SnCore.Data.Hibernate.Session.Flush(); // notify that a friend has joined ManagedAccount recepient = new ManagedAccount(session, invitation.AccountId); ManagedSiteConnector.TrySendAccountEmailMessageUriAsAdmin(session, recepient, string.Format("EmailAccountInvitationAccept.aspx?id={0}&aid={1}", invitation.Id, id)); // if this is a group invitation, join the group if (invitation.Instance.AccountGroup != null) { AccountGroupAccountInvitation groupInvitation = new AccountGroupAccountInvitation(); groupInvitation.Account = session.Load<Account>(id); groupInvitation.AccountGroup = invitation.Instance.AccountGroup; groupInvitation.Created = invitation.Instance.Created; groupInvitation.Modified = invitation.Instance.Modified; groupInvitation.Requester = session.Load<Account>(invitation.AccountId); ManagedAccountGroupAccountInvitation mGroupInvitation = new ManagedAccountGroupAccountInvitation( session, groupInvitation); mGroupInvitation.JoinGroup(ManagedAccount.GetAdminSecurityContext(session), string.Empty); } invitation.Delete(ManagedAccount.GetAdminSecurityContext(session)); SnCore.Data.Hibernate.Session.Flush(); return acct.Id; } }