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); } }
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"); } }