public Level(int flr, int numberSpots)
        {
            floor = flr;
            spots = new ParkingSpots[numberSpots];
            int largeSpot    = numberSpots / 4;
            int bikeSpots    = numberSpots / 4;
            int compactSpots = numberSpots - largeSpot - bikeSpots;

            //Allocate spots for parking on each level according to size/type of vehicle
            for (int i = 0; i < numberSpots; i++)
            {
                //Motorcycle can fit in any spot
                VehicleSize sz = VehicleSize.Motorcycle;
                if (i < largeSpot)
                {
                    //Large vehicle can only fit in Large Spot
                    sz = VehicleSize.Large;
                }
                else if (i < largeSpot + compactSpots)
                {
                    //Compact vehicle can fit in Compact & Large spot
                    sz = VehicleSize.Compact;
                }
                int row = i / SPOTS_PER_ROW;
                spots[i] = new ParkingSpots(this, row, i, sz);
            }
            availableSpots = numberSpots;
        }
Exemple #2
0
 public VehicleModel(string code, string name, VehicleBrand brand, VehicleSize size, VehicleType type) : base(code)
 {
     _name  = name;
     _brand = brand;
     _size  = size;
     _type  = type;
 }
        public Booking UpdateVehicleSize(VehicleSize vehicleSize)
        {
            var backup = VehicleSize;

            VehicleSize = vehicleSize;
            return(Validate(e => e.VehicleSize = backup));
        }
 public TrackedVehicleInfo(Vehicle v)
 {
     vehicle    = v;
     size       = GetVehicleSizeInternal(v);
     offsets    = vehicle.EnumTurbineOffsets().ToArray();
     numEngines = offsets.Length;
 }
Exemple #5
0
        public virtual void UpdatePrice(VehicleSize vehicleSize, long price)
        {
            var servicePrice = _servicePrices.First(sp => sp.VehicleSize == vehicleSize);

            _servicePrices.Remove(servicePrice);
            _servicePrices.Add(new ServicePricing(this, vehicleSize, price));
        }
Exemple #6
0
 public ParkingSpot(Level level, int row, int spotNumber, VehicleSize spotSize)
 {
     this.level = level;
     Row        = row;
     SpotNumber = spotNumber;
     SpotSize   = spotSize;
 }
 public ParkingSpot(Level lvl, int r, int n, VehicleSize s)
 {
     level      = lvl;
     row        = r;
     spotNumber = n;
     spotSize   = s;
 }
 public ParkingSpot(ParkingLevel level, int rowno, int spotnumber, VehicleSize xVehicleSize)
 {
     _level       = level;
     _rowno       = rowno;
     _spotnumber  = spotnumber;
     _vehicleSize = xVehicleSize;
 }
 public VehicleModel(string code, string name, VehicleBrand brand, VehicleSize size, VehicleType type)
     : base(code)
 {
     _name = name;
     _brand = brand;
     _size = size;
     _type = type;
 }
Exemple #10
0
 public void Checkin(VehicleSize vehicleSize, ILot lot)
 {
     Lot _lot = lot as Lot;
     if (_lot == null) throw new ArgumentException("lot is not of vehicleSize Lot");
     int cost = (int)vehicleSize;
     Lots[_lot.Saturation].Remove(_lot);
     _lot.Saturation -= cost;
     Lots[_lot.Saturation].Add(_lot);
 }
 public static CarWinch Create(VehicleSize vehicleSize)
 {
     return(vehicleSize switch
     {
         VehicleSize.Small => new SmallCarWinch(vehicleSize),
         VehicleSize.Medium => new MediumCarWinch(vehicleSize),
         VehicleSize.Big => new BigCarWinch(vehicleSize),
         _ => throw new ApplicationException("Unknown vehicle size"),
     });
 public static Vehicle Create(string model, VehicleSize vehicleSize)
 {
     return(vehicleSize switch
     {
         VehicleSize.Small => new SmallVehicle(model, vehicleSize),
         VehicleSize.Medium => new MediumVehicle(model, vehicleSize),
         VehicleSize.Big => new BigVehicle(model, vehicleSize),
         _ => throw new ApplicationException("Unknown vehicle size"),
     });
Exemple #13
0
        public void UpdateVehicleSize_WithAValidVehicleSize_UpdatesTheVehicleSize()
        {
            //arrange
            const VehicleSize expectedSize = VehicleSize.Medium;

            //act
            var booking = _validBooking.UpdateVehicleSize(expectedSize);

            //assert
            Assert.Equal(expectedSize, booking.VehicleSize);
        }
Exemple #14
0
        public VehicleModel Save(string code, string name, VehicleBrand brand, VehicleSize size, VehicleType type)
        {
            VehicleModel newModel = null;
            var          session  = NHibernateSessionManager.GetLocalSession();

            session.DoTransactional(sess =>
            {
                newModel = _modelRepo.Insert(new VehicleModel(code, name, brand, size, type));
            });

            return(newModel);
        }
        public VehicleModel Save(string code, string name, VehicleBrand brand, VehicleSize size, VehicleType type)
        {
            VehicleModel newModel = null;
            var session = NHibernateSessionManager.GetLocalSession();

            session.DoTransactional(sess =>
                {
                    newModel = _modelRepo.Insert(new VehicleModel(code, name, brand, size, type));
                });

            return newModel;
        }
        // Constructor
        public Vehicle(string registrationNumber, VehicleSize size, FuelType fuelType, double consumptionPerKm)
        {
            this.RegistrationNumber = registrationNumber;
            this.Size                 = size;
            this.FuelType             = fuelType;
            this.FuelConsumptionPerKm = consumptionPerKm;

            // If vehicle is motorbike, fuel type must be petrol
            if (size == VehicleSize.Motorbike && FuelType != FuelType.Petrol)
            {
                this.FuelType = FuelType.Petrol;
            }
            SetAvergageCO2EmissionPerKm(FuelType, Size);
        }
Exemple #17
0
        public bool TryCheckout(VehicleSize vehicleSize, out ILot lot)
        {
            int cost = (int)vehicleSize;
            foreach (int saturationIndex in new int[] { 1, 0 })
            {
                if (2 - saturationIndex < cost || Lots[saturationIndex].Count == 0) continue;
                Lot _lot = Lots[saturationIndex].First();
                _lot.Saturation += cost;
                Lots[saturationIndex].Remove(_lot);
                Lots[_lot.Saturation].Add(_lot);
                lot = _lot;
                return true;
            }

            lot = null;
            return false;
        }
Exemple #18
0
            public Level(int floor, int numberSpots)
            {
                this.floor = floor;
                spots      = new ParkingSpot[numberSpots];
                int largeSpots   = numberSpots / 4;
                int bikeSpots    = numberSpots / 4;
                int compactSpots = numberSpots - largeSpots - bikeSpots;

                for (int i = 0; i < numberSpots; i++)
                {
                    VehicleSize sz = VehicleSize.Motorcycle;
                    if (i < largeSpots)
                    {
                        sz = VehicleSize.Large;
                    }
                    else if (i < largeSpots + compactSpots)
                    {
                        sz = VehicleSize.Compact;
                    }
                    int row = i / SPOTS_PER_ROW;
                    spots[i] = new ParkingSpot(this, row, i, sz);
                }
                availableSpots = numberSpots;
            }
 public MediumVehicle(string model, VehicleSize vehicleSize) : base(model, vehicleSize)
 {
 }
 public SmallVehicle(string model, VehicleSize vehicleSize) : base(model, vehicleSize)
 {
 }
 public ServicePricingDto(VehicleSize vehicleSize, long price)
 {
     _vehicleSize = vehicleSize;
     _price = price;
 }
Exemple #22
0
 public virtual void AddPrice(VehicleSize vehicleSize, long price)
 {
     _servicePrices.Add(new ServicePricing(this, vehicleSize, price));
 }
Exemple #23
0
 public Vehicle(int id, VehicleSize size)
 {
     _vehicleSize = size;
 }
        // Methods
        public void SetAvergageCO2EmissionPerKm(FuelType type, VehicleSize size)
        {
            // All numbers used in the calculation are provided by the UK Government
            // Conversion Factors for greenhouse gas (GHG) reporting (2017).

            // Fuel type is Petrol
            if (type == FuelType.Petrol)
            {
                switch (size)
                {
                case VehicleSize.Small:
                    AverageCO2EmissionPerKm = 0.15649;
                    break;

                case VehicleSize.Medium:
                    AverageCO2EmissionPerKm = 0.19407;
                    break;

                case VehicleSize.Large:
                    AverageCO2EmissionPerKm = 0.28539;
                    break;

                case VehicleSize.Motorbike:
                    AverageCO2EmissionPerKm = 0.11662;
                    break;

                default:
                    // Default is set to average car value
                    AverageCO2EmissionPerKm = 18568;
                    break;
                }
            }
            // Fuel type is Diesel
            else if (type == FuelType.Diesel)
            {
                switch (size)
                {
                case VehicleSize.Small:
                    AverageCO2EmissionPerKm = 0.14545;
                    break;

                case VehicleSize.Medium:
                    AverageCO2EmissionPerKm = 0.1738;
                    break;

                case VehicleSize.Large:
                    AverageCO2EmissionPerKm = 0.21834;
                    break;

                default:
                    // Default is set to average car value
                    AverageCO2EmissionPerKm = 17887;
                    break;
                }
            }
            // Fuel type is Hybrid
            else if (type == FuelType.PlugInHybrid)
            {
                switch (size)
                {
                case VehicleSize.Small:
                    AverageCO2EmissionPerKm = 0.10973;
                    break;

                case VehicleSize.Medium:
                    AverageCO2EmissionPerKm = 0.11243;
                    break;

                case VehicleSize.Large:
                    AverageCO2EmissionPerKm = 0.13052;
                    break;

                default:
                    // Default is set to average car value
                    AverageCO2EmissionPerKm = 11659;
                    break;
                }
            }
        }
 protected Vehicle(string model, VehicleSize vehicleSize)
 {
     Model       = model;
     VehicleSize = vehicleSize;
 }
 protected CarWinch(VehicleSize vehicleSize)
 {
     VehicleSize = vehicleSize;
 }
Exemple #27
0
 public Place(int id, VehicleSize size)
 {
     _id        = id;
     _placeSize = size;
 }
 public BigCarWinch(VehicleSize vehicleSize) : base(vehicleSize)
 {
 }
 public MediumCarWinch(VehicleSize vehicleSize) : base(vehicleSize)
 {
 }
 public SmallCarWinch(VehicleSize vehicleSize) : base(vehicleSize)
 {
 }
Exemple #31
0
 public ServicePricingDto(VehicleSize vehicleSize, long price)
 {
     _vehicleSize = vehicleSize;
     _price       = price;
 }
 protected Vehicle(string registration, VehicleSize vehicleSize)
 {
     _registration = registration;
     _vehicleSize  = vehicleSize;
 }
 public BigVehicle(string model, VehicleSize vehicleSize) : base(model, vehicleSize)
 {
 }
Exemple #34
0
 public virtual void AddPrice(VehicleSize vehicleSize, long price)
 {
     _servicePrices.Add(new ServicePricing(this, vehicleSize, price));
 }
Exemple #35
0
        public virtual void UpdatePrice(VehicleSize vehicleSize, long price)
        {
            var servicePrice = _servicePrices.First(sp => sp.VehicleSize == vehicleSize);

            _servicePrices.Remove(servicePrice);
            _servicePrices.Add(new ServicePricing(this, vehicleSize, price));
        }
Exemple #36
0
 public abstract Vehicle CreateVehicle(string model, VehicleSize vehicleSize);
 public override Vehicle CreateVehicle(string model, VehicleSize vehicleSize)
 {
     return(VehicleCreator.Create(model, vehicleSize));
 }