protected virtual void SetBaseProperties(SignalDispatch <TKey> dispatch, EventSettings <TKey> settings,
                                                 SignalEvent <TKey> signalEvent, Subscriber <TKey> subscriber)
        {
            dispatch.EventSettingsId    = settings.EventSettingsId;
            dispatch.DispatchTemplateId = DispatchTemplateId;
            dispatch.MachineName        = signalEvent.MachineName;
            dispatch.ApplicationName    = signalEvent.ApplicationName;

            dispatch.DeliveryType = DeliveryType;
            dispatch.CategoryId   = settings.Subscription.CategoryId;
            dispatch.TopicId      = signalEvent.TopicId ?? settings.Subscription.TopicId;

            dispatch.ReceiverSubscriberId = subscriber.SubscriberId;
            dispatch.ReceiverAddress      = subscriber.Address;

            dispatch.ScheduleSet = ScheduleSet;
            dispatch.IsScheduled = false;

            dispatch.CreateDateUtc  = signalEvent.CreateDateUtc;
            dispatch.SendDateUtc    = DateTime.UtcNow;
            dispatch.FailedAttempts = 0;

            dispatch.Language = subscriber.Language ?? string.Empty;
            if (settings.ConsolidatorId != null)
            {
                dispatch.TemplateData = signalEvent.TemplateDataObj == null
                    ? JsonConvert.SerializeObject(signalEvent.TemplateDataDict)
                    : signalEvent.TemplateDataObj;
            }
        }
 public abstract void Update(SignalDispatch <TKey> item, TemplateData templateData);