/* * ViewSessionsClick - view all session that belong to the project. */ private async void ViewSessionsClick(object sender, EventArgs e) { if (preventMovement()) { List <Session> projectSessions = database.GetSessionsOfProjects(selectedProject.Id); await Navigation.PushModalAsync(new View_Sessions(projectSessions, database)); } }
/* * 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)); }
/* * GetEngageTime - Get the total time the user has work on this particular * project, this methos add the time in all the sessions subtracting the * interrupts. * @param selectedProject - The Project. * @param database - The database. */ public static TimeSpan GetEngageTime(Project selectedProject, Database_Controller database) { double minutes = 0; TimeSpan difference; List <Session> projectSessions = database.GetSessionsOfProjects(selectedProject.Id); foreach (var session in projectSessions) { try { double lessTime = 0; List <Interrupts> interruptsList = database.GetInterruptsOfSession(session.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 (session.end is null) { minutes += 0; } else { difference = (TimeSpan)(session.end - session.start); minutes += ((double)difference.TotalMinutes) - lessTime; } } catch { minutes += 0; } } return(TimeSpan.FromMinutes(minutes)); }