Example #1
0
        public CumulativeWeekReportSet(IRepositoryFactory repositoryFactory, DateTime firstDayOfWeek)
        {
            if (firstDayOfWeek.DayOfWeek != DayOfWeek.Monday)
            {
                throw new ArgumentException("First day of week should be a monday", nameof(firstDayOfWeek));
            }

            var nrOfDaysInWeek = 7;

            _activityCumulativeReportBuilder = new ActivityReportBuilder(repositoryFactory.Create($"cumulative_activity_week_report_{firstDayOfWeek:yyyyMMdd}.csv", firstDayOfWeek, nrOfDaysInWeek), firstDayOfWeek, nrOfDaysInWeek);
            _labelCumulativeReportBuilder    = new LabelReportBuilder(repositoryFactory.Create($"cumulative_label_week_report_{firstDayOfWeek:yyyyMMdd}.csv", firstDayOfWeek, nrOfDaysInWeek), firstDayOfWeek, nrOfDaysInWeek);
        }
        public CumulativeMonthReportSet(IRepositoryFactory repositoryFactory, DateTime firstDayOfMonth)
        {
            if (firstDayOfMonth.Day != 1)
            {
                throw new ArgumentException("First day of month should be 1", nameof(firstDayOfMonth));
            }

            var nrOfDaysInMonth = DateTime.DaysInMonth(firstDayOfMonth.Year, firstDayOfMonth.Month);

            _activityCumulativeReportBuilder = new ActivityReportBuilder(repositoryFactory.Create($"cumulative_activity_month_report_{firstDayOfMonth:yyyyMMdd}.csv", firstDayOfMonth, nrOfDaysInMonth), firstDayOfMonth, nrOfDaysInMonth);
            _labelCumulativeReportBuilder    = new LabelReportBuilder(repositoryFactory.Create($"cumulative_label_month_report_{firstDayOfMonth:yyyyMMdd}.csv", firstDayOfMonth, nrOfDaysInMonth), firstDayOfMonth, nrOfDaysInMonth);
        }
Example #3
0
        public PerEngineerMonthReportSet(IRepositoryFactory repositoryFactory, DateTime firstDayOfMonth)
        {
            if (firstDayOfMonth.Day != 1)
            {
                throw new ArgumentException("First day of month should be 1", nameof(firstDayOfMonth));
            }

            var nrOfDaysInMonth = DateTime.DaysInMonth(firstDayOfMonth.Year, firstDayOfMonth.Month);

            _activityPerEngineerReportBuilder = new ActivityReportBuilder(repositoryFactory.Create($"engineer_activity_month_report_{firstDayOfMonth:yyyyMMdd}.csv", firstDayOfMonth, nrOfDaysInMonth), firstDayOfMonth, nrOfDaysInMonth);
            _labelPerEngineerReportBuilder    = new LabelReportBuilder(repositoryFactory.Create($"engineer_label_month_report_{firstDayOfMonth:yyyyMMdd}.csv", firstDayOfMonth, nrOfDaysInMonth), firstDayOfMonth, nrOfDaysInMonth);
            _accountReportBuilder             = new AccountReportBuilder(repositoryFactory.Create($"engineer_customer_month_report_{firstDayOfMonth:yyyyMMdd}.csv", firstDayOfMonth, nrOfDaysInMonth), firstDayOfMonth, nrOfDaysInMonth);
        }
        public void given_a_label_report_builder_and_some_logged_labels_with_different_scenarios_when_creating_the_report_then_the_expected_report_entries_are_added()
        {
            var repository = Substitute.For <IRepository>();
            var firstDateOfReportPeriod = new DateTime(2020, 2, 14);
            var periodNrOfDays          = 6;

            var builder = new LabelReportBuilder(repository, firstDateOfReportPeriod, periodNrOfDays);

            var firstDate  = new DateTime(2020, 2, 15);
            var secondDate = new DateTime(2020, 2, 17);
            var thirdDate  = new DateTime(2020, 2, 19);

            var firstLabel  = "label1";
            var secondLabel = "label2";
            var thirdLabel  = "label3";

            var logEntries = new List <LogEntry>
            {
                new LogEntry(12345, 1f, "description", firstLabel, "activity", "nwb", firstDate),
                new LogEntry(12345, 2f, "description", firstLabel, "activity", "nwb", secondDate),
                new LogEntry(12345, 3.25f, "description", secondLabel, "activity", "nwb", secondDate),
                new LogEntry(12345, 4f, "description", firstLabel, "activity", "nwb", thirdDate),
                new LogEntry(12345, 5.25f, "description", thirdLabel, "activity", "nwb", thirdDate),
                new LogEntry(12345, 6f, "description", thirdLabel, "activity", "nwb", thirdDate),
            };
            var timeForLabel1PerDay = new Dictionary <DateTime, float>
            {
                { firstDate, 1f },
                { secondDate, 2f },
                { thirdDate, 4f },
            };
            var timeForLabel2PerDay = new Dictionary <DateTime, float>
            {
                { secondDate, 3.25f },
            };
            var timeForLabel3PerDay = new Dictionary <DateTime, float>
            {
                { thirdDate, 11.25f },
            };

            var engineerName = "TestEngineer";

            builder.Build(engineerName, logEntries.GroupBy(x => x.CreateDate));

            repository.Received(1).SaveReportEntry(new ReportEntry(engineerName, firstLabel, firstDateOfReportPeriod, periodNrOfDays, timeForLabel1PerDay));
            repository.Received(1).SaveReportEntry(new ReportEntry(engineerName, secondLabel, firstDateOfReportPeriod, periodNrOfDays, timeForLabel2PerDay));
            repository.Received(1).SaveReportEntry(new ReportEntry(engineerName, thirdLabel, firstDateOfReportPeriod, periodNrOfDays, timeForLabel3PerDay));
        }