public ActionResult ScanDirectories(FormCollection form)
        {
            int _registeredSolutions = 0;

            try
            {
                string[]      directoriesChecked = form.AllKeys;
                List <string> directoriesToScan  = _utilityService.ResolveDirectories(directoriesChecked);
                if (directoriesToScan != null)
                {
                    foreach (string directory in directoriesToScan)
                    {
                        string _solutionFile = string.Empty;
                        if (_utilityService.HasDirectoryDotNETSolution(directory, out _solutionFile))
                        {
                            Solution _newSolution = new Solution();
                            _newSolution.Name           = _solutionFile;
                            _newSolution.Description    = _solutionFile;
                            _newSolution.DateRegistered = DateTime.Now;
                            _newSolution.FilePath       = Path.Combine(directory, _solutionFile + ".sln");
                            _newSolution.SolutionTypeID = _solutionTypeService.GetDefaultSolutionTypeID();
                            _solutionService.CreateSolution(_newSolution);
                            try
                            {
                                _solutionService.SaveSolution();
                                _registeredSolutions++;
                            }
                            catch
                            {
                                continue;
                            }
                        }
                    }
                }

                return(RedirectToAction("Index", "Solutions").WithSuccess(_registeredSolutions + " found and registered automatically by BrowseDotNET."));
            }
            catch (Exception ex)
            {
                return(RedirectToAction("ScanSolutions").WithError("Errors occured during scanning for .NET Solutions." + ex.Message));
            }
        }
        public async Task <IActionResult> PostSolutionTemplate([FromBody] SolutionTemplateViewModel solutionTemplateViewModel)
        {
            Console.WriteLine(solutionTemplateViewModel);
            try
            {
                var deserializer     = new Deserializer();
                var solutionTemplate = new SolutionTemplate();
                Console.WriteLine(JsonConvert.SerializeObject(solutionTemplateViewModel));
                solutionTemplate.Intent = solutionTemplateViewModel.Intent;

                solutionTemplate.Tasks = deserializer.Deserialize(new StringReader(solutionTemplateViewModel.Tasks));
                Console.WriteLine(JsonConvert.SerializeObject(solutionTemplate));

                List <dynamic> actions = new List <dynamic>();

                foreach (var e in solutionTemplate.Tasks as List <dynamic> )
                {
                    Guid   g          = Guid.NewGuid();
                    string GuidString = Convert.ToBase64String(g.ToByteArray());
                    GuidString = GuidString.Replace("=", "");
                    GuidString = GuidString.Replace("+", "");

                    if (e["stage"] == "action")
                    {
                        e["tags"] = new List <string> {
                            GuidString
                        }
                    }
                    ;

                    var data = JObject.Parse(JsonConvert.SerializeObject(e));
                    //Console.WriteLine(data);

                    if (data["stage"].ToString() == "action")
                    {
                        var values = data.ToObject <Dictionary <string, object> >();
                        values.Remove("stage");
                        actions.Add(values);

                        try {
                            if (values["register"] != null)
                            {
                                object redisobj = new { name = "Store gitdata in redis", shell = "redis-cli -h ${{REDIS_HOST}} -p ${{REDIS_PORT}} HSET ${{threadId}}" + " " + values["register"] + " '{{" + values["register"] + ".content}}'", tags = values["tags"] };
                                actions.Add(redisobj);
                            }
                        }
                        catch (Exception ex) {}
                    }
                }
                Console.WriteLine(JsonConvert.SerializeObject(solutionTemplate.Tasks));

                object        scriptobj = new { hosts = "localhost", gather_facts = false, tasks = actions };
                List <object> final     = new List <object>()
                {
                    scriptobj
                };
                var finalJson = JsonConvert.SerializeObject(final);

                var     expConverter     = new ExpandoObjectConverter();
                dynamic desiralizeObject = JsonConvert.DeserializeObject <List <ExpandoObject> >(finalJson, expConverter);

                var    serializer = new YamlDotNet.Serialization.Serializer();
                string yaml       = serializer.Serialize(desiralizeObject);
                //Console.Write(solutionTemplate.Intent);
                solutionTemplate.Actions = yaml;

                var solutionTemplateAsJsonString   = JsonConvert.SerializeObject(solutionTemplate);
                var solutionTemplateAsBsonDocument = BsonDocument.Parse(solutionTemplateAsJsonString);
                Console.WriteLine(solutionTemplateAsBsonDocument);
                await _service.CreateSolution(solutionTemplateAsBsonDocument);

                return(Ok());
            }
            catch (Exception e)
            {
                return(BadRequest(e.StackTrace));
            }
        }