public void DeleteGarage(Guid id) { var garage = _garageRepository.GetById(id); var cars = _carRepository.GetAll().Where(x => x.GarageId == id).ToList(); foreach (var car in cars) { car.GarageId = Guid.Empty; } _garageRepository.Delete(garage); _memoryCache.Remove(_allGaragesKey); }
public async Task <bool> Handle(BookParkingCommand request, CancellationToken cancellationToken) { var garage = await _garageRepository.GetById(request.GarageId); if (garage == null) { _logger?.LogWarning($"Garage {request.GarageId} not found."); return(true); } var parkingPeriod = new ParkingPeriod( new Car() { LicensePlate = request.LicensePlate }, request.From, request.To); var parkingSpot = garage.BookParking(parkingPeriod); if (parkingSpot == null) { await _bus.RaiseEvent(new ParkingAlreadyTaken( request.GarageId, request.LicensePlate, request.From, request.To), _bookingReslutTopicKey); return(true); } await _bus.RaiseEvent(new ParkingBooked( request.GarageId, request.LicensePlate, request.From, request.To, parkingSpot.Reference), _bookingReslutTopicKey); return(true); }