/// <summary> добавляет фильтр</summary> public static void AddFilter(string user, string filtername, string group_id, Values val) { //поиск группы FilterGroup group = GetGroup(group_id); //поиск свободного id uint id = 0; for (id = 0; ; id++) { if (group.Cur_Filters.Keys.Contains(id)) { continue; } else { break; } } //создание фильтра OneFilter filter = new OneFilter(filtername, id, group); //добавление фильтра group.Cur_Filters.Add(id, filter); All_Filters.Add(filter.StringID, filter); //добавление фильтра в аккаунты foreach (Account acc in Accounts.Values) { acc.AccountFilters.AddNewFilter(filter); } //сохранение базы string filename = SaveFilters(val); //сохранение лога Log.AddFilter(user, filename, group.Name, filtername); }
public static void ChangeFilter(string user, OneFilter oldfilter, string newname) { string oldname = oldfilter.Name; //переименовывание фильтра oldfilter.ChangeName(newname); //переименовывание фильтра во всех аккаунтах foreach (Account acc in SaveEquip.Accounts.Values) { acc.AccountFilters.AllSingleFilters[oldfilter.StringID].ChangeName(newname); } //сохранение базы string filename = SaveFilters(oldfilter.Parent.CurValues); foreach (Equipment equip in SaveEquip.Equipments.Values) { foreach (Parameter par in equip.CurParameters.Values) { if (par.Filter == oldfilter) { par.SetTextValue(); } } } SaveEquip.SaveEquipments(); //сохранения лога Log.ChangeFilter(user, filename, oldname, newname); }
public string ChangeFilter(string oldfilterID, string newfiltername, string type) { if (oldfilterID == null || oldfilterID == "") { return("Ошибка в данных"); } if (type == null || type == "") { return("Ошибка в данных"); } if (newfiltername == null || newfiltername == "") { return("Название не может быть пустым"); } if (SaveEquip.All_Filters.ContainsKey(oldfilterID) == false) { return("Ошибка данных"); } OneFilter filter = SaveEquip.All_Filters[oldfilterID]; switch (type) { case "well": bool hassamewell = SaveEquip.CheckFilter(Values.Location, filter.Parent.StringID, newfiltername); if (hassamewell) { return("Такая скважина уже есть"); } SaveEquip.ChangeFilter(SaveEquip.Accounts[User.Identity.Name].Name, filter, newfiltername); break; case "type": bool hassametype = SaveEquip.CheckFilter(Values.Type, filter.Parent.StringID, newfiltername); if (hassametype) { return("Такой тип оборудования уже есть"); } SaveEquip.ChangeFilter(SaveEquip.Accounts[User.Identity.Name].Name, filter, newfiltername); break; case "maker": bool hassamemaker = SaveEquip.CheckFilter(Values.Maker, filter.Parent.StringID, newfiltername); if (hassamemaker) { return("Такой тип оборудования уже есть"); } SaveEquip.ChangeFilter(SaveEquip.Accounts[User.Identity.Name].Name, filter, newfiltername); break; } return(""); }
static string SaveFilters(Values val) { OneFilter startfilter = null; uint filterid = FilteredValues[val]; string filename = ""; switch (val) { case Values.Type: startfilter = Filters.Start_Type; filename = TypeFile; break; case Values.Location: startfilter = Filters.Start_Location; filename = LocationsFile; break; case Values.Maker: startfilter = Filters.Start_Maker; filename = MakerFile; break; default: throw new Exception(); } List <string> file = new List <string>(); file.Add(filterid.ToString()); foreach (FilterGroup gr in Filters_From_File[filterid].Values) { file.Add(String.Format("GROUP {0} {1}", gr.ID, gr.Name)); foreach (OneFilter filter in gr.Cur_Filters.Values) { if (filter == startfilter) { file.Add(string.Format("{0} START {1}", filter.ID, filter.Name)); } else { file.Add(string.Format("{0} {1}", filter.ID, filter.Name)); } } file.Add("ENDGROUP"); } Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); Encoding enc = Encoding.GetEncoding(1251); File.WriteAllLines(filename, file, enc); return(filename); }
static void ReadFilters(string filename, Values value, out OneFilter startpos) { startpos = null; Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); Encoding enc = Encoding.GetEncoding(1251); string[] file = File.ReadAllLines(filename, enc); if (file == null || file.Length == 0) { throw new Exception("Ошибка при считывании файла с фильтрами: Файл не найден или пуст " + filename); } uint filter_id = 0; bool filter_id_parse_result = UInt32.TryParse(file[0], out filter_id); if (filter_id_parse_result == false) { throw new Exception("Ошибка при считывании файла с фильтрами: ошибка структуры файла: " + filename); } foreach (SortedList <uint, FilterGroup> a in Filters_From_File.Values) { foreach (FilterGroup g in a.Values) { if (g.Filter_ID == filter_id) { throw new Exception("Ошибка при считывании файла с фильтрами: данный ID группы фильтров уже загружен: " + filename); } } } bool havegroup = false; uint cur_group_id = 0; FilterGroup cur_group = null; SortedList <uint, FilterGroup> groups = new SortedList <uint, FilterGroup>(); for (int i = 1; i < file.Length; i++) { string s = file[i]; if (s == "") { continue; } if (havegroup == false) { string[] ss = s.Split(' '); if (ss.Length < 3) { throw new Exception("Ошибка при считывании файла с фильтрами: ошибка инициализации группы в строке: " + i + " файла " + filename); } if (ss[0] != "GROUP") { throw new Exception("Ошибка при считывании файла с фильтрами: Начало группы не найдено в строке: " + i + " файла " + filename); } bool group_id_parse_result = UInt32.TryParse(ss[1], out cur_group_id); if (group_id_parse_result == false) { throw new Exception("Ошибка при считывании файла с фильтрами: ID группы не найдено в строке: " + i + " файла " + filename); } if (groups.ContainsKey(cur_group_id)) { throw new Exception("Ошибка при считывании файла с фильтрами: Дублирование ID группы в строке: " + i + " файла " + filename); } string group_name = ""; for (int j = 2; j < ss.Length; j++) { group_name += ss[j]; if (j < ss.Length - 1) { group_name += " "; } } FilterGroup gr = new FilterGroup(group_name, cur_group_id, filter_id, value); groups.Add(cur_group_id, gr); AllGroups.Add(gr.StringID, gr); havegroup = true; cur_group = groups[cur_group_id]; } else { if (s == "ENDGROUP") { havegroup = false; cur_group = null; } else { string[] ss = s.Split(' '); if (s.Length < 2) { throw new Exception("Ошибка при считывании файла с фильтрами: ошибка распознования в строке: " + i + " файла " + filename); } uint one_filter_id; bool one_filter_id_parse_result = UInt32.TryParse(ss[0], out one_filter_id); if (one_filter_id_parse_result == false) { throw new Exception("Ошибка при считывании файла с фильтрами: ошибка распознования ID одного фильтра в строке: " + i + " файла " + filename); } if (cur_group.Cur_Filters.ContainsKey(one_filter_id)) { throw new Exception("Ошибка при считывании файла с фильтрами: Дублирование ID одного фильтра в строке: " + i + " файла " + filename); } string filter_name = ""; if (ss[1] == "START") { for (int j = 2; j < ss.Length; j++) { filter_name += ss[j]; if (j < ss.Length - 1) { filter_name += " "; } } OneFilter f = new OneFilter(filter_name, one_filter_id, cur_group); cur_group.Cur_Filters.Add(one_filter_id, f); All_Filters.Add(f.StringID, f); if (startpos == null) { startpos = cur_group.Cur_Filters[one_filter_id]; } else { throw new Exception("Ошибка при считывании файла с фильтрами: Дублирование стартового фильтра в строке: " + i + " файла " + filename); } } else { for (int j = 1; j < ss.Length; j++) { filter_name += ss[j]; if (j < ss.Length - 1) { filter_name += " "; } } OneFilter f = new OneFilter(filter_name, one_filter_id, cur_group); cur_group.Cur_Filters.Add(one_filter_id, f); All_Filters.Add(f.StringID, f); } } } } if (havegroup != false) { throw new Exception("Ошибка при считывании файла с фильтрами: нет конца группы в файле " + filename); } Filters_From_File.Add(filter_id, groups); if (Program.Change_Base) { All_Filters = new SortedList <string, OneFilter>(); foreach (SortedList <uint, FilterGroup> list in Filters_From_File.Values) { foreach (KeyValuePair <uint, FilterGroup> pair in list) { foreach (OneFilter f in pair.Value.Cur_Filters.Values) { All_Filters.Add(f.Name, f); } } } } }