private Flowchart ViewModelToFlowchart(AddDescriptionViewModel model)
        {
            var list      = model.SeeAlso.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries).ToList();
            var flowchart = new Flowchart {
                Name = model.Name, Discriminators = model.Discriminators, SeeAlso = list, Notes = model.Notes
            };

            return(flowchart);
        }
        public IActionResult AddFlowchart(AddDescriptionViewModel model)
        {
            var    flowchart = ViewModelToFlowchart(model);
            string x         = JsonConvert.SerializeObject(flowchart);
            string docPath   = @"./Flowcharts";
            string fileName  = flowchart.Name.Replace(" ", "_");

            fileName = fileName + ".json";
            using (StreamWriter outputFile = new StreamWriter(Path.Combine(docPath, fileName)))
            {
                outputFile.WriteLine(x);
            }
            return(RedirectToAction(nameof(Index)));
        }
        private static AddDescriptionViewModel InitiliseDescription(CreateFlowchartViewModel model)
        {
            Flowchart flowchart = new Flowchart();
            var       Edit      = model.Edit;

            if (Edit)
            {
                string name = model.Name;
                string text = ReadFile(name);
                flowchart = JsonConvert.DeserializeObject <Flowchart>(text);
            }


            List <List <String> > list = new List <List <string> >();

            list.Add(model.Red.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries).ToList());
            list.Add(model.Orange.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries).ToList());
            list.Add(model.Yellow.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries).ToList());
            list.Add(model.Green.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries).ToList());

            List <Discriminator> discriminators = new List <Discriminator>();

            int counter = 0;

            foreach (var colour in list)
            {
                foreach (var d in colour)
                {
                    Priority c;
                    switch (counter)
                    {
                    case 0:
                        c = Priority.Red;
                        break;

                    case 1:
                        c = Priority.Orange;
                        break;

                    case 2:
                        c = Priority.Yellow;
                        break;

                    case 3:
                        c = Priority.Green;
                        break;

                    default:
                        c = Priority.Blue;
                        break;
                    }
                    var discriminator = new Discriminator {
                        Name = d, Priority = c, PriorityString = c.ToString()
                    };
                    if (Edit)
                    {
                        foreach (var disc in flowchart.Discriminators)
                        {
                            if (disc.Name == d && disc.Priority == c)
                            {
                                discriminator.Description = disc.Description;
                                break;
                            }
                        }
                    }
                    discriminators.Add(discriminator);
                }
                counter++;
            }

            AddDescriptionViewModel newModel = new AddDescriptionViewModel()
            {
                Name           = model.Name,
                Discriminators = discriminators
            };


            //if (model.SeeAlso != null)
            //{
            //var x = model.SeeAlso.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries).ToList();
            newModel.SeeAlso = model.SeeAlso;
            //}

            newModel.Notes = model.Notes;

            return(newModel);
        }