public DrivingQueryResult CanDrive(DrivingQueryInfo info, IRestrictionScheduler restrictionScheduler) { List <Restriction> restrictions = restrictionScheduler.GetRestrictions(); Debug.Print(info.LicensePlateIdentifier); Debug.Print(info.QueryDate); Debug.Print(info.QueryTime); var date = DateTime.Parse(info.QueryDate).Date; var time = DateTime.Parse(info.QueryTime).TimeOfDay; string caseID = restrictionScheduler.GetLicensePlateRule().GetCase(info.LicensePlateIdentifier); Debug.Print(date.DayOfWeek.ToString()); bool canDrive = true; foreach (var r in restrictions) { if (date.DayOfWeek == r.DayOfWeek && r.Cases.Contains(caseID)) { if (time <= r.HourRange.EndTime && time >= r.HourRange.StartTime) { canDrive = false; return(new DrivingQueryResult(canDrive)); } } } return(new DrivingQueryResult(canDrive)); }
static void Main(string[] args) { Debug.Print($"Arguments: {args.Length}"); if (args.Length != 3) { Console.WriteLine("Please enter license plate, date and time!"); Console.WriteLine("Usage example: PredictorConsole PCR-4834 9/29/2019 9:00"); Exit(-1); } var licensePlate = args[0]; var date = args[1]; var time = args[2]; var query = new DrivingQueryInfo(licensePlate, date, time); var validResult = query.IsValidEntity(); if (!validResult.valid) { foreach (var fieldResult in validResult.fieldResults) { Console.WriteLine($"{fieldResult}"); } Exit(-2); } var result = new Main().CanDrive(query, new Scheduler().GetScheduler(date)); if (result.CanDrive) { Console.WriteLine($"You can Drive!"); } else { Console.WriteLine($"You can't Drive!"); } Exit(0); }