Exemplo n.º 1
0
        /// <summary>
        /// Get an event grid event based on the input parameters. This method accepts any <see cref="ResponseBaseDTO" />.
        /// Event type will be extracted from the DTO.
        /// </summary>
        /// <param name="anyDto">Any dto.</param>
        /// <param name="subject">The subject.</param>
        /// <param name="appendEventIdToSubject">if set to <c>true</c> [append event identifier to subject].</param>
        /// <param name="dataVersion">The data version.</param>
        /// <param name="locator">The locator.</param>
        /// <returns>
        /// An <see cref="EventGridEvent" />
        /// </returns>
        public EventGridEvent GetEventGridEventFromResponseDTO(ResponseBaseDTO anyDto, string subject, bool appendEventIdToSubject = true, string dataVersion = "1.0", EventLocator locator = null)
        {
            if (anyDto == null)
            {
                throw new ArgumentNullException(nameof(anyDto));
            }

            var eventGridEventId = Guid.NewGuid().ToString();

            var eventToPublish = new EventGridEvent
            {
                Id          = eventGridEventId,
                Data        = anyDto,
                EventTime   = DateTime.UtcNow,
                EventType   = anyDto.ReturnEventType,
                Subject     = appendEventIdToSubject ? $"{subject}/{eventGridEventId}" : subject,
                DataVersion = dataVersion,
            };

            return(locator == null ? eventToPublish : eventToPublish.DecorateWith(locator));
        }