示例#1
0
        /// <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();
        }
示例#2
0
        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);
        }
示例#3
0
        /// <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.");
                }
            }
        }