protected void InviteButton_Click(object sender, EventArgs e) { if (!Page.IsValid) { return; } //create invitation Code var contact = XrmContext.CreateQuery("contact").FirstOrDefault(c => c.GetAttributeValue <Guid>("contactid") == ContactToEdit.GetAttributeValue <Guid>("contactid")); if (contact == null) { throw new ArgumentNullException(string.Format("Unable to find contact with id equal to {0}", ContactToEdit.GetAttributeValue <Guid>("contactid"))); } var invitation = new Entity("adx_invitation"); invitation.SetAttributeValue("adx_name", "Auto-generated email confirmation"); invitation.SetAttributeValue("adx_type", new OptionSetValue(756150000)); // Single invitation.SetAttributeValue("adx_invitecontact", contact.ToEntityReference()); invitation.SetAttributeValue("adx_invitationcode", XrmContext.CreateInvitationCode()); XrmContext.AddObject(invitation); CreatePermissions(); XrmContext.SaveChanges(); // Execute workflow to send invitation code in confirmation email XrmContext.ExecuteWorkflowByName(ServiceContext.GetSiteSettingValueByName(Website, "Account/EmailConfirmation/WorkflowName") ?? "ADX Sign Up Email", invitation.Id); InvitationConfirmationMessage.Visible = true; }
protected void InviteContact(Entity contact) { var invitation = new Entity("adx_invitation"); invitation.SetAttributeValue("adx_name", "Auto-generated email confirmation"); invitation.SetAttributeValue("adx_type", new OptionSetValue(756150000)); // Single invitation.SetAttributeValue("adx_invitecontact", contact.ToEntityReference()); invitation.SetAttributeValue("adx_invitationcode", XrmContext.CreateInvitationCode()); var oppPermissions = new Entity("adx_opportunitypermissions"); oppPermissions.SetAttributeStringTruncatedToMaxLength(XrmContext, "adx_name", "opportunitity permissions for " + contact.GetAttributeValue <string>("fullname")); oppPermissions.SetAttributeValue("adx_contactid", contact.ToEntityReference()); oppPermissions.SetAttributeValue("adx_accountid", contact.GetAttributeValue <EntityReference>("parentcustomerid")); oppPermissions.SetAttributeValue("adx_scope", new OptionSetValue((int)Enums.OpportunityAccessScope.Self)); oppPermissions.SetAttributeValue("adx_read", true); var channelPermissions = new Entity("adx_channelpermissions"); channelPermissions.SetAttributeStringTruncatedToMaxLength(XrmContext, "adx_name", "channel permissions for " + contact.GetAttributeValue <string>("fullname")); channelPermissions.SetAttributeValue("adx_contactid", contact.ToEntityReference()); channelPermissions.SetAttributeValue("adx_accountid", contact.GetAttributeValue <EntityReference>("parentcustomerid")); XrmContext.AddObject(invitation); XrmContext.AddObject(channelPermissions); XrmContext.AddObject(oppPermissions); XrmContext.UpdateObject(contact); XrmContext.SaveChanges(); // Execute workflow to send invitation code in confirmation email XrmContext.ExecuteWorkflowByName(ServiceContext.GetSiteSettingValueByName(Website, "Account/EmailConfirmation/WorkflowName") ?? "ADX Sign Up Email", invitation.Id); }