//Event handlers
        protected void DoorOpened(object sender, EventArgs e)
        {
            switch (_doorControlStates)
            {
            //Door should be opening here
            case DoorControlStates.DoorOpening:
                //Change state
                _doorControlStates = DoorControlStates.DoorClosing;

                //Close door
                _door.Close();

                //End case
                break;

            //In case of breach where door is expected closed
            case DoorControlStates.DoorClosed:
                //Change state
                _doorControlStates = DoorControlStates.DoorAlarm;

                //Raise alarm
                _alarm.Raise();

                //End case
                break;
            }
        }