Ejemplo n.º 1
0
        /*
         * AverageOfTasks - Get the average time spend in tasks.
         * @param selectedProject -The Project.
         * @param database -The database.
         */
        public static TimeSpan AverageOfTasks(Project selectedProject, Database_Controller database)
        {
            double         minutes = 0;
            double         Final   = 0;
            TimeSpan       difference;
            List <Session> projectSessions = database.GetSessionsOfProjects(selectedProject.Id);

            selectedProject.tasks = database.GetTaskOfProjects(selectedProject.Id);
            foreach (var tempTask in selectedProject.tasks)
            {
                tempTask.sessions = database.GetSessionsOfTask(tempTask.Id);
                foreach (var tempSession in tempTask.sessions)
                {
                    minutes = 0;
                    try
                    {
                        double            lessTime       = 0;
                        List <Interrupts> interruptsList = database.GetInterruptsOfSession(tempSession.Id);
                        foreach (var interrupt in interruptsList)
                        {
                            try
                            {
                                if (interrupt.end is null)
                                {
                                    lessTime += 0;
                                }
                                else
                                {
                                    lessTime += ((double)((TimeSpan)(interrupt.end - interrupt.start)).TotalMinutes);
                                }
                            }
                            catch
                            {
                                lessTime += 0;
                            }
                        }
                        if (tempSession.end is null)
                        {
                            minutes += 0;
                        }
                        else
                        {
                            difference = (TimeSpan)(tempSession.end - tempSession.start);
                            minutes   += ((double)difference.TotalMinutes) - lessTime;
                        }
                    }
                    catch
                    {
                        minutes += 0;
                    }
                    Final += minutes;
                }
            }
            return(TimeSpan.FromMinutes(Final / selectedProject.tasks.Count));
        }
        /*
         * OnSelection - Method that display the information of the selected task.
         */
        void OnSelection(object sender, ItemTappedEventArgs e)
        {
            if (e.Item == null)
            {
                return;
            }
            Project_Task temp_task = (Project_Task)e.Item;

            Name.Text          = "Name: ";
            Decription.Text    = "Description: ";
            Estimation.Text    = "Estimation: ";
            temp_task.sessions = database.GetSessionsOfTask(temp_task.Id);
            double timeSP;

            if (temp_task.sessions != null)
            {
                timeSP             = GetTaskEngageTime(temp_task.sessions);
                TimeSpendTask.Text = "Time Spend: " + TimeSpan.FromMinutes(Math.Round(timeSP, 3)).ToString();
            }
            else
            {
                timeSP = 0;
            }

            Name.Text       += temp_task.name;
            Decription.Text += temp_task.description;
            Estimation.Text += TimeSpan.FromMinutes(temp_task.estimation).ToString();
            tapped           = temp_task;
            if (temp_task.estimation < timeSP)
            {
                TimeSpendTask.BackgroundColor = Color.Red;
            }
            else
            {
                TimeSpendTask.BackgroundColor = Color.Green;
            }
            overlay.IsVisible        = true;
            Tasks_List.IsVisible     = false;
            View_Sessions.IsVisible  = false;
            Delete_Project.IsVisible = false;
            Name.Focus();
        }