Пример #1
0
        public void SuccessfulParses(string line, string name, uint duration)
        {
            TaskSummary.TryParse(line, out TaskSummary? summary).ShouldBeTrue();

            summary.ShouldNotBeNull();

            summary.Name.ShouldBe(name);
            summary.DurationMS.ShouldBe(duration);
        }
Пример #2
0
        private void GoToChildDetail()
        {
            if (this.taskList.SelectedItems.Count == 0)
            {
                return;
            }
            TaskSummary sum = (TaskSummary)this.taskList.SelectedItems[0].Tag;

            SetParent(sum.TaskId);
        }
Пример #3
0
        private void taskList_DoubleClick(object sender, EventArgs e)
        {
            if (this.taskList.SelectedItems.Count == 0)
            {
                return;
            }

            TaskSummary sum = (TaskSummary)this.taskList.SelectedItems[0].Tag;

            SetParent(sum.TaskId);
        }
Пример #4
0
        private TaskSummary TranslateSummary(task input)
        {
            var taskSummary = new TaskSummary();

            if (input != null)
            {
                taskSummary.DueDate     = CommonHelper.ConvertToDateUI(input.DUE_DATE);
                taskSummary.Hours       = input.HOURS;
                taskSummary.Id          = input.ID;
                taskSummary.ProjectName = input.PROJECT_NAME;
                taskSummary.TaskName    = input.TASK_NAME;
            }
            return(taskSummary);
        }
Пример #5
0
        private void CalculateTasksPercents()
        {
            foreach (ListViewItem item in this.taskList.Items)
            {
                double percent     = 0;
                double goalPercent = 0;

                TaskSummary summary = (TaskSummary)item.Tag;

                if (totalTime > 0)
                {
                    percent = (summary.TotalActiveTime + summary.TotalInactiveTime) / totalTime;
                }

                if (summary.TotalEstimation > 0)
                {
                    goalPercent = summary.TotalTimeOverEstimation / (summary.TotalEstimation * 60);
                }

                TimeSpan activeTimeSpan     = new TimeSpan(0, 0, Convert.ToInt32(summary.TotalActiveTime));
                TimeSpan inactiveTimeSpan   = new TimeSpan(0, 0, Convert.ToInt32(summary.TotalInactiveTime));
                TimeSpan elapsedTimeSpan    = new TimeSpan(0, 0, Convert.ToInt32(summary.TotalActiveTime + summary.TotalInactiveTime));
                TimeSpan estimationTimeSpan = new TimeSpan(0, Convert.ToInt32(summary.TotalEstimation), 0);
                string   estimation;
                if (summary.TotalEstimation == 0)
                {
                    estimation = "Not estimated";
                }
                else
                {
                    estimation = ViewHelper.TimeSpanToTimeString(estimationTimeSpan);
                }

                item.SubItems[TimeHeader.Index].Text         = ViewHelper.TimeSpanToTimeString(elapsedTimeSpan);
                item.SubItems[ActiveTimeHeader.Index].Text   = ViewHelper.TimeSpanToTimeString(activeTimeSpan);
                item.SubItems[InactiveTimeHeader.Index].Text = ViewHelper.TimeSpanToTimeString(inactiveTimeSpan);
                item.SubItems[GoalHeader.Index].Text         = estimation;
                item.SubItems[PercentHeader.Index].Text      = percent.ToString("0.0%", CultureInfo.InvariantCulture);
                item.SubItems[PercentGoalHeader.Index].Text  = goalPercent.ToString("0.0%", CultureInfo.InvariantCulture);

                if (goalPercent > 1)
                {
                    item.SubItems[PercentGoalHeader.Index].ForeColor = Color.Red;
                }
            }
        }
Пример #6
0
        private void ShowTaskSummary(object sender, EventArgs e)
        {
            TaskSummary rptVwTaskSummary = new TaskSummary();

            _grdTimeEntry.DataSource = null;
            _grdTimeEntry.DataSource = rptVwTaskSummary.Fetch(_connection, _sUserId);

            _mnItmEdit_DeleteEntry.Enabled = false;

            _mnItmView_Detailed.Checked         = false;
            _mnItmView_DailyTaskSummary.Checked = false;
            _mnItmView_DailySummary.Checked     = false;
            _mnItmView_TaskSummary.Checked      = true;
            _mnItmView_DailyTaskStatus.Checked  = false;

            #region Old Script

            //StringBuilder strSql = new StringBuilder();

            //strSql.AppendLine("SELECT Task, SUM(Time) * 24 AS ElapsedTime ");
            //strSql.AppendLine("FROM (SELECT DATEPART(mm, ActionTime) AS NumMonth, DATEPART(dd, ActionTime) AS NumDay, ");
            //strSql.AppendLine(             "SUM(CONVERT(float, ActionTime)) * -1 AS Time, UserId, ActionTypeID, Task ");
            //strSql.AppendLine(      "FROM TimeLog ");
            //strSql.AppendLine(      "WHERE ActionTypeID = 0 ");
            //strSql.AppendLine(      "GROUP BY DATEPART(mm, ActionTime), DATEPART(dd, ActionTime), UserId, ActionTypeID, Task ");

            //strSql.AppendLine(      "UNION ");

            //strSql.AppendLine(      "SELECT DATEPART(mm, ActionTime) AS NumMonth, DATEPART(dd, ActionTime) AS NumDay, ");
            //strSql.AppendLine(             "SUM(CONVERT(float, ActionTime)) AS Time, UserId, ActionTypeID, Task ");
            //strSql.AppendLine(      "FROM TimeLog AS TimeLog_1 ");
            //strSql.AppendLine(      "WHERE ActionTypeID = 1 ");
            //strSql.AppendLine(      "GROUP BY DATEPART(mm, ActionTime), DATEPART(dd, ActionTime), UserId, ActionTypeID, Task ");

            //strSql.AppendLine(      "UNION ");

            //strSql.AppendLine(      "SELECT DATEPART(mm, GETDATE()) AS NumMonth, DATEPART(dd, GETDATE()) AS NumDay, ");
            //strSql.AppendLine(             "CASE WHEN (ActionTypeID = 0) THEN CONVERT(float, GETDATE()) ELSE 0 END AS Time, ");
            //strSql.AppendLine(             "UserID, 1 AS ActionTypeID, Task ");
            //strSql.AppendLine(      "FROM (SELECT TOP 1 * FROM TimeLog ORDER BY ActionTime DESC) AS LSTACT) AS TBL ");
            //strSql.AppendLine("WHERE UserId = '" + _sUserId + "' ");
            //strSql.AppendLine("GROUP BY Task ");
            //strSql.AppendLine("ORDER BY Task");

            #endregion
        }
Пример #7
0
        private void UpdateSummaryTime()
        {
            if (!this.Visible)
            {
                return;
            }

            if (this.fromDateTimePicker.Value > DateTime.Today || this.toDateTimePicker.Value < DateTime.Today)
            {
                return;
            }

            ListViewItem currentTaskSummary = null;

            int minGeneration = Int32.MaxValue;

            foreach (ListViewItem item in this.taskList.Items)
            {
                TaskSummary sum         = (TaskSummary)item.Tag;
                int         generations = Tasks.IsParent(sum.TaskId, Logs.CurrentLog.TaskId);
                if (generations >= 0 && generations < minGeneration)
                {
                    minGeneration      = generations;
                    currentTaskSummary = item;
                }
            }

            if (currentTaskSummary != null)
            {
                TaskSummary sum = (TaskSummary)currentTaskSummary.Tag;
                if (!sum.IsActive)
                {
                    sum.TotalInactiveTime++;
                }
                else
                {
                    totalActiveTime++;
                    sum.TotalActiveTime++;
                }
                totalTime++;

                this.CalculateTasksPercents();
                SetIndicatorsValues();
            }
        }
Пример #8
0
		private static ArrayList ExecuteTaskSummary(DateTime initialDate, DateTime finalDate)
		{
			ArrayList summaryList = new ArrayList();
			ArrayList list = DbHelper.ExecuteGetRows(
				"SELECT TasksLog.TaskId, Sum( TasksLog.Duration ) AS TotalTime FROM TasksLog " +
				"WHERE ( ( (TasksLog.InsertTime)>=? And (TasksLog.InsertTime)<=? ) )" +
				"GROUP BY TasksLog.TaskId;",
				new string[] {"InsertTimeFrom", "InsertTimeTo"},
				new object[] {initialDate, finalDate});

			foreach (IDictionary dictionary in list)
			{
				TaskSummary taskSum = new TaskSummary();
				taskSum.TaskId = (int) dictionary["TaskId"];
				taskSum.TotalActiveTime = (double) dictionary["TotalTime"];
				summaryList.Add(taskSum);
			} //foreach
			return summaryList;
		} //ExecuteTaskSummary
        /// <summary>
        /// Converts the specified status.
        /// </summary>
        /// <param name="status">The status.</param>
        /// <returns>
        /// The summary.
        /// </returns>
        private static TaskSummary Convert(ItemStatus status)
        {
            var model = new TaskSummary
            {
                Description = status.Description,
                Name        = status.Name,
                Tasks       = status.ChildItems.Any() ? status.ToModel() : null,
                Status      = Convert(status.Status),
                Error       = status.Error
            };

            if (status.TimeStarted.HasValue || status.TimeCompleted.HasValue)
            {
                model.Times = new TaskSummaryTimes
                {
                    Started   = status.TimeStarted,
                    Completed = status.TimeCompleted
                };
            }

            return(model);
        }
Пример #10
0
        public void GetTaskSummaryTest()
        {
            Task task1;

            task1 = Tasks.AddTask("TaskTest1", Tasks.RootTask.Id, true);

            Task task2;

            task2 = Tasks.AddTask("TaskTest2", Tasks.RootTask.Id, true);

            Task task3;

            task3 = Tasks.AddTask("TaskTest3", task1.Id, true);

            Task task4;

            task4 = Tasks.AddTask("TaskTest4", task1.Id, false);

//			Task row4;
//			row4 = new Task();
//			row4.IsDefaultTask = true;
//			row4.Description = DefaultTasks.GetDefaultTask(3).Description;
//			row4.DefaultTaskId = DefaultTasks.GetDefaultTask(3).DefaultTaskId;
//			row4.ParentId = row1.Id;
//			row4.Id = Tasks.AddTasksRow(row4);

            Logs.StartLogging();
            Logs.AddLog(task1.Id);
            Thread.Sleep(3000);
            Logs.AddLog(task1.Id);
            Thread.Sleep(2000);

            Logs.AddLog(task2.Id);
            Thread.Sleep(1000);
            Logs.AddLog(task2.Id);
            Thread.Sleep(1000);

            Logs.AddLog(task3.Id);
            Thread.Sleep(1000);
            Logs.AddLog(task3.Id);
            Thread.Sleep(2000);

            Logs.AddLog(task4.Id);
            Thread.Sleep(1000);
            Logs.AddLog(task4.Id);
            Thread.Sleep(2000);

            Logs.StopLogging();

            //row1 ->5 + 3
            ////row3->3
            ////row4->3
            //row2 ->2

            ArrayList result;

            result = TasksSummaries.GetTaskSummary(Tasks.RootTask, DateTime.Today, DateTime.Today.AddDays(1).AddSeconds(-1));
            Assert.AreEqual(2, result.Count);
            TaskSummary sum1 = FindTaskSummaryByTaskId(result, task1.Id);

            Assert.IsTrue(sum1.TotalActiveTime >= 8);
            Assert.IsTrue(sum1.TotalInactiveTime >= 3);
            TaskSummary sum2 = FindTaskSummaryByTaskId(result, task2.Id);

            Assert.IsTrue(sum2.TotalActiveTime >= 2);
            Assert.IsTrue(sum2.TotalInactiveTime == 0);

            result = TasksSummaries.GetTaskSummary(task1, DateTime.Today, DateTime.Today.AddDays(1).AddSeconds(-1));
            Assert.AreEqual(3, result.Count);
            sum1 = FindTaskSummaryByTaskId(result, task1.Id);
            Assert.IsTrue(sum1.TotalActiveTime >= 5);
            Assert.IsTrue(sum1.TotalInactiveTime == 0);
            sum2 = FindTaskSummaryByTaskId(result, task3.Id);
            Assert.IsTrue(sum2.TotalActiveTime >= 3);
            Assert.IsTrue(sum2.TotalInactiveTime == 0);
            sum1 = FindTaskSummaryByTaskId(result, task4.Id);
            Assert.IsTrue(sum1.TotalActiveTime == 0);
            Assert.IsTrue(sum1.TotalInactiveTime >= 3);

            result = TasksSummaries.GetTaskSummary(task3, DateTime.Today, DateTime.Today.AddDays(1).AddSeconds(-1));
            Assert.AreEqual(1, result.Count);
            sum1 = FindTaskSummaryByTaskId(result, task3.Id);
            Assert.IsTrue(sum1.TotalActiveTime >= 3);
            Assert.IsTrue(sum1.TotalInactiveTime == 0);

            result = TasksSummaries.GetTaskSummary(task4, DateTime.Today, DateTime.Today.AddDays(1).AddSeconds(-1));
            Assert.AreEqual(1, result.Count);
            sum1 = FindTaskSummaryByTaskId(result, task4.Id);
            Assert.IsTrue(sum1.TotalActiveTime == 0);
            Assert.IsTrue(sum1.TotalInactiveTime >= 3);

            result = TasksSummaries.GetTaskSummary(task2, DateTime.Today, DateTime.Today.AddDays(1).AddSeconds(-1));
            Assert.AreEqual(1, result.Count);
            sum1 = FindTaskSummaryByTaskId(result, task2.Id);
            Assert.IsTrue(sum1.TotalActiveTime >= 2);
        }
 public void FailedParses(string line)
 {
     TaskSummary.TryParse(line, out _).ShouldBeFalse();
 }
Пример #12
0
		public static ArrayList GetTaskSummary(Task parentTask, DateTime initialDate, DateTime finalDate)
		{
			Logs.UpdateCurrentLogDuration();
			ArrayList summaryList;
			ArrayList returnList = new ArrayList();

			summaryList = ExecuteTaskSummary(initialDate, finalDate);           

			while (summaryList.Count > 0)
			{
				TaskSummary currentSum = (TaskSummary) summaryList[0];
				Task currentTask = Tasks.FindById(currentSum.TaskId);
				currentSum.Description = currentTask.Description;
				currentSum.IsActive = currentTask.IsActive;
				currentSum.IconId = currentTask.IconId;
			    
				if (!currentSum.IsActive)
				{
					currentSum.TotalInactiveTime = currentSum.TotalActiveTime;
					currentSum.TotalActiveTime = 0;
				} //if

                currentSum.TotalEstimation = currentTask.Estimation;
                if (currentSum.TotalEstimation != 0)
                    currentSum.TotalTimeOverEstimation = currentSum.TotalActiveTime + currentSum.TotalInactiveTime;
                
                if (currentTask.Id != Tasks.IdleTask.Id) //ignore idle time
				{
					if (currentTask.Id != parentTask.Id)
					{
						if (currentTask.ParentId ==-1)
						{
							summaryList.Remove(currentSum);
							continue;
						} //if

						if (currentTask.ParentId == parentTask.Id)
						{
							TaskSummary retSum = FindTaskSummaryByTaskId(returnList, currentSum.TaskId);
							if (retSum == null)
							{
								returnList.Add(currentSum);
							}
							else
							{
								retSum.TotalInactiveTime += currentSum.TotalInactiveTime;
								retSum.TotalActiveTime += currentSum.TotalActiveTime;
                                retSum.TotalEstimation += currentSum.TotalEstimation;
                                retSum.TotalTimeOverEstimation += currentSum.TotalTimeOverEstimation;
							}
						}
						else
						{
						    TaskSummary currentSumParent;
                            //First look at the return list
                            currentSumParent = FindTaskSummaryByTaskId(returnList, currentTask.ParentId);
                            if (currentSumParent==null)//If not found look at the summaryList
							    currentSumParent = FindTaskSummaryByTaskId(summaryList, currentTask.ParentId);
						    
							if (currentSumParent == null) //If parent not in the summary list
							{
								currentSumParent = currentSum;
                                currentSumParent.TaskId = currentTask.ParentId; //just swith to parent task
								continue; //continue without remove the current sum from list
							}
                            else //else acum totals
							{
                                currentSumParent.TotalInactiveTime += currentSum.TotalInactiveTime;
                                currentSumParent.TotalActiveTime += currentSum.TotalActiveTime;
                                currentSumParent.TotalEstimation += currentSum.TotalEstimation;
                                currentSumParent.TotalTimeOverEstimation += currentSum.TotalTimeOverEstimation;
							}
						}
					}
					else
					{
						currentSum.Description = NOT_DETAILED;
						returnList.Add(currentSum);
					}
				} //if
				summaryList.Remove(currentSum);
			} //while
			return returnList;
		} //GetTaskSummary
Пример #13
0
        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            //DataTable dt = this.TimeTrackData.Select("Where
            if (!string.IsNullOrEmpty(this.dayComboBox.SelectedValue.ToString()))
            {
                DataTable dt;
                string    selectedDate = dayComboBox.SelectedValue.ToString();
                typeSummary    = new Dictionary <int, TaskInfo>();
                taskSummary    = new Dictionary <int, TaskInfo>();
                subTaskSummary = new Dictionary <int, TaskInfo>();

                if (dayComboBox.SelectedValue.ToString() != "All Days")
                {
                    var results = from DataRow row in this.TimeTrackData.Rows
                                  where (DateTime.Parse(row["start_time"].ToString()).Date == DateTime.Parse(this.dayComboBox.SelectedValue.ToString()).Date
                                         //&& DateTime.Parse(row["start_time"].ToString()).Date <= DateTime.Parse(this.dayComboBox.SelectedValue.ToString()).Date.AddDays(1)
                                         )

                                  select row;

                    dt = results.CopyToDataTable();
                }
                else
                {
                    dt = this.TimeTrackData.Copy();
                }

                foreach (TaskInfo ti in TypeResults)
                {
                    int key;
                    if (selectedDate == "All Days" || selectedDate == ti.StartTime.Date.ToShortDateString())
                    {
                        if (TypeSummary.Any(type => type.Value.Type_Id == ti.Type_Id))
                        {
                            key = TypeSummary.FirstOrDefault(type => type.Value.Type_Id == ti.Type_Id).Key;
                            TypeSummary[key].Hours   += ti.Hours;
                            TypeSummary[key].Minutes += ti.Minutes;
                            TypeSummary[key].Seconds += ti.Seconds;
                            if (TypeSummary[key].Seconds >= 60)
                            {
                                TypeSummary[key].Minutes += 1;
                                TypeSummary[key].Seconds -= 60;
                            }
                            if (TypeSummary[key].Minutes >= 60)
                            {
                                TypeSummary[key].Hours   += 1;
                                TypeSummary[key].Minutes -= 60;
                            }
                        }
                        else
                        {
                            key = TypeSummary.Count;
                            TaskInfo newTi = ti.Clone() as TaskInfo;
                            TypeSummary.Add(key, newTi);
                        }
                    }
                }

                foreach (TaskInfo ti in TaskResults)
                {
                    int key;
                    if (selectedDate == "All Days" || selectedDate == ti.StartTime.Date.ToShortDateString())
                    {
                        if (TaskSummary.Any(type => type.Value.Type_Id == ti.Type_Id && type.Value.Task_Id == ti.Task_Id))
                        {
                            key = TaskSummary.FirstOrDefault(type => type.Value.Type_Id == ti.Type_Id && type.Value.Task_Id == ti.Task_Id).Key;
                            TaskSummary[key].Hours   += ti.Hours;
                            TaskSummary[key].Minutes += ti.Minutes;
                            TaskSummary[key].Seconds += ti.Seconds;
                            if (TaskSummary[key].Seconds >= 60)
                            {
                                TaskSummary[key].Minutes += 1;
                                TaskSummary[key].Seconds -= 60;
                            }
                            if (TaskSummary[key].Minutes >= 60)
                            {
                                TaskSummary[key].Hours   += 1;
                                TaskSummary[key].Minutes -= 60;
                            }
                        }
                        else
                        {
                            key = TaskSummary.Count;
                            TaskInfo newTi = ti.Clone() as TaskInfo;
                            TaskSummary.Add(key, newTi);
                        }
                    }
                }

                foreach (TaskInfo ti in SubTaskResults)
                {
                    int key;
                    if (selectedDate == "All Days" || selectedDate == ti.StartTime.Date.ToShortDateString())
                    {
                        if (SubTaskSummary.Any(type => type.Value.Type_Id == ti.Type_Id && type.Value.Task_Id == ti.Task_Id && type.Value.Sub_Task_Id == ti.Sub_Task_Id))
                        {
                            key = SubTaskSummary.FirstOrDefault(type => type.Value.Type_Id == ti.Type_Id && type.Value.Task_Id == ti.Task_Id && type.Value.Sub_Task_Id == ti.Sub_Task_Id).Key;
                            SubTaskSummary[key].Hours   += ti.Hours;
                            SubTaskSummary[key].Minutes += ti.Minutes;
                            SubTaskSummary[key].Seconds += ti.Seconds;
                            if (SubTaskSummary[key].Seconds >= 60)
                            {
                                SubTaskSummary[key].Minutes += 1;
                                SubTaskSummary[key].Seconds -= 60;
                            }
                            if (SubTaskSummary[key].Minutes >= 60)
                            {
                                SubTaskSummary[key].Hours   += 1;
                                SubTaskSummary[key].Minutes -= 60;
                            }
                        }
                        else
                        {
                            key = SubTaskSummary.Count;
                            TaskInfo newTi = ti.Clone() as TaskInfo;
                            SubTaskSummary.Add(key, newTi);
                        }
                    }
                }

                TypeResultsGridView.DataSource    = SummaryToDataTable(TypeSummary, TaskType.Type);
                TaskResultsGridView.DataSource    = SummaryToDataTable(TaskSummary, TaskType.Task);
                SubTaskResultsGridView.DataSource = SummaryToDataTable(SubTaskSummary, TaskType.SubTask);

                Series series = new Series()
                {
                    Name              = "Test",
                    Color             = System.Drawing.Color.Gray,
                    IsVisibleInLegend = true,
                    ChartType         = SeriesChartType.Bar
                };

                //series.Points.AddXY("1/2/14", 10);
                //SummaryToSeries(this.TypeChart, selectedDate, TypeSummary, TaskType.Type);

                //this.TypeChart.ser
                //dt.Rows.Add(results);
            }
        }
Пример #14
0
        private static ArrayList ExecuteTaskSummary(DateTime initialDate, DateTime finalDate)
        {
            ArrayList summaryList = new ArrayList();
            ArrayList list = DbHelper.ExecuteGetRows(
                "SELECT TasksLog.TaskId, Sum( TasksLog.Duration ) AS TotalTime FROM TasksLog " +
                "WHERE ( ( (TasksLog.InsertTime)>=? And (TasksLog.InsertTime)<=? ) )" +
                "GROUP BY TasksLog.TaskId;",
                new string[] {"InsertTimeFrom", "InsertTimeTo"},
                new object[] {initialDate, finalDate});

            foreach (IDictionary dictionary in list)
            {
                TaskSummary taskSum = new TaskSummary();
                taskSum.TaskId = (int) dictionary["TaskId"];
                taskSum.TotalActiveTime = (double) dictionary["TotalTime"];
                summaryList.Add(taskSum);
            } //foreach
            return summaryList;
        }
Пример #15
0
        public string GetTaskSummary(string startDate, string endDate, string machineNo, string machineGroup, string machineModel, string pdLine)
        {
            TaskSummary summary = new TaskSummary();

            summary.StartTime = string.IsNullOrEmpty(startDate) ? DateTime.Now.Date : Convert.ToDateTime(startDate).Date;
            summary.EndTime   = string.IsNullOrEmpty(endDate) ? DateTime.Now.Date : Convert.ToDateTime(endDate).Date;

            var result = _context.JobTasks.Include(c => c.JobEntity)
                         .Include(c => c.Machine)
                         .Include(c => c.JobEntity)
                         .Where(x => x.StartDate.Date >= summary.StartTime.Date &&
                                x.StartDate.Date <= summary.EndTime.Date &&
                                x.ReleaseFlag &&
                                (string.IsNullOrEmpty(x.MachineNoReady) ? x.MachineNo : x.MachineNoReady) == machineNo)
                         .OrderBy(o => o.Priority)
                         .ThenBy(o => o.StartDate)
                         .ToList();

            machineGroup = machineGroup.Replace("- Optional -", string.Empty);
            pdLine       = pdLine.Replace("- Optional -", string.Empty);

            if (!string.IsNullOrEmpty(machineGroup))
            {
                result = result.Where(x => x.Machine.MacGroup == machineGroup).ToList();
            }
            if (!string.IsNullOrEmpty(machineModel))
            {
                result = result.Where(x => x.Machine.MachineModel == machineModel).ToList();
            }
            if (!string.IsNullOrEmpty(pdLine))
            {
                result = result.Where(x => x.Machine.ProductionLine == pdLine).ToList();
            }

            //Summaries
            summary.TasksAll = result;

            int i = 1;

            foreach (var item in summary.TasksAll.Where(x => !x.McFinishFlag && !x.CancelFlag).OrderBy(o => o.Priority).ToList())
            {
                TasksQueuing task = new TasksQueuing();
                task.Seq          = i;
                task.PartNumber   = item.JobEntity.PrimaryItemCode;
                task.MachineCode  = item.Machine.MachineCode;
                task.JobNumber    = item.JobEntity.JobEntityName;
                task.TableNumber  = item.TableNumber;
                task.DueDate      = item.DueDate;
                task.RequiredDate = item.EndDate.ToString("dd/MM/yyyy HH:mm");
                if (item.StartFlag)
                {
                    task.ProductionStatus = "Inprogress";
                }
                else
                {
                    task.ProductionStatus = "Pending";
                }

                summary.TasksQueuing.Add(task);
                i++;
            }

            foreach (var item in summary.TasksAll.Where(x => x.StartFlag && x.McFinishFlag && !x.CancelFlag).OrderBy(o => o.DueDate).ToList())
            {
                ProductionRecord rec = new ProductionRecord();
                rec.PartNumber  = item.JobEntity.PrimaryItemCode;
                rec.MachineNo   = item.Machine.MachineCode;
                rec.JobNumber   = item.JobEntity.JobEntityName;
                rec.TableNumber = item.TableNumber;
                rec.DueDate     = item.DueDate;
                rec.NcFile      = item.NcFile;

                var      logs       = _context.TaskTransactionLogs.Where(x => x.TaskId == item.Id).ToList();
                DateTime startTime  = logs.Where(x => x.ActionName == "START").FirstOrDefault().ActionTimeStamp;
                DateTime finishTime = logs.Where(x => x.ActionName == "MC_FINISH").FirstOrDefault().ActionTimeStamp;

                rec.StartTime     = startTime.ToString("dd/MM/yyyy HH:mm");
                rec.FinishTime    = finishTime.ToString("dd/MM/yyyy HH:mm");
                rec.MachineTimeHr = (finishTime - startTime).TotalHours.ToString("#0.00");

                summary.TasksRecord.Add(rec);
                i++;
            }

            return(JsonConvert.SerializeObject(summary, new JsonSerializerSettings()
            {
                PreserveReferencesHandling = PreserveReferencesHandling.Objects,
                Formatting = Formatting.Indented
            }));
        }