Exemple #1
0
        public void VerifyThatDialogResultIsReturnedWhenOk()
        {
            var submitmessage = "this is the submitmessage";

            var processedValueSet = new ProcessedValueSet(this.parameterValueSet, ValidationResultKind.Valid);
            var valueSetValue     = new ValueSetValues(0, this.parameterType, ParameterSwitchKind.COMPUTED, "a gazilion", "a gazilion", "a gazilion", "a gazilion");

            processedValueSet.UpdateClone(valueSetValue);

            var processedValueSets = new Dictionary <Guid, ProcessedValueSet>();

            processedValueSets.Add(processedValueSet.OriginalThing.Iid, processedValueSet);

            var viewmodel = new SubmitConfirmationViewModel(processedValueSets, ValueSetKind.All);

            viewmodel.SubmitMessage = submitmessage;

            var row = viewmodel.ParameterOrOverrideWorkbookRebuildRowViewModels.Single();

            Assert.IsTrue(row.IsSelected);
            Assert.IsTrue(viewmodel.OkCommand.CanExecute(null));

            viewmodel.OkCommand.Execute(null);

            var result = (SubmitConfirmationDialogResult)viewmodel.DialogResult;

            Assert.IsTrue(result.Result.Value);

            Assert.AreEqual(submitmessage, result.SubmitMessage);

            Assert.IsNotEmpty(result.Clones);
        }
Exemple #2
0
        public void VerifyThatCheckAllWorks()
        {
            var processedValueSet1 = new ProcessedValueSet(this.parameterValueSet, ValidationResultKind.Valid);
            var parameterValueSet2 = new ParameterValueSet(Guid.NewGuid(), null, null)
            {
                Manual = new ValueArray <string>(new List <string>()
                {
                    "1"
                }),
                Computed = new ValueArray <string>(new List <string>()
                {
                    "2"
                }),
                Reference = new ValueArray <string>(new List <string>()
                {
                    "3"
                }),
                Formula = new ValueArray <string>(new List <string>()
                {
                    "-"
                }),
                ValueSwitch = ParameterSwitchKind.MANUAL
            };

            var parameter2 = new Parameter(Guid.NewGuid(), null, null)
            {
                ParameterType = this.parameterType
            };

            this.elementDefinition.Parameter.Add(parameter2);
            parameter2.ValueSet.Add(parameterValueSet2);

            var processedValueSet2 = new ProcessedValueSet(parameterValueSet2, ValidationResultKind.Valid);
            var valueSetValue1     = new ValueSetValues(0, this.parameterType, ParameterSwitchKind.COMPUTED, "a gazilion", "a gazilion", "a gazilion", "a gazilion");

            processedValueSet1.UpdateClone(valueSetValue1);
            processedValueSet2.UpdateClone(valueSetValue1);

            var processedValueSets = new Dictionary <Guid, ProcessedValueSet>();

            processedValueSets.Add(processedValueSet1.OriginalThing.Iid, processedValueSet1);
            processedValueSets.Add(processedValueSet2.OriginalThing.Iid, processedValueSet2);


            var vm = new SubmitConfirmationViewModel(processedValueSets, ValueSetKind.All);

            var rows = vm.ParameterOrOverrideWorkbookRebuildRowViewModels;

            Assert.AreEqual(2, rows.Count);
            Assert.IsTrue(rows.All(r => r.IsSelected));
        }
Exemple #3
0
        public void VerifyThatRowsAreCreated()
        {
            var processedValueSet = new ProcessedValueSet(this.parameterValueSet, ValidationResultKind.Valid);
            var valueSetValue     = new ValueSetValues(0, this.parameterType, ParameterSwitchKind.COMPUTED, "a gazilion", "a gazilion", "a gazilion", "a gazilion");

            processedValueSet.UpdateClone(valueSetValue);

            var processedValueSets = new Dictionary <Guid, ProcessedValueSet>();

            processedValueSets.Add(processedValueSet.OriginalThing.Iid, processedValueSet);

            var viewmodel = new SubmitConfirmationViewModel(processedValueSets, ValueSetKind.All);

            Assert.AreEqual(1, viewmodel.ParameterOrOverrideWorkbookRebuildRowViewModels.Count);
        }
Exemple #4
0
        public void VerifyThatDialogResultIsReturnedWhenCancelled()
        {
            var processedValueSet = new ProcessedValueSet(this.parameterValueSet, ValidationResultKind.Valid);
            var valueSetValue     = new ValueSetValues(0, this.parameterType, ParameterSwitchKind.COMPUTED, "a gazilion", "a gazilion", "a gazilion", "a gazilion");

            processedValueSet.UpdateClone(valueSetValue);

            var processedValueSets = new Dictionary <Guid, ProcessedValueSet>();

            processedValueSets.Add(processedValueSet.OriginalThing.Iid, processedValueSet);

            var viewmodel = new SubmitConfirmationViewModel(processedValueSets, ValueSetKind.All);

            viewmodel.CancelCommand.Execute(null);

            var result = (BaseDialogResult)viewmodel.DialogResult;

            Assert.IsFalse(result.Result.Value);
        }
Exemple #5
0
        public void VerifyThatAtLeastOneRowHasToBeSelectedBeforeOkCanExecute()
        {
            var processedValueSet = new ProcessedValueSet(this.parameterValueSet, ValidationResultKind.Valid);
            var valueSetValue     = new ValueSetValues(0, this.parameterType, ParameterSwitchKind.COMPUTED, "a gazilion", "a gazilion", "a gazilion", "a gazilion");

            processedValueSet.UpdateClone(valueSetValue);

            var processedValueSets = new Dictionary <Guid, ProcessedValueSet>();

            processedValueSets.Add(processedValueSet.OriginalThing.Iid, processedValueSet);

            var viewmodel = new SubmitConfirmationViewModel(processedValueSets, ValueSetKind.All);

            var row = viewmodel.ParameterOrOverrideWorkbookRebuildRowViewModels.Single();

            Assert.IsTrue(row.IsSelected);
            Assert.IsTrue(viewmodel.OkCommand.CanExecute(null));

            row.IsSelected = false;

            Assert.IsFalse(viewmodel.OkCommand.CanExecute(null));
        }
        /// <summary>
        /// Submits the changes the user has made to inputs and outputs on the Parameter sheet to the data-source.
        /// </summary>
        /// <param name="session">
        /// The current <see cref="ISession"/> that is submitting the outputs.
        /// </param>
        /// <param name="iteration">
        /// The <see cref="Iteration"/> that that contains the value sets that value-sets that if changed need to be submitted.
        /// </param>
        public async Task SubmitAll(ISession session, Iteration iteration)
        {
            this.application.StatusBar = string.Empty;

            var workbookSession = await this.CreateWorkbookSession(session.Dal, session.Credentials);

            try
            {
                IReadOnlyDictionary <Guid, ProcessedValueSet> processedValueSets;
                var parameterSheetProcessor = new ParameterSheetProcessor(workbookSession, iteration);
                parameterSheetProcessor.ValidateValuesAndCheckForChanges(this.application, this.workbook, out processedValueSets);

                if (!processedValueSets.Any())
                {
                    this.application.StatusBar = "Submit cancelled: no values changed";
                    return;
                }

                var submitConfirmationViewModel = new SubmitConfirmationViewModel(processedValueSets, ValueSetKind.All);
                var dialogResult = this.DialogNavigationService.NavigateModal(submitConfirmationViewModel);

                if (dialogResult.Result.HasValue && dialogResult.Result.Value)
                {
                    var submitConfirmationDialogResult = (SubmitConfirmationDialogResult)dialogResult;

                    var context     = TransactionContextResolver.ResolveContext(iteration);
                    var transaction = new ThingTransaction(context);

                    foreach (var clone in submitConfirmationDialogResult.Clones)
                    {
                        transaction.CreateOrUpdate(clone);
                    }

                    // TODO: enable when OperationContainer.ResolveRoute supports this
                    //var clonedEngineeringModel = (EngineeringModel)iteration.Container.Clone();
                    //var logEntry = new ModelLogEntry(iid: Guid.NewGuid())
                    //                   {
                    //                       Content = submitConfirmationDialogResult.SubmitMessage,
                    //                       Author = session.ActivePerson,
                    //                       LanguageCode = "en-GB",
                    //                       Level = LogLevelKind.USER,
                    //                       AffectedItemIid = submitConfirmationDialogResult.Clones.Select(clone => clone.Iid).ToList()
                    //                   };
                    //clonedEngineeringModel.LogEntry.Add(logEntry);
                    //transaction.Create(logEntry);

                    var operationContainer = transaction.FinalizeTransaction();

                    this.application.StatusBar = string.Format("CDP4: Submitting data to {0}", session.DataSourceUri);
                    this.application.Cursor    = XlMousePointer.xlWait;

                    var sw = new Stopwatch();
                    sw.Start();
                    await session.Write(operationContainer);

                    sw.Stop();
                    this.application.StatusBar = string.Format("CDP4: SitedirectoryData submitted in {0} [ms]", sw.ElapsedMilliseconds);

                    this.application.StatusBar = "CDP4: Writing session data to workbook";
                    sw.Start();
                    this.WriteWorkbookDataToWorkbook(iteration);
                    sw.Stop();
                    this.application.StatusBar = string.Format("CDP4: Session data written in {0} [ms]", sw.ElapsedMilliseconds);
                }
                else
                {
                    this.application.StatusBar = "CDP4: Submit parameters and subscription has been cancelled by the user.";

                    var parameterSheetRowHighligter = new ParameterSheetRowHighligter();
                    parameterSheetRowHighligter.HighlightRows(this.application, this.workbook, processedValueSets);
                }
            }
            catch (Exception ex)
            {
                this.application.StatusBar = "CDP4: submission failed.";
                Logger.Error(ex);
            }
            finally
            {
                this.application.Cursor = XlMousePointer.xlDefault;
            }
        }