示例#1
0
        /// <summary>
        /// This is the event handler which would be called in cases of alerts data available for either 
        /// assigned tasks and/or managed tasks
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="args"></param>
        void Provider_FetchTaskAlertsCompleteEvent(
                            object sender,
                            TaskAlertsFetchCompletedEventArgs args)
        {
            if (args.Error != null)
            {
                this.Status.Exception = args.Error;
                return;
            }

            if (args.Cancelled == true)
            {
                this.Status.Message = "The web service operation was cancelled by the user";
                return;
            }

            TaskAlerts.AssignedTasksAlerts.BeginUpdate();
            TaskAlerts.AssignedTasksAlertsNearFuture.BeginUpdate();
            TaskAlerts.ManagedTasksAlerts.BeginUpdate();
            TaskAlerts.ManagedTasksAlertsNearFuture.BeginUpdate();

            UserOptions opts = UserOptions.Current;
            if (args.HasAssignedTasks)
            {
                //this.TaskAlerts.AssignedTasksAlerts.BeginUpdate();  
                this.TaskAlerts.AssignedTasksAlerts.Clear();
                this.TaskAlerts.AssignedTasksAlertsNearFuture.Clear();
                //Not writing a LINQ query here,
                //var queryAlerts = from t in args.AssignedTasks where string.IsNullOrEmpty(t.AlertTime) && select t; 

                var querysorted = from t in args.AssignedTasks orderby TimeSpan.Parse(t.DueTime).Hours ascending select t;
                //foreach (TaskItem t in querysorted) 
                //    {
                //        if (Alerts.DoesTaskQualifyForAssignedTaskAlert (t))
                //        {
                //            this.TaskAlerts.AssignedTasksAlerts.Add(t.Clone());
                //        }
                //    }
                TaskAlerts.EvaluateAndAddTasksForAlerts(querysorted);
                //this.TaskAlerts.AssignedTasksAlerts.EndUpdate();
            }

            if (args.HasManagedTasks)
            {
                //this.TaskAlerts.ManagedTasksAlerts.BeginUpdate();  
                this.TaskAlerts.ManagedTasksAlerts.Clear();
                this.TaskAlerts.ManagedTasksAlertsNearFuture.Clear();

                var querysorted = from t in args.ManagedTasks orderby TimeSpan.Parse(t.DueTime).Hours ascending select t;
                //foreach (TaskItem t in querysorted)
                //{
                //    if (Alerts.DoesTaskQualifyForManagedTaskAlert(t))
                //    {
                //        this.TaskAlerts.ManagedTasksAlerts.Add(t.Clone()); 
                //    }

                //}
                TaskAlerts.EvaluateAndAddTasksForAlerts(querysorted);
                //this.TaskAlerts.ManagedTasksAlerts.EndUpdate();
            }

            TaskAlerts.AssignedTasksAlerts.EndUpdate();
            TaskAlerts.AssignedTasksAlertsNearFuture.EndUpdate();
            TaskAlerts.ManagedTasksAlerts.EndUpdate();
            TaskAlerts.ManagedTasksAlertsNearFuture.EndUpdate();

        }
示例#2
0
        private void LongOperationToFetchManagedTaskAlerts(object param)
        {
            Thread.Sleep(2000);
            if (FetchTaskAlertsCompleteEvent == null) return;

            TaskAlertsFetchCompletedEventArgs args;
            try
            {
                args = new TaskAlertsFetchCompletedEventArgs();
                if (StubDataProvider.StubbedTasks == null)
                {
                    StubDataProvider.StubbedTasks = StubDataProvider.CreateStubbedTasks(view);
                }


                args.HasAssignedTasks = false ;
                args.AssignedTasks = new List<TaskItem>();

                args.HasManagedTasks = true ;
                args.ManagedTasks = new List<TaskItem>();
                int escalationStartHour = 9;
                int count = 0;
                foreach (TaskItem t in StubDataProvider.StubbedTasks)
                {
                    //t.EscalationTime = string.Format("{0}:00",escalationStartHour+count%4);//some arbitary computation to introduce a variability
                    //t.DueTime = string.Format("{0}:00", escalationStartHour + count%5);//some variability
                    //if (count % 7 == 0) //arbitary!!
                    //{
                    //    t.EscalationTime = null;
                    //}

                    t.EscalationTime = string.Format("{0}:00", escalationStartHour + count);//data with increasing order
                    t.DueTime = string.Format("{0}:00", escalationStartHour + count);//data with increasing order
                    args.ManagedTasks.Add(t.Clone());
                    count++;

                    if (count == 5) break;//just add 1 managed task
                }
                /*
                args.ManagedTasks[0].EscalationTime = null;
                args.ManagedTasks[0].DueTime = string.Format ("{0}:{1}",DateTime.Now.Hour +2,DateTime.Now.Minute );
                args.ManagedTasks[0].TaskName  = "Task with null escalation time";

                args.ManagedTasks[1].EscalationTime = "10:24";
                args.ManagedTasks[1].DueTime = string.Format("{0}:{1}", DateTime.Now.Hour + 2, DateTime.Now.Minute);
                args.ManagedTasks[1].TaskName  = "Task with non-nul escalation time of 10:24";
                */  
            }

            catch (Exception ex)
            {
                args = new TaskAlertsFetchCompletedEventArgs(ex, true, null);
                args.AssignedTasks = new List<TaskItem>();
                args.ManagedTasks = new List<TaskItem>();//return an empty collection nevertheless
            }
            Deployment.Current.Dispatcher.BeginInvoke(delegate()
            {
                FetchTaskAlertsCompleteEvent(this, args);
            });

        }
示例#3
0
        void taskAlertsClientAssignedTasks_GetListItemsCompleted(object sender, BCheck.Data.BCheckLists.GetListItemsCompletedEventArgs e)
        {
            if (FetchTasksCompleteEvent == null) return;


            TaskAlertsFetchCompletedEventArgs args;
            try
            {
                if (e.Error != null)
                {
                    args = new TaskAlertsFetchCompletedEventArgs(e.Error, e.Cancelled, null);
                }
                else
                {
                    args = new TaskAlertsFetchCompletedEventArgs();
                    args.HasAssignedTasks = true;
                    args.HasManagedTasks = false;
                    args.AssignedTasks = new List<TaskItem>();
                    args.ManagedTasks = new List<TaskItem>();
                    IEnumerable<TaskItem> query = XmlToAlertObjects(e.Result);
                    foreach (TaskItem t in query)
                    {
                        args.AssignedTasks.Add(t.Clone());
                    }
                }

            }

            catch (Exception ex)
            {
                args = new TaskAlertsFetchCompletedEventArgs(ex, true, null);
                args.AssignedTasks = new List<TaskItem>();//return an empty collection nevertheless 

            }


            Deployment.Current.Dispatcher.BeginInvoke(delegate()
            {
                FetchTaskAlertsCompleteEvent(this, args);
            });
        }
示例#4
0
        private void LongOperationToFetchAssignedTaskAlerts(object param)
        {
            Thread.Sleep(2000);
            if (FetchTaskAlertsCompleteEvent == null) return;

            TaskAlertsFetchCompletedEventArgs   args;
            try
            {
                args = new TaskAlertsFetchCompletedEventArgs();
                if (StubDataProvider.StubbedTasks == null)
                {
                    StubDataProvider.StubbedTasks = StubDataProvider.CreateStubbedTasks(view);
                }

                args.HasAssignedTasks = true;
                args.AssignedTasks = new List<TaskItem>();
                int escalationStartHour = 9;
                int count = 0;
                foreach (TaskItem t in StubDataProvider.StubbedTasks)
                {
                    t.EscalationTime = string.Format("{0}:00", escalationStartHour + count % 4);//some arbitary computation to introduce a variability
                    t.DueTime = string.Format("{0}:00", escalationStartHour + count % 5);//some variability
                    if (count % 6 == 0) //arbitary!!
                    {
                        t.DueTime = null;
                    }

                    args.AssignedTasks.Add(t);
                    count++;
                }

                args.HasManagedTasks = false;
                args.ManagedTasks= new List<TaskItem>();
            }

            catch (Exception ex)
            {
                args = new TaskAlertsFetchCompletedEventArgs (ex, true, null);
                args.AssignedTasks = new List<TaskItem>();
                args.ManagedTasks= new List<TaskItem>();//return an empty collection nevertheless
            }
            Deployment.Current.Dispatcher.BeginInvoke(delegate()
            {
                FetchTaskAlertsCompleteEvent(this, args);
            });

        }
示例#5
0
        public void FetchAlerts()
        {
            UserTasks taskids = MasterLookupService.Current.GetUserTaskIDs();
            if (taskids.AssignedTasksDueToday.Count + taskids.AssignedTasksOverdue.Count + taskids.ManagedTasksDueToday.Count + taskids.ManagedTasksIncomplete.Count < 400)
            {
                TaskAlertsFetchCompletedEventArgs alertargs;
                alertargs = new TaskAlertsFetchCompletedEventArgs();
                string TasksCAMLQuery = CamlHelper.QueryMyTasksDueToday(taskids);
                alertargs.AssignedTasks = new List<TaskItem>();
                alertargs.ManagedTasks = new List<TaskItem>();
                MasterLookupService.Current.GetAlertsWithDetails(TasksCAMLQuery, tasks =>
                {
                    alertargs.HasAssignedTasks = false;
                    foreach (var taskid in taskids.AssignedTasksDueToday)
                    {
                        var tasksassigned = tasks.Where(t => t.ID == int.Parse(taskid));
                        if (tasksassigned.Count() > 0)
                        {
                            TaskItem t = tasksassigned.First();
                            t.SetInitializationComplete();
                            alertargs.AssignedTasks.Add(t);
                            alertargs.HasAssignedTasks = true;
                        }
                    }
                    alertargs.HasManagedTasks = false;
                    foreach (var taskid in taskids.ManagedTasksDueToday)
                    {
                        var tasksmanaged = tasks.Where(t => t.ID == int.Parse(taskid));
                        alertargs.HasManagedTasks = false;
                        if (tasksmanaged.Count() > 0)
                        {
                            TaskItem t = tasksmanaged.First();
                            t.SetInitializationComplete();
                            alertargs.ManagedTasks.Add(t);
                            alertargs.HasManagedTasks = true;
                        }
                    }

                    Deployment.Current.Dispatcher.BeginInvoke(delegate()
                    {
                        FetchTaskAlertsCompleteEvent(this, alertargs);
                        return;

                    });
                });
            }
            else
            {
                FetchAlertsForOverLoadCondition();
            }
        }