public ParkingCalculatorFactory(ParkingAppContext context)
        {
            foreach (var rate in context.FlatParkingRates)
            {
                _parkingRules.Add(new FlatRateCondition(rate.EntryTimeStart, rate.EntryTimeEnd, rate.ExitTimeStart, rate.ExitTimeEnd), new FlatRateParkingChargeCalculator(rate.Description, rate.Charge));
            }

            HourlyChargeRates hourlyRates = new HourlyChargeRates();

            foreach (var rate in context.HourlyRates)
            {
                hourlyRates.Add(rate.HourLimit, rate.Charge);
            }
            _parkingRules.Add(
                new HourlyRateCondition(hourlyRates),
                new HourlyRateParkingChargeCalculator("Hourly Rate", hourlyRates));

            _parkingRules.Add(
                new DailyRateCondition(),
                new DailyRateParkingChargeCalculator("Daily Rate", context.DailyRates.First().Charge));
        }
 public FlatParkingRateRepository(ParkingAppContext context)
 {
     _context = context;
 }
 public HourlyRateRepository(ParkingAppContext context)
 {
     _context = context;
 }
Ejemplo n.º 4
0
        public static void Initialise(ParkingAppContext context)
        {
            context.Database.EnsureCreated();

            if (!context.FlatParkingRates.Any())
            {
                var flatParkingRates = new FlatParkingRate[]
                {
                    new FlatParkingRate
                    {
                        Description    = "Early Bird",
                        EntryTimeStart = TimeSpan.Parse("06:00"),
                        EntryTimeEnd   = TimeSpan.Parse("09:00"),
                        ExitTimeStart  = TimeSpan.Parse("15:30"),
                        ExitTimeEnd    = TimeSpan.Parse("23:30"),
                        EntryDays      = 62,
                        Charge         = 13.00m
                    },
                    new FlatParkingRate
                    {
                        Description    = "Night Rate",
                        EntryTimeStart = TimeSpan.Parse("18:00"),
                        EntryTimeEnd   = TimeSpan.Parse("1.00:00"),
                        ExitTimeStart  = TimeSpan.Parse("18:00"),
                        ExitTimeEnd    = TimeSpan.Parse("1.06:00"),
                        EntryDays      = 62,
                        Charge         = 6.50m
                    },
                    new FlatParkingRate
                    {
                        Description    = "Weekend Rate",
                        EntryTimeStart = TimeSpan.Parse("00:00"),
                        EntryTimeEnd   = TimeSpan.Parse("2.00:00"),
                        ExitTimeStart  = TimeSpan.Parse("00:00"),
                        ExitTimeEnd    = TimeSpan.Parse("2.00:00"),
                        EntryDays      = 64,
                        Charge         = 10.00m
                    },
                    new FlatParkingRate
                    {
                        Description    = "Weekend Rate",
                        EntryTimeStart = TimeSpan.Parse("00:00"),
                        EntryTimeEnd   = TimeSpan.Parse("1.00:00"),
                        ExitTimeStart  = TimeSpan.Parse("00:00"),
                        ExitTimeEnd    = TimeSpan.Parse("1.00:00"),
                        EntryDays      = 1,
                        Charge         = 10.00m
                    },
                };
                foreach (var rate in flatParkingRates)
                {
                    context.FlatParkingRates.Add(rate);
                }
                context.SaveChanges();
            }

            if (!context.HourlyRates.Any())
            {
                var hourlyRates = new HourlyRate[]
                {
                    new HourlyRate {
                        HourLimit = 1, Charge = 5.00m
                    },
                    new HourlyRate {
                        HourLimit = 2, Charge = 10.00m
                    },
                    new HourlyRate {
                        HourLimit = 3, Charge = 15.00m
                    },
                };
                foreach (var rate in hourlyRates)
                {
                    context.HourlyRates.Add(rate);
                }
                context.SaveChanges();
            }

            if (!context.DailyRates.Any())
            {
                var dailyRate = new DailyRate {
                    Charge = 20.00m
                };
                context.DailyRates.Add(dailyRate);
                context.SaveChanges();
            }
        }