private List <ProjectViewModel> LoadProjectsFromRedmine()
        {
            var projectsList = new List <ProjectViewModel>();

            IList <Net.Api.Types.Project> projects = null;

            try
            {
                // connect to redmine
                Net.Api.RedmineManager manager = new Net.Api.RedmineManager(Settings.Default.RedmineServer, Settings.Default.RedmineApi, Net.Api.MimeFormat.xml);
                var parameters = new NameValueCollection {
                    { "limit", "100" }, { "include", "trackers,issue_categories" }
                };

                projects = GetAllRecords <Net.Api.Types.Project>(manager, parameters);
            }
            catch { }

            if (projects == null)
            {
                return(null);
            }

            foreach (var project in projects)
            {
                ProjectViewModel projectViewModel = new ProjectViewModel
                {
                    Id   = project.Id,
                    Name = project.Name
                };

                if (project.Parent != null)
                {
                    projectViewModel.ParentId = project.Parent.Id;
                }

                if (project.CustomFields != null)
                {
                    foreach (var customField in project.CustomFields)
                    {
                        CustomFieldViewModel customFieldViewModel = new CustomFieldViewModel
                        {
                            Id   = customField.Id,
                            Name = customField.Name
                        };

                        projectViewModel.CustomFields.Add(customFieldViewModel);
                    }
                }

                if (project.Trackers != null)
                {
                    foreach (var tracker in project.Trackers)
                    {
                        TrackerViewModel trackerViewModel = new TrackerViewModel
                        {
                            Id   = tracker.Id,
                            Name = tracker.Name
                        };

                        projectViewModel.Trackers.Add(trackerViewModel);

                        // set first one as default
                        if (projectViewModel.Tracker == null)
                        {
                            projectViewModel.Tracker = trackerViewModel;
                        }
                    }
                }

                if (project.IssueCategories != null)
                {
                    foreach (var issueCategory in project.IssueCategories)
                    {
                        IssueCategoryViewModel issueCategoryViewModel = new IssueCategoryViewModel
                        {
                            Id   = issueCategory.Id,
                            Name = issueCategory.Name
                        };

                        projectViewModel.IssueCategories.Add(issueCategoryViewModel);
                    }
                }

                projectsList.Add(projectViewModel);
            }

            return(projectsList);
        }
        private List<ProjectViewModel> LoadProjectsFromRedmine()
        {
            var projectsList = new List<ProjectViewModel>();

            IList<Net.Api.Types.Project> projects = null;
            try
            {
                // connect to redmine
                Net.Api.RedmineManager manager = new Net.Api.RedmineManager(Settings.Default.RedmineServer, Settings.Default.RedmineApi, Net.Api.MimeFormat.xml);

                projects = manager.GetObjectList<Net.Api.Types.Project>(new System.Collections.Specialized.NameValueCollection { { "limit", "100" }, { "include", "trackers,issue_categories" } });
            }
            catch { }

            if (projects == null)
            {
                return null;
            }

            foreach (var project in projects)
            {
                ProjectViewModel projectViewModel = new ProjectViewModel();
                projectViewModel.Id = project.Id;
                projectViewModel.Name = project.Name;
                if (project.Parent != null)
                {
                    projectViewModel.ParentId = project.Parent.Id;
                }

                if (project.CustomFields != null)
                {
                    foreach (var customField in project.CustomFields)
                    {
                        CustomFieldViewModel customFieldViewModel = new CustomFieldViewModel();
                        customFieldViewModel.Id = customField.Id;
                        customFieldViewModel.Name = customField.Name;

                        projectViewModel.CustomFields.Add(customFieldViewModel);
                    }
                }

                if (project.Trackers != null)
                {
                    foreach (var tracker in project.Trackers)
                    {
                        TrackerViewModel trackerViewModel = new TrackerViewModel();
                        trackerViewModel.Id = tracker.Id;
                        trackerViewModel.Name = tracker.Name;

                        projectViewModel.Trackers.Add(trackerViewModel);

                        // set first one as default
                        if (projectViewModel.Tracker == null)
                        {
                            projectViewModel.Tracker = trackerViewModel;
                        }
                    }
                }

                if (project.IssueCategories != null)
                {
                    foreach (var issueCategory in project.IssueCategories)
                    {
                        IssueCategoryViewModel issueCategoryViewModel = new IssueCategoryViewModel();
                        issueCategoryViewModel.Id = issueCategory.Id;
                        issueCategoryViewModel.Name = issueCategory.Name;

                        projectViewModel.IssueCategories.Add(issueCategoryViewModel);
                    }
                }

                projectsList.Add(projectViewModel);
            }

            return projectsList;
        }