/// <summary>МЕТОД Фабрика Массовая загрузка всех объектов Shablon для загруженной коллекции Protokol</summary> /// <param name="pTip">Тип протокола</param> /// <remarks>Делается как из MET_FactoryProtokolArray</remarks> public static bool MET_FactoryShablonArray(eTipDocum pTip) { // Коллекция ListShablons List <UserShablon> _Shablons = ((VirtualModul)MyGlo.Modul).PUB_Shablon; // Находим список кодов шаблонов (пример: 101, 110, 120, 0), в конце добавляем ноль, что бы перекрыть последнюю запятую или в пустом списке был просто ноль string _NomShablons = ((VirtualModul)MyGlo.Modul).PUB_Protokol.Select(i => i.PROP_NumShablon).Distinct().Aggregate("", (s, i) => s + i + ", ") + "0"; try { var _TipProtokol = new MyTipProtokol(pTip); SqlDataReader _SqlDataReader = MySql.MET_QuerySqlDataReader(MyQuery.MET_Shablon_Select_4(_TipProtokol.PROP_Prefix, _NomShablons)); // Перебираем весь поток и дабавляем все шаблоны while (_SqlDataReader.Read()) { UserShablon _Value = new UserShablon(); _Value.MET_LoadDataReader(_SqlDataReader); _Value.PROP_TipProtokol = _TipProtokol; _Value.PROP_FlagEdit = false; _Shablons.Add(_Value); } _SqlDataReader.Close(); return(true); } catch (Exception ex) { MyGlo.PUB_Logger.Fatal(ex, "Ошибка Массовой Загрузки данных ListShablon из SQL"); MyGlo.Event_Error(ex); return(false); } }
///<summary>МЕТОД Фабрика объектов Shablon</summary> /// <param name="pTip">Тип протокола</param> /// <param name="pCodShablon">Код шаблона</param> public static List <UserShablon> MET_FactoryListShablon(eTipDocum pTip, int pCodShablon) { // Коллекция Shablon List <UserShablon> _Shablons = ((VirtualModul)MyGlo.Modul).PUB_Shablon; // Ищем в коллекции <Shablon> по типу и номеру шаблона List <UserShablon> _Value = _Shablons.Where(p => p.PROP_ID == pCodShablon && p.PROP_TipProtokol.PROP_TipDocum == pTip).ToList(); // Если не нашли, то пытаемся <Shablon> загрузить из SQL if (!_Value.Any()) { try { MyTipProtokol _Tip = new MyTipProtokol(pTip); SqlDataReader _SqlDataReader = MySql.MET_QuerySqlDataReader(MyQuery.MET_Shablon_Select_3(pCodShablon, _Tip.PROP_Prefix)); while (_SqlDataReader.Read()) { UserShablon _Shablon = new UserShablon(); _Shablon.MET_LoadDataReader(_SqlDataReader); _Shablon.PROP_TipProtokol = _Tip; // После загрузки, сбрасываем флаг редактирования _Shablon.PROP_FlagEdit = false; _Value.Add(_Shablon); } _SqlDataReader.Close(); } catch (Exception ex) { MyGlo.PUB_Logger.Fatal(ex, "Ошибка Загрузки данных Shablon из SQL"); MyGlo.Event_Error(ex); _Value = null; } // Добавляем наши вопросы в библиотеку if (_Value != null) { _Shablons?.AddRange(_Value); } } return(_Value); }