public override void OnExecute(IPluginProvider provider) { // Get configuration values var resource = SecureConfig.GetValue <string>("resource"); var username = SecureConfig.GetValue <string>("username"); var password = SecureConfig.GetValue <string>("password"); // Get access token var token = provider.TokenService.GetToken(resource, username, password); // Get current versions var current = GetCurrentVersions(token); var previous = GetPreviousVersions(provider.OrganizationAdminService); var isUpdated = current.Application > previous.Application || current.Database > previous.Database; if (isUpdated) { var entity = new Entity("bg_versionlog") { ["bg_application"] = current.Application.ToString(), ["bg_database"] = current.Database.ToString() }; provider.OrganizationAdminService.Create(entity); } var output = provider.ExecutionContext.OutputParameters; output["Application"] = current.Application.ToString(); output["Database"] = current.Database.ToString(); output["IsUpdated"] = isUpdated; }
public override void OnExecute(IPluginProvider provider) { // Get configuration values var resource = SecureConfig.GetValue <string>("resource"); var username = SecureConfig.GetValue <string>("username"); var password = SecureConfig.GetValue <string>("password"); var renderer = new Renderer(resource, username, password); var service = provider.OrganizationService; var context = provider.ExecutionContext; var target = provider.Target; // Render the report var output = string.Empty; switch (target.LogicalName) { case "report": var reportColumns = new ColumnSet("reportnameonsrs", "languagecode", "defaultfilter"); var report = service.Retrieve(target.LogicalName, target.Id, reportColumns); var format = context.InputParameterOrDefault <string>("Format"); var parameters = context.InputParameterOrDefault <string>("Parameters"); var rendered = renderer.RenderReport(report, format, parameters); output = Convert.ToBase64String(rendered); break; case "documenttemplate": var templateColumns = new ColumnSet("documenttype", "associatedentitytypecode"); var template = service.Retrieve(target.LogicalName, target.Id, templateColumns); switch (template.GetAttributeValue <OptionSetValue>("documenttype")?.Value) { case 1: var savedView = Guid.Parse(context.InputParameterOrDefault <string>("ViewId")); output = renderer.RenderExcelTemplate(template.Id, savedView); break; case 2: var typeCode = template.GetAttributeValue <string>("associatedentitytypecode"); var metadata = service.GetEntityMetadata(typeCode); var recordId = Guid.Parse(context.InputParameterOrDefault <string>("RecordId")); output = renderer.RenderWordTemplate(template.Id, recordId, metadata.ObjectTypeCode ?? 0); break; default: throw new Exception("Invalid document template type."); } break; default: throw new Exception("Invalid input target."); } // Return as Base-64 provider.ExecutionContext.OutputParameters["Output"] = output; }