예제 #1
0
        private void WriteReport(DateTimeServiceForTests dateTimeService, MeetingTimes lastMtgTimes)
        {
            var service         = new LocalTimingDataStoreService(null, dateTimeService);
            var historicalTimes = service.GetHistoricalMeetingTimes();

            PdfTimingReport report = new PdfTimingReport(lastMtgTimes, historicalTimes, Path.GetTempPath());

            report.Execute();
        }
예제 #2
0
        // generate report and return file path (or null)
        public static Task <string?> ExecuteAsync(
            ILocalTimingDataStoreService dataService,
            IDateTimeService dateTimeService,
            IQueryWeekendService queryWeekendService,
            bool weekendIncludesFriday,
            string?commandLineIdentifier)
        {
            return(Task.Run(() =>
            {
                if (!dataService.ValidCurrentMeetingTimes())
                {
                    dataService.PurgeCurrentMeetingTimes();
                    Log.Logger.Warning("Meeting times invalid so not stored");
                    return null;
                }

                var outputFolder = FileUtils.GetTimingReportsFolder(commandLineIdentifier);
                Log.Logger.Debug($"Timer report output folder = {outputFolder}");

                if (string.IsNullOrEmpty(outputFolder) || !Directory.Exists(outputFolder))
                {
                    return null;
                }

                var yearFolder = GetDatedOutputFolder(outputFolder, dateTimeService.Now());
                Directory.CreateDirectory(yearFolder);

                if (Directory.Exists(yearFolder))
                {
                    var data = dataService.GetCurrentMeetingTimes();
                    if (data != null)
                    {
                        var historicalTimes = dataService.GetHistoricalMeetingTimes();

                        var report = new PdfTimingReport(
                            data,
                            historicalTimes,
                            queryWeekendService,
                            weekendIncludesFriday,
                            yearFolder);

                        return report.Execute();
                    }
                }

                return null;
            }));
        }