Example #1
0
        public override object Park(Car car)
        {
            var notFullLot = ParkingLots.FirstOrDefault(l => !l.IsFull());

            if (notFullLot == null)
            {
                throw new NoSpaceException("no space");
            }

            return(notFullLot.Park(car));
        }
Example #2
0
        public async Task <bool> TrySelectParkingLotById(string cityId, string parkingLotId)
        {
            Debug.WriteLine("[MainVm] TrySelectParkingLotById for {0} / {1} called", cityId, parkingLotId);
            ParkingLot parkingLot = null;

            await TrySelectCityById(cityId);

            var city = FindCityById(MetaData, cityId);

            if (city != null)
            {
                Debug.WriteLine("[MainVm] TrySelectParkingLotById for {0} / {1}: load city", cityId, parkingLotId);
                var cityDetails = await LoadCity(city.Id);

                if (FindParkingLotById(cityDetails, parkingLotId) == null)
                {
                    Debug.WriteLine("[MainVm] TrySelectParkingLotById for {0} / {1}: force refresh city details", cityId, parkingLotId);
                    cityDetails = await LoadCity(city.Id, true);
                }
                await DispatcherHelper.RunAsync(() =>
                {
                    SelectedCity     = city;
                    SelectedCityData = cityDetails;
                    Debug.WriteLine(
                        "[MainVm] TrySelectParkingLotById for {0} / {1}: set city + city data. find parking lot now",
                        cityId, parkingLotId);
                });

                parkingLot = FindParkingLotById(cityDetails, parkingLotId);
            }
            if (parkingLot != null)
            {
                await DispatcherHelper.RunAsync(() =>
                {
                    Debug.WriteLine("[MainVm] TrySelectParkingLotById for {0} / {1}: success", cityId, parkingLotId);
                    var plot = ParkingLots.FirstOrDefault(x => x.Id == parkingLot.Id);
                    if (plot != null)
                    {
                        SelectedParkingLot = plot;
                    }
                });

                return(true);
            }
            return(false);
        }
Example #3
0
        public string TryFetch(Ticket ticket, out Car car)
        {
            var currentLot = ParkingLots.FirstOrDefault(x => x.LotName == ticket.LotName);

            return(this.TryFetchFromSpecificLot(ticket, currentLot, out car));
        }
Example #4
0
        public virtual string TryPark(Car car, out Ticket ticket)
        {
            var currentLot = ParkingLots.FirstOrDefault(x => x.IsAvailabe);

            return(this.TryParkToSpecificLot(car, currentLot, out ticket));
        }