Пример #1
0
        internal Jurisdiction(Enums.Jurisdiction jursidiction)
        {
            JurisdictionId = jursidiction;
            switch (jursidiction)
            {
            case Enums.Jurisdiction.Us70:
                OnDutyHoursAllowed                       = 14;
                DrivingHoursAllowed                      = 11;
                WeeklyOnDutyHoursAllowed                 = 70;
                DailyResetHours                          = 10;
                WeeklyResetHours                         = 34;
                WeeklyAuditTimeRangeDays                 = 8;
                MinimumRestLengthHours                   = 0.5;
                MaximumShiftHoursForRestExemption        = 12;
                MaximumShiftHoursBeforeRestBreakRequired = 8;
                IsRestBreakExempt                        = false;
                //SplitStatuses = use default
                SplitMinimumHours                = 2;
                MainSplitMinimumHours            = 8;
                SplitTotalForReset               = 10;
                IsMainSplitRequiredInSleeperOnly = true;
                NumberOfSplits = 2;
                break;

            case Enums.Jurisdiction.Us60:
                OnDutyHoursAllowed                       = 14;
                DrivingHoursAllowed                      = 11;
                WeeklyOnDutyHoursAllowed                 = 60;
                DailyResetHours                          = 10;
                WeeklyResetHours                         = 34;
                WeeklyAuditTimeRangeDays                 = 7;
                MinimumRestLengthHours                   = 0.5;
                MaximumShiftHoursForRestExemption        = 12;
                MaximumShiftHoursBeforeRestBreakRequired = 8;
                IsRestBreakExempt                        = false;
                //SplitStatuses = use default
                SplitMinimumHours                = 2;
                MainSplitMinimumHours            = 8;
                SplitTotalForReset               = 10;
                IsMainSplitRequiredInSleeperOnly = true;
                NumberOfSplits = 2;
                break;

            case Enums.Jurisdiction.TxIntrastate:
                OnDutyHoursAllowed                       = 15;
                DrivingHoursAllowed                      = 12;
                WeeklyOnDutyHoursAllowed                 = 70;
                DailyResetHours                          = 8;
                WeeklyResetHours                         = 34;
                WeeklyAuditTimeRangeDays                 = 8;
                MaximumShiftHoursForRestExemption        = 12;
                MaximumShiftHoursBeforeRestBreakRequired = 8;
                IsRestBreakExempt                        = true;
                //SplitStatuses = use default
                SplitMinimumHours                = 2;
                MainSplitMinimumHours            = 6;
                SplitTotalForReset               = 10;
                IsMainSplitRequiredInSleeperOnly = true;
                NumberOfSplits = 2;
                break;

            case Enums.Jurisdiction.Passenger70:
                OnDutyHoursAllowed                       = 15;
                DrivingHoursAllowed                      = 12;
                WeeklyOnDutyHoursAllowed                 = 70;
                DailyResetHours                          = 8;
                WeeklyResetHours                         = 34;
                WeeklyAuditTimeRangeDays                 = 8;
                MaximumShiftHoursForRestExemption        = 12;
                MaximumShiftHoursBeforeRestBreakRequired = 8;
                IsRestBreakExempt                        = true;

                SplitStatuses                    = new[] { Enums.DutyStatus.Sleeper }.ToList();
                SplitMinimumHours                = 2;
                MainSplitMinimumHours            = 6;
                SplitTotalForReset               = 10;
                IsMainSplitRequiredInSleeperOnly = true;
                NumberOfSplits                   = 2;
                break;

            case Enums.Jurisdiction.Passenger60:
                OnDutyHoursAllowed                       = 15;
                DrivingHoursAllowed                      = 12;
                WeeklyOnDutyHoursAllowed                 = 60;
                DailyResetHours                          = 8;
                WeeklyResetHours                         = 34;
                WeeklyAuditTimeRangeDays                 = 7;
                MaximumShiftHoursForRestExemption        = 12;
                MaximumShiftHoursBeforeRestBreakRequired = 8;
                IsRestBreakExempt                        = true;

                SplitStatuses                    = new[] { Enums.DutyStatus.Sleeper }.ToList();
                SplitMinimumHours                = 2;
                MainSplitMinimumHours            = 6;
                SplitTotalForReset               = 10;
                IsMainSplitRequiredInSleeperOnly = true;
                NumberOfSplits                   = 2;
                break;

            default:
                throw new NotImplementedException();
            }
        }
Пример #2
0
 public DutyStatusEvent(string driverId, DateTimeOffset startDateTime, DateTimeOffset endDateTime, Enums.DutyStatus status, Enums.Jurisdiction jurisdiction)
 {
     DriverId = driverId;
     DutyStatusJursidiction = GetJurisdiction(jurisdiction);
     StartDateTime          = startDateTime;
     EndDateTime            = endDateTime;
     DutyStatus             = status;
 }
Пример #3
0
 /// <summary>
 /// Creates a Jurisdiciton based on Enum value
 /// </summary>
 /// <param name="jurisdiction">Enum of Jurisdiction</param>
 /// <returns>Jurisdiction Object populated with Correct Values</returns>
 private Jurisdiction GetJurisdiction(Enums.Jurisdiction jurisdiction)
 {
     return(new Jurisdiction(jurisdiction));
 }
Пример #4
0
        internal DutyStatusViolation(DateTimeOffset startDateTime, DateTimeOffset endDateTime, Enums.ViolationType violationType, Enums.Jurisdiction jurisdictionId)
        {
            StartDateTime = startDateTime;
            EndDateTime   = endDateTime;
            ViolationType = violationType;
            Jurisdiction jurisdiction = new Jurisdiction(jurisdictionId);

            switch (violationType)
            {
            case Enums.ViolationType.Driving:
                ViolationText = $"Driving more than {jurisdiction.DrivingHoursAllowed} hours.";
                break;

            case Enums.ViolationType.OnDuty:
                ViolationText = $"Driving after the {jurisdiction.OnDutyHoursAllowed}th hour on duty.";
                break;

            case Enums.ViolationType.Rest:
                ViolationText = $"No {jurisdiction.MinimumRestLengthHours.HoursToMinutes()}-minute rest break in the fist {jurisdiction.MaximumShiftHoursBeforeRestBreakRequired} hours";
                break;

            case Enums.ViolationType.Weekly:
                ViolationText = $"Driving after being on duty more than {jurisdiction.WeeklyOnDutyHoursAllowed} hours in the last {jurisdiction.WeeklyAuditTimeRangeDays} days.";
                break;
            }
        }