/// <summary> /// Добавление существующей дисциплины /// </summary> /// <param name="DataRow">Идентификатор дисциплины</param> /// <param name="FromBase"></param> /// <returns></returns> public WTPComponent Add(IWTPCOMPONENT DataRow, bool FromBase) { WTPComponent newRow = new WTPComponent(this, DataRow); Add(newRow); return(newRow); }
public WTPComponent AddComponent(IWTPCOMPONENT row, WTPComponent ParentComponent) { Plan.Components.FillRow(row); WTPComponent newComponent = Plan.Components.Add(row, false); newComponent.Parent = ParentComponent; return(newComponent); }
private WTPComponent CreateComponent(Hashtable WTPs, IWTPCOMPONENT WTPComponent) { Wtp plan = (Wtp)WTPs[WTPComponent.WTP_ID.Value]; WTPComponent newComponent = plan.Components.Add(WTPComponent, true); return(newComponent); }
public bool Import(WtpPresenter presenter, XDocument xdoc, out string errorMessage) { _presenter = presenter; var plan = presenter.Plan; errorMessage = string.Empty; //Создание плана скорее всего будет отдельно, поэтому вынесла этот процесс из логики импорта, //Wtp newPlan = presenter.CreateWtp(); var StudyPlan = xdoc.Root.Element(XmlConst.diffgram).Element(XmlConst.dsMMISDB); var SpecialityCode = StudyPlan.Element(XmlConst.OOP).Attribute("Шифр").Value; var SpecialityIDFromFile = StudyPlan.Element(XmlConst.OOP).Attribute("Код").Value; var SpecializationIDFromFile = StudyPlan.Element(XmlConst.OOP).Descendants(XmlConst.OOP).Where(r => r.Attribute("Название").Value == plan.DataRow.SPECIALIZATION_NAME).Select(r => r.Attribute("Код").Value).FirstOrDefault(); if (SpecializationIDFromFile == null) { SpecializationIDFromFile = "-1"; } var StudYearID = WtpPresenter.GetStudYearIDByYear(StudyPlan.Element(XmlConst.Plans).Attribute("ГодНачалаПодготовки").Value); IEnumerable <XElement> parentCycles = StudyPlan.Descendants(XmlConst.Cycles).Where(q => q.Attribute("ТипБлока").Value == "1"); foreach (var parentCycle in parentCycles) { var StudDiscipCicleID = presenter.GetStudDiscipCicleByName(parentCycle.Attribute("Идентификатор").Value, parentCycle.Attribute("Цикл").Value); var StudDiscipCicleName = parentCycle.Attribute("Цикл").Value; var parentCycleID = parentCycle.Attribute("Код").Value; var Code = parentCycle.Attribute("Идентификатор").Value; var SortIndex = int.Parse(parentCycle.Attribute("{urn:schemas-microsoft-com:xml-msdata}rowOrder").Value) + 1; //если компонент с указанными параметрами не существует, то создать его, иначе найденный будет являться wtpComponent var parentComponent = plan.Components.Where(r => r.DataRow.STUDDISCIPCICLE_ID == StudDiscipCicleID). Where(r => r.DataRow.WTPCOMPONENT_CODE == Code). Where(r => r.DataRow.WTPCOMPONENT_PARENTID == null). Where(r => r.DataRow.STUDDISCCOMPONENT_ID == null). Where(r => r.DataRow.SPECIALIZATION_ID == null). Where(r => r.DataRow.WTPCOMPONENT_SORTINDEX == SortIndex); WTPComponent wtpComponent; if (parentComponent.Count() == 0) { IWTPCOMPONENT component = presenter.CreateNewComponent(); //поиск по имени STUDDISCIPCICLE_NAME component.STUDDISCIPCICLE_ID = StudDiscipCicleID; component.STUDDISCIPCICLE_NAME = parentCycle.Attribute("Цикл").Value; component.WTPCOMPONENT_CODE = Code; wtpComponent = presenter.AddComponent(component, null); } else { wtpComponent = parentComponent.First(); } //IWTPCOMPONENT component = presenter.CreateNewComponent(); ////поиск по имени STUDDISCIPCICLE_NAME //component.STUDDISCIPCICLE_ID = StudDiscipCicleID; //component.STUDDISCIPCICLE_NAME = parentCycle.Attribute("Цикл").Value; //component.WTPCOMPONENT_CODE = Code; //var wtpComponent = presenter.AddComponent(component, null); var childCycles = StudyPlan.Descendants(XmlConst.Cycles).Where(q => q.Attribute("ТипБлока").Value != "1").Where(q => q.Attribute("КодРодителя").Value == parentCycleID); if (childCycles.Count() != 0) { foreach (var childCycle in childCycles) { var childStudDiscipCicleID = presenter.GetStudDiscipCicleByName(childCycle.Attribute("Идентификатор").Value, childCycle.Attribute("Цикл").Value); var childComponent = plan.Components.Where(r => r.DataRow.STUDDISCIPCICLE_ID == childStudDiscipCicleID). Where(r => r.DataRow.WTPCOMPONENT_CODE == Code). Where(r => r.DataRow.WTPCOMPONENT_PARENTID == wtpComponent.DataRow.WTPCOMPONENT_ID). Where(r => r.DataRow.STUDDISCCOMPONENT_ID == null). Where(r => r.DataRow.SPECIALIZATION_ID == null). Where(r => r.DataRow.WTPCOMPONENT_SORTINDEX == SortIndex); var childCycleID = childCycle.Attribute("Код").Value; WTPComponent wtpComponent2; if (childComponent.Count() == 0) { IWTPCOMPONENT component2 = presenter.CreateNewComponent(); component2.STUDDISCIPCICLE_ID = childStudDiscipCicleID; component2.STUDDISCIPCICLE_NAME = childCycle.Attribute("Цикл").Value; component2.WTPCOMPONENT_CODE = childCycle.Attribute("Идентификатор").Value; component2.WTPCOMPONENT_SORTINDEX = int.Parse(childCycle.Attribute("{urn:schemas-microsoft-com:xml-msdata}rowOrder").Value) + 1; wtpComponent2 = presenter.AddComponent(component2, wtpComponent); } else { wtpComponent2 = childComponent.First(); } //IWTPCOMPONENT component2 = presenter.CreateNewComponent(); //var childID = presenter.GetStudDiscipCicleByName(childCycle.Attribute("Идентификатор").Value, childCycle.Attribute("Цикл").Value); //var childCycleID = childCycle.Attribute("Код").Value; //component2.STUDDISCIPCICLE_ID = childID; //component2.STUDDISCIPCICLE_NAME = childCycle.Attribute("Цикл").Value; //component2.WTPCOMPONENT_CODE = childCycle.Attribute("Идентификатор").Value; //component2.WTPCOMPONENT_SORTINDEX = int.Parse(childCycle.Attribute("{urn:schemas-microsoft-com:xml-msdata}rowOrder").Value) + 1; //var wtpComponent2 = presenter.AddComponent(component2, wtpComponent); //сохранение после каждого действия нужно будет убрать, сохранять только в конце импорта IEnumerable <XElement> planRows = StudyPlan.Descendants(XmlConst.Rows).Where(q => q.Attribute("УровеньВложения").Value == "1").Where(q => q.Attribute("КодБлока").Value == childCycleID); foreach (var planRow in planRows) { if (planRow.Attribute("ТипОбъекта").Value == "2" & (planRow.Attribute("КодООП").Value == SpecializationIDFromFile | planRow.Attribute("КодООП").Value == SpecialityIDFromFile)) { if (planRow.Attribute("СчитатьВПлане").Value == "true") { var rowID = planRow.Attribute("Код").Value; var discipRow = AddWTPROW(planRow, wtpComponent2); var rowValues = StudyPlan.Descendants(XmlConst.NewHours).Where(q => q.Attribute("КодОбъекта").Value == rowID); AddWTPROWValues(rowValues, discipRow); } else { continue; } //var rowID = planRow.Attribute("Код").Value; //var discipRow = AddWTPROW(planRow, wtpComponent2); //var rowValues = StudyPlan.Descendants(XmlConst.NewHours).Where(q => q.Attribute("КодОбъекта").Value == rowID); //AddWTPROWValues(plan, rowValues, discipRow); } else if (planRow.Attribute("ТипОбъекта").Value == "1" & (planRow.Attribute("КодООП").Value == SpecializationIDFromFile | planRow.Attribute("КодООП").Value == SpecialityIDFromFile)) { //дисциплины специализации WTPRowGroup wtpRowGroup; IWTPROWGROUP rowGroup = presenter.CreateNewRowGroup(); rowGroup.SPECIALIZATION_ID = SpecializationID; rowGroup.WTPROWGROUP_CODE = groupCode; rowGroup.WTPROWGROUP_NAME = groupName; rowGroup.WTPROWGROUP_SORTINDEX = groupSortIndex; rowGroup.WTPROWGROUP_NUMBER = groupNumber; wtpRowGroup = presenter.AddRowGroup(rowGroup, wtpComponent2); //var moduleID = presenter.GetStudDiscComponentByName(planRow.Attribute("Идентификатор").Value, planRow.Attribute("Цикл").Value); //var OOP = StudyPlan.Element(XmlConst.OOP).Descendants(XmlConst.OOP).Where(q => q.Attribute("Код").Value == planRow.Attribute("КодООП").Value).First(); //var SpecializationID = presenter.GetSpecializationByName(OOP.Attribute("Название").Value, SpecialityCode); //var module = plan.Components. // Where(r => r.DataRow.STUDDISCIPCICLE_ID == null). // Where(r => r.DataRow.WTPCOMPONENT_CODE == Code). // Where(r => r.DataRow.WTPCOMPONENT_PARENTID == wtpComponent2.DataRow.WTPCOMPONENT_ID). // Where(r => r.DataRow.STUDDISCCOMPONENT_ID == moduleID). // Where(r => r.DataRow.SPECIALIZATION_ID == SpecializationID). // Where(r => r.DataRow.WTPCOMPONENT_SORTINDEX == SortIndex); //WTPComponent wtpModule; //if (module == null) //{ // IWTPCOMPONENT component3 = presenter.CreateNewComponent(); // var childID = presenter.GetStudDiscipCicleByName(planRow.Attribute("Идентификатор").Value, planRow.Attribute("Цикл").Value); // component3.SPECIALIZATION_ID = SpecializationID; // component3.STUDDISCIPCICLE_NAME = planRow.Attribute("Цикл").Value; // component3.WTPCOMPONENT_CODE = planRow.Attribute("ДисциплинаКод").Value; // wtpModule = presenter.AddComponent(component3, wtpComponent2); //} //else //{ // wtpModule = module.First(); //} //IWTPCOMPONENT component3 = presenter.CreateNewComponent(); //string componentCode = planRow.Attribute("ДисциплинаКод").Value; //var studDiscComponentID = presenter.GetStudDiscComponentByName(planRow.Attribute("Дисциплина").Value, componentCode.Remove(componentCode.Length - 3)); //var OOP = StudyPlan.Element(XmlConst.OOP).Descendants(XmlConst.OOP).Where(q => q.Attribute("Код").Value == planRow.Attribute("КодООП").Value).First();/*Where(q => q.Attribute("Код").Value == planRow.Attribute("КодООП").Value).First();*/ //var SpecializationID = presenter.GetSpecializationByName(OOP.Attribute("Название").Value, OOP.Attribute("Шифр").Value); //component3.SPECIALIZATION_ID = SpecializationID; //component3.SPECIALIZATION_NAME = OOP.Attribute("Название").Value; //component3.WTPCOMPONENT_CODE = planRow.Attribute("ДисциплинаКод").Value; //component3.STUDDISCCOMPONENT_ID = studDiscComponentID; //component3.STUDDISCCOMPONENT_NAME = planRow.Attribute("Дисциплина").Value; //var wtpComponent3 = presenter.AddComponent(component3, wtpComponent2); var componentID = planRow.Attribute("Код").Value; var specRows = StudyPlan.Descendants(XmlConst.Rows).Where(q => q.Attribute("УровеньВложения").Value == "2").Where(q => q.Attribute("КодРодителя").Value == componentID); foreach (var specRow in specRows) { if (specRow.Attribute("СчитатьВПлане").Value == "true") { var rowID = specRow.Attribute("Код").Value; var discipRow = AddWTPROW(specRow, wtpComponent2); //var discipRow = AddWTPROW(chosenRow, wtpComponent2, SpecializationID); var rowValues = StudyPlan.Descendants(XmlConst.NewHours).Where(q => q.Attribute("КодОбъекта").Value == rowID); AddWTPROWValues(rowValues, discipRow); } else { continue; } //else continue; //var rowID = specRow.Attribute("Код").Value; //var discipRow = AddWTPROW(specRow, wtpComponent2); //var rowValues = StudyPlan.Descendants(XmlConst.NewHours).Where(q => q.Attribute("КодОбъекта").Value == rowID); //AddWTPROWValues(plan, rowValues, discipRow); } } else if (planRow.Attribute("ТипОбъекта").Value == "5" & (planRow.Attribute("КодООП").Value == SpecializationIDFromFile | planRow.Attribute("КодООП").Value == SpecialityIDFromFile)) { //дисциплины по выбору int VariationID; using (SqlConnection conn = ServerHelper.ConnectionHelper.GetConnection()) { SqlDataAdapter adapter = new SqlDataAdapter(); conn.Open(); SqlCommand command = new SqlCommand("SPU_WTPVARIATION_NEXTVALUE_SEL", conn); command.CommandType = CommandType.StoredProcedure; adapter.SelectCommand = command; VariationID = Convert.ToInt32(command.ExecuteScalar()); conn.Close(); } var chosenRows = StudyPlan.Descendants(XmlConst.Rows).Where(q => q.Attribute("УровеньВложения").Value == "2").Where(q => q.Attribute("КодРодителя").Value == planRow.Attribute("Код").Value); foreach (var chosenRow in chosenRows) { if (chosenRow.Attribute("СчитатьВПлане").Value == "true") { var rowID = chosenRow.Attribute("Код").Value; var discipRow = AddWTPROW(chosenRow, wtpComponent2, VariationID); //var discipRow = AddWTPROW(chosenRow, wtpComponent2, SpecializationID); var rowValues = StudyPlan.Descendants(XmlConst.NewHours).Where(q => q.Attribute("КодОбъекта").Value == rowID); AddWTPROWValues(rowValues, discipRow); } else { continue; } } } else if (planRow.Attribute("ТипОбъекта").Value == "3" & (planRow.Attribute("КодООП").Value == SpecializationIDFromFile | planRow.Attribute("КодООП").Value == SpecialityIDFromFile)) { //практики var rowID = planRow.Attribute("Код").Value; var practiceRow = AddWTPROW(planRow, wtpComponent2); // добавить значения часов практики var rowValues = StudyPlan.Descendants(XmlConst.NewHours).Where(q => q.Attribute("КодОбъекта").Value == rowID).Where(r => r.Attribute("КодТипаЧасов").Value == "1"); var ZE = int.Parse(rowValues.Where(r => r.Attribute("КодВидаРаботы").Value == "50").Select(r => r.Attribute("Количество").Value).First()); IWTPPRACTICE newPractice = presenter.CreateNewPractice(); newPractice.WTPPRACTICE_WEEKSCOUNT = (long)Math.Round(ZE / 1.5); //позже изменить string PracticeType = StudyPlan.Descendants(XmlConst.PracticeCatalog).Where(q => q.Attribute("Код").Value == planRow.Attribute("ВидПрактики").Value).Select(q => q.Attribute("Наименование").Value).First(); newPractice.TYPEPRACTICE_ID = presenter.GetTypePracticeIDByName(PracticeType); var practice = presenter.AddPractice(newPractice, practiceRow); AddWTPROWValues(rowValues, practiceRow); } } } } else { IEnumerable <XElement> planRows = StudyPlan.Descendants(XmlConst.Rows).Where(q => q.Attribute("УровеньВложения").Value == "1").Where(q => q.Attribute("КодБлока").Value == parentCycleID); foreach (var planRow in planRows) { if (planRow.Attribute("СчитатьВПлане").Value == "true") { if (planRow.Attribute("ТипОбъекта").Value == "6" & (planRow.Attribute("КодООП").Value == SpecializationIDFromFile | planRow.Attribute("КодООП").Value == SpecialityIDFromFile)) //государственная итоговая аттестация { var rowID = planRow.Attribute("Код").Value; var diplomaRow = AddWTPROW(planRow, wtpComponent); var rowValues = StudyPlan.Descendants(XmlConst.NewHours).Where(q => q.Attribute("КодОбъекта").Value == rowID); AddWTPROWValues(rowValues, diplomaRow); } else if (planRow.Attribute("ТипОбъекта").Value == "2") //факультативы { var rowID = planRow.Attribute("Код").Value; var diplomaRow = AddWTPROW(planRow, wtpComponent); var rowValues = StudyPlan.Descendants(XmlConst.NewHours).Where(q => q.Attribute("КодОбъекта").Value == rowID); AddWTPROWValues(rowValues, diplomaRow); } } else { continue; } } } } //импорт календарного учебного графика //int maxCourse = int.Parse(StudyPlan.Descendants("{http://tempuri.org/dsMMISDB.xsd}Заезды").Last().Attribute("Курс").Value); //for (int i = 1; i <= maxCourse; i++) //{ // IEnumerable<XElement> graphValues = StudyPlan.Descendants(XmlConst.Graph).Where(q => q.Attribute("Курс").Value == i.ToString()); // foreach (XElement graphValue in graphValues) // { // int semestr = (int.Parse(graphValue.Attribute("Курс").Value) - 1) * 2 + int.Parse(graphValue.Attribute("Семестр").Value); // int weekNumber = int.Parse(graphValue.Attribute("НомерНедели").Value); // long typeActivity = presenter.GetTypeActivityIDByCode(int.Parse(graphValue.Attribute("КодВидаДеятельности").Value)); //написать метод в презентере для поиска по коду деятельности // var newValue = presenter.CreateNewGraphValue(); // newValue.CALENDARGRAPHVALUES_SEMNUM = semestr; // //newValue.CALENDARGRAPHVALUES_WEEK = weekNumber; // newValue.CALENDARGRAPHVALUES_ID = typeActivity; // var graph = presenter.AddGraphValue(newValue);//написать метод в презентере для добавления значений графика // } //} Save(); return(true); }
public void AddComponent(WTPComponent ParentComponent) { IWTPCOMPONENT newRow = DbManager.CreateRow <IWTPCOMPONENT>(); AddComponent(newRow, ParentComponent); }
public IWTPCOMPONENT CreateNewComponent() { IWTPCOMPONENT newRow = DbManager.CreateRow <IWTPCOMPONENT>(); return(newRow); }
/// <summary> /// Заполнение строки /// </summary> /// <param name="row">Строка</param> /// <param name="ROWCHAIR_ID">Идентификатор дисциплины в нагрузке на кафедру</param> /// <param name="Name">Название дисциплины</param> /// <param name="SpecNumb">Шифр специальности</param> /// <param name="Chanded">Изменение</param> /// <param name="Notes">Примечания</param> public void FillRow(IWTPCOMPONENT row) { row.WTPCOMPONENT_ID = null; row.WTP_ID = Wtp.DataRow.WTP_ID; }