static void Main(string[] args)
        {
            Console.Write("SalaryFrequency" + "\t\t\t" + "Day" + "\t" + "Week" + "\t" + "Current Date" + "\t" + "Next Salary Date" + "\n");


            foreach (var SalaryDate in TestData())
            {
                var SalaryDateCalculation = new SalaryDateCalculation();

                SalaryDateCalculation.SetCurrentDateTime(SalaryDate.CurrentDateTime);

                var Actual = SalaryDateCalculation.CalculateNextSalaryDate(new SalaryDateCalculationDto
                {
                    Day = SalaryDate.Day,
                    PaymentFrequency = SalaryDate.Frequency,
                    Week             = SalaryDate.Week
                });

                var PaymentFrequency = Enum.GetName(typeof(SalaryFrequency), SalaryDate.Frequency);
                Console.BackgroundColor = ConsoleColor.Blue;
                Console.ForegroundColor = ConsoleColor.White;
                Console.Write($"{SalaryDate.Frequency}" + (PaymentFrequency.Length > 9
                                                            ? "\t\t"
                                                            : "\t\t\t")
                              + SalaryDate.Day + "\t"
                              + SalaryDate.Week + "\t"
                              + $"{SalaryDate.CurrentDateTime:dd.MM.yyyy}" + "\t"
                              + $"{Actual:dd.MM.yyyy}" + "\n");

                Console.WriteLine();
            }
        }
 public DateTime CalculateNextSalaryDate(SalaryDateCalculation salaryDateCalculation)
 {
     return(salaryDateCalculation.SalaryFrequency switch
     {
         SalaryFrequency.SpecificDayOfMonth => GetSpecificDayOfMonth(salaryDateCalculation.Day),
         SalaryFrequency.FirstWorkingDayOfMonth => GetFirstWorkingDayOfMonth(),
         SalaryFrequency.DayBeforeLastWorkingDay => GetDayBeforeLastWorkingDay(),
         SalaryFrequency.LastWorkingDayOfMonth => GetLastWorkingDayOfMonth(),
         SalaryFrequency.FirstXDay => GetFirstXDay(salaryDateCalculation.Day),
         SalaryFrequency.LastXDay => GetLastXDay(salaryDateCalculation.Day),
         _ => throw new NotSupportedException($"{salaryDateCalculation.SalaryFrequency} is not supported.")
     });
Exemple #3
0
        protected void Calculate(SalaryDateTestModel salaryData)
        {
            var SalaryDateCalculation = new SalaryDateCalculation();

            SalaryDateCalculation.SetCurrentDateTime(salaryData.CurrentDateTime);

            var Actual = SalaryDateCalculation.CalculateNextSalaryDate(new SalaryDateCalculationDto
            {
                Day = salaryData.Day,
                PaymentFrequency = salaryData.Frequency,
                Week             = salaryData.Week
            });
            var Expected = salaryData.NextSalaryDateTime;

            Assert.Equal(Expected, Actual);
        }