public static string DisplayEventReceivers(List list, string receiverName)
        {
            string eventReceivers = "";

            ClientContext context = (ClientContext)list.Context;

            context.Load(list);
            context.ExecuteQuery();

            EventReceiverDefinitionCollection erdc = list.EventReceivers;

            context.Load(erdc);
            context.ExecuteQuery();

            List <EventReceiverDefinition> toDelete = new List <EventReceiverDefinition>();

            foreach (EventReceiverDefinition erd in erdc)
            {
                if (erd.ReceiverName == receiverName)
                {
                    toDelete.Add(erd);

                    eventReceivers += "Name: " + erd.ReceiverName + " Class: " + erd.ReceiverClass + " Event Type:" + erd.EventType + " url:" + erd.ReceiverUrl + " Assembly:" + erd.ReceiverAssembly + "\n";
                }
            }

            return(eventReceivers);
        }
        public static void DeleteEventReceivers(List list, string receiverName)
        {
            ClientContext context = (ClientContext)list.Context;

            context.Load(list);
            context.ExecuteQuery();

            EventReceiverDefinitionCollection erdc = list.EventReceivers;

            context.Load(erdc);
            context.ExecuteQuery();

            List <EventReceiverDefinition> toDelete = new List <EventReceiverDefinition>();

            foreach (EventReceiverDefinition erd in erdc)
            {
                if (erd.ReceiverName == receiverName)
                {
                    toDelete.Add(erd);
                }
            }

            //Delete the remote event receiver from the list
            foreach (EventReceiverDefinition item in toDelete)
            {
                item.DeleteObject();
                context.ExecuteQuery();
            }
        }
Beispiel #3
0
        private static void DeleteWebEventReceiver(string webUrl, string eventName, string assemblyName)
        {
            try
            {
                Logger.LogInfoMessage(String.Format("Deleting WEB Event Receiver [{0}] from web {1} ...", eventName, webUrl), true);

                using (ClientContext userContext = Helper.CreateAuthenticatedUserContext(Program.AdminDomain, Program.AdminUsername, Program.AdminPassword, webUrl))
                {
                    Web web = userContext.Web;
                    EventReceiverDefinitionCollection receivers = web.EventReceivers;
                    userContext.Load(web);
                    userContext.Load(receivers);
                    userContext.ExecuteQuery();

                    foreach (EventReceiverDefinition receiver in receivers)
                    {
                        if (receiver.ReceiverName.Equals(eventName, StringComparison.InvariantCultureIgnoreCase) &&
                            receiver.ReceiverAssembly.Equals(assemblyName, StringComparison.InvariantCultureIgnoreCase)
                            )
                        {
                            receiver.DeleteObject();
                            userContext.ExecuteQuery();
                            Logger.LogSuccessMessage(String.Format("Deleted WEB Event Receiver [{0}] from web {1}", eventName, webUrl), false);
                            return;
                        }
                    }
                    Logger.LogErrorMessage(String.Format("DeleteWebEventReceiver() failed for Event Receiver [{0}] on web {1}; Error=Event Receiver not Found.", eventName, webUrl), false);
                }
            }
            catch (Exception ex)
            {
                Logger.LogErrorMessage(String.Format("DeleteWebEventReceiver() failed for Event Receiver [{0}] on web {1}; Error={2}", eventName, webUrl, ex.Message), false);
            }
        }
Beispiel #4
0
 public void UnBind(ClientContext clientContext,
                    string listName,
                    string eventRecieverName)
 {
     try
     {
         var list = clientContext.Web.Lists.GetByTitle(listName);
         clientContext.Load(list);
         clientContext.ExecuteQuery();
         EventReceiverDefinitionCollection eventRColl = list.EventReceivers;
         clientContext.Load(eventRColl);
         clientContext.ExecuteQuery();
         List <EventReceiverDefinition> toDelete = new List <EventReceiverDefinition>();
         foreach (EventReceiverDefinition erdef in eventRColl)
         {
             if (erdef.ReceiverName == eventRecieverName)
             {
                 toDelete.Add(erdef);
             }
         }
         //Delete the remote event receiver from the list, when the app gets uninstalled
         foreach (EventReceiverDefinition item in toDelete)
         {
             item.DeleteObject();
             clientContext.ExecuteQuery();
         }
     }
     catch (Exception ex)
     {
     }
 }
        private static bool DeleteListEventReceiver(string webUrl, string hostId, string eventName, string assemblyName)
        {
            try
            {
                Logger.LogInfoMessage(String.Format("Deleting LIST Event Receiver [{0}] from list [{1}] on web {2} ...", eventName, hostId, webUrl), true);

                using (ClientContext userContext = Helper.CreateAuthenticatedUserContext(Program.AdminDomain, Program.AdminUsername, Program.AdminPassword, webUrl))
                {
                    Web web = userContext.Web;
                    userContext.Load(web);
                    userContext.ExecuteQuery();

                    //ListCollection lists = web.Lists;
                    //userContext.Load(lists);

                    Guid listId = new Guid(hostId);
                    List list   = web.Lists.GetById(listId);
                    userContext.Load(list);
                    userContext.ExecuteQuery();
                    if (list == null)
                    {
                        Logger.LogErrorMessage(String.Format("[DeleteMissingEventReceivers: DeleteListEventReceiver] failed for Event Receiver [{0}] on list [{1}] of web {2}; Error=List not Found.", eventName, hostId, webUrl), true);
                        return(false);
                    }

                    EventReceiverDefinitionCollection receivers = list.EventReceivers;
                    userContext.Load(receivers);
                    userContext.ExecuteQuery();

                    foreach (EventReceiverDefinition receiver in receivers)
                    {
                        if (receiver.ReceiverName.Equals(eventName, StringComparison.InvariantCultureIgnoreCase) &&
                            receiver.ReceiverAssembly.Equals(assemblyName, StringComparison.InvariantCultureIgnoreCase)
                            )
                        {
                            receiver.DeleteObject();
                            userContext.ExecuteQuery();
                            Logger.LogSuccessMessage(String.Format("[DeleteMissingEventReceivers: DeleteListEventReceiver] Deleted LIST Event Receiver [{0}] from list [{1}] on web {2} and output file is present in the path: {3}", eventName, list.Title, webUrl, Environment.CurrentDirectory), true);
                            return(true);
                        }
                    }
                    Logger.LogErrorMessage(String.Format("[DeleteMissingEventReceivers: DeleteListEventReceiver] failed for Event Receiver [{0}] on list [{1}] of web {2}; Error=Event Receiver not Found.", eventName, list.Title, webUrl), true);
                }
            }
            catch (Exception ex)
            {
                if (ex.Message.ToLower().Contains("list does not exist"))
                {
                    Logger.LogErrorMessage(String.Format("[DeleteMissingEventReceivers: DeleteListEventReceiver] failed for Event Receiver [{0}] on list [{1}] of web {2}; Error=List not Found.", eventName, hostId, webUrl), true);
                    ExceptionCsv.WriteException(Constants.NotApplicable, Constants.NotApplicable, webUrl, "EventReceiver", ex.Message, ex.ToString(), "DeleteListEventReceiver",
                                                ex.GetType().ToString(), String.Format("DeleteListEventReceiver() failed for Event Receiver [{0}] on list [{1}] of web {2}; Error=List not Found.", eventName, hostId, webUrl));
                    return(false);
                }
                Logger.LogErrorMessage(String.Format("[DeleteMissingEventReceivers: DeleteListEventReceiver] failed for Event Receiver [{0}] on list [{1}] of web {2}; Error={3}", eventName, hostId, webUrl, ex.Message), true);
                ExceptionCsv.WriteException(Constants.NotApplicable, Constants.NotApplicable, webUrl, "EventReceiver", ex.Message, ex.ToString(), "DeleteListEventReceiver",
                                            ex.GetType().ToString(), String.Format("DeleteListEventReceiver() failed for Event Receiver [{0}] on list [{1}] of web {2}; Error={3}", eventName, hostId, webUrl, ex.Message));
            }
            return(false);
        }
Beispiel #6
0
        public SPRemoteEventResult ProcessEvent(SPRemoteEventProperties properties)
        {
            SPRemoteEventResult result = new SPRemoteEventResult();

            if (properties.EventType == SPRemoteEventType.AppInstalled)
            {
                using (ClientContext clientContext = TokenHelper.CreateAppEventClientContext(properties, false))
                {
                    if (clientContext != null)
                    {
                        //Get reference to the host web list by itsname
                        var documentsList = clientContext.Web.Lists.GetByTitle("firstlist");
                        clientContext.Load(documentsList);
                        clientContext.ExecuteQuery();
                        string remoteUrl = "http://azurewebappname.azurewebsites.net/Services/RemoteEventReceiver1.svc";
                        //Create the remote event receiver definition
                        EventReceiverDefinitionCreationInformation newEventReceiver = new EventReceiverDefinitionCreationInformation()
                        {
                            EventType        = EventReceiverType.ItemAdded,
                            ReceiverAssembly = Assembly.GetExecutingAssembly().FullName,
                            ReceiverName     = "RemoteEventReceiver1",
                            ReceiverClass    = "RemoteEventReceiver1",
                            ReceiverUrl      = remoteUrl,
                            SequenceNumber   = 15000
                        };
                        //Add the remote event receiver to the host web list
                        documentsList.EventReceivers.Add(newEventReceiver);
                        clientContext.ExecuteQuery();
                    }
                }
            }
            else if (properties.EventType == SPRemoteEventType.AppUninstalling)
            {
                using (ClientContext clientContext = TokenHelper.CreateAppEventClientContext(properties, false))
                {
                    var list = clientContext.Web.Lists.GetByTitle("firstlist");
                    clientContext.Load(list);
                    clientContext.ExecuteQuery();
                    EventReceiverDefinitionCollection erdc = list.EventReceivers;
                    clientContext.Load(erdc);
                    clientContext.ExecuteQuery();
                    List <EventReceiverDefinition> toDelete = new List <EventReceiverDefinition>();
                    foreach (EventReceiverDefinition erd in erdc)
                    {
                        if (erd.ReceiverName == "RemoteEventReceiver1")
                        {
                            toDelete.Add(erd);
                        }
                    }
                    //Delete the remote event receiver from the list, when the app gets uninstalled
                    foreach (EventReceiverDefinition item in toDelete)
                    {
                        item.DeleteObject();
                        clientContext.ExecuteQuery();
                    }
                }
            }
            return(result);
        }
Beispiel #7
0
        private static void DeleteListEventReceiver(string webUrl, string hostId, string eventName, string assemblyName)
        {
            try
            {
                Logger.LogInfoMessage(String.Format("Deleting LIST Event Receiver [{0}] from list [{1}] on web {2} ...", eventName, hostId, webUrl), true);

                using (ClientContext userContext = Helper.CreateAuthenticatedUserContext(Program.AdminDomain, Program.AdminUsername, Program.AdminPassword, webUrl))
                {
                    Web web = userContext.Web;
                    userContext.Load(web);
                    userContext.ExecuteQuery();

                    //ListCollection lists = web.Lists;
                    //userContext.Load(lists);

                    Guid listId = new Guid(hostId);
                    List list   = web.Lists.GetById(listId);
                    userContext.Load(list);
                    userContext.ExecuteQuery();
                    if (list == null)
                    {
                        Logger.LogErrorMessage(String.Format("DeleteListEventReceiver() failed for Event Receiver [{0}] on list [{1}] of web {2}; Error=List not Found.", eventName, hostId, webUrl), false);
                        return;
                    }

                    EventReceiverDefinitionCollection receivers = list.EventReceivers;
                    userContext.Load(receivers);
                    userContext.ExecuteQuery();

                    foreach (EventReceiverDefinition receiver in receivers)
                    {
                        if (receiver.ReceiverName.Equals(eventName, StringComparison.InvariantCultureIgnoreCase) &&
                            receiver.ReceiverAssembly.Equals(assemblyName, StringComparison.InvariantCultureIgnoreCase)
                            )
                        {
                            receiver.DeleteObject();
                            userContext.ExecuteQuery();
                            Logger.LogSuccessMessage(String.Format("Deleted LIST Event Receiver [{0}] from list [{1}] on web {2}", eventName, list.Title, webUrl), false);
                            return;
                        }
                    }
                    Logger.LogErrorMessage(String.Format("DeleteListEventReceiver() failed for Event Receiver [{0}] on list [{1}] of web {2}; Error=Event Receiver not Found.", eventName, list.Title, webUrl), false);
                }
            }
            catch (Exception ex)
            {
                if (ex.Message.ToLower().Contains("list does not exist"))
                {
                    Logger.LogErrorMessage(String.Format("DeleteListEventReceiver() failed for Event Receiver [{0}] on list [{1}] of web {2}; Error=List not Found.", eventName, hostId, webUrl), false);
                    return;
                }
                Logger.LogErrorMessage(String.Format("DeleteListEventReceiver() failed for Event Receiver [{0}] on list [{1}] of web {2}; Error={3}", eventName, hostId, webUrl, ex.Message), false);
            }
        }
        protected Microsoft.SharePoint.Client.EventReceiverDefinition FindEventReceiverDefinition(EventReceiverDefinitionCollection receivers, EventReceiverDefinition definition)
        {
            var receiverName = definition.Name.ToUpper();

            receivers.Context.Load(receivers);
            receivers.Context.ExecuteQuery();

            return receivers.OfType<Microsoft.SharePoint.Client.EventReceiverDefinition>()
                            .FirstOrDefault(r =>
                                !string.IsNullOrEmpty(r.ReceiverName) &&
                                r.ReceiverName.ToUpper() == receiverName);
        }
Beispiel #9
0
        private static void DeleteEventHandler(ClientContext ctx, EventReceiverDefinitionCollection events,
                                               string eventName)
        {
            var remoteEvent =
                events.Where(e => e.ReceiverName == eventName).FirstOrDefault();

            if (remoteEvent != null)
            {
                remoteEvent.DeleteObject();
                ctx.ExecuteQueryRetry();
            }
        }
        private void DeployEventReceiver(object modelHost, EventReceiverDefinitionCollection eventReceivers,
            EventReceiverDefinition definition)
        {
            var context = eventReceivers.Context;

            var existingReceiver = FindEventReceiverDefinition(eventReceivers, definition);

            InvokeOnModelEvent(this, new ModelEventArgs
            {
                CurrentModelNode = null,
                Model = null,
                EventType = ModelEventType.OnProvisioning,
                Object = existingReceiver,
                ObjectType = typeof(Microsoft.SharePoint.Client.EventReceiverDefinition),
                ObjectDefinition = definition,
                ModelHost = modelHost
            });

            bool isNew = false;

            if (existingReceiver == null)
            {
                isNew = true;

                existingReceiver = eventReceivers.Add(new EventReceiverDefinitionCreationInformation
                {
                    ReceiverName = definition.Name,
                    EventType = (EventReceiverType)Enum.Parse(typeof(EventReceiverType), definition.Type),
                    Synchronization = (EventReceiverSynchronization)Enum.Parse(typeof(EventReceiverSynchronization), definition.Synchronization),
                    ReceiverAssembly = definition.Assembly,
                    ReceiverClass = definition.Class,
                    SequenceNumber = definition.SequenceNumber,
                });
            }

            MapEventReceiverProperties(definition, existingReceiver, isNew);

            InvokeOnModelEvent(this, new ModelEventArgs
            {
                CurrentModelNode = null,
                Model = null,
                EventType = ModelEventType.OnProvisioned,
                Object = existingReceiver,
                ObjectType = typeof(Microsoft.SharePoint.Client.EventReceiverDefinition),
                ObjectDefinition = definition,
                ModelHost = modelHost
            });

            existingReceiver.Update();
            context.ExecuteQuery();
        }
Beispiel #11
0
        private void DeployEventReceiver(object modelHost, EventReceiverDefinitionCollection eventReceivers,
                                         EventReceiverDefinition definition)
        {
            var context = eventReceivers.Context;

            var existingReceiver = FindEventReceiverDefinition(eventReceivers, definition);

            InvokeOnModelEvent(this, new ModelEventArgs
            {
                CurrentModelNode = null,
                Model            = null,
                EventType        = ModelEventType.OnProvisioning,
                Object           = existingReceiver,
                ObjectType       = typeof(Microsoft.SharePoint.Client.EventReceiverDefinition),
                ObjectDefinition = definition,
                ModelHost        = modelHost
            });

            bool isNew = false;

            if (existingReceiver == null)
            {
                isNew = true;

                existingReceiver = eventReceivers.Add(new EventReceiverDefinitionCreationInformation
                {
                    ReceiverName     = definition.Name,
                    EventType        = (EventReceiverType)Enum.Parse(typeof(EventReceiverType), definition.Type),
                    Synchronization  = (EventReceiverSynchronization)Enum.Parse(typeof(EventReceiverSynchronization), definition.Synchronization),
                    ReceiverAssembly = definition.Assembly,
                    ReceiverClass    = definition.Class,
                    SequenceNumber   = definition.SequenceNumber,
                });
            }

            MapEventReceiverProperties(definition, existingReceiver, isNew);

            InvokeOnModelEvent(this, new ModelEventArgs
            {
                CurrentModelNode = null,
                Model            = null,
                EventType        = ModelEventType.OnProvisioned,
                Object           = existingReceiver,
                ObjectType       = typeof(Microsoft.SharePoint.Client.EventReceiverDefinition),
                ObjectDefinition = definition,
                ModelHost        = modelHost
            });

            existingReceiver.Update();
            context.ExecuteQuery();
        }
        private static bool DeleteSiteEventReceiver(string siteUrl, string eventName, string assemblyName)
        {
            try
            {
                Logger.LogInfoMessage(String.Format("Deleting SITE Event Receiver [{0}] from site {1} ...", eventName, siteUrl), true);

                using (ClientContext userContext = Helper.CreateAuthenticatedUserContext(Program.AdminDomain, Program.AdminUsername, Program.AdminPassword, siteUrl))
                {
                    Site site = userContext.Site;
                    EventReceiverDefinitionCollection receivers = site.EventReceivers;
                    userContext.Load(site);
                    userContext.Load(receivers);
                    userContext.ExecuteQuery();

                    foreach (EventReceiverDefinition receiver in receivers)
                    {
                        if (receiver.ReceiverName.Equals(eventName, StringComparison.InvariantCultureIgnoreCase) &&
                            receiver.ReceiverAssembly.Equals(assemblyName, StringComparison.InvariantCultureIgnoreCase)
                            )
                        {
                            receiver.DeleteObject();
                            userContext.ExecuteQuery();
                            Logger.LogSuccessMessage(String.Format("[DeleteMissingEventReceivers: DeleteSiteEventReceiver] Deleted SITE Event Receiver [{0}] from site {1} and output file is present in the path: {2}", eventName, siteUrl, Environment.CurrentDirectory), true);
                            return(true);
                        }
                    }
                    Logger.LogErrorMessage(String.Format("[DeleteMissingEventReceivers: DeleteSiteEventReceiver] DeleteSiteEventReceiver() failed for Event Receiver [{0}] on site {1}; Error=Event Receiver not Found.", eventName, siteUrl), true);
                }
            }
            catch (Exception ex)
            {
                Logger.LogErrorMessage(String.Format("[DeleteMissingEventReceivers: DeleteSiteEventReceiver] failed for Event Receiver [{0}] on site {1}; Error={2}", eventName, siteUrl, ex.Message), true);
                ExceptionCsv.WriteException(Constants.NotApplicable, siteUrl, Constants.NotApplicable, "EventReceiver", ex.Message, ex.ToString(), "DeleteSiteEventReceiver",
                                            ex.GetType().ToString(), String.Format("[DeleteMissingEventReceivers: DeleteSiteEventReceiver] failed for Event Receiver [{0}] on site {1}", eventName, siteUrl));
                return(false);
            }
            return(false);
        }
        public static void AddEventReceivers(List list, string receiverName, string receiverUrl)
        {
            ClientContext context = (ClientContext)list.Context;

            string receiverAssembly = Assembly.GetExecutingAssembly().FullName;
            EventReceiverDefinitionCollection eventReceivers = list.EventReceivers;
            string receiverClass = RECEIVERCLASSPREFIX + receiverName;

            EventReceiverDefinitionCreationInformation updatedEventReceiver = new EventReceiverDefinitionCreationInformation()
            {
                ReceiverAssembly = receiverAssembly,
                ReceiverName     = receiverName,
                ReceiverClass    = receiverClass,
                ReceiverUrl      = receiverUrl,
                SequenceNumber   = 1000,
                EventType        = EventReceiverType.ItemUpdated
            };

            context.Load(eventReceivers);
            context.ExecuteQuery();
            list.EventReceivers.Add(updatedEventReceiver);
            context.ExecuteQuery();

            EventReceiverDefinitionCreationInformation addedEventReceiver = new EventReceiverDefinitionCreationInformation()
            {
                ReceiverAssembly = receiverAssembly,
                ReceiverName     = receiverName,
                ReceiverClass    = receiverClass,
                ReceiverUrl      = receiverUrl,
                SequenceNumber   = 1000,
                EventType        = EventReceiverType.ItemAdded
            };

            context.Load(eventReceivers);
            context.ExecuteQuery();
            list.EventReceivers.Add(addedEventReceiver);
            context.ExecuteQuery();
        }
Beispiel #14
0
        protected Microsoft.SharePoint.Client.EventReceiverDefinition FindEventReceiverDefinition(EventReceiverDefinitionCollection receivers, EventReceiverDefinition definition)
        {
            var receiverName = definition.Name.ToUpper();

            receivers.Context.Load(receivers);
            receivers.Context.ExecuteQuery();

            return(receivers.OfType <Microsoft.SharePoint.Client.EventReceiverDefinition>()
                   .FirstOrDefault(r =>
                                   !string.IsNullOrEmpty(r.ReceiverName) &&
                                   r.ReceiverName.ToUpper() == receiverName));
        }
 public SPOEventReceiverDefinition(EventReceiverDefinition erd, EventReceiverDefinitionCollection parentCollection)
 {
     _erd = erd;
     _parentCollection = parentCollection;
 }
 public SPOEventReceiverDefinition(EventReceiverDefinition erd, EventReceiverDefinitionCollection parentCollection)
 {
     _erd = erd;
     _parentCollection = parentCollection;
 }