/// <summary>  </summary>
        /// <param name="requestEvent">StorageSpaceRequestEvent</param>
        /// <returns></returns>
        public async Task GetStorageSpaces(StorageSpaceRequestEvent requestEvent)
        {
            if (!requestEvent.IsValid)
            {
                InvalidStorageSpaceRequestEvent(requestEvent);
            }

            var StorageSpaces = await _StorageSpaceDetailMongoRepository.GetStorageSpaces(new GetStorageSpaceRequest
            {
                FacilityId  = requestEvent.FacilityId,
                FormularyId = requestEvent.FormularyId,
                ISAId       = requestEvent.ISAId
            });

            var response = new StorageSpaceResponseEvent
            {
                TransactionQueueId = requestEvent.TransactionQueueId,
                FormularyId        = StorageSpaces.FormularyId,
                MedId   = StorageSpaces.ItemId,
                Devices = StorageSpaces.Devices,
                Headers = requestEvent.Headers
            };

            _logger.LogInformation(PublishEventType);
            _logger.LogInformation($"{nameof(StorageSpaceResponseEvent.TransactionQueueId)}: {response.TransactionQueueId};");
            _logger.LogInformation($"{CorrelationParentId}: {response.Headers.FirstOrDefault(_ => _.Key.ToLower() == CorrelationParentId.ToLower()).Value}");
            _eventBus.Publish(_configuration.KafkaResponseTopic, response, requestEvent.Headers);
            _logger.LogInformation($"{FollowingDataSuccessfullyPublishedToEventBus}: {response}");
        }
        private void InvalidStorageSpaceRequestEvent(StorageSpaceRequestEvent request)
        {
            var propertiesWithInvalidValues = request.GetRuleViolations().Select(a => a.PropertyName);
            var properties = request.GetType().GetProperties().Where(_ => propertiesWithInvalidValues.Contains(_.Name));

            foreach (var property in properties)
            {
                _logger.LogError($"{property.Name} = {property.GetValue(request, null)};");
            }

            // following line throws an ApplicationException
            request.OnValidate();
        }