Exemplo n.º 1
0
        public string Export(int Id)
        {
            if (RegisteredTriggers.List().Where(i => i.Id == Id).FirstOrDefault() is TriggerConf tgr)
            {
                return(System.IO.File.ReadAllText(tgr.TriggerFile));
            }

            return("Ошибка ;(");
        }
Exemplo n.º 2
0
        public JsonResult Remove(int Id)
        {
            #region Демо режим
            if (Platform.IsDemo)
            {
                return(Json(new Text("Операция недоступна в демо-режиме")));
            }
            #endregion

            if (RegisteredTriggers.List().Where(i => i.Id == Id).FirstOrDefault() is TriggerConf tgr)
            {
                RegisteredTriggers.Remove(tgr);
                return(Json(new TrueOrFalse(true)));
            }

            return(Json(new Text("Ошибка ;(")));
        }
Exemplo n.º 3
0
        public IActionResult Index(bool ajax, int Id = 0)
        {
            ViewData["Id"]   = Id;
            ViewData["ajax"] = ajax;

            if (RegisteredTriggers.List().Where(i => i.Id == Id).FirstOrDefault() is TriggerConf triggerConf)
            {
                // Модель ceron.pw
                Dictionary <string, BlueprintModel> blueprintModel = new Dictionary <string, BlueprintModel>();

                #region Конверт "Subscriptions" в "BlueprintModel"
                foreach (var subs in triggerConf.Subscriptions)
                {
                    blueprintModel.Add(subs.Key, new BlueprintModel()
                    {
                        uid      = subs.Key,
                        worker   = "event",
                        position = subs.Value.position,
                        varsData = new VarsData()
                        {
                            input = new Input()
                            {
                                name = subs.Value.TrigerName,
                                path = subs.Value.TrigerPath,
                            }
                        }
                    });
                }
                #endregion

                #region Конверт "TriggerNodes" в "BlueprintModel"
                foreach (var node in triggerConf.Trigger)
                {
                    blueprintModel.Add(node.Key, new BlueprintModel()
                    {
                        uid      = node.Key,
                        worker   = "action",
                        position = node.Value.position,
                        varsData = new VarsData()
                        {
                            output = new Output()
                            {
                                output = node.Value.Name
                            },

                            input = new Input()
                            {
                                code       = node.Value.code,
                                references = string.Join('\n', node.Value.References),
                                namespaces = string.Join('\n', node.Value.Namespaces),
                            }
                        }
                    });
                }
                #endregion

                #region Ставим ссылки NextSteps
                foreach (var subs in triggerConf.Subscriptions)
                {
                    if (subs.Value.StepIds == null)
                    {
                        continue;
                    }

                    foreach (string StepId in subs.Value.StepIds.Split(','))
                    {
                        if (string.IsNullOrWhiteSpace(StepId))
                        {
                            continue;
                        }

                        if (blueprintModel.TryGetValue(StepId, out BlueprintModel item))
                        {
                            item.parents.Add(new Parent()
                            {
                                uid    = subs.Key,
                                input  = "input",
                                output = "output"
                            });
                        }
                    }
                }

                foreach (var node in triggerConf.Trigger)
                {
                    if (node.Value.NextSteps == null)
                    {
                        continue;
                    }

                    foreach (string StepId in node.Value.NextSteps.Split(','))
                    {
                        if (string.IsNullOrWhiteSpace(StepId))
                        {
                            continue;
                        }

                        if (blueprintModel.TryGetValue(StepId, out BlueprintModel item))
                        {
                            item.parents.Add(new Parent()
                            {
                                uid    = node.Key,
                                input  = "input",
                                output = "output"
                            });
                        }
                    }
                }
                #endregion

                // Успех
                return(View("~/Views/Tools/Trigger/Nodes.cshtml", JsonConvert.SerializeObject(blueprintModel)));
            }

            // Пустой ответ
            return(View("~/Views/Tools/Trigger/Nodes.cshtml", "{}"));
        }
Exemplo n.º 4
0
        public JsonResult Save(int Id, string nodes, bool IsAPI = false)
        {
            #region Демо режим
            if (Platform.IsDemo)
            {
                return(Json(new Text("Операция недоступна в демо-режиме")));
            }
            #endregion

            try
            {
                // Поиск триггера
                var FindTrigger = RegisteredTriggers.List().Where(i => i.Id == Id).FirstOrDefault();
                if (FindTrigger == null)
                {
                    return(Json(new Text("Триггер не найден")));
                }

                // Модель ceron.pw
                var blueprintModel = JsonConvert.DeserializeObject <IDictionary <string, BlueprintModel> >(nodes);

                // Подписки
                Dictionary <string, Subscription> Subscriptions = new Dictionary <string, Subscription>();

                // Условия триггера
                Dictionary <string, Trigger> TriggerNodes = new Dictionary <string, Trigger>();

                #region Конверт "BlueprintModel" в "Subscriptions/TriggerNodes"
                foreach (var blueprint in blueprintModel)
                {
                    #region Локальный метод - "StringToList"
                    List <string> StringToList(string data)
                    {
                        List <string> mass = new List <string>();

                        if (string.IsNullOrWhiteSpace(data))
                        {
                            return(mass);
                        }

                        foreach (string line in data.Replace("\r", "").Split('\n'))
                        {
                            if (string.IsNullOrWhiteSpace(data))
                            {
                                continue;
                            }

                            mass.Add(line);
                        }

                        return(mass);
                    }
                    #endregion

                    switch (blueprint.Value.worker)
                    {
                    case "event":
                    {
                        var val = blueprint.Value;
                        Subscriptions.Add(blueprint.Key, new Subscription()
                            {
                                position   = val.position,
                                TrigerName = val.varsData.input.name,
                                TrigerPath = val.varsData.input.path,
                            });
                        break;
                    }

                    case "action":
                    {
                        var val = blueprint.Value;
                        TriggerNodes.Add(blueprint.Key, new Trigger()
                            {
                                position   = val.position,
                                Name       = val.varsData.output.output,
                                code       = val.varsData.input.code,
                                Namespaces = StringToList(val.varsData.input.namespaces),
                                References = StringToList(val.varsData.input.references),
                            });
                        break;
                    }
                    }
                }
                #endregion

                #region Ставим ссылки NextSteps
                foreach (var blueprint in blueprintModel)
                {
                    if (blueprint.Value.worker == "action")
                    {
                        foreach (var parent in blueprint.Value.parents)
                        {
                            if (Subscriptions.TryGetValue(parent.uid, out Subscription sub))
                            {
                                sub.StepIds += string.IsNullOrWhiteSpace(sub.StepIds) ? blueprint.Key : "," + blueprint.Key;
                            }

                            if (TriggerNodes.TryGetValue(parent.uid, out Trigger tgr))
                            {
                                tgr.NextSteps += string.IsNullOrWhiteSpace(tgr.NextSteps) ? blueprint.Key : "," + blueprint.Key;
                            }
                        }
                    }
                }
                #endregion

                // Обновляем параметры
                FindTrigger.Trigger       = TriggerNodes;
                FindTrigger.Subscriptions = Subscriptions;

                // Сохраняем файл
                System.IO.File.WriteAllText(FindTrigger.TriggerFile, JsonConvert.SerializeObject(FindTrigger, Formatting.Indented));

                // Обновляем базу
                RegisteredTriggers.UpdateDB();

                // Отдаем сообщение
                return(Json(new Text("Настройки успешно сохранены")));
            }
            catch (Exception ex)
            {
                return(Json(new Text(ex.Message)));
            }
        }
Exemplo n.º 5
0
        public JsonResult Save(TriggerConf tgr, bool IsAPI = false)
        {
            #region Демо режим
            if (Platform.IsDemo)
            {
                return(Json(new Text("Операция недоступна в демо-режиме")));
            }
            #endregion

            // Проверка данных
            if (string.IsNullOrWhiteSpace(tgr.TriggerName))
            {
                return(Json(new Text("Описание триггера не может быть пустым")));
            }

            // Новый триггер
            if (tgr.Id == 0)
            {
                // Модель
                TriggerConf triggerConf = new TriggerConf()
                {
                    TriggerName = tgr.TriggerName,
                    Author      = tgr.Author,
                    IsActive    = tgr.IsActive
                };

                // Сохраняем файл
                System.IO.File.WriteAllText($"{Folders.Triggers}/{triggerConf.Id}.conf", JsonConvert.SerializeObject(triggerConf, Formatting.Indented));

                // Обновляем базу
                RegisteredTriggers.UpdateDB();

                // Отдаем ответ
                return(Json(new RewriteToId(triggerConf.Id)));
            }

            // Существующий
            else
            {
                // Поиск триггера
                var FindTrigger = RegisteredTriggers.List().Where(i => i.Id == tgr.Id).FirstOrDefault();
                if (FindTrigger == null)
                {
                    return(Json(new Text("Триггер не найден")));
                }

                // Обновляем параметры
                FindTrigger.TriggerName = tgr.TriggerName;
                FindTrigger.Author      = tgr.Author;
                FindTrigger.IsActive    = tgr.IsActive;

                // Сохраняем файл
                System.IO.File.WriteAllText(FindTrigger.TriggerFile, JsonConvert.SerializeObject(FindTrigger, Formatting.Indented));

                // Обновляем базу
                RegisteredTriggers.UpdateDB();

                // Отдаем сообщение
                return(Json(new Text("Настройки успешно сохранены")));
            }
        }
Exemplo n.º 6
0
 public IActionResult Index(bool ajax, int Id = 0)
 {
     ViewData["Id"]   = Id;
     ViewData["ajax"] = ajax;
     return(View("~/Views/Tools/Trigger/Base.cshtml", RegisteredTriggers.List().Where(i => i.Id == Id).FirstOrDefault()));
 }
Exemplo n.º 7
0
        public IActionResult Index(bool ajax, int page = 1)
        {
            var navPage = new NavPage <TriggerConf>(RegisteredTriggers.List(), HttpContext, 12, page);

            return(View("~/Views/Tools/Triggers.cshtml", navPage, ajax));
        }