public static ObservableCollection <WebResourceItem> CreateWebResourceItemView2(EntityCollection webResources, string projectName, ObservableCollection <MenuItem> projectFolders) { ObservableCollection <WebResourceItem> webResourceItems = new ObservableCollection <WebResourceItem>(); foreach (Entity webResource in webResources.Entities) { WebResourceItem webResourceItem = new WebResourceItem { WebResourceId = (Guid)webResource.GetAttributeValue <AliasedValue>("webresource.webresourceid").Value, Name = webResource.GetAttributeValue <AliasedValue>("webresource.name").Value.ToString(), IsManaged = (bool)webResource.GetAttributeValue <AliasedValue>("webresource.ismanaged").Value, TypeName = Crm.WebResource.GetWebResourceTypeNameByNumber(((OptionSetValue)webResource.GetAttributeValue <AliasedValue>("webresource.webresourcetype").Value).Value.ToString()), Type = ((OptionSetValue)webResource.GetAttributeValue <AliasedValue>("webresource.webresourcetype").Value).Value, ProjectFolders = projectFolders, SolutionId = webResource.GetAttributeValue <EntityReference>("solutionid").Id }; object displayName; bool hasDisplayName = webResource.Attributes.TryGetValue("webresource.displayname", out displayName); if (hasDisplayName) { webResourceItem.DisplayName = webResource.GetAttributeValue <AliasedValue>("webresource.displayname").Value.ToString(); } webResourceItems.Add(webResourceItem); } return(webResourceItems); }
private static bool SearchNameCondition(WebResourceItem webResourceItem, string search) { if (search.Length < 2) { return(true); } if (!string.IsNullOrEmpty(webResourceItem.Name)) { if (webResourceItem.Name.Contains(search, StringComparison.OrdinalIgnoreCase)) { return(true); } } if (!string.IsNullOrEmpty(webResourceItem.DisplayName)) { if (webResourceItem.DisplayName.Contains(search, StringComparison.OrdinalIgnoreCase)) { return(true); } } if (!string.IsNullOrEmpty(webResourceItem.Description)) { if (webResourceItem.Description.Contains(search, StringComparison.OrdinalIgnoreCase)) { return(true); } } return(false); }
public static WebResourceItem WebResourceItemFromCmdParam(object sender, ObservableCollection <WebResourceItem> webResourceItems) { Button button = (Button)sender; Guid webResourceId = (Guid)button.CommandParameter; WebResourceItem webResourceItem = webResourceItems.FirstOrDefault(w => w.WebResourceId == webResourceId); return(webResourceItem); }
public static WebResourceItem SetDescriptionFromInput(WebResourceItem webResourceItem, string newDescription) { if (webResourceItem.PreviousDescription == newDescription) { return(webResourceItem); } webResourceItem.Description = newDescription; webResourceItem.PreviousDescription = newDescription; return(webResourceItem); }
public static ObservableCollection <WebResourceItem> ResetDescriptions(ObservableCollection <WebResourceItem> webResourceItems, WebResourceItem webResourceItem) { webResourceItem.PreviousDescription = webResourceItem.Description; foreach (WebResourceItem item in webResourceItems.Where(w => w.WebResourceId == webResourceItem.WebResourceId)) { item.Description = item.PreviousDescription; } return(webResourceItems); }
public static List <Entity> CreateDescriptionUpdateWebResource(WebResourceItem webResourceItem, string newDescription) { List <Entity> webResources = new List <Entity>(); Entity webResource = new Entity("webresource") { Id = webResourceItem.WebResourceId, ["description"] = newDescription }; webResources.Add(webResource); return(webResources); }
public static string GetExistingFolderFromBoundFile(WebResourceItem webResourceItem, string folder) { var directoryName = Path.GetDirectoryName(webResourceItem.BoundFile); if (directoryName != null) { folder = directoryName.Replace("\\", "/"); } if (folder == "/") { folder = String.Empty; } return(folder); }
public static WebResourceItem WebResourceItemFromNew(NewWebResource newWebResource, Guid solutionId) { WebResourceItem webResourceItem = new WebResourceItem { WebResourceId = newWebResource.NewId, Name = newWebResource.NewName, DisplayName = newWebResource.NewDisplayName, TypeName = Crm.WebResource.GetWebResourceTypeNameByNumber(newWebResource.NewType.ToString()), Type = newWebResource.NewType, SolutionId = solutionId }; return(webResourceItem); }
public static WebResourceItem WebResourceItemFromNew(NewWebResource newWebResource, Guid solutionId, ObservableCollection <MenuItem> projectFolders) { WebResourceItem webResourceItem = new WebResourceItem { WebResourceId = newWebResource.NewId, Name = newWebResource.NewName, DisplayName = newWebResource.NewDisplayName, TypeName = Crm.WebResource.GetWebResourceTypeNameByNumber(newWebResource.NewType.ToString()), Type = newWebResource.NewType, ProjectFolders = projectFolders, SolutionId = solutionId }; return(webResourceItem); }
public static WebResourceItem WebResourceItemFromNew(NewWebResource newWebResource, Guid solutionId) { WebResourceItem webResourceItem = new WebResourceItem { WebResourceId = newWebResource.NewId, Name = newWebResource.NewName, DisplayName = newWebResource.NewDisplayName, TypeName = WebResourceTypes.GetWebResourceTypeNameByNumber(newWebResource.NewType.ToString()), Type = newWebResource.NewType, SolutionId = solutionId, Description = newWebResource.NewDescription, PreviousDescription = newWebResource.NewDescription, IsManaged = false }; return(webResourceItem); }
public static void AddOrUpdateSpklMapping(Project project, string profile, WebResourceItem webResourceItem) { SpklConfig spklConfig = CrmDeveloperExtensions2.Core.Config.Mapping.GetSpklConfigFile(project); List <SpklConfigWebresourceFile> spklConfigWebresourceFiles = GetSpklConfigWebresourceFiles(profile, spklConfig) ?? new List <SpklConfigWebresourceFile>(); SpklConfigWebresourceFile spklConfigWebresourceFile = spklConfigWebresourceFiles.FirstOrDefault(w => w.uniquename == webResourceItem.Name); if (spklConfigWebresourceFile == null) { AddSpklMapping(spklConfig, project, profile, webResourceItem); } else { UpdateSpklMapping(spklConfig, project, profile, webResourceItem); } }
private void WebResourceItem_PropertyChanged(object sender, PropertyChangedEventArgs e) { if (e.PropertyName == "BoundFile") { WebResourceItem item = (WebResourceItem)sender; AddOrUpdateMapping(item); } if (e.PropertyName == "Publish") { List <WebResourceItem> webResources = (List <WebResourceItem>)WebResourceGrid.ItemsSource; if (webResources == null) { return; } Publish.IsEnabled = webResources.Count(w => w.Publish) > 0; } }
private void WebResourceType_SelectionChanged(object sender, SelectionChangedEventArgs e) { ComboBoxItem selectedItem = (ComboBoxItem)WebResourceType.SelectedItem; if (selectedItem == null) { return; } ICollectionView cv = CollectionViewSource.GetDefaultView(WebResourceGrid.ItemsSource); if (string.IsNullOrEmpty(selectedItem.Tag.ToString())) { cv.Filter = null; } else { cv.Filter = o => { WebResourceItem w = o as WebResourceItem; return(w != null && (w.Type.ToString() == selectedItem.Tag.ToString())); }; } }
public static void AddOrUpdateMapping(string solutionPath, Project project, WebResourceItem webResourceItem, Guid organizationId) { CrmDexExConfig crmDexExConfig = GetConfigFile(solutionPath, project.UniqueName, organizationId); CrmDevExConfigOrgMap crmDevExConfigOrgMap = GetOrgMap(ref crmDexExConfig, organizationId, project.UniqueName); List <CrmDexExConfigWebResource> crmDexExConfigWebResources = crmDevExConfigOrgMap.WebResources; if (crmDexExConfigWebResources == null) { crmDevExConfigOrgMap.WebResources = new List <CrmDexExConfigWebResource>(); } CrmDexExConfigWebResource crmDexExConfigWebResource = crmDevExConfigOrgMap.WebResources.FirstOrDefault(w => w.WebResourceId == webResourceItem.WebResourceId); if (crmDexExConfigWebResource == null) { AddMapping(crmDexExConfig, solutionPath, project, webResourceItem, organizationId); } else { UpdateMapping(crmDexExConfig, solutionPath, project, webResourceItem, organizationId); } }
public static ObservableCollection <WebResourceItem> CreateWebResourceItemView(EntityCollection webResources, string projectName) { ObservableCollection <WebResourceItem> webResourceItems = new ObservableCollection <WebResourceItem>(); foreach (Entity webResource in webResources.Entities) { WebResourceItem webResourceItem = new WebResourceItem { WebResourceId = (Guid)webResource.GetAttributeValue <AliasedValue>("webresource.webresourceid").Value, Name = webResource.GetAttributeValue <AliasedValue>("webresource.name").Value.ToString(), IsManaged = (bool)webResource.GetAttributeValue <AliasedValue>("webresource.ismanaged").Value, TypeName = WebResourceTypes.GetWebResourceTypeNameByNumber(((OptionSetValue)webResource.GetAttributeValue <AliasedValue>("webresource.webresourcetype").Value).Value.ToString()), Type = ((OptionSetValue)webResource.GetAttributeValue <AliasedValue>("webresource.webresourcetype").Value).Value, SolutionId = webResource.GetAttributeValue <EntityReference>("solutionid").Id }; bool hasDescription = webResource.Attributes.TryGetValue("webresource.description", out var description); if (hasDescription) { webResourceItem.Description = ((AliasedValue)description).Value.ToString(); webResourceItem.PreviousDescription = webResourceItem.Description; } bool hasDisplayName = webResource.Attributes.TryGetValue("webresource.displayname", out var displayName); if (hasDisplayName) { webResourceItem.DisplayName = ((AliasedValue)displayName).Value.ToString(); } webResourceItems.Add(webResourceItem); } webResourceItems = new ObservableCollection <WebResourceItem>(webResourceItems.OrderBy(w => w.Name)); return(webResourceItems); }
private static void AddSpklMapping(SpklConfig spklConfig, Project project, string profile, WebResourceItem webResourceItem) { SpklConfigWebresourceFile spklConfigWebresourceFile = new SpklConfigWebresourceFile { uniquename = webResourceItem.Name, file = webResourceItem.BoundFile, description = webResourceItem.Description }; if (profile.StartsWith(ExtensionConstants.NoProfilesText)) { spklConfig.webresources[0].files.Add(spklConfigWebresourceFile); } else { spklConfig.webresources.FirstOrDefault(w => w.profile == profile)?.files.Add(spklConfigWebresourceFile); } string projectPath = CrmDeveloperExtensions2.Core.Vs.ProjectWorker.GetProjectPath(project); ConfigFile.UpdateSpklConfigFile(projectPath, spklConfig); }
private static void UpdateSpklMapping(SpklConfig spklConfig, Project project, string profile, WebResourceItem webResourceItem) { List <SpklConfigWebresourceFile> spklConfigWebresourceFiles = GetSpklConfigWebresourceFiles(profile, spklConfig); if (spklConfigWebresourceFiles == null) { return; } if (!string.IsNullOrEmpty(webResourceItem.BoundFile)) { foreach (SpklConfigWebresourceFile spklConfigWebresourceFile in spklConfigWebresourceFiles.Where(w => w.uniquename == webResourceItem.Name)) { spklConfigWebresourceFile.file = webResourceItem.BoundFile; spklConfigWebresourceFile.description = webResourceItem.Description; } } else { spklConfigWebresourceFiles.RemoveAll(w => w.uniquename == webResourceItem.Name); } if (profile.StartsWith(ExtensionConstants.NoProfilesText)) { spklConfig.webresources[0].files = spklConfigWebresourceFiles; } else { WebresourceDeployConfig webresourceDeployConfig = spklConfig.webresources.FirstOrDefault(w => w.profile == profile); if (webresourceDeployConfig != null) { webresourceDeployConfig.files = spklConfigWebresourceFiles; } } string projectPath = CrmDeveloperExtensions2.Core.Vs.ProjectWorker.GetProjectPath(project); ConfigFile.UpdateSpklConfigFile(projectPath, spklConfig); }
private static void AddSpklMapping(SpklConfig spklConfig, Project project, string profile, WebResourceItem webResourceItem) { var spklConfigWebresourceFile = new SpklConfigWebresourceFile { uniquename = webResourceItem.Name, file = webResourceItem.BoundFile, description = webResourceItem.Description }; if (WebResourceTypes.GetExtensionType(webResourceItem.BoundFile) == D365DeveloperExtensions.Core.Enums.FileExtensionType.Ts) { spklConfigWebresourceFile.file = TsHelper.GetJsForTsPath(webResourceItem.BoundFile, project); spklConfigWebresourceFile.ts = webResourceItem.BoundFile; } if (profile.StartsWith(ExtensionConstants.NoProfilesText)) { spklConfig.webresources[0].files.Add(spklConfigWebresourceFile); } else { spklConfig.webresources.FirstOrDefault(w => w.profile == profile)?.files.Add(spklConfigWebresourceFile); } var projectPath = D365DeveloperExtensions.Core.Vs.ProjectWorker.GetProjectPath(project); ConfigFile.UpdateSpklConfigFile(projectPath, spklConfig); }
private static bool StateCondition(WebResourceItem webResourceItem, ObservableCollection <FilterState> filterStates) { return(IsStringFilterValid(new ObservableCollection <IFilterProperty>(filterStates), webResourceItem.State)); }
private static bool SolutionCondition(WebResourceItem webResourceItem, Guid solutionId) { return(webResourceItem.SolutionId == solutionId); }
private void AddOrUpdateMapping(WebResourceItem item) { CrmConn conn = (CrmConn)Connections.SelectedItem; var project = (Project)((ComboBoxItem)Projects.SelectedItem).Tag; var projectPath = Path.GetDirectoryName(project.FullName); XmlDocument doc = new XmlDocument(); doc.Load(projectPath + "\\CRMDeveloperExtensions.config"); //Update or delete existing mapping XmlNodeList fileNodes = doc.GetElementsByTagName("File"); if (fileNodes.Count > 0) { foreach (XmlNode node in fileNodes) { XmlNode orgId = node["OrgId"]; if (orgId != null && orgId.InnerText.ToUpper() != conn.OrgId.ToUpper()) { continue; } XmlNode webResourceId = node["WebResourceId"]; if (webResourceId != null && webResourceId.InnerText.ToUpper() != item.WebResourceId.ToString().ToUpper().Replace("{", String.Empty).Replace("}", String.Empty)) { continue; } if (string.IsNullOrEmpty(item.BoundFile)) { //Delete var parentNode = node.ParentNode; if (parentNode != null) { parentNode.RemoveChild(node); } } else { //Update XmlNode path = node["Path"]; if (path != null) { path.InnerText = item.BoundFile; } } doc.Save(projectPath + "\\CRMDeveloperExtensions.config"); return; } } //Create new mapping XmlNodeList files = doc.GetElementsByTagName("Files"); if (files.Count > 0) { XmlNode file = doc.CreateElement("File"); XmlNode org = doc.CreateElement("OrgId"); org.InnerText = conn.OrgId; file.AppendChild(org); XmlNode path = doc.CreateElement("Path"); path.InnerText = item.BoundFile; file.AppendChild(path); XmlNode webResourceId = doc.CreateElement("WebResourceId"); webResourceId.InnerText = item.WebResourceId.ToString(); file.AppendChild(webResourceId); XmlNode webResourceName = doc.CreateElement("WebResourceName"); webResourceName.InnerText = item.Name; file.AppendChild(webResourceName); files[0].AppendChild(file); doc.Save(projectPath + "\\CRMDeveloperExtensions.config"); } }
private static void UpdateMapping(CrmDexExConfig crmDexExConfig, string solutionPath, Project project, WebResourceItem webResourceItem, Guid organizationId) { CrmDevExConfigOrgMap crmDevExConfigOrgMap = GetOrgMap(ref crmDexExConfig, organizationId, project.UniqueName); List <CrmDexExConfigWebResource> crmDexExConfigWebResources = crmDevExConfigOrgMap.WebResources.Where(w => w.WebResourceId == webResourceItem.WebResourceId).ToList(); crmDexExConfigWebResources.ForEach(w => w.File = webResourceItem.BoundFile); crmDevExConfigOrgMap.WebResources.RemoveAll(w => string.IsNullOrEmpty(w.File)); ConfigFile.UpdateConfigFile(solutionPath, crmDexExConfig); }
private static void UpdateSpklMapping(SpklConfig spklConfig, Project project, string profile, WebResourceItem webResourceItem) { var spklConfigWebresourceFiles = GetSpklConfigWebresourceFiles(profile, spklConfig); if (spklConfigWebresourceFiles == null) { return; } if (!string.IsNullOrEmpty(webResourceItem.BoundFile)) { var isTs = WebResourceTypes.GetExtensionType(webResourceItem.BoundFile) == D365DeveloperExtensions.Core.Enums.FileExtensionType.Ts; foreach (var spklConfigWebresourceFile in spklConfigWebresourceFiles.Where(w => w.uniquename == webResourceItem.Name)) { spklConfigWebresourceFile.file = webResourceItem.BoundFile; spklConfigWebresourceFile.description = webResourceItem.Description; spklConfigWebresourceFile.ts = null; if (!isTs) { continue; } spklConfigWebresourceFile.file = TsHelper.GetJsForTsPath(webResourceItem.BoundFile, project); spklConfigWebresourceFile.ts = webResourceItem.BoundFile; } } else { spklConfigWebresourceFiles.RemoveAll(w => w.uniquename == webResourceItem.Name); } if (profile.StartsWith(ExtensionConstants.NoProfilesText)) { spklConfig.webresources[0].files = spklConfigWebresourceFiles; } else { var webresourceDeployConfig = spklConfig.webresources.FirstOrDefault(w => w.profile == profile); if (webresourceDeployConfig != null) { webresourceDeployConfig.files = spklConfigWebresourceFiles; } } var projectPath = D365DeveloperExtensions.Core.Vs.ProjectWorker.GetProjectPath(project); ConfigFile.UpdateSpklConfigFile(projectPath, spklConfig); }
private static void AddMapping(CrmDexExConfig crmDexExConfig, string solutionPath, Project project, WebResourceItem webResourceItem, Guid organizationId) { CrmDevExConfigOrgMap crmDevExConfigOrgMap = GetOrgMap(ref crmDexExConfig, organizationId, project.UniqueName); CrmDexExConfigWebResource crmDexExConfigWebResource = new CrmDexExConfigWebResource { WebResourceId = webResourceItem.WebResourceId, File = webResourceItem.BoundFile }; crmDevExConfigOrgMap.WebResources.Add(crmDexExConfigWebResource); ConfigFile.UpdateConfigFile(solutionPath, crmDexExConfig); }
private void GetWebResources(string connString) { DisplayStatusMessage("Connecting to CRM and getting web resources"); string projectName = ((ComboBoxItem)Projects.SelectedItem).Content.ToString(); _projectFiles = new List <ComboBoxItem>(); _projectFiles = GetProjectFiles(projectName); _projectFiles.Insert(0, new ComboBoxItem() { Content = String.Empty }); CrmConnection connection = CrmConnection.Parse(connString); using (OrganizationService orgService = new OrganizationService(connection)) { QueryExpression query = new QueryExpression { EntityName = "webresource", ColumnSet = new ColumnSet("name", "webresourcetype"), Criteria = new FilterExpression { Conditions = { new ConditionExpression { AttributeName = "ismanaged", Operator = ConditionOperator.Equal, Values = { false } } } } }; EntityCollection results = orgService.RetrieveMultiple(query); List <WebResourceItem> wrItems = new List <WebResourceItem>(); foreach (var entity in results.Entities) { WebResourceItem wrItem = new WebResourceItem { Publish = false, WebResourceId = entity.Id, Name = entity.GetAttributeValue <string>("name"), Image = GetWebResourceImageByNumber(entity.GetAttributeValue <OptionSetValue>("webresourcetype").Value.ToString()), Type = entity.GetAttributeValue <OptionSetValue>("webresourcetype").Value, ProjectFiles = _projectFiles }; wrItem.PropertyChanged += WebResourceItem_PropertyChanged; wrItems.Add(wrItem); } CreateFilterList(results); wrItems = HandleMappings(wrItems); WebResourceGrid.ItemsSource = wrItems; WebResourceGrid.IsEnabled = true; WebResourceType.IsEnabled = true; DisplayStatusMessage(String.Empty); } }