Exemple #1
0
        public static decimal CalculateTotalPay(Customer.Family family, DateTime startTime, DateTime endTime)
        {
            StartTimeValidator.ValidateStartTime(startTime.TimeOfDay);
            EndTimeValidator.ValidateEndTime(endTime.TimeOfDay);

            if (startTime > endTime)
            {
                throw new StartTimeGreaterThanEndTimeException();
            }

            var hoursBetween = (endTime - startTime).Hours;
            //determine first hour
            var firstHour = startTime.Hour;
            //loop control
            var inLoopTimeSpan = new TimeSpan(firstHour, 0, 0);
            //return variable
            var totalPay = 0.00m;

            for (int i = 0; i < hoursBetween; i++)  //full hours are billed
            {
                totalPay      += family.PayStructure[inLoopTimeSpan.Hours];
                inLoopTimeSpan = inLoopTimeSpan.Add(new TimeSpan(1, 0, 0));
            }
            return(totalPay);
        }
Exemple #2
0
        public void TestEndTime()
        {
            //end time is valid
            DateTime endTime = new DateTime(2019, 10, 2, 2, 0, 0);

            Assert.AreEqual(true, EndTimeValidator.ValidateEndTime(endTime.TimeOfDay));

            //end time is invalid
            endTime = new DateTime(2019, 10, 2, 5, 0, 0);
            Assert.AreEqual(false, EndTimeValidator.ValidateEndTime(endTime.TimeOfDay));
        }
Exemple #3
0
        public void TestStartAndEndTime()
        {
            //start time and end time are valid
            DateTime startTime = new DateTime(2019, 10, 1, 18, 0, 0);
            DateTime endTime   = new DateTime(2019, 10, 2, 2, 0, 0);

            Assert.AreEqual(true, EndTimeValidator.ValidateStartEndTime(startTime, endTime));

            //start time is after end time
            startTime = new DateTime(2019, 10, 1, 22, 0, 0);
            endTime   = new DateTime(2019, 10, 1, 21, 0, 0);
            Assert.AreEqual(false, EndTimeValidator.ValidateStartEndTime(startTime, endTime));

            //end time is after start time, but outside the 5:00pm to 4:00am window
            startTime = new DateTime(2019, 10, 1, 17, 0, 0);
            endTime   = new DateTime(2019, 10, 2, 18, 0, 0);
            Assert.AreEqual(false, EndTimeValidator.ValidateStartEndTime(startTime, endTime));
        }