Beispiel #1
0
    /// <summary>
    /// Actions handler.
    /// </summary>
    protected void HeaderActions_ActionPerformed(object sender, CommandEventArgs e)
    {
        if (ContactGroupHelper.AuthorizedModifyContactGroup(this.SiteID, true))
        {
            switch (e.CommandName.ToLower())
            {
            case "save":
                // Save changes in the contact group
                EditForm.SaveData(null);
                break;

            case "evaluate":
                if (EditForm.EditedObject != null)
                {
                    ContactGroupInfo cgi = (ContactGroupInfo)EditForm.EditedObject;
                    if (cgi != null)
                    {
                        // Set 'Rebuilding' status
                        cgi.ContactGroupStatus = ContactGroupStatusEnum.Rebuilding;
                        ContactGroupInfoProvider.SetContactGroupInfo(cgi);

                        // Evaluate the membership of the contact group
                        ContactGroupEvaluator evaluator = new ContactGroupEvaluator();
                        evaluator.ContactGroupID = cgi.ContactGroupID;
                        evaluator.Execute(null);

                        EditForm.InfoLabel.Text    = GetString("om.contactgroup.evaluationstarted");
                        EditForm.InfoLabel.Visible = true;

                        // Get scheduled task and update last run time
                        if (cgi.ContactGroupScheduledTaskID > 0)
                        {
                            task = TaskInfoProvider.GetTaskInfo(cgi.ContactGroupScheduledTaskID);
                            if (task != null)
                            {
                                task.TaskLastRunTime = DateTime.Now;
                                TaskInfoProvider.SetTaskInfo(task);
                            }
                        }

                        // Display basic info about dynamic contact group
                        InitInfoPanel(cgi, false);
                    }
                }
                break;
            }
        }
    }
    /// <summary>
    /// Performs contact group recalculation.
    /// Fires, when recalculate button is clicked.
    /// </summary>
    private void RecalculateContactGroup(object sender, EventArgs e)
    {
        if (ContactGroup == null || ContactGroup.ContactGroupStatus == ContactGroupStatusEnum.Rebuilding)
        {
            return;
        }

        if (ContactGroupHelper.AuthorizedModifyContactGroup(ContactGroup.ContactGroupSiteID, true))
        {
            RebuildHeaderAction.Text    = ResHelper.GetString("om.contactgroup.rebuilding");
            RebuildHeaderAction.Enabled = false;
            StatusLabel.Visible         = false;

            // Set status that the contact group is being rebuilt
            ContactGroup.ContactGroupStatus = ContactGroupStatusEnum.Rebuilding;
            ContactGroupInfoProvider.SetContactGroupInfo(ContactGroup);

            // Evaluate the membership of the contact group
            ContactGroupEvaluator evaluator = new ContactGroupEvaluator();
            evaluator.ContactGroup = ContactGroup;

            Task.Factory.StartNew(CMSThread.Wrap(evaluator.Run), TaskCreationOptions.LongRunning);
        }
    }
    private void RecalculateCGsBtnAction(object sender, EventArgs e)
    {
        var contactGroups = ContactGroupInfoProvider.GetContactGroups()
                                                    .WhereEquals("ContactGroupStatus", ContactGroupStatusEnum.ConditionChanged)
                                                    .OnSite(SiteContext.CurrentSiteID);

        foreach (var contactGroup in contactGroups)
        {
            // Evaluate the membership of the contact group
            ContactGroupEvaluator evaluator = new ContactGroupEvaluator();
            evaluator.ContactGroup = contactGroup;
            evaluator.Execute(null);

            // Get scheduled task and update last run time
            var task = ContactGroupRebuildTaskManager.GetScheduledTask(contactGroup);
            if (task != null)
            {
                task.TaskLastRunTime = DateTime.Now;
                TaskInfoProvider.SetTaskInfo(task);
            }
        }

        ShowInformation("Contact Group recalculation started");
    }
    /// <summary>
    /// Actions handler.
    /// </summary>
    protected void HeaderActions_ActionPerformed(object sender, CommandEventArgs e)
    {
        if (ContactGroupHelper.AuthorizedModifyContactGroup(SiteID, true))
        {
            switch (e.CommandName.ToLowerCSafe())
            {
                case "save":
                    if (chkDynamic.Checked)
                    {
                        // Get scheduled interval string
                        scheduleInterval = schedulerInterval.ScheduleInterval;
                    }

                    // Save changes in the contact group
                    if (EditForm.SaveData(null))
                    {
                        mBtnEvaluate.Visible = chkDynamic.Checked;
                        ScriptHelper.RefreshTabHeader(Page, null);
                    }
                    break;

                case "evaluate":
                    if (EditForm.EditedObject != null)
                    {
                        ContactGroupInfo cgi = (ContactGroupInfo)EditForm.EditedObject;
                        if (cgi != null)
                        {
                            // Set 'Rebuilding' status
                            cgi.ContactGroupStatus = ContactGroupStatusEnum.Rebuilding;
                            ContactGroupInfoProvider.SetContactGroupInfo(cgi);

                            // Evaluate the membership of the contact group
                            ContactGroupEvaluator evaluator = new ContactGroupEvaluator();
                            evaluator.ContactGroupID = cgi.ContactGroupID;
                            evaluator.Execute(null);

                            EditForm.InfoLabel.Text = GetString("om.contactgroup.evaluationstarted");
                            EditForm.InfoLabel.Visible = true;

                            // Get scheduled task and update last run time
                            if (cgi.ContactGroupScheduledTaskID > 0)
                            {
                                task = TaskInfoProvider.GetTaskInfo(cgi.ContactGroupScheduledTaskID);
                                if (task != null)
                                {
                                    task.TaskLastRunTime = DateTime.Now;
                                    TaskInfoProvider.SetTaskInfo(task);

                                    // Initialize interval control
                                    schedulerInterval.ScheduleInterval = task.TaskInterval;
                                    schedulerInterval.ReloadData();
                                }
                            }

                            // Display basic info about dynamic contact group
                            InitInfoPanel(cgi, false);
                        }
                    }
                    break;
            }
        }
    }