示例#1
0
        public bool CheckImportFile(Wtp plan, XDocument xdoc, out string errorMessage)
        {
            var StudyPlan      = xdoc.Root.Element(XmlConst.diffgram).Element(XmlConst.dsMMISDB);
            var SpecialityCode = StudyPlan.Element(XmlConst.OOP).Attribute("Шифр").Value;
            var ModeEducID     = StudyPlan.Element(XmlConst.Plans).Attribute("КодФормыОбучения").Value;
            var StudYearID     = WtpPresenter.GetStudYearIDByYear(StudyPlan.Element(XmlConst.Plans).Attribute("ГодНачалаПодготовки").Value);

            errorMessage = "Не совпадает";
            bool error = false;

            //if(plan.DataRow.SPECIALITY_NUMB != SpecialityCode.Trim())  //поправить ошибку
            //{
            //    errorMessage += " код специальности,";
            //    error = true;
            //}

            if (plan.DataRow.MODEEDUC_ID != Convert.ToInt64(ModeEducID))
            {
                errorMessage += " форма обучения,";
                error         = true;
            }

            var FormEduc = StudyPlan.Element(XmlConst.Plans).Attribute("Сокращённое").Value;

            if (plan.DataRow.FORMEDUC_ID != ImportConverter.GetFormEducId(FormEduc))
            {
                errorMessage += " полный или сокращенный срок обучения,";
                error         = true;
            }
            errorMessage = errorMessage.TrimEnd(',') + ".";

            return(error);
        }
示例#2
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);
        }
示例#3
0
        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();

            if (ofd.ShowDialog() != DialogResult.OK)
            {
                return;
            }

            var SpecialFaculty = 1231;
            //var Speciality = 50;
            var StudYear          = 22;
            var FormEduc          = 1;
            var ModeEduc          = 1;
            var StudYearIDVersion = 22;


            //var WTP = DBManager.GetDataSourse<IWTP>().Rows.Cast<IWTP>().
            //     Where(r => r.SPECIALFACULTY_ID == SpecialFaculty).
            //     Where(r => r.STUDYEAR_ID == StudYear).
            //     Where(r => r.FORMEDUC_ID == FormEduc).
            //     Where(r => r.MODEEDUC_ID == ModeEduc).
            //     Where(r => r.STUDYEAR_ID_VERSION == StudYearIDVersion);

            WtpPresenter planPresenter = new WtpPresenter();

            //if (WTP.Count() == 0) { }
            //{

            if (WTP_ID == null)
            {
                Wtp plan = planPresenter.CreateWtp();
                plan.DataRow.SPECIALFACULTY_ID = 1231;
                //plan.DataRow.SPECIALITY_ID = 50;
                plan.DataRow.STUDYEAR_ID         = 22;
                plan.DataRow.FORMEDUC_ID         = 1;
                plan.DataRow.MODEEDUC_ID         = 1;
                plan.DataRow.STUDYEAR_ID_VERSION = 22;
                planPresenter.Save();
                WTP_ID = (long)plan.DataRow.WTP_ID;
            }
            else
            {
                planPresenter.Load((long)WTP_ID);
                var plan = planPresenter.Plan;
            }



            ImportPlanExample importer = new ImportPlanExample();
            XDocument         xdoc     = XDocument.Load(ofd.FileName);


            //planPresenter.Load(1297);
            if (importer.CheckImportFile(planPresenter.Plan, xdoc, out string ErrorMessage))
            {
                if (MessageBox.Show(ErrorMessage + " Продолжить?", "Импорт УП", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.Cancel)
                {
                    return;
                }
            }

            if (!importer.Import(planPresenter, xdoc, out string ErrorMessage2))
            {
                MessageBox.Show(ErrorMessage);
            }
        }