/// <summary> /// Creates audit logs and/or triggers workflows for items that were changed /// </summary> /// <param name="updatedItems">The updated items.</param> /// <param name="personAlias">The person alias.</param> /// <param name="enableAuditing">if set to <c>true</c> [enable auditing].</param> protected virtual void RockPostSave(List <ContextItem> updatedItems, PersonAlias personAlias, bool enableAuditing = false) { if (enableAuditing) { try { var audits = updatedItems.Select(i => i.Audit).ToList(); if (audits.Any(a => a.Details.Any())) { var transaction = new Rock.Transactions.AuditTransaction(); transaction.Audits = audits; Rock.Transactions.RockQueue.TransactionQueue.Enqueue(transaction); } } catch (SystemException ex) { ExceptionLogService.LogException(ex, null); } } foreach (var item in updatedItems) { if (item.State == EntityState.Detached || item.State == EntityState.Deleted) { TriggerWorkflows(item, WorkflowTriggerType.PostDelete, personAlias); } else { TriggerWorkflows(item, WorkflowTriggerType.ImmediatePostSave, personAlias); TriggerWorkflows(item, WorkflowTriggerType.PostSave, personAlias); } } }
/// <summary> /// Saves the specified item. /// </summary> /// <param name="item">The item.</param> /// <param name="personId">The person id.</param> /// <returns></returns> public virtual bool Save(T item, int?personId) { ErrorMessages = new List <string>(); if (!TriggerWorkflows(item, WorkflowTriggerType.PreSave, personId)) { return(false); } if (item != null && item.Guid == Guid.Empty) { item.Guid = Guid.NewGuid(); } List <EntityChange> changes; List <AuditDto> audits; List <string> errorMessages; if (_repository.Save(personId, out changes, out audits, out errorMessages)) { if (changes != null && changes.Count > 0) { var transaction = new Rock.Transactions.EntityChangeTransaction(); transaction.Changes = changes; transaction.PersonId = personId; Rock.Transactions.RockQueue.TransactionQueue.Enqueue(transaction); } if (audits != null && audits.Count > 0) { var transaction = new Rock.Transactions.AuditTransaction(); transaction.Audits = audits; Rock.Transactions.RockQueue.TransactionQueue.Enqueue(transaction); } TriggerWorkflows(item, WorkflowTriggerType.PostSave, personId); return(true); } else { ErrorMessages = errorMessages; return(false); } }
/// <summary> /// Creates audit logs and/or triggers workflows for items that were changed /// </summary> /// <param name="updatedItems">The updated items.</param> /// <param name="personAlias">The person alias.</param> /// <param name="enableAuditing">if set to <c>true</c> [enable auditing].</param> protected virtual void RockPostSave( List<ContextItem> updatedItems, PersonAlias personAlias, bool enableAuditing = false ) { if ( enableAuditing ) { try { var audits = updatedItems.Select( i => i.Audit ).ToList(); if ( audits.Any( a => a.Details.Any() ) ) { var transaction = new Rock.Transactions.AuditTransaction(); transaction.Audits = audits; Rock.Transactions.RockQueue.TransactionQueue.Enqueue( transaction ); } } catch ( SystemException ex ) { ExceptionLogService.LogException( ex, null ); } } foreach ( var item in updatedItems ) { if ( item.State == EntityState.Detached || item.State == EntityState.Deleted ) { TriggerWorkflows( item, WorkflowTriggerType.PostDelete, personAlias ); } else { TriggerWorkflows( item, WorkflowTriggerType.ImmediatePostSave, personAlias ); TriggerWorkflows( item, WorkflowTriggerType.PostSave, personAlias ); } } }