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);
            }
        }
Exemple #12
0
        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;
            }
        }
Exemple #13
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);
 }
Exemple #21
0
        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);
        }
Exemple #25
0
        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);
            }
        }