Ejemplo n.º 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);
        }
Ejemplo n.º 2
0
        public void TestStartTime()
        {
            //start is valid
            DateTime startTime = new DateTime(2019, 10, 1, 18, 0, 0);

            Assert.AreEqual(true, StartTimeValidator.ValidateStartTime(startTime.TimeOfDay));

            //start time is invalid
            startTime = new DateTime(2019, 10, 1, 12, 0, 0);
            Assert.AreEqual(false, StartTimeValidator.ValidateStartTime(startTime.TimeOfDay));
        }