/// <summary>Создание новой группы с сохранением её в базе и в ветке меню</summary> private void f_CreateNewGroup() { if (p_SelectedGroup == null) { return; } Dlg_EditorGroup dlg = new Dlg_EditorGroup(); dlg.Text = "Новая группа"; if (p_SelectedGroup.p_Group != null) { dlg.ctrl_LGroupValue.Text = p_SelectedGroup.p_Group.p_Name; } if (dlg.ShowDialog() == DialogResult.OK) { Cl_Group group = new Cl_Group(); group.p_Type = p_Type; group.p_Name = dlg.ctrl_TBName.Text; if (p_SelectedGroup.p_Group != null) { group.p_ParentID = p_SelectedGroup.p_Group.p_ID; } Cl_App.m_DataContext.p_Groups.Add(group); Cl_App.m_DataContext.SaveChanges(); if (p_SelectedGroup != null) { p_SelectedGroup.Nodes.Add(new Ctrl_TreeNodeGroup(group)); } else { Nodes.Add(new Ctrl_TreeNodeGroup(group)); } } }
private void Ctrl_ElementNew_Click(object sender, EventArgs e) { using (var transaction = Cl_App.m_DataContext.Database.BeginTransaction()) { try { Cl_EntityLog eLog = new Cl_EntityLog(); Cl_Element newElement = (Cl_Element)Activator.CreateInstance(typeof(Cl_Element)); eLog.f_SetEntity(newElement); Cl_Group group = null; if (p_SelectedGroup != null && p_SelectedGroup.p_Group != null) { group = p_SelectedGroup.p_Group; } Dlg_EditorElement dlg = new Dlg_EditorElement(); dlg.Text = "Новый элемент"; if (group != null) { newElement.p_ParentGroup = p_SelectedGroup.p_Group; dlg.ctrl_LGroupValue.Text = p_SelectedGroup.p_Group.p_Name; } if (dlg.ShowDialog() != DialogResult.OK) { return; } newElement.p_Name = dlg.ctrl_TBName.Text; newElement.p_Comment = dlg.ctrl_TBDecs.Text; newElement.p_ElementType = (Cl_Element.E_ElementsTypes)dlg.ctrl_CB_ControlType.f_GetSelectedItem(); newElement.p_IsPartPre = true; if (dlg.ctrl_TBName.Text.Length > 0) { newElement.p_PartPre = dlg.ctrl_TBName.Text[0].ToString().ToUpper(); if (dlg.ctrl_TBName.Text.Length > 1) { newElement.p_PartPre += dlg.ctrl_TBName.Text.Substring(1, dlg.ctrl_TBName.Text.Length - 1); } } newElement.p_SymmetryParamLeft = "Слева"; newElement.p_SymmetryParamRight = "Справа"; Cl_App.m_DataContext.p_Elements.Add(newElement); Cl_App.m_DataContext.SaveChanges(); newElement.p_ElementID = newElement.p_ID; Cl_App.m_DataContext.SaveChanges(); eLog.f_SaveEntity(newElement); transaction.Commit(); Ctrl_TreeNodeElement newNode = new Ctrl_TreeNodeElement(group, newElement); SelectedNode.Nodes.Add(newNode); SelectedNode = newNode; e_AfterCreateElement?.Invoke(this, new TreeViewEventArgs(newNode)); } catch (Exception ex) { transaction.Rollback(); MonitoringStub.Error("Error_Tree", "При создании нового элемента произошла ошибка", ex, null, null); return; } } }
/// <summary>Удаляет выбранную группу</summary> private void f_DeleteGroup() { if (p_SelectedGroup == null && p_SelectedGroup.p_Group == null) { return; } if (MessageBox.Show($"Удалить группу \"{p_SelectedGroup.p_Group.p_Name}\"?", "Удаление группы", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes) { return; } Cl_Group parentGroup = p_SelectedGroup.p_Group.p_Parent; if (parentGroup == null) { return; } p_SelectedGroup.p_Group.p_IsDelete = true; Cl_App.m_DataContext.SaveChanges(); if (!p_IsShowDeleted) { SelectedNode.Remove(); } else { p_SelectedGroup.p_Group = p_SelectedGroup.p_Group; } }
private void f_PopulateTreeGroup(Cl_Group a_Group, TreeNodeCollection a_TreeNodes) { TreeNode node = new Ctrl_TreeNodeGroup(a_Group); a_TreeNodes.Add(node); var tpls = Cl_App.m_DataContext.p_Templates .Where(t => t.p_ParentGroupID == a_Group.p_ID && t.p_Type == Cl_Template.E_TemplateType.Template && !t.p_IsDelete).GroupBy(t => t.p_TemplateID) .Select(grp => grp .OrderByDescending(v => v.p_Version) .FirstOrDefault()); foreach (Cl_Template tpl in tpls) { node.Nodes.Add(new Ctrl_TreeNodeTemplate(a_Group, tpl)); } var dcGroups = Cl_App.m_DataContext.Entry(a_Group).Collection(g => g.p_SubGroups); if (!dcGroups.IsLoaded) { dcGroups.Load(); } foreach (Cl_Group group in a_Group.p_SubGroups) { if (!group.p_IsDelete) { f_PopulateTreeGroup(group, node.Nodes); } } }
private void f_PopulateTreeGroup(Cl_Group a_Group, TreeNodeCollection a_TreeNodes) { TreeNode node = new Ctrl_TreeNodeGroup(a_Group); a_TreeNodes.Add(node); var els = Cl_App.m_DataContext.p_Elements .Where(e => e.p_ParentGroupID == a_Group.p_ID && (p_IsShowDeleted ? true : !e.p_IsDelete)).GroupBy(e => e.p_ElementID) .Select(grp => grp .OrderByDescending(v => v.p_Version).FirstOrDefault()) .Include(e => e.p_ParamsValues); foreach (Cl_Element el in els) { node.Nodes.Add(new Ctrl_TreeNodeElement(a_Group, el)); } var dcGroups = Cl_App.m_DataContext.Entry(a_Group).Collection(g => g.p_SubGroups); if (!dcGroups.IsLoaded) { dcGroups.Load(); } foreach (Cl_Group group in a_Group.p_SubGroups) { if (!group.p_IsDelete || p_IsShowDeleted) { f_PopulateTreeGroup(group, node.Nodes); } } }
private static string f_GetGroupValue(object value) { if (value == null) { return(""); } Cl_Group group = value as Cl_Group; return(group.f_GetFullName()); }
private void Ctrl_ImageNew_Click(object sender, EventArgs e) { using (var transaction = Cl_App.m_DataContext.Database.BeginTransaction()) { try { Cl_EntityLog eLog = new Cl_EntityLog(); Cl_Element newElement = (Cl_Element)Activator.CreateInstance(typeof(Cl_Element)); eLog.f_SetEntity(newElement); Cl_Group group = null; if (p_SelectedGroup != null && p_SelectedGroup.p_Group != null) { group = p_SelectedGroup.p_Group; } Dlg_EditorImage dlg = new Dlg_EditorImage(); dlg.Text = "Новый рисунок"; if (group != null) { newElement.p_ParentGroup = p_SelectedGroup.p_Group; dlg.ctrl_LGroupValue.Text = p_SelectedGroup.p_Group.p_Name; } if (dlg.ShowDialog() != DialogResult.OK) { return; } newElement.p_Name = dlg.ctrl_TBName.Text; newElement.p_Comment = dlg.ctrl_TBDecs.Text; newElement.p_ElementType = Cl_Element.E_ElementsTypes.Image; Cl_App.m_DataContext.p_Elements.Add(newElement); Cl_App.m_DataContext.SaveChanges(); newElement.p_ElementID = newElement.p_ID; Cl_App.m_DataContext.SaveChanges(); eLog.f_SaveEntity(newElement); transaction.Commit(); Ctrl_TreeNodeElement newNode = new Ctrl_TreeNodeElement(group, newElement); SelectedNode.Nodes.Add(newNode); SelectedNode = newNode; e_AfterCreateElement?.Invoke(this, new TreeViewEventArgs(newNode)); } catch (Exception ex) { transaction.Rollback(); MonitoringStub.Error("Error_Tree", "При создании нового элемента произошла ошибка", ex, null, null); return; } } }
private void Ctrl_TreeView_DragDrop(object sender, DragEventArgs e) { Point targetPoint = PointToClient(new Point(e.X, e.Y)); Ctrl_TreeNodeGroup targetNodeGroup = GetNodeAt(targetPoint) as Ctrl_TreeNodeGroup; Ctrl_TreeNodeGroup draggedNodeGroup = (Ctrl_TreeNodeGroup)e.Data.GetData(typeof(Ctrl_TreeNodeGroup)); if (draggedNodeGroup != null) { if (!draggedNodeGroup.Equals(targetNodeGroup) && !f_ContainsNode(draggedNodeGroup, targetNodeGroup)) { if (e.Effect == DragDropEffects.Move) { Cl_Group groupDragged = Cl_App.m_DataContext.p_Groups.FirstOrDefault(g => g.p_ID == draggedNodeGroup.p_Group.p_ID); if (groupDragged != null) { if (targetNodeGroup == null) { groupDragged.p_ParentID = null; } else { groupDragged.p_ParentID = targetNodeGroup.p_Group.p_ID; } Cl_App.m_DataContext.SaveChanges(); draggedNodeGroup.Remove(); if (targetNodeGroup == null) { Nodes.Add(draggedNodeGroup); } else { targetNodeGroup.Nodes.Insert(f_GetFirstGroupInNode(targetNodeGroup.Nodes), draggedNodeGroup); } } else { MonitoringStub.Error("Error_Tree", "Не найдена группа шаблонов", new Exception("EX ERROR"), "groupDragged = null", null); } } } } else { f_TreeView_DragDrop(sender, e, targetNodeGroup); } }
private void f_PopulateTreeGroup(Cl_Group.E_Type a_Type, Cl_Group a_Group, TreeNodeCollection a_TreeNodes) { if (p_ActiveTemplate != null) { TreeNode node = new Ctrl_TreeNodeGroup(a_Group); a_TreeNodes.Add(node); if (a_Type == Cl_Group.E_Type.Elements) { var els = Cl_App.m_DataContext.p_Elements .Where(e => e.p_ParentGroupID == a_Group.p_ID && !e.p_IsDelete && e.p_Version > 0).GroupBy(e => e.p_ElementID) .Select(grp => grp .OrderByDescending(v => v.p_Version).FirstOrDefault()) .Include(e => e.p_ParamsValues); foreach (Cl_Element el in els) { node.Nodes.Add(new Ctrl_TreeNodeElement(a_Group, el)); } } else if (p_ActiveTemplate.p_Type == Cl_Template.E_TemplateType.Template) { var tpls = Cl_App.m_DataContext.p_Templates.Include(t => t.p_TemplateElements) .Where(e => e.p_ParentGroupID == a_Group.p_ID && !e.p_IsDelete && (e.p_Type == Cl_Template.E_TemplateType.Block || e.p_Type == Cl_Template.E_TemplateType.Table)).GroupBy(e => e.p_TemplateID) .Select(grp => grp .OrderByDescending(v => v.p_Version).FirstOrDefault()); foreach (Cl_Template tpl in tpls) { node.Nodes.Add(new Ctrl_TreeNodeTemplate(a_Group, tpl)); } } var dcGroups = Cl_App.m_DataContext.Entry(a_Group).Collection(g => g.p_SubGroups); if (!dcGroups.IsLoaded) { dcGroups.Load(); } foreach (Cl_Group group in a_Group.p_SubGroups) { if (!group.p_IsDelete) { f_PopulateTreeGroup(a_Type, group, node.Nodes); } } } }
public Ctrl_TreeNodeElement(Cl_Group a_Group, Cl_Element a_Element) { p_Group = a_Group; p_Element = a_Element; ForeColor = Color.Blue; }
public Ctrl_TreeNodeGroup(Cl_Group a_Group) { p_Group = a_Group; Name = a_Group.p_ID.ToString(); Text = a_Group.p_Name; }
public void f_TestCreateRecord() { var temlName = "Тест проверки создания API работы с записями"; var dc = new Cl_DataContextMegaTemplate(f_GetConnectionString()); dc.f_Init(); var result = Cl_MedicalCardsFacade.f_GetInstance().f_Init(dc); Assert.AreEqual(true, result); result = Cl_TemplatesFacade.f_GetInstance().f_Init(dc); Assert.AreEqual(true, result); result = Cl_RecordsFacade.f_GetInstance().f_Init(dc, f_GetLocalResourcesPath()); Assert.AreEqual(true, result); result = Cl_CatalogsFacade.f_GetInstance().f_Init(dc); Assert.AreEqual(true, result); var groupTpl = dc.p_Groups.FirstOrDefault(g => g.p_Type == Cl_Group.E_Type.Templates && g.p_Name == "test"); if (groupTpl == null) { groupTpl = new Cl_Group() { p_Name = "test", p_Type = Cl_Group.E_Type.Elements }; dc.p_Groups.Add(groupTpl); dc.SaveChanges(); } var groupEl = dc.p_Groups.FirstOrDefault(g => g.p_Type == Cl_Group.E_Type.Templates && g.p_Name == "test"); if (groupEl == null) { groupEl = new Cl_Group() { p_Name = "test", p_Type = Cl_Group.E_Type.Elements }; dc.p_Groups.Add(groupEl); dc.SaveChanges(); } if (!Cl_CatalogsFacade.f_GetInstance().f_HasCategory("Осмотр")) { Cl_CatalogsFacade.f_GetInstance().f_AddCategory(Cl_Category.E_CategoriesTypes.Total, "Осмотр"); } if (!Cl_CatalogsFacade.f_GetInstance().f_HasCategory("Клиническая 1")) { Cl_CatalogsFacade.f_GetInstance().f_AddCategory(Cl_Category.E_CategoriesTypes.Clinic, "Клиническая 1"); } var catTotal = Cl_CatalogsFacade.f_GetInstance().f_GetCategory("Осмотр"); Assert.AreNotEqual(null, catTotal); var catClinic = Cl_CatalogsFacade.f_GetInstance().f_GetCategory("Клиническая 1"); Assert.AreNotEqual(null, catClinic); var tmpl = Cl_TemplatesFacade.f_GetInstance().f_GetTemplateByName(temlName); if (tmpl == null) { tmpl = new Cl_Template() { p_Name = temlName, p_Type = Cl_Template.E_TemplateType.Template }; var elements = new List <Cl_TemplateElement>(); var element = new Cl_Element() { p_ParentGroupID = groupEl.p_ID, p_ParentGroup = groupEl, p_Name = "Формула 1", p_Tag = "one", p_IsNumber = true, p_NumberRound = 3 }; element.p_ParamsValues = new List <Cl_ElementParam>(); for (int i = 1; i < 4; i++) { element.p_ParamsValues.Add(new Cl_ElementParam() { p_Element = element, p_TypeParam = Cl_ElementParam.E_TypeParam.NormValues, p_Value = i.ToString() }); element.p_ParamsValues.Add(new Cl_ElementParam() { p_Element = element, p_TypeParam = Cl_ElementParam.E_TypeParam.PatValues, p_Value = i.ToString() }); } elements.Add(new Cl_TemplateElement() { p_Template = tmpl, p_ChildElement = element, p_Index = 0 }); element = new Cl_Element() { p_ParentGroupID = groupEl.p_ID, p_ParentGroup = groupEl, p_Name = "Формула 2", p_Tag = "dva", p_IsNumber = true, p_NumberRound = 2 }; element.p_ParamsValues = new List <Cl_ElementParam>(); for (int i = 1; i < 4; i++) { element.p_ParamsValues.Add(new Cl_ElementParam() { p_Element = element, p_TypeParam = Cl_ElementParam.E_TypeParam.NormValues, p_Value = i.ToString() }); element.p_ParamsValues.Add(new Cl_ElementParam() { p_Element = element, p_TypeParam = Cl_ElementParam.E_TypeParam.PatValues, p_Value = i.ToString() }); } elements.Add(new Cl_TemplateElement() { p_Template = tmpl, p_ChildElement = element, p_Index = 1 }); element = new Cl_Element() { p_ParentGroupID = groupEl.p_ID, p_ParentGroup = groupEl, p_Name = "Формула 3", p_Tag = "tri", p_IsNumber = true, p_NumberRound = 2 }; element.p_ParamsValues = new List <Cl_ElementParam>(); for (int i = 1; i < 4; i++) { element.p_ParamsValues.Add(new Cl_ElementParam() { p_Element = element, p_TypeParam = Cl_ElementParam.E_TypeParam.NormValues, p_Value = i.ToString() }); element.p_ParamsValues.Add(new Cl_ElementParam() { p_Element = element, p_TypeParam = Cl_ElementParam.E_TypeParam.PatValues, p_Value = i.ToString() }); } elements.Add(new Cl_TemplateElement() { p_Template = tmpl, p_ChildElement = element, p_Index = 2 }); tmpl.p_ParentGroupID = groupTpl.p_ID; tmpl.p_ParentGroup = groupTpl; tmpl.p_TemplateElements = elements; tmpl.p_CategoryTotalID = catTotal.p_ID; tmpl.p_CategoryTotal = catTotal; tmpl.p_CategoryClinicID = catClinic.p_ID; tmpl.p_CategoryClinic = catClinic; dc.p_Templates.Add(tmpl); dc.SaveChanges(); } Assert.AreNotEqual(null, tmpl); var elts = Cl_TemplatesFacade.f_GetInstance().f_GetElements(tmpl); Assert.AreNotEqual(null, elts); var vals = new List <Cl_RecordValue>(); foreach (var el in elts) { vals.Add(new Cl_RecordValue() { p_ElementID = el.p_ID, p_Element = el, p_ValueUser = "******" }); } var medicalCard1 = Cl_MedicalCardsFacade.f_GetInstance().f_GetMedicalCard("777", 1); if (medicalCard1 == null) { medicalCard1 = Cl_MedicalCardsFacade.f_GetInstance().f_CreateMedicalCard("777", 1, Core.Permision.Cl_User.E_Sex.Man, "Иванов", "Иван", "Иванович", new DateTime(1996, 3, 11), "Медкарта API тест 777"); } Assert.IsNotNull(medicalCard1); result = Cl_RecordsFacade.f_GetInstance().f_CreateRecord(medicalCard1, catTotal, catClinic, "Заголовок API тест - значения", "Клиника API тест значения", 56369, "Доктор_Фамилия", "Доктор_Имя", "Доктор_Отчество", tmpl, vals); Assert.AreEqual(true, result); result = Cl_RecordsFacade.f_GetInstance().f_CreateRecord(medicalCard1, catTotal, catClinic, "Заголовок API тест - файл", "Клиника API тест файл", 56369, "Доктор_Фамилия", "Доктор_Имя", "Доктор_Отчество", E_RecordFileType.HTML, Encoding.UTF8.GetBytes("<h1>API тест файл<h1>")); Assert.AreEqual(true, result); }
public Ctrl_TreeNodeTemplate(Cl_Group a_Group, Cl_Template a_Template) { p_Group = a_Group; p_Template = a_Template; }
private void f_TemplateNew(Cl_Template.E_TemplateType a_TemplateType) { using (var transaction = Cl_App.m_DataContext.Database.BeginTransaction()) { try { Cl_EntityLog eLog = new Cl_EntityLog(); Cl_Template newTemplate = (Cl_Template)Activator.CreateInstance(typeof(Cl_Template)); eLog.f_SetEntity(newTemplate); Cl_Group group = null; if (p_SelectedGroup != null && p_SelectedGroup.p_Group != null) { group = p_SelectedGroup.p_Group; } Dlg_EditorTemplate dlg = new Dlg_EditorTemplate(); dlg.ctrlPCategories.Enabled = a_TemplateType == Cl_Template.E_TemplateType.Template; if (a_TemplateType == Cl_Template.E_TemplateType.Template) { dlg.Text = "Новый шаблон"; } else if (a_TemplateType == Cl_Template.E_TemplateType.Block) { dlg.Text = "Новый блок"; } else if (a_TemplateType == Cl_Template.E_TemplateType.Table) { dlg.Text = "Новая таблица"; } if (group != null) { newTemplate.p_ParentGroup = p_SelectedGroup.p_Group; dlg.ctrl_LGroupValue.Text = p_SelectedGroup.p_Group.p_Name; } if (dlg.ShowDialog() != DialogResult.OK) { return; } newTemplate.p_Name = dlg.ctrl_TBName.Text; newTemplate.p_Title = dlg.ctrlTitle.Text; newTemplate.p_Type = a_TemplateType; if (a_TemplateType == Cl_Template.E_TemplateType.Template) { var catTotal = (Cl_Category)dlg.ctrlCategoriesTotal.SelectedItem; newTemplate.p_CategoryTotalID = catTotal.p_ID; newTemplate.p_CategoryTotal = catTotal; var catClinic = (Cl_Category)dlg.ctrlCategoriesClinic.SelectedItem; newTemplate.p_CategoryClinicID = catClinic.p_ID; newTemplate.p_CategoryClinic = catClinic; } Cl_App.m_DataContext.p_Templates.Add(newTemplate); Cl_App.m_DataContext.SaveChanges(); newTemplate.p_TemplateID = newTemplate.p_ID; Cl_App.m_DataContext.SaveChanges(); eLog.f_SaveEntity(newTemplate); transaction.Commit(); SelectedNode.Nodes.Add(new Ctrl_TreeNodeTemplate(group, newTemplate)); } catch (Exception ex) { transaction.Rollback(); MonitoringStub.Error("Error_Tree", "При создании нового шаблона произошла ошибка", ex, null, null); return; } } }