private void TryEnterElevator(Elevator elevator, Passenger passenger)
        {
            lock (locker)
            {
                if (!elevator.CanUseElevator(passenger.Weight))
                {
                    Console.WriteLine("Elevator " + elevator.elevatorIndex + " is full for passenger " + passenger.passengerIndex,
                                      elevator.elevatorIndex);
                    logger.Write(
                        "Elevator " + elevator.elevatorIndex + " is full for passenger " + passenger.passengerIndex,
                        elevator.elevatorIndex);
                    GlobalEvents.OnPassengerCalledElevator(new PassengerEventArgs(passenger));
                    return;
                }

                elevator.EnterInElevator(passenger);
                if (wasCalled)
                {
                    RemoveDestinationFloorIndexesConcurrentBag(elevator, passenger.CurrentFloorIndex);
                    wasCalled = false;
                }

                AddDestinationFloorIndexesConcurrentBag(elevator, passenger.DestinationFloorIndex);
                logger.Write("Passenger " + passenger.passengerIndex + " entered elevator" + elevator.elevatorIndex, elevator.elevatorIndex);
                Console.WriteLine("Passengers inside in elevator {0}: {1}, total weight: {2}", elevator.elevatorIndex, elevator.GetPeopleInside().Count, elevator.WeightInside);
                UpdateElevatorDirection(elevator);
                GlobalEvents.OnPassengerEnteredElevator(new PassengerEventArgs(passenger));
            }
        }