예제 #1
0
 public ActionResult CCtray(string readOnlyToken)
 {
     var buildStatusService = new BuildStatusService();
     var projects = new Projects();
     projects.AddRange(buildStatusService.AppHarborBuilds(readOnlyToken));
     projects.AddRange(buildStatusService.AzureWebsiteBuilds(readOnlyToken));
     return new CcTrayActionResult(projects);
 }
예제 #2
0
        public ActionResult CCtray(string readOnlyToken)
        {
            var buildStatusService = new BuildStatusService();
            var projects           = new Projects();

            projects.AddRange(buildStatusService.AppHarborBuilds(readOnlyToken));
            projects.AddRange(buildStatusService.AzureWebsiteBuilds(readOnlyToken));
            return(new CcTrayActionResult(projects));
        }
        private async Task LoadCompany()
        {
            try
            {
                Company = await _adminService.ReadCompanyByIdAsync(_globalModel.CurrentUser.CompanyId);

                var projects = await _adminService.ReadProjectsForCompanyAsync(Company);

                Projects.Clear();
                Projects.AddRange(projects);

                var users = await _adminService.ReadAllUsersForCompanyAsync(Company.CompanyId);

                Users.Clear();
                Users.AddRange(users);

                _canCreateNewProject = await _adminService.CanCreateNewProject(Company.CompanyId);

                NewProject.RaiseCanExecuteChanged();
            }
            catch (TimeoutException timeoutEx)
            {
                _eventAggregator.GetEvent <TimeoutErrorEvent>().Publish(timeoutEx);
            }

            IsCompanyEditorVisible = false;
            IsProjectEditorVisible = false;
            IsUserEditorVisible    = false;
        }
예제 #4
0
 public void Include(EntityData otherData)
 {
     Alerts.AddRange(otherData.Alerts);
     EmailAlertRecipients.AddRange(otherData.EmailAlertRecipients);
     SmsAlertRecipients.AddRange(otherData.SmsAlertRecipients);
     AlertReports.AddRange(otherData.AlertReports);
     AlertRules.AddRange(otherData.AlertRules);
     ApplicationLanguages.AddRange(otherData.ApplicationLanguages);
     ContentLanguages.AddRange(otherData.ContentLanguages);
     Countries.AddRange(otherData.Countries);
     DataCollectors.AddRange(otherData.DataCollectors);
     Districts.AddRange(otherData.Districts);
     GatewaySettings.AddRange(otherData.GatewaySettings);
     HeadManagerConsents.AddRange(otherData.HeadManagerConsents);
     HealthRisks.AddRange(otherData.HealthRisks);
     HealthRiskLanguageContents.AddRange(otherData.HealthRiskLanguageContents);
     Localizations.AddRange(otherData.Localizations);
     LocalizedTemplates.AddRange(otherData.LocalizedTemplates);
     NationalSocieties.AddRange(otherData.NationalSocieties);
     Notifications.AddRange(otherData.Notifications);
     Projects.AddRange(otherData.Projects);
     SupervisorUserProjects.AddRange(otherData.SupervisorUserProjects);
     ProjectHealthRisks.AddRange(otherData.ProjectHealthRisks);
     RawReports.AddRange(otherData.RawReports);
     Regions.AddRange(otherData.Regions);
     Reports.AddRange(otherData.Reports);
     Users.AddRange(otherData.Users);
     UserNationalSocieties.AddRange(otherData.UserNationalSocieties);
     Villages.AddRange(otherData.Villages);
     Zones.AddRange(otherData.Zones);
 }
예제 #5
0
        private void UpdateShowingProjects()
        {
            Projects.Clear();

            var showingProjects = _projects.Where(p =>
            {
                if (SearchText == "")
                {
                    return(true);
                }
                if (p.Name.Contains(SearchText))
                {
                    return(true);
                }
                else if (p.Key.Contains(SearchText))
                {
                    return(true);
                }
                return(false);
            });

            if (CanCreateProject)
            {
                Projects.Add(null);
            }
            Projects.AddRange(showingProjects);
        }
        async Task LoadProjectsFromDb()
        {
            var projects = await GetStorageService().GetProjects(Id);

            foreach (var asanaProject in projects)
            {
                var tasksCount = await SetProjectInfo(asanaProject);

                asanaProject.TasksCount        = tasksCount.Item1;
                asanaProject.OverdueTasksCount = tasksCount.Item2;
            }


            Dispatcher.RunAsync(() =>
            {
                Projects.Clear();
                Projects.AddRange(projects);
                Workspace.ProjectsCount = projects.Count(x => !x.archived);

                if (IsPinned)
                {
                    //PinService.CreateUpdateStartTileAsync(Workspace.name, Workspace.ProjectsCountText, PinService.GetWorkspaceDetailsUri(Id), false);
                }
            });
        }
예제 #7
0
        public int Commit()
        {
            EnsureItems();

            var saveCollection = new Projects();

            saveCollection.AddRange(_CachedItems);
            var xml = XmlSerializationService <Projects> .Serialize(saveCollection);

            File.WriteAllText(_filePath, xml);

            return(0);
        }
예제 #8
0
        /// <summary>
        /// 载入处理
        /// </summary>
        public void OnSolutionLoad()
        {
            if (!Solutions.Contains(Solution))
            {
                Solutions.Add(Solution);
            }
            Entities.AddRange(Solution.Entities);
            Projects.AddRange(Solution.Projects);
            Enums.AddRange(Solution.Enums);
            TypedefItems.AddRange(Solution.TypedefItems);
            NotifyItems.AddRange(Solution.NotifyItems);
            ApiItems.AddRange(Solution.ApiItems);

            Solution.Entities.CollectionChanged     += (s, e) => CollectionChanged(Entities, e);
            Solution.Projects.CollectionChanged     += (s, e) => CollectionChanged(Projects, e);
            Solution.Enums.CollectionChanged        += (s, e) => CollectionChanged(Projects, e);
            Solution.TypedefItems.CollectionChanged += (s, e) => CollectionChanged(TypedefItems, e);
            Solution.ApiItems.CollectionChanged     += (s, e) => CollectionChanged(Projects, e);
            Solution.NotifyItems.CollectionChanged  += (s, e) => CollectionChanged(Projects, e);
        }
예제 #9
0
        public void MergeWith(IOutputWriter cache)
        {
            // Remove all crawled items
            cache
            .Projects.ForEach(x => {
                Projects.RemoveAll(y => y.File == x.File);
                Files.RemoveAll(y => y.Project != null && y.Project.File == x.File);
            });
            cache
            .Files.ForEach(x => {
                Files.RemoveAll(y => y.File == x.File);
                Usings.RemoveAll(y => y.File.File == x.File);
                UsingAliases.RemoveAll(y => y.File.File == x.File);
                Namespaces.RemoveAll(y => y.File.File == x.File);
                Classes.RemoveAll(y => y.File.File == x.File);
                Interfaces.RemoveAll(y => y.File.File == x.File);
                Structs.RemoveAll(y => y.File.File == x.File);
                Enums.RemoveAll(y => y.File.File == x.File);
                Fields.RemoveAll(y => y.File.File == x.File);
                Methods.RemoveAll(y => y.File.File == x.File);
                Parameters.RemoveAll(y => y.File.File == x.File);
                Variables.RemoveAll(y => y.File.File == x.File);
            });

            // Write new items
            Projects.AddRange(cache.Projects);
            Files.AddRange(cache.Files);
            Usings.AddRange(cache.Usings);
            UsingAliases.AddRange(cache.UsingAliases);
            Namespaces.AddRange(cache.Namespaces);
            Classes.AddRange(cache.Classes);
            Interfaces.AddRange(cache.Interfaces);
            Structs.AddRange(cache.Structs);
            Enums.AddRange(cache.Enums);
            Fields.AddRange(cache.Fields);
            Methods.AddRange(cache.Methods);
            Parameters.AddRange(cache.Parameters);
            Variables.AddRange(cache.Variables);

            BuildTypeIndex();
        }
예제 #10
0
        public ProjectsPageViewModel(
            INavigationService navigationService,
            IProjectDataStore projectDataStore,
            IAnalyticService analyticService) : base(navigationService)
        {
            Title = "Projects";

            this.WhenActivated((CompositeDisposable _) =>
            {
                // track every time this screen is activated
                analyticService.TrackScreen("my-projects");
            });

            ViewProjectDetails = ReactiveCommand.CreateFromTask <Project, Unit>(async project =>
            {
                analyticService.TrackTapEvent("view-project");

                await NavigationService.NavigateAsync(
                    nameof(ProjectDetailsPage),
                    new NavigationParameters
                {
                    { "project", project }
                }).ConfigureAwait(false);

                return(Unit.Default);
            });

            AddProject = ReactiveCommand.CreateFromTask(async() =>
            {
                analyticService.TrackTapEvent("new-project");
                await NavigationService.NavigateAsync($"NavigationPage/{nameof(EditProjectPage)}", useModalNavigation: true).ConfigureAwait(false);
            });

            Filter = ReactiveCommand.CreateFromTask(async() =>
            {
                // TODO: Finish this
                await NavigationService.NavigateAsync(
                    $"NavigationPage/{nameof(ProjectFilterPage)}",
                    new NavigationParameters
                {
                    { "filter", _filter }
                },
                    useModalNavigation: true).ConfigureAwait(false);
            });

            // set up the command used to load projects
            LoadProjects = ReactiveCommand.CreateFromTask(_ =>
            {
                this.Log().Debug($"Loading projects on thread: {Thread.CurrentThread.ManagedThreadId}, IsBackground = {Thread.CurrentThread.IsBackground}");
                AssertRunningOnBackgroundThread();
                return(projectDataStore.LoadOldProjects(_oldestProject, ItemsPerPage));
            });

            // set up the command used to refresh projects
            RefreshProjects = ReactiveCommand.CreateFromTask(_ =>
            {
                // TODO: Should track this with analytics?
                this.Log().Debug($"Refreshing projects on thread: {Thread.CurrentThread.ManagedThreadId}, IsBackground = {Thread.CurrentThread.IsBackground}");
                AssertRunningOnBackgroundThread();
                return(_newestProject != null ?
                       projectDataStore.LoadNewProjects(_newestProject, ItemsPerPage) :
                       projectDataStore.LoadNewProjects(ItemsPerPage));
            });

            LoadProjects
            .Merge(RefreshProjects)
            .SubscribeSafe(projects =>
            {
                if (projects.Any())
                {
                    // NOTE: This probably isn't necessary...
                    projects = projects.ExceptBy(Projects, p => p.ProjectId);

                    // get the oldest and newest projects from the new data set. Age is simply
                    // determined by the date the project was created
                    var oldProject = projects.MinBy(p => p.CreateDate).First();
                    var newProject = projects.MaxBy(p => p.CreateDate).First();

                    if (_oldestProject == null && _newestProject == null)
                    {
                        _oldestProject = oldProject;
                        _newestProject = newProject;

                        // first projects being added. Add them to the list
                        Projects.AddRange(projects);
                    }
                    else if (_oldestProject?.CreateDate > oldProject.CreateDate)
                    {
                        _oldestProject = oldProject;

                        // if the projects are older, add them to the end of the list
                        Projects.AddRange(projects);
                    }
                    else if (_newestProject?.CreateDate < newProject.CreateDate)
                    {
                        _newestProject = newProject;

                        // if the projects are newer, insert them at the beginning of the list
                        Projects.InsertRange(0, projects);
                    }
                }
            });

            // when either of the commands are executing, update the busy state
            LoadProjects.IsExecuting
            .CombineLatest(RefreshProjects.IsExecuting, (isLoadExecuting, isRefreshExecuting) => isLoadExecuting || isRefreshExecuting)
            .DistinctUntilChanged()
            .StartWith(false)
            .ToProperty(this, x => x.IsBusy, out _isBusy, scheduler: RxApp.MainThreadScheduler);

            // When an exception is thrown for either command, log the error and let the user handle
            // the exception
            LoadProjects.ThrownExceptions
            .Merge(RefreshProjects.ThrownExceptions)
            .SelectMany(exception =>
            {
                this.Log().ErrorException("Error loading or refreshing data", exception);
                return(SharedInteractions.Error.Handle(exception));
            })
            .Subscribe();
        }
예제 #11
0
        protected override async void OnInitialize()
        {
            var projects = await teamServices.GetProjectsAsync();

            Projects.AddRange(projects.Select(p => new ProjectViewModel(p)));
        }
        public SimpleTestSolutionContext(string solutionRoot, params SimpleTestProjectContext[] projects)
        {
            SolutionPath = Path.Combine(solutionRoot, "solution.sln");

            Projects.AddRange(projects);
        }
예제 #13
0
 void ProjectsChanged(IEnumerable <Project> projects)
 {
     Projects.Clear();
     Projects.AddRange(projects);
     UpdateDefaultProject();
 }
        async void LoadData()
        {
            var storageService = new StorageService();

            AddOperation();

            if (WorkspaceId == 0)
            {
                if (ProjectId.HasValue)
                {
                    var project = await storageService.Find <AsanaProject>(ProjectId.Value);

                    WorkspaceId = project.workspaceid;
                }
                else if (Id.HasValue)
                {
                    var task = await storageService.Find <AsanaTask>(Id.Value);

                    if (task == null)
                    {
                        MessageBox.Show("Task is not found");
                        NavigationManager.GoBack();
                        return;
                    }

                    WorkspaceId = task.workspaceid;
                }
                else if (ParentId.HasValue)
                {
                    var task = await storageService.Find <AsanaTask>(ParentId.Value);

                    if (task == null)
                    {
                        MessageBox.Show("Task is not found");
                        NavigationManager.GoBack();
                        return;
                    }

                    WorkspaceId = task.workspaceid;
                    ProjectId   = task.projectid;

                    CanEditProject = false;
                }
            }



            var followers = await storageService.GetUsers(WorkspaceId);

            Followers.AddRange(followers);

            AppTitle = (await storageService.Find <AsanaWorkspace>(WorkspaceId)).name;

            var tags = await storageService.GetTags(WorkspaceId);

            Tags.AddRange(tags);

            if (IsEditMode)
            {
                var task = await storageService.Find <AsanaTask>(Id.Value);


                if (task == null)
                {
                    MessageBox.Show("Task is not found");
                    NavigationManager.GoBack();
                    return;
                }

                var r = await CheckSyncStatus(task);

                if (r != null)
                {
                    task = r;
                }

                await SetData(task);


                if (task.parentId.HasValue)
                {
                    CanEditProject = false;
                }



                //      if (model.CheckInternetConnection(false))
                //      {
                //          var response =
                //await AsanaClient.SendRequest(() => new AsanaRespository().GetTask(model.Id.Value));

                //          if (AsanaClient.ProcessResponse(response))
                //          {
                //              response.Data.projectid = response.Data.projects.Any() ? response.Data.projects.First().id : 0;
                //              response.Data.assigneeid = response.Data.assignee != null ? response.Data.assignee.id : 0;

                //              SetData(response.Data);

                //              using (var db = new DbTransaction())
                //              {
                //                  db.InsertOrUpdate(response.Data);
                //                  db.Commit();
                //              }
                //          }



                //      }
            }
            else
            {
                DueDate = DateTime.Today;
            }

            var projects = await storageService.GetActiveProjects(WorkspaceId);

            Projects.Insert(0, new AsanaProject
            {
                id          = 0,
                name        = "none",
                workspaceid = WorkspaceId
            });
            Projects.AddRange(projects);



            Project = ProjectId.HasValue
                                                          ? Projects.FirstOrDefault(x => x.id == ProjectId.Value)
                                                          : Projects.FirstOrDefault(x => x.id > 0);
            if (Project != null)
            {
                OldProjectId = Project.id;
            }

            if (Project == null)
            {
                Project = Projects.FirstOrDefault(x => x.id > 0);
            }



            if (Status == null)
            {
                Status = Statuses.FirstOrDefault(x => x.name == EAsanaTaskStatus.upcoming.ToString());
            }



            var users = await storageService.GetUsers(WorkspaceId);


            Users.Insert(0, new AsanaUser()
            {
                id   = -1,
                name = "none"
            });
            Users.AddRange(users);

            User = UserId.HasValue ? Users.FirstOrDefault(x => x.id == UserId.Value) : Users.FirstOrDefault();

            if (User == null)
            {
                User = Users.FirstOrDefault();
            }



            RemoveOperation();
        }
예제 #15
0
 public void AddProjects(params string[] projects)
 {
     Projects.AddRange(projects.Where(d => !Projects.Any(ep => ep.Name == d)).Select(p => new Project(p, this)));
 }
예제 #16
0
        private void SimpleButton_Click(object sender, EventArgs e)
        {
            Button btn = sender as Button;

            if (null == btn)
            {
                return;
            }

            if (CancelBtn == btn)
            {
                // if we are still connected disconnect now
                if (Connected)
                {
                    Cmd.ServerInterface.Logout(Data);
                    Connected = false;
                }
                // then close the dialog normally
                DialogResult = DialogResult.OK;
                Close();
                return;
            }

            if (LoginBtn == btn)
            {
                if (Connected)
                {
                    Cmd.ServerInterface.Logout(Data);
                    Connected         = false;
                    UploadBtn.Enabled = false;
                }

                BimServerLoginForm form = new BimServerLoginForm(UIDoc, Data, false);
                if (DialogResult.OK != form.ShowDialog())
                {
                    return;
                }

                Data.CopyFrom(form.Data);
                Cmd.ShowResult(Data.Token);
                Data.SaveToProperties(false);     // save the settings in the properties so the next call will default with them
                UploadBtn.Enabled = true;         // if we have a connection we can enable the action buttons (upload)
                Connected         = true;         // mark as connected
                return;
            }

            if (SaveBtn == btn)
            {
                string name = SelectedProjectName;
                if (string.IsNullOrEmpty(name))
                {
                    return;
                }

                Data.ProjectName = name;
                Cmd.BimServerExchange.SaveBimServerLink(name);

                // report to the user
                Cmd.BimServerExchange.ShowResultInForm($"This revit document is now linked to BIMserver project '{name}'");
                return;
            }

            if (SaveIfcBtn == btn)
            {
                string path = Cmd.BimServerExchange.GetCurrentProjectPath();
                if (string.IsNullOrEmpty(path) || !File.Exists(path))
                {
                    return;
                }

                path = Cmd.BimServerExchange.AskForIfcSavePath(path);
                if (string.IsNullOrEmpty(path))
                {
                    return;
                }

                Cmd.ShowResult(path);
                try
                {
                    Cmd.BimServerExchange.ActivateButtons(false);
                    Cmd.BimServerExchange.ExportProjectToIFC(path);
                    IfcEdt.Text = path;
                    Cmd.BimServerExchange.DoUpload();
                }
                catch (IcnException iex)
                {
                    iex.Display("Exception in Export to IFC");
                }
                catch (Exception ex)
                {
                    Cmd.ShowResult($"Export to IFC failed ({ex.Message})");
                    Cmd.ShowResult(ex.Message);
                }
                finally
                {
                    Cmd.BimServerExchange.ActivateButtons(true);
                }
                return;
            }

            if (LoadIfcBtn == btn)
            {
                string path = Cmd.BimServerExchange.AskForIfcUploadPath();
                if (string.IsNullOrEmpty(path) || !File.Exists(path))
                {
                    return;
                }

                IfcEdt.Text = path;
                Cmd.BimServerExchange.DoUpload();
                return;
            }

            if (CopyProjectNameBtn == btn)
            {
                string name = UIDoc.Document.PathName;
                if (string.IsNullOrEmpty(name))
                {
                    return;
                }

                string fname = Path.GetFileNameWithoutExtension(name);
                if (string.IsNullOrEmpty(fname))
                {
                    return;
                }

                ProjectNameEdt.Text = fname;
                Cmd.BimServerExchange.SelectProjectInTree(fname);
                return;
            }

            if (ProjectAddBtn == btn)
            {
                if (string.IsNullOrEmpty(ProjectNameEdt.Text))
                {
                    Cmd.ShowResult("The revit project does not have a name (it must be saved before running this tool)");
                    return;
                }

                string ifcFormat = NewProjectData.IfcFormat;
                if (ifcFormat.StartsWith("ifc2x3", StringComparison.InvariantCultureIgnoreCase))
                {
                    ifcFormat = "ifc2x3tc1";
                }
                else
                {
                    ifcFormat = "ifc4";
                }
                string fullname = Cmd.BimServerExchange.AddProject(SelectedProject, ProjectNameEdt.Text, ProjectDescEdt.Text, ifcFormat);
                if (string.IsNullOrEmpty(fullname))
                {
                    Cmd.ShowResult("Could not add a new project");
                    return;
                }

                UploadBtn.Enabled = true;
                // reset the projects list
                Projects.Clear();
                Projects.AddRange(Cmd.ServerInterface.GetAllProjects(Data));
                return;
            }

            if (UploadBtn == btn)
            {
                Cmd.BimServerExchange.DoUpload();
                return;
            }

            if (CancelUploadBtn == btn)
            {
                Cmd.BimServerExchange.ActivateButtons(true);
                Cmd.ServerInterface.CancelDownload();
                return;
            }

            // the exact structure of the IFC download request/response is currently undetermined,
            // we can't get the filename
            if (DownloadBtn == btn)
            {
                // see if there is a project up and running
                try
                {
                    SProject proj = SelectedProject;
                    if (null == proj)
                    {
                        throw new IcnException("No project selected", 10, "Download");
                    }

                    SRevision file = SelectedRevision;
                    if (null == file)
                    {
                        throw new IcnException("No IFC file selected", 10, "Download");
                    }

                    string scheme = proj.schema;
                    if (string.IsNullOrEmpty(scheme) || !scheme.StartsWith("Ifc", StringComparison.InvariantCultureIgnoreCase))
                    {
                        Cmd.ShowResult($"Unknown IFC scheme '{scheme ?? string.Empty}'. Attemping to download with 'Ifc2x3tc1 (Streaming)'");
                        scheme = "Ifc2x3tc1 (Streaming)";
                    }
                    SSerializer serialiser = Cmd.ServerInterface.GetSerialiser(Data, proj, scheme);
                    //SSerializer serialiser = Cmd.ServerInterface.GetSerialiser(Data, proj, "json");
                    if (null == serialiser)
                    {
                        throw new IcnException($"Serializer '{scheme}' not found in project '{SelectedProjectName}'", 10, "Download");
                    }

                    // construct a default pathname out of the current revit project location and the BIMserver project name
                    string path = UIDoc.Document.PathName;
                    if (!string.IsNullOrEmpty(path))
                    {
                        path = Path.GetDirectoryName(path);
                    }

                    path = Cmd.BimServerExchange.AskForIfcDownloadFilename(path, proj.name + ".ifc");
                    if (string.IsNullOrEmpty(path))
                    {
                        throw new IcnException($"No path supplied to download to", 10, "Download");
                    }

                    if (File.Exists(path))
                    {
                        string backup = Path.ChangeExtension(path, "bak");
                        if (File.Exists(backup))
                        {
                            File.Delete(backup);
                        }
                        File.Move(path, backup);
                    }

                    // we may have linked files. And we likely will need additional controls (e.g. for the Project to upload to) and additional data to go with this
                    Cmd.ServerInterface.DownloadFile(Data, path, file.oid, serialiser.oid);
                    Cmd.ShowResult($"IFC file '{path}' is copied form the BIMsrver");
                }
                catch (IcnException iex)
                {
                    iex.Display(@"Exception in Download IFC file");
                    Cmd.ShowResult(iex.ToString());
                }
                catch (Exception ex)
                {
                    Cmd.ShowResult($"Download IFC file failed ({ex.Message})");
                    Cmd.ShowResult(ex.Message);
                }

                return;
            }

            throw new IcnException($"SimpleButton '{btn.Name}' activated that has no code", 20, "BimServerExchangeForm");
        }