/// <summary> /// Processing all the published items. /// </summary> /// <param name="args"><see cref="PublishEndResultBatchArgs"/></param> public void ProcessChangedItems(PublishEndResultBatchArgs args) { var changedItems = new List <ChangedItem>(); var sourceDatabase = _databaseFactory.GetDatabase(args.JobData.SourceDatabaseName); // Process deleted items first var itemResults = args.Batch.ToList(); var deletedResults = itemResults.Where(x => x.Type == ManifestOperationResultType.Deleted); var createdModifiedResults = itemResults.Where(x => x.Type != ManifestOperationResultType.Deleted); var deletedResultsList = deletedResults.ToList(); if (deletedResultsList.Any()) { changedItems.AddRange(deletedResultsList.Select(deletedResult => ProcessDeletedItem(sourceDatabase, deletedResult))); } var createdModifiedResultsList = createdModifiedResults.ToList(); if (createdModifiedResultsList.Any()) { changedItems.AddRange(createdModifiedResultsList.Select(itemResult => ProcessChangedItem(sourceDatabase, itemResult)).Where(changedItem => changedItem != null)); } if (changedItems.Count > 0) { // Insert specific things that you would like to do // Examples: pass the changedItems to another custom pipeline, raise more events, or custom remote events with the changedItems as part of EventData } }
private void SendAbortMessage(PublishEndResultBatchArgs args) { MailMessage message = new MailMessage(this.MailFrom, this.MailTo); message.Subject = $"Publishing job {args.JobData.JobId} aborted at {DateTime.Now}"; message.Body = $"A publishing job was just aborted. Job Id: {args.JobData.JobId} \n Message: {args.Message}"; MainUtil.SendMail(message); }
public void Process(PublishEndResultBatchArgs args) { if (args.TotalResultCount.Equals(0)) { return; } _publishingLog.Debug("Processing Published Items and Transforming into a list of ChangedItem"); ProcessChangedItems(args); }
public void Process(PublishEndResultBatchArgs args) { if (args.Aborted) { SendAbortMessage(args); } else { SendDetailsMessage(args); } }
private void SendDetailsMessage(PublishEndResultBatchArgs args) { MailMessage message = new MailMessage(this.MailFrom, this.MailTo); message.Subject = $"Publishing job {args.JobData.JobId} finished at {DateTime.Now}"; var itemsAffected = args.Batch.Select(b => b.EntityId).Distinct().Count(); message.Body = "Finished publishing job!\n"; message.Body += $"({itemsAffected}) items were published\n"; message.Body += $"Date: {args.JobData.PublishDate}\n"; message.Body += $"Job Id: {args.JobData.JobId}\n"; message.Body += $"Username: {args.JobData.Username}\n"; MainUtil.SendMail(message); }