Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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);
        }