public DurationPerStoryPerDatePerProjectReport(Report report) { foreach (var reportData in report.Datas) { var date = reportData.Start.Date; var project = reportData.Project; var story = TogglTaskParser.GetStoryName(reportData.Description); var durationInHours = TimeConversion.MillisecondsToHours(reportData.Dur); // Project Data.TryGetValue( project, out Dictionary <DateTime, Dictionary <string, double> > durationPerStoryPerDateMap); if (durationPerStoryPerDateMap != null) { // Date Dictionary <string, double> durationPerStoryMap; durationPerStoryPerDateMap.TryGetValue(date, out durationPerStoryMap); if (durationPerStoryMap != null) { // Story durationPerStoryMap.Add(story, durationInHours); durationPerStoryPerDateMap[date] = durationPerStoryMap; } else { durationPerStoryPerDateMap.Add( date, new Dictionary <string, double> { { story, durationInHours } }); } Data[project] = durationPerStoryPerDateMap; } else { Data.Add(project, new Dictionary <DateTime, Dictionary <string, double> > { { date, new Dictionary <string, double> { { story, durationInHours } } } }); } } }
public RoundedDurationPerDatePerProjectReport(Report report, double roundAt, double roundTo) { foreach (var reportData in report.Datas) { // Set important information from data to variables to improve code readbility var date = reportData.Start.Date; var project = reportData.Project; var durationInHours = TimeConversion.MillisecondsToHours(reportData.Dur); var roundedDuration = TimeConversion.RoundDuration(durationInHours, roundAt, roundTo); // Check if the project from this iteration already exists in the collection Data.TryGetValue(project, out Dictionary <DateTime, double> durationPerDateMap); // If it exists, add to it if (durationPerDateMap != null) { // Check if the date from this iteration already exists in the collection durationPerDateMap.TryGetValue(date, out double totalDurationForDate); if (totalDurationForDate != default(double)) { durationPerDateMap[date] = totalDurationForDate + roundedDuration; } else { durationPerDateMap.Add(date, roundedDuration); } } // If it does not exist then add a new entry for this project else { Data.Add(project, new Dictionary <DateTime, double> { { date, roundedDuration } }); } } }