private void SaveSimulationCommandExecute(object obj)
        {
            ParserResult.Chunks.Clear();

            foreach (var chunkControl in ChunkControls)
            {
                var chunk  = new SimulationChunk();
                var events = chunkControl.GetEvents();
                foreach (var e in events)
                {
                    chunk.AddStep(e);
                }

                ParserResult.Chunks.Add(chunk);
            }

            ParserResult.Name = SimulationName;
            var doc = new SimulationCaseParser().Create(ParserResult);


            var saveDialog = new SaveFileDialog
            {
                DefaultExt = ".xml",
                Filter     = "XML Files (.xml)|*.xml"
            };

            if (saveDialog.ShowDialog() != true)
            {
                return;
            }

            doc.Save(saveDialog.FileName);
            MessageBox.Show("Oki doki, file saved");
        }
        public MainPageViewModel()
        {
            simulationCaseParser = new SimulationCaseParser();
            ChunkControls        = new ObservableCollection <ChunkControl>();

            AddChunkCommand       = new Command(AddChunkCommandExecute, obj => ParserResult != null);
            LoadSimulationCommand = new Command(LoadSimulationCommandExecute, obj => ProcessKind != null);
            LoadModelCommand      = new Command(LoadModelCommandExecute);

            SaveSimulationCommand = new Command(SaveSimulationCommandExecute, obj => ParserResult != null);

            instance = this;
        }
        public async Task Parse_Cases_ShouldReturnWithoutException(string caseName)
        {
            var    assembly = typeof(SimulationCases).GetTypeInfo().Assembly;
            Stream stream   = assembly.GetManifestResourceStream(caseName);
            string xml      = "";

            using (var reader = new StreamReader(stream))
                xml = await reader.ReadToEndAsync();


            var parser = new SimulationCaseParser();

            Action parse = () => parser.Parse(xml);

            parse.Should().NotThrow <Exception>();
        }
        public override void Prepare()
        {
            var parser = new SimulationCaseParser();
            var result = parser.Parse(xml);

            ProcessInstance = result.ProcessInstance;
            Name            = result.Name;

            foreach (var actor in result.Actors)
            {
                Actors.Add(actor);
            }

            foreach (var chunk in result.Chunks)
            {
                AddChunk(chunk);
            }
        }
        public void Parse_SmallCase_ShouldReturnCorrectData()
        {
            var expectedFirst = new TransactionEvent(1, 1, 1, new DateTime(2018, 2, 1, 9, 0, 0), TransactionCompletion.Requested);

            var path = Path.Combine(TestContext.CurrentContext.TestDirectory, @"Business/XmlTestFiles/ChunksExample.xml");
            var xml  = File.ReadAllText(path);

            var parser = new SimulationCaseParser();

            var result = parser.Parse(xml);

            result.ProcessInstance.Should().NotBeNull();

            var transactions = result.ProcessInstance.GetTransactions();
            var chunks       = result.Chunks;

            transactions.Should().NotBeEmpty();
            chunks.Should().NotBeEmpty().And.HaveCount(2);

            var firstChunk  = chunks[0];
            var secondChunk = chunks[1];

            var firstEvents  = firstChunk.GetEvents();
            var secondEvents = secondChunk.GetEvents();

            firstEvents.Should().NotBeEmpty().And.HaveCount(1);
            secondEvents.Should().NotBeEmpty().And.HaveCount(1);

            var firstEvent = firstEvents.FirstOrDefault();

            firstEvent.Should().NotBeNull().And.BeEquivalentTo(
                new TransactionEvent(1, 1, 1, new DateTime(2018, 2, 1, 9, 0, 0), TransactionCompletion.Requested)
                , options => options.Excluding(p => p.Id));
            //            firstEvent.Completion.Should().HaveFlag(TransactionCompletion.Requested);


            var secondEvent = secondEvents.FirstOrDefault();

            secondEvent.Should().NotBeNull().And.BeEquivalentTo(
                new TransactionEvent(2, 2, 4, new DateTime(2018, 2, 1, 9, 1, 0), TransactionCompletion.Stated),
                options => options.Excluding(p => p.Id));
        }