internal async Task OnSaved(ReplicateDataMessage message, IEntity entity, SaveMode mode) { if (Saved.IsHandled()) { await Saved.Raise(new ReplicationSaveMessageProcessedEventArgs(message, entity, mode)); } }
internal async Task OnDeleted(ReplicateDataMessage message, IEntity entity) { if (Deleted.IsHandled()) { await Deleted.Raise(new ReplicationDeleteMessageProcessedEventArgs(message, entity)); } }
public virtual async Task RecordSave(IEntity entity, SaveMode saveMode) { if (!LogEventsAttribute.ShouldLog(entity.GetType())) { return; } var eventInfo = CreateApplicationEvent(); if (eventInfo == null) { return; } eventInfo.ItemType = entity.GetType().FullName; eventInfo.ItemKey = entity.GetId().ToString(); eventInfo.Event = saveMode.ToString(); eventInfo.IP = GetCurrentUserIP(); eventInfo.UserId = GetCurrentUserId(); if (saveMode == SaveMode.Update) { var changes = await GetChangesXml(entity); if (changes.IsEmpty()) // No changes have happened, ignore recording the action: { return; } eventInfo.Data = changes; } else { if (!ShouldSkipInsertData) { eventInfo.Data = GetDataXml(entity); } } if (OnRecordingSave.IsHandled()) { var args = new AuditSaveEventArgs { SaveMode = saveMode, ApplicationEvent = eventInfo, Entity = entity }; await OnRecordingSave.Raise(args); if (args.Cancel) { return; } } await Save(eventInfo); ProcessContext <UndoContext> .Current.Perform(c => c.Append(eventInfo, entity)); }
public async Task NotifyExternalLoginAuthenticated(ExternalLoginInfo info) { if (!ExternalLoginAuthenticated.IsHandled()) { throw new InvalidOperationException("ExternalLogin requested but no handler found for ExternalLoginAuthenticated event"); } await ExternalLoginAuthenticated.Raise(info); }
internal async Task <bool> OnSaving(ReplicateDataMessage message, IEntity entity, SaveMode mode) { if (!Saving.IsHandled()) { return(true); } var args = new ReplicationSaveMessageReceivedEventArgs(message, entity, mode); await Saving.Raise(args); return(!args.Cancel); }
internal async Task <bool> OnDeleting(ReplicateDataMessage message, IEntity entity) { if (!Deleting.IsHandled()) { return(true); } var args = new ReplicationDeleteMessageReceivedEventArgs(message, entity); await Deleting.Raise(args); return(!args.Cancel); }
public virtual async Task RecordDelete(IEntity entity) { if (!LogEventsAttribute.ShouldLog(entity.GetType())) { return; } var eventInfo = CreateApplicationEvent(); if (eventInfo == null) { return; } eventInfo.ItemType = entity.GetType().FullName; eventInfo.ItemKey = entity.GetId().ToString(); eventInfo.Event = "Delete"; eventInfo.IP = GetCurrentUserIP(); eventInfo.UserId = GetCurrentUserId(); var changes = Entity.Database.GetProvider(entity.GetType()).GetUpdatedValues(entity, null); eventInfo.Data = ToChangeXml(changes); if (OnRecordingDelete.IsHandled()) { var args = new AuditDeleteEventArgs { ApplicationEvent = eventInfo, Entity = entity }; await OnRecordingDelete.Raise(args); if (args.Cancel) { return; } } await Save(eventInfo); ProcessContext <UndoContext> .Current.Perform(c => c.Append(eventInfo, entity)); }
static async Task <Tuple <bool, string> > TryTranslateUsingTheEvent(string phraseInDefaultLanguage, ILanguage language) { if (TranslationRequested.IsHandled()) { var args = new TranslationRequestedEventArgs { PhraseInDefaultLanguage = phraseInDefaultLanguage, Language = language }; await TranslationRequested.Raise(args); if (args.Cancel) { return(Tuple.Create(true, phraseInDefaultLanguage)); } if (args.TranslationProvider != null) { return(Tuple.Create(true, args.TranslationProvider())); } } return(Tuple.Create(false, default(string))); }