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(); } }
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; }
/// <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)); }
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; } }