/// <summary> /// Firest external command to update propsed changes to sheets. /// </summary> /// <param name="wrapper">Sheet Task Wrapper object.</param> public void SubmitSheetTask(SheetTaskWrapper wrapper) { var item = (SheetItem)wrapper.Element; var task = (SheetTask)wrapper.Task; AppCommand.CommunicatorHandler.SheetItem = item; AppCommand.CommunicatorHandler.SheetTask = task; AppCommand.CommunicatorHandler.Request.Make(task.IsNewSheet ? RequestId.CreateSheet : RequestId.UpdateSheet); AppCommand.CommunicatorEvent.Raise(); }
public SheetTaskAssistantViewModel(SheetTaskWrapper wrapper) { Model = new SheetTaskAssistantModel(); Wrapper = wrapper; Title = "Mission Control - Sheet Task Assistant v." + Assembly.GetExecutingAssembly().GetName().Version; OkText = ((SheetItem)wrapper.Element).IsNewSheet ? "Create" : "Approve"; OpenView = new RelayCommand(OnOpenView); Close = new RelayCommand <Window>(OnClose); Approve = new RelayCommand <Window>(OnApprove); WindowLoaded = new RelayCommand <Window>(OnWindowLoaded); WindowClosed = new RelayCommand <Window>(OnWindowClosed); // (Konrad) Event handlers for when Revit finishes approving a sheet task, or when document is closed. Messenger.Default.Register <SheetTaskCompletedMessage>(this, OnSheetTaskCompleted); Messenger.Default.Register <DocumentClosed>(this, OnDocumentClosed); }
/// <summary> /// Posts approved changes to MongoDB. Mongo will fire socket event when complete. /// </summary> /// <param name="wrapper">Sheet Task Wrapper containing approved task.</param> /// <param name="centralPath"></param> public void Approve(SheetTaskWrapper wrapper, string centralPath) { var sheetsDataId = string.Empty; if (MissionControlSetup.SheetsData.ContainsKey(centralPath)) { sheetsDataId = MissionControlSetup.SheetsData[centralPath].Id; } if (string.IsNullOrEmpty(sheetsDataId)) { return; } var t = (SheetTask)wrapper.Task; var e = (SheetItem)wrapper.Element; t.CompletedBy = Environment.UserName.ToLower(); t.CompletedOn = DateTime.UtcNow; // body needs to be updated with a new identifier object or mongo side will fail. if (e.IsNewSheet) { // (Konrad) It's a create sheet task (element associated with task is null). Let's approve that. var newSheet = AppCommand.CommunicatorHandler.SheetItem; if (newSheet == null) { return; } wrapper.Element = newSheet; if (!ServerUtilities.Post(wrapper, "sheets/" + sheetsDataId + "/approvenewsheet", out SheetData unused)) { Log.AppendLog(LogMessageType.ERROR, "Failed to approve creation of new Sheet."); } } else { t.SheetId = e.Id; if (!ServerUtilities.Post(t, "sheets/" + sheetsDataId + "/updatetasks", out SheetData unused)) { Log.AppendLog(LogMessageType.ERROR, "Failed to approve changes to Sheet."); } } }