예제 #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));
        }
예제 #2
0
        /*
         * GetEstimation - Get the overall estimation for one project,
         * This methos simply add all the estimations in the tasks of the project.
         * @param project -The Project.
         * @param database -The database.
         */
        public static TimeSpan GetEstimation(Project project, Database_Controller database)
        {
            double minutes = 0;

            project.tasks = database.GetTaskOfProjects(project.Id);
            foreach (var projectTask in project.tasks)
            {
                minutes += projectTask.estimation;
            }
            return(TimeSpan.FromMinutes(minutes));
        }
예제 #3
0
 /*
  * OnAppearing - Overrride to the screen appearing, refresh the project list,
  * gets the live session.
  */
 protected override void OnAppearing()
 {
     user.projects = database.GetProjectUser(user.Id);
     list.Clear();
     if (!Resolver.IsSet)
     {
         var container = new SimpleContainer();
         container.Register <IAccelerometer, Accelerometer>();
         Resolver.SetResolver(container.GetResolver());
     }
     GlobalUtilities.accelerometer          = Resolver.Resolve <IAccelerometer>();
     GlobalUtilities.accelerometer.Interval = AccelerometerInterval.Normal;
     if (user.projects != null)
     {
         foreach (var ProjectTemp in user.projects)
         {
             ProjectTemp.tasks = database.GetTaskOfProjects(ProjectTemp.Id);
             list.Add(ProjectTemp);
         }
     }
     Proyects.ItemTemplate = new DataTemplate(typeof(Objects));
     Proyects.ItemsSource  = list;
     live = database.GetliveSession();
     if (live != null)
     {
         Resume_Session.IsVisible = true;
         interrupt = database.GetliveInterrupt();
         if (interrupt is null)
         {
             getlocation = true;
             askLocation();
             accelometeractive = true;
             GlobalUtilities.accelerometer.ReadingAvailable += Accelerometer_ReadingAvailable;
         }
     }
     else
     {
         Resume_Session.IsVisible = false;
     }
 }