public void JoinGroup( ManagedSecurityContext sec, string message) { ManagedAccountGroup group = new ManagedAccountGroup(Session, mInstance.AccountGroup); if (group.Instance.IsPrivate && !group.HasAdministratorAccount(mInstance.Requester.Id)) { TransitAccountGroupAccountRequest t_request = new TransitAccountGroupAccountRequest(); t_request.AccountGroupId = mInstance.AccountGroup.Id; t_request.AccountId = mInstance.Account.Id; t_request.Message = string.Format("{0} invited {1} to \"{2}\". " + "The invitation was accepted and needs to be approved by the group administrator.\n{3}", mInstance.Requester.Name, mInstance.Account.Name, mInstance.AccountGroup.Name, message); t_request.Submitted = DateTime.UtcNow; ManagedAccountGroupAccountRequest m_request = new ManagedAccountGroupAccountRequest(Session); m_request.CreateOrUpdate(t_request, sec); } else { TransitAccountGroupAccount t_account = new TransitAccountGroupAccount(); t_account.AccountId = mInstance.Account.Id; t_account.AccountGroupId = mInstance.AccountGroup.Id; t_account.Created = t_account.Modified = DateTime.UtcNow; ManagedAccountGroupAccount m_accountgroupaccount = new ManagedAccountGroupAccount(Session); m_accountgroupaccount.CreateOrUpdate(t_account, sec); } }
protected override void Save(ManagedSecurityContext sec) { mInstance.Modified = DateTime.UtcNow; bool fNew = (mInstance.Id == 0); if (mInstance.Id == 0) { mInstance.Created = mInstance.Modified; } base.Save(sec); // create an admin account that owns the group if (fNew) { TransitAccountGroupAccount t_admin = new TransitAccountGroupAccount(); t_admin.AccountGroupId = mInstance.Id; t_admin.AccountId = sec.Account.Id; t_admin.IsAdministrator = true; ManagedAccountGroupAccount m_admin = new ManagedAccountGroupAccount(Session); m_admin.CreateOrUpdate(t_admin, ManagedAccount.GetAdminSecurityContext(Session)); ManagedDiscussion.GetOrCreateDiscussionId(Session, typeof(AccountGroup).Name, mInstance.Id, sec); } }