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)); }
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); }
public string TryFetch(Ticket ticket, out Car car) { var currentLot = ParkingLots.FirstOrDefault(x => x.LotName == ticket.LotName); return(this.TryFetchFromSpecificLot(ticket, currentLot, out car)); }
public virtual string TryPark(Car car, out Ticket ticket) { var currentLot = ParkingLots.FirstOrDefault(x => x.IsAvailabe); return(this.TryParkToSpecificLot(car, currentLot, out ticket)); }