diff --git a/CRM365/Xrm.Framework.CI/Xrm.Framework.CI.PowerShell.Cmdlets/PublishXrmThemeCommand.cs b/CRM365/Xrm.Framework.CI/Xrm.Framework.CI.PowerShell.Cmdlets/PublishXrmThemeCommand.cs new file mode 100644 index 00000000..f4a16bb8 --- /dev/null +++ b/CRM365/Xrm.Framework.CI/Xrm.Framework.CI.PowerShell.Cmdlets/PublishXrmThemeCommand.cs @@ -0,0 +1,82 @@ +using System; +using System.Management.Automation; +using Microsoft.Crm.Sdk.Messages; +using Microsoft.Xrm.Sdk; +using Xrm.Framework.CI.PowerShell.Cmdlets.Common; +using System.Linq; +using Microsoft.Xrm.Sdk.Messages; +using Microsoft.Xrm.Sdk.Query; + +namespace Xrm.Framework.CI.PowerShell.Cmdlets +{ + /// + /// Publishes a Dynamics Theme + /// The Publish-XrmTheme cmdlet publishes a Dynamics Theme. + /// + /// + /// C:\PS>Publish-XrmTheme -ThemeId $themeId + /// Publishes a theme. + /// + /// PublishTheme. + [Cmdlet(VerbsData.Publish, "XrmTheme")] + public class PublishXrmThemeCommand : XrmCommandBase + { + #region Parameters + + /// + /// The Id of the Theme to publish. + /// + [Parameter(Mandatory = false)] + public Guid? ThemeId { get; set; } + + [Parameter(Mandatory = false)] + public string ThemeName { get; set; } + + #endregion + + #region Process Record + + protected override void ProcessRecord() + { + base.ProcessRecord(); + + if (ThemeId == null && ThemeName == null) + { + throw new Exception("ThemeId or ThemeName not provided"); + } + + if (ThemeId != null && ThemeName != null) + { + throw new Exception("Only 1 of ThemeId or ThemeName can be specified"); + } + + if (ThemeName != null) + { + //query for the theme to get the Id + var q = new QueryExpression("theme"); + q.Criteria.AddCondition("name", ConditionOperator.Equal, ThemeName); + + var entities = OrganizationService.RetrieveMultiple(q); + if (!entities.Entities.Any()) + { + throw new Exception("Could not locate theme by name"); + } + + ThemeId = entities.Entities.First().Id; + + } + + + base.WriteVerbose(string.Format("Publishing Theme")); + + var req = new PublishThemeRequest(); + req.Target = new EntityReference("theme", ThemeId.Value); + + OrganizationService.Execute(req); + + base.WriteVerbose(string.Format("Theme Published")); + } + + #endregion + } +} \ No newline at end of file diff --git a/CRM365/Xrm.Framework.CI/Xrm.Framework.CI.PowerShell.Cmdlets/Xrm.Framework.CI.PowerShell.Cmdlets.csproj b/CRM365/Xrm.Framework.CI/Xrm.Framework.CI.PowerShell.Cmdlets/Xrm.Framework.CI.PowerShell.Cmdlets.csproj index 2b72a8c9..355ba474 100644 --- a/CRM365/Xrm.Framework.CI/Xrm.Framework.CI.PowerShell.Cmdlets/Xrm.Framework.CI.PowerShell.Cmdlets.csproj +++ b/CRM365/Xrm.Framework.CI/Xrm.Framework.CI.PowerShell.Cmdlets/Xrm.Framework.CI.PowerShell.Cmdlets.csproj @@ -124,6 +124,7 @@ +