public void ProcessRequest(int requestedFloor)
 {
     RequestedFloorQueue.Enqueue(requestedFloor);
     FloorsStopMap[requestedFloor] = true;
     ElevatorButtons.FirstOrDefault(btn => btn.ButtonID == requestedFloor);
     if (!Timer.Enabled)
     {
         Start();
     }
 }
        public void Halt()
        {
            Timer.Interval = (HaltTime + CrossTime) * 1000;
            FloorsStopMap[CurrentFloorNo] = false;

            var extraHalt = Utility.RandomNumber(0, 1); /* Randomly select extra halt, 0 means no extra halt, 1 means halt for extra time */

            if (this.ElevatorID == "E1")
            {
                extraHalt = 1;
            }
            if (extraHalt == 1)
            {
                var extraHaltTime = Utility.RandomNumber(10, 20); /* how many seconds it halts */
                Timer.Interval = (HaltTime + CrossTime + extraHaltTime) * 1000;
                Console.WriteLine("The Elevator {0} is halt on the floor number  {1} for {2} seconds", ElevatorID, CurrentFloorNo, Timer.Interval / 1000);
            }
            else
            {
                Timer.Interval = (HaltTime + CrossTime) * 1000;
                Console.WriteLine("The Elevator {0} is halt on the floor number  {1} for {2} seconds", ElevatorID, CurrentFloorNo, HaltTime);
            }
            var isButtonPressed = Utility.RandomNumber(0, 1); /* Does the person wants to press any button inside elevtor , 0 means no, 1 means yes */

            if (isButtonPressed == 1)
            {
                var pressedButtonNo = Utility.RandomNumber(Utility.BottomFloorID, Utility.TopFloorID);
                var button          = ElevatorButtons.FirstOrDefault(btn => btn.ButtonID == pressedButtonNo);
                button.ISPressed = true;
                if (ButtonPressed != null)
                {
                    ButtonPressed(button, new ButtonEventArgs(pressedButtonNo));
                }
            }
            this.Stop();
        }