public void Handle(LeaveParkingPlaceCommand command) { var parking = _dbContext.Set <Models.Parking>() .FirstOrDefault(p => p.Name == command.ParkingName); if (parking == null) { throw new Exception($"Cannot find parking '{command.ParkingName}'."); } if (!parking.IsOpened) { throw new Exception($"The parking '{command.ParkingName}' is closed."); } var parkingPlace = _dbContext.Set <ParkingPlace>() .FirstOrDefault(p => p.ParkingName == command.ParkingName && p.Number == command.PlaceNumber); if (parkingPlace == null) { throw new Exception($"Cannot find place #{command.PlaceNumber} in the parking '{command.ParkingName}'."); } if (parkingPlace.IsFree) { throw new Exception($"Parking place #{command.PlaceNumber} is still free."); } parkingPlace.IsFree = true; parkingPlace.UserId = null; _dbContext.SaveChanges(); _commandStoreService.Push(command); }
public void LeaveParkingPlace(string parkingName, int placeNumber) { var command = new LeaveParkingPlaceCommand(parkingName, placeNumber); var commandHandler = new LeaveParkingPlaceCommandHandler(_dbContext, _commandStoreService); commandHandler.Handle(command); }
public void LeaveParkingPlace(string parkingName, int placeNumber) { var command = new LeaveParkingPlaceCommand { ParkingName = parkingName, PlaceNumber = placeNumber }; _commandHandler.Handle(command); }
public async Task Should_LeaveParkingPlace(string AParkingName, int APlaceNumber) { // Arrange var LHandleLeaveParkingPlace = new LeaveParkingPlaceCommandHandler(FMockDbContext.Object, FCommands); var LCommand = new LeaveParkingPlaceCommand { ParkingName = AParkingName, PlaceNumber = APlaceNumber }; // Act var LResult = await LHandleLeaveParkingPlace.Handle(LCommand, CancellationToken.None); // Assert FMockDbContext .Verify(AMockDbContext => AMockDbContext.SaveChangesAsync(CancellationToken.None), Times.Once); LResult.ToString().Should().Be("()"); }