예제 #1
0
        /// <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);
        }
예제 #2
0
        public WTPComponent AddComponent(IWTPCOMPONENT row, WTPComponent ParentComponent)
        {
            Plan.Components.FillRow(row);
            WTPComponent newComponent = Plan.Components.Add(row, false);

            newComponent.Parent = ParentComponent;
            return(newComponent);
        }
예제 #3
0
        private WTPComponent CreateComponent(Hashtable WTPs, IWTPCOMPONENT WTPComponent)
        {
            Wtp plan = (Wtp)WTPs[WTPComponent.WTP_ID.Value];

            WTPComponent newComponent = plan.Components.Add(WTPComponent, true);

            return(newComponent);
        }
예제 #4
0
        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);
        }
예제 #5
0
        public void AddComponent(WTPComponent ParentComponent)
        {
            IWTPCOMPONENT newRow = DbManager.CreateRow <IWTPCOMPONENT>();

            AddComponent(newRow, ParentComponent);
        }
예제 #6
0
        public IWTPCOMPONENT CreateNewComponent()
        {
            IWTPCOMPONENT newRow = DbManager.CreateRow <IWTPCOMPONENT>();

            return(newRow);
        }
예제 #7
0
 /// <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;
 }