public List <SPAlert> GetAlertsInformation(ClientContext cc)
        {
            try
            {
                var alertResults = new List <SPAlert>();
                var users        = cc.LoadQuery(cc.Web.SiteUsers.Include(u => u.LoginName, u => u.Email, u => u.Title));
                cc.ExecuteQuery();
                foreach (var user in users)
                {
                    cc.Load(user.Alerts);
                    cc.ExecuteQuery();
                    foreach (var alert in user.Alerts)
                    {
                        var alertResult = new SPAlert();
                        alertResult.Title         = alert.Title;
                        alertResult.UserLoginName = user.LoginName;
                        alertResult.ListUrl       = alert.ListUrl;
                        alertResult.Filter        = alert.Filter;
                        alertResult.Status        = Enum.GetName(typeof(AlertStatus), alert.Status);

                        alertResults.Add(alertResult);
                    }
                }
                return(alertResults);
            }
            catch (Exception ex)
            {
                logger.Log(LogLevel.Error, ex, $"Site:{cc.Url}");
                throw ex;
            }
        }
Пример #2
0
        private void CheckItems(XmlNode siteNode, string url)
        {
            using (SPWeb web = new SPSite(url).OpenWeb())
            {
                XmlNodeList alertNodes = siteNode.SelectNodes("alert[@type='Item']");
                foreach (XmlNode alertNode in alertNodes)
                {
                    string alertTitle = alertNode.Attributes["title"].Value;
                    string listTitle  = alertNode.Attributes["list"].Value;
                    string loginName  = alertNode.Attributes["user"].Value;
                    int    itemId     = Int32.Parse(alertNode.Attributes["id"].Value);
                    string itemUrl    = alertNode.Attributes["url"].Value;
                    string objectType = alertNode.Attributes["object"].Value;

                    output.Append(string.Format("user: {0,20}...", loginName));
                    try
                    {
                        SPList list = web.Lists[listTitle];
                        SPClaimProviderManager cpm = SPClaimProviderManager.Local;
                        SPClaim userClaim          = cpm.ConvertIdentifierToClaim(loginName, SPIdentifierTypes.WindowsSamAccountName);
                        SPUser  user = web.EnsureUser(userClaim.ToEncodedString());

                        string      eventType   = alertNode.Attributes["event"].Value;
                        SPEventType spEventType = (SPEventType)Enum.Parse(typeof(SPEventType), eventType);

                        string           eventFrequency   = alertNode.Attributes["frequency"].Value;
                        SPAlertFrequency spAlertFrequency = (SPAlertFrequency)Enum.Parse(typeof(SPAlertFrequency), eventFrequency);

                        string      type        = alertNode.Attributes["type"].Value;
                        SPAlertType spAlertType = (SPAlertType)Enum.Parse(typeof(SPAlertType), type);

                        SPListItem item = null;
                        if (list.BaseType == SPBaseType.DocumentLibrary)
                        {
                            SPFile file = web.GetFile(itemUrl);
                            item = file.Item;
                        }
                        else
                        {
                            item = list.GetItemById(itemId);
                        }

                        SPAlert newAlert = user.Alerts.Add();

                        newAlert.Title            = alertTitle;
                        newAlert.AlertType        = spAlertType;
                        newAlert.Item             = item;
                        newAlert.DeliveryChannels = SPAlertDeliveryChannels.Email;
                        newAlert.EventType        = spEventType;
                        newAlert.AlertFrequency   = spAlertFrequency;
                        newAlert.Status           = SPAlertStatus.On;
                        newAlert.Update(false);
                        output.Append(string.Format("Complete" + Environment.NewLine));
                    }
                    catch (Exception ex) { output.Append(string.Format("error: {0,20}" + Environment.NewLine, ex.Message)); }
                }
            }
        }
Пример #3
0
        public AlertNode(object parent, SPAlert alert)
        {
            this.Tag = alert;
            this.SPParent = parent;

            Setup();

            this.Nodes.Add(new ExplorerNodeBase("Dummy"));
        }
Пример #4
0
        public AlertNode(object parent, SPAlert alert)
        {
            this.Tag      = alert;
            this.SPParent = parent;

            Setup();

            this.Nodes.Add(new ExplorerNodeBase("Dummy"));
        }
Пример #5
0
        public SPAlertInstance(ObjectInstance prototype, SPAlert alert)
            : this(prototype)
        {
            if (alert == null)
            {
                throw new ArgumentNullException("alert");
            }

            m_alert = alert;
        }
Пример #6
0
        private string GetAlertInfo(SPAlert alert)
        {
            if (alert.List != null)
            {
                return(_utility.GetDisplayName(alert.List, true));
            }

            if (alert.Item != null)
            {
                return(_utility.GetDisplayName(alert.Item, true));
            }

            return(string.Empty);
        }
Пример #7
0
        private void CheckLists(XmlNode siteNode, string url)
        {
            using (SPWeb web = new SPSite(url).OpenWeb())
            {
                XmlNodeList alertNodes = siteNode.SelectNodes("alert[@type='List']");
                foreach (XmlNode alertNode in alertNodes)
                {
                    string alertTitle = alertNode.Attributes["title"].Value;
                    string listTitle  = alertNode.Attributes["list"].Value;
                    string loginName  = alertNode.Attributes["user"].Value;
                    string objectType = alertNode.Attributes["object"].Value;
                    bool   isFolder   = objectType.ToLower().Equals("folder");

                    if (!isFolder)
                    {
                        output.Append(string.Format("user: {0,20}...", loginName));
                        try
                        {
                            SPList list = web.Lists[listTitle];
                            SPClaimProviderManager cpm = SPClaimProviderManager.Local;
                            SPClaim userClaim          = cpm.ConvertIdentifierToClaim(loginName, SPIdentifierTypes.WindowsSamAccountName);
                            SPUser  user = web.EnsureUser(userClaim.ToEncodedString());

                            string      eventType   = alertNode.Attributes["event"].Value;
                            SPEventType spEventType = (SPEventType)Enum.Parse(typeof(SPEventType), eventType);

                            string           eventFrequency   = alertNode.Attributes["frequency"].Value;
                            SPAlertFrequency spAlertFrequency = (SPAlertFrequency)Enum.Parse(typeof(SPAlertFrequency), eventFrequency);

                            string      type        = alertNode.Attributes["type"].Value;
                            SPAlertType spAlertType = (SPAlertType)Enum.Parse(typeof(SPAlertType), type);

                            SPAlert newAlert = user.Alerts.Add();
                            newAlert.Title            = alertTitle;
                            newAlert.AlertType        = spAlertType;
                            newAlert.List             = list;
                            newAlert.DeliveryChannels = SPAlertDeliveryChannels.Email;
                            newAlert.EventType        = spEventType;
                            newAlert.AlertFrequency   = spAlertFrequency;
                            newAlert.Status           = SPAlertStatus.On;
                            newAlert.Update(false);
                            output.Append(string.Format("Complete" + Environment.NewLine));
                        }
                        catch (Exception ex) { output.Append(string.Format("error: {0,20}" + Environment.NewLine, ex.Message)); }
                    }
                }
            }
        }
Пример #8
0
        private void RemoveAlerts(XmlNode siteNode, string url)
        {
            using (SPWeb web = new SPSite(url).OpenWeb())
            {
                SPClaimProviderManager cpm = SPClaimProviderManager.Local;
                SPClaim userClaim          = cpm.ConvertIdentifierToClaim("emirates\\s717981", SPIdentifierTypes.WindowsSamAccountName);
                SPUser  tempUser           = web.EnsureUser(userClaim.ToEncodedString());

                web.AllowUnsafeUpdates = true;
                try
                {
                    SPAlertCollection allAlerts = web.Alerts;

                    List <Guid> alertsToDelete = new List <Guid>();

                    foreach (SPAlert spAlert in allAlerts)
                    {
                        alertsToDelete.Add(spAlert.ID);
                    }

                    Guid [] alerts = alertsToDelete.ToArray();
                    for (int i = 0; i < alerts.Length; i++)
                    {
                        SPAlert alert = allAlerts[alerts[i]];
                        alert.User   = tempUser;
                        alert.Status = SPAlertStatus.Off;
                        alert.Update();
                    }

                    foreach (Guid alertGuid in alertsToDelete)
                    {
                        allAlerts.Delete(alertGuid);
                    }

                    web.Update();
                }
                catch (Exception ex) { Console.WriteLine(ex.Message); }
                web.AllowUnsafeUpdates = false;
            }
        }
Пример #9
0
        static void Main(string[] args)
        {
            SPSite site = new SPSite("http://chiron");
            SPWeb  web  = site.AllWebs["CodeDemo"];
            SPUser user = web.CurrentUser;

            foreach (SPAlert alert in user.Alerts)
            {
                Debug.WriteLine(alert.AlertType);

                if (alert.AlertType == SPAlertType.List)
                {
                    //user.Alerts.Delete(alert.ID);
                }
            }

            SPAlertCollection alerts = web.Alerts;
            SPList            list   = web.Lists["Documents"];

            // get the lists alert template and apply that to the new alert
            SPAlertTemplate alertTemplate = list.AlertTemplate;

            alertTemplate.Name = list.AlertTemplate.Name;

            // setup the alert
            SPAlert a = alerts.Add();

            a.AlertType      = SPAlertType.List;
            a.AlertTemplate  = alertTemplate;
            a.Title          = "Demo Title";
            a.EventType      = SPEventType.Add;
            a.AlertFrequency = SPAlertFrequency.Immediate;
            a.AlwaysNotify   = false;
            a.User           = user;
            a.List           = list;
            a.Update(true);
        }