public void BroadcastAllDoorsInformation()
 {
     using var context = _doorContextFactory();
     foreach (var door in context.Doors)
     {
         var informationMessage = _informationMessageFactory.CreateDoorInformationMessage(door);
         Task.Factory.StartNew(() => _messageWriterService.SendMessage(informationMessage));
     }
 }
 private void SendTheMessage(int doorId, DoorStates state)
 {
     Task.Factory.StartNew(() =>
     {
         var message = _messageFactory.CreateDoorControlMessage(doorId, state);
         _messageWriterService?.SendMessage(message);
     });
 }
        public void RegisterNewDoor(string label, DoorStates initialState)
        {
            var door = _createNewDoor().WhoseLabelIs(label).And.SetStateTo(initialState);

            using var context = _createDoorContext();
            context.Doors.Add((Door)door);
            context.SaveChanges();

            door = context.Doors.First(d => d.Label == label);
            var informationMessage = _informationMessageFactory.CreateDoorInformationMessage(door.SetMonitorId("new"));

            _messageWriterService.SendMessage(informationMessage);

            var currentEvent = _createEvent().ForDoorWithId(door.Id)
                               .And.SetTheEventDescriptionTo(DoorStates.DoorRegistered);

            context.Events.Add((DoorEvent)currentEvent);
            context.SaveChanges();
        }