bool onlyOne = false; // View session live for more details. /* * Project_View_Page - Class constructor. * @param session - Selected session. * @param databaseAccess - database. */ public Session_Detail(Session session, Database_Controller databaseAccess) { selectedSession = session; database = databaseAccess; InitializeComponent(); live = database.GetliveSession(); if (live != null) { Resume_Session.IsVisible = true; LiveSession = true; } selectedSession.interrupts = database.GetInterruptsOfSession(selectedSession.Id); foreach (var interruptsTemp in selectedSession.interrupts) { list.Add(interruptsTemp); } var objectsList = new ListView() { HeightRequest = 200 }; Interrupt_List.ItemTemplate = new DataTemplate(typeof(ObjectsInterrupt)); Interrupt_List.ItemsSource = list; Interrupt_List.ItemTapped += OnSelection; }
/* RefreshTime - Method that refresh in real time the timer of the session, * the method takes the initial time of the session and subtrack the current time of * the system, taking in account all the interrupts of the session. */ public async void RefreshTime() { await Task.Delay(100).ContinueWith(async(arg) => { while (true) { List <Interrupts> interrruptL = database.GetInterruptsOfSession(current.Id); TimeSpan difference = (TimeSpan)(DateTime.Now - current.start); double extra = 0; foreach (var temp in interrruptL) { if (temp.end != null) { extra += ((TimeSpan)(temp.end - temp.start)).TotalMinutes; } else { extra += ((TimeSpan)(DateTime.Now - temp.start)).TotalMinutes; } } double total = difference.TotalMinutes; total = total - extra; Device.BeginInvokeOnMainThread(async() => { Timer_Counter.Text = TimeSpan.FromMinutes(total).ToString(); }); } }); }
/* * GetEngageTime - Method that calculate the spend time for the entire project, * based on the sessions. * @param project - The project */ double GetEngageTime(Project project) { 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(minutes); }
/* * 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)); }
/* * OnAppearing - Get live session, calculates the engage time for the session. */ protected override void OnAppearing() { overlayLocation.IsVisible = false; Interrupt_List.IsVisible = true; live = database.GetliveSession(); if (live != null) { Resume_Session.IsVisible = true; LiveSession = true; interrupt = database.GetliveInterrupt(); if (interrupt is null) { getlocation = true; askLocation(); accelometeractive = true; GlobalUtilities.accelerometer.ReadingAvailable += Accelerometer_ReadingAvailable; } } else { Resume_Session.IsVisible = false; LiveSession = false; } Start_Time.Text = selectedSession.start.ToString(); End_Time.Text = selectedSession.end.ToString(); Task_Name.Text = "Task: " + database.GetOneTask(selectedSession.taskId).name; Time_Spend.Text = "Time Spend: "; List <Interrupts> interruptsList = database.GetInterruptsOfSession(selectedSession.Id); double lessTime = 0; foreach (var interrupt in interruptsList) { try { if (interrupt.end is null) { lessTime += 0; } else { lessTime += ((double)((TimeSpan)(interrupt.end - interrupt.start)).TotalMinutes); } } catch (Exception ex) { lessTime += 0; } } try { if (selectedSession.end is null) { } else { double aux = (double)(((TimeSpan)(selectedSession.end - selectedSession.start)).TotalMinutes); Time_Spend.Text += TimeSpan.FromMinutes((aux - lessTime)).ToString(); } } catch (Exception ex) { Time_Spend.Text += TimeSpan.FromMinutes(0); } }