Esempio n. 1
0
        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 }
                          } }
                    });
                }
            }
        }
Esempio n. 2
0
        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 }
                    });
                }
            }
        }