private void HandleItemUpdated(SPRemoteEventProperties properties) { using (ClientContext clientContext = TokenHelper.CreateRemoteEventReceiverClientContext(properties)) { if (clientContext != null) { List requestList = clientContext.Web.Lists.GetById(properties.ItemEventProperties.ListId); ListItem item = requestList.GetItemById(properties.ItemEventProperties.ListItemId); clientContext.Load(item); clientContext.ExecuteQuery(); if (String.Compare(item[SiteRequestFields.State].ToString(), "Approved", true) == 0) { try { string site_title = item[SiteRequestFields.Title].ToString(); string site_description = item[SiteRequestFields.Description].ToString(); string site_template = item[SiteRequestFields.Template].ToString(); string site_url = item[SiteRequestFields.Url].ToString(); SharePointUser site_owner = LabHelper.BaseSetUser(clientContext, item, SiteRequestFields.Owner); LabHelper.CreateSiteCollection(clientContext, site_url, site_template, site_title, site_description, site_owner.Email); item[SiteRequestFields.State] = "COMPLETED"; } catch (Exception ex) { item[SiteRequestFields.State] = "ERROR"; item[SiteRequestFields.StatusMessage] = ex.Message; } item.Update(); clientContext.ExecuteQuery(); } } } }
private void HandleAppInstalled(SPRemoteEventProperties properties) { using (ClientContext ctx = TokenHelper.CreateAppEventClientContext(properties, false)) { if (ctx != null) { //Add a list to the host web List eventReceiverList = LabHelper.AddList(ctx, ctx.Web, Microsoft.SharePoint.Client.ListTemplateType.GenericList, ListName); //Remove existing event handlers ctx.Load(eventReceiverList, x => x.EventReceivers); ctx.ExecuteQuery(); foreach (var rer in eventReceiverList.EventReceivers) { if (rer.ReceiverName == ReceiverName) { System.Diagnostics.Trace.WriteLine("Found existing ItemAdded receiver at " + rer.ReceiverUrl); try { //This will fail when deploying via F5, but works when deployed to production rer.DeleteObject(); ctx.ExecuteQuery(); } catch (Exception ex) { System.Diagnostics.Trace.WriteLine(ex.Message); } } } //Get WCF URL where this message was handled OperationContext op = OperationContext.Current; Message msg = op.RequestContext.RequestMessage; //Create a new event receiver EventReceiverDefinitionCreationInformation receiver = new EventReceiverDefinitionCreationInformation(); receiver.EventType = EventReceiverType.ItemAdded; receiver.ReceiverUrl = msg.Headers.To.ToString(); receiver.ReceiverName = ReceiverName; receiver.Synchronization = EventReceiverSynchronization.Synchronous; //Add the new event receiver to a list in the host web eventReceiverList.EventReceivers.Add(receiver); ctx.ExecuteQuery(); } } }