public TrueOrFalse Import(HttpContext context) { #region Демо режим if (Platform.IsDemo) { return(new TrueOrFalse(false)); } #endregion bool res = false; if (context.Request.Form.Files.Count == 1) { using (MemoryStream mem = new MemoryStream()) { // Получаем файл context.Request.Form.Files[0].CopyTo(mem); var tgr = JsonConvert.DeserializeObject <TriggerConf>(Encoding.UTF8.GetString(mem.ToArray())); // Меняем Id tgr.Id = int.Parse(Generate.Passwd(6, IsNumberCode: true)); // Сохраняем файл System.IO.File.WriteAllText($"{Folders.Triggers}/{tgr.Id}.conf", JsonConvert.SerializeObject(tgr, Formatting.Indented)); // Обновляем базу RegisteredTriggers.UpdateDB(); // Успех res = true; } } // Отдаем результат return(new TrueOrFalse(res)); }
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))); } }
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("Настройки успешно сохранены"))); } }