Exemplo n.º 1
0
        private static void ExportNotAssign(DisciplineWorkload disciplineWorkload, Worksheet sheet, Dictionary <Worksheet, int> rowCounters, int countStud)
        {
            sheet.Cells[rowCounters[sheet], 1]  = rowCounters[sheet] - 5;
            sheet.Cells[rowCounters[sheet], 2]  = disciplineWorkload.DisciplineYear.Discipline.Name;
            sheet.Cells[rowCounters[sheet], 3]  = disciplineWorkload.Group.Speciality.Name;
            sheet.Cells[rowCounters[sheet], 5]  = disciplineWorkload.Group.StudyForm == StudyForm.FullTime ? "о" : "з";
            sheet.Cells[rowCounters[sheet], 4]  = disciplineWorkload.Group.Speciality.Faculty.ShortName;
            sheet.Cells[rowCounters[sheet], 6]  = disciplineWorkload.Semester.Number;
            sheet.Cells[rowCounters[sheet], 7]  = countStud;
            sheet.Cells[rowCounters[sheet], 8]  = disciplineWorkload.Semester.CountOfWeeks;
            sheet.Cells[rowCounters[sheet], 11] = disciplineWorkload.DisciplineYear.CountOfLecture;
            sheet.Cells[rowCounters[sheet], 12] = disciplineWorkload.DisciplineYear.CountOfPractice;
            sheet.Cells[rowCounters[sheet], 13] = disciplineWorkload.DisciplineYear.CountOfLabs;
            sheet.Cells[rowCounters[sheet], 14] = disciplineWorkload.DisciplineYear.HasEx ? "1" : "";
            sheet.Cells[rowCounters[sheet], 15] = disciplineWorkload.DisciplineYear.HasCR ? "+" : "";
            //sheet.Cells[rowCounters[sheet], 16] = Convert.ToBoolean(reader[15]) ? "1" : "";
            sheet.Cells[rowCounters[sheet], 17] = disciplineWorkload.DisciplineYear.HasKR ? "1" : "";
            sheet.Cells[rowCounters[sheet], 18] = disciplineWorkload.DisciplineYear.HasKP ? "1" : "";
            //sheet.Cells[rowCounters[sheet], 22] = Convert.ToBoolean(reader[33]) ? "1" : "";//нир
            sheet.Cells[rowCounters[sheet], 19 + 23] = disciplineWorkload.DisciplineYear.CountOfLearnigPracticeWeeks != 0 ? disciplineWorkload.DisciplineYear.CountOfLearnigPracticeWeeks * CalculationSettings.Default.UchPr : 0;                 //уч пр.
            sheet.Cells[rowCounters[sheet], 20 + 23] = disciplineWorkload.DisciplineYear.CountOfManufacturePracticeWeeks != 0 ? disciplineWorkload.DisciplineYear.CountOfManufacturePracticeWeeks * CalculationSettings.Default.PrPr : 0;          //пр пр.
            sheet.Cells[rowCounters[sheet], 21 + 23] = disciplineWorkload.DisciplineYear.CountOfUndergraduatePracticeWeeks != 0 ? disciplineWorkload.DisciplineYear.CountOfUndergraduatePracticeWeeks * CalculationSettings.Default.PreddipPr : 0; //преддип пр.
            sheet.Cells[rowCounters[sheet], 22 + 23] = disciplineWorkload.DisciplineYear.CountOfNIIR != 0 ? (disciplineWorkload.DisciplineYear.CountOfNIIR) * CalculationSettings.Default.NIIR * countStud : 0;                                    //нир
            ((Range)(sheet.Cells[rowCounters[sheet], 24 + 23])).Value = disciplineWorkload.DisciplineYear.Discipline.SpecialType == SpecialDisciplineKind.GEK ? (CalculationSettings.Default.GEK * countStud) : 0;                                 //ГЭК.
            sheet.Cells[rowCounters[sheet], 25 + 23] = disciplineWorkload.DisciplineYear.Discipline.SpecialType == SpecialDisciplineKind.GAK ? (CalculationSettings.Default.GAK * countStud) : 0;                                                  //ГAК.
            sheet.Cells[rowCounters[sheet], 26 + 23] = disciplineWorkload.DisciplineYear.Discipline.SpecialType == SpecialDisciplineKind.GAK_PRED ? (CalculationSettings.Default.GAKPred * countStud) : 0;                                         //ГAКпред.
            sheet.Cells[rowCounters[sheet], 27 + 23] = disciplineWorkload.DisciplineYear.Discipline.SpecialType == SpecialDisciplineKind.BAK_RUK ? (CalculationSettings.Default.DPruk * countStud) : 0;
            sheet.Cells[rowCounters[sheet], 28 + 23] = disciplineWorkload.DisciplineYear.Discipline.SpecialType == SpecialDisciplineKind.MAG_RETZ ? (CalculationSettings.Default.MagRetz * countStud).ToString() : "";                             //рец дисс.

            /*string disciplineName = reader[4].ToString();
             * if (disciplineName.ToLower().Contains("норм") && disciplineName.ToLower().Contains("маг"))
             *  sheet.Cells[rowCounters[sheet], 32 + 23] = countStud * ApplicationSettings.CalculationSettings.NormocontrolMag;
             * if (disciplineName.ToLower().Contains("доп") && disciplineName.ToLower().Contains("маг"))
             *  sheet.Cells[rowCounters[sheet], 32 + 23] = countStud * ApplicationSettings.CalculationSettings.DopuskDissMag;*/
            sheet.Cells[rowCounters[sheet], 32 + 23] = disciplineWorkload.DisciplineYear.Discipline.SpecialType == SpecialDisciplineKind.MAG_RUK ? (CalculationSettings.Default.MAGRuk * countStud).ToString() : "";//рук маг
            //sheet.Cells[rowCounters[sheet], 31 + 23] = Convert.ToBoolean(reader[29]) ? (countStud * ApplicationSettings.CalculationSettings.AspRuk) : 0f;

            /*if (disciplineName.ToLower().Contains("норм") && disciplineName.ToLower().Contains("маг"))
             *  sheet.Cells[rowCounters[sheet], 32 + 23] = countStud * ApplicationSettings.CalculationSettings.NormocontrolMag;
             * if (disciplineName.ToLower().Contains("доп") && disciplineName.ToLower().Contains("маг"))
             *  sheet.Cells[rowCounters[sheet], 32 + 23] = countStud * ApplicationSettings.CalculationSettings.DopuskDissMag;*/
            rowCounters[sheet]++;
        }
Exemplo n.º 2
0
        public void AddOrUpdateDisciplineWorkload(DisciplineWorkload workload)
        {
            using (var scope = Db.BeginWork())
            {
                var discipline = workload.DisciplineYear;
                if (discipline != null)
                {
                    workload.DisciplineYearId = discipline.Id;
                }
                workload.DisciplineYear = null;

                var group = workload.Group;
                if (group != null)
                {
                    workload.GroupId = group.Id;
                }
                workload.Group = null;

                var semester = workload.Semester;
                if (semester != null)
                {
                    workload.SemesterId = semester.Id;
                }
                workload.Semester = null;

                var studyYear = workload.StudyYear;
                if (studyYear != null)
                {
                    workload.StudyYearId = studyYear.Id;
                }
                workload.StudyYear = null;

                _disciplineWorkloadRepository.AddOrUpdate(workload);
                scope.SaveChanges();

                workload.DisciplineYear = discipline;
                workload.Group          = group;
                workload.Semester       = semester;
                workload.StudyYear      = studyYear;
            }
        }
Exemplo n.º 3
0
        public NormalizedWorkload(DisciplineWorkload disciplineWorkload)
        {
            var year      = disciplineWorkload.DisciplineYear;
            var students  = disciplineWorkload.Group.CountOfStudents;
            var weeks     = disciplineWorkload.Semester.CountOfWeeks;
            var settings  = Properties.CalculationSettings.Default;
            var studyForm = disciplineWorkload.Group.StudyForm;

            LectureCost  = year.CountOfLecture * weeks * settings.LectureCost;
            PracticeCost = year.CountOfPractice * weeks * settings.PracticeCost;
            LabsCost     = year.CountOfLabs * weeks * settings.LabCost;

            LearningConsultationCost = year.CountOfLecture * weeks * settings.KonsCost;
            if (studyForm != StudyForm.FullTime)
            {
                LearningConsultationCost *= 3;
            }
            ExamConsultationCost = year.HasEx ? settings.ExamConsCost : 0;

            //ExamControlCost = studyForm.FullTime? students * settings.ExamControlCost : students * settings.RGR;
            //Откуда 0.4f???
            ExamControlCost = year.HasEx ? (studyForm == StudyForm.FullTime ? students * settings.ExamControlCost : students * 0.4f):0;
            ZachControlCost = year.HasCR ? students * settings.ZachCost:0;

            KRControlCost = year.HasKR? settings.KRCost * students:0;
            KPControlCost = year.HasKP ? settings.KPCost * students : 0;


            switch (year.Discipline.SpecialType)
            {
            case SpecialDisciplineKind.GEK:
                GEKControlCost = year.Discipline.SpecialType == SpecialDisciplineKind.GEK ? settings.GEK * students : 0;
                break;

            case SpecialDisciplineKind.MAG_RETZ:
                RetzMagDissCost = settings.MagRetz * students;
                break;

            case SpecialDisciplineKind.GAK:
                GAKControlCost = settings.GAK * students;
                break;

            /* case SpecialDisciplineKind.LearningPractice:
             *   LearningPracticeCost = settings.UchPr * year.CountOfLearnigPracticeWeeks;
             *   break;
             * case SpecialDisciplineKind.ManufacturePractice:
             *   LearningPracticeCost = settings.PrPr * year.CountOfManufacturePracticeWeeks;
             *   break;
             * case SpecialDisciplineKind.UndergraduatePractice:
             *   LearningPracticeCost = settings.PreddipPr * students;
             *   break;*/
            case SpecialDisciplineKind.BAK_RUK:
                BachelorVKRRukCost = settings.DPruk * students;
                break;

            case SpecialDisciplineKind.MAG_RUK:
                MagistracyVKRRukCost = settings.MAGRuk * students;
                break;

            case SpecialDisciplineKind.ASP_RUK:
                AspNIIRRukCost = settings.AspRuk * students;
                break;

            case SpecialDisciplineKind.RUK_KAF:
                AspNIIRRukCost = settings.RukKaf;
                break;

            default:
                break;
            }
        }
Exemplo n.º 4
0
        public static float GetWorkloadCost(DisciplineWorkload workload)
        {
            DisciplineYear disciplineYear = workload.DisciplineYear;
            Group          group          = workload.Group;
            Semester       semester       = workload.Semester;

            float workloadCost = 0;

            workloadCost += CalculationSettings.Default.LectureCost * disciplineYear.CountOfLecture * semester.CountOfWeeks;
            workloadCost += CalculationSettings.Default.LabCost * disciplineYear.CountOfLabs * semester.CountOfWeeks;
            workloadCost += CalculationSettings.Default.PracticeCost * disciplineYear.CountOfPractice * semester.CountOfWeeks;

            //Расчет консультаций по дисциплине
            if (group.StudyForm == StudyForm.FullTime)//очно
            {
                workloadCost += CalculationSettings.Default.KonsCost * disciplineYear.CountOfLecture * semester.CountOfWeeks;
            }
            else
            {
                workloadCost += CalculationSettings.Default.KonsCost * 3 * disciplineYear.CountOfLecture * semester.CountOfWeeks;
            }
            if (disciplineYear.HasKR)
            {
                workloadCost += CalculationSettings.Default.KRCost * group.CountOfStudents;
            }
            if (disciplineYear.HasKP)
            {
                workloadCost += CalculationSettings.Default.KPCost * group.CountOfStudents;
            }
            if (disciplineYear.HasEx)
            {
                if (group.StudyForm == StudyForm.FullTime)
                {
                    workloadCost += CalculationSettings.Default.ExamControlCost * group.CountOfStudents + 2;
                }
                else
                {
                    workloadCost += 0.4f * group.CountOfStudents + 2;
                }
            }
            if (disciplineYear.HasCR)
            {
                workloadCost += CalculationSettings.Default.ZachCost * group.CountOfStudents;
            }

            workloadCost += CalculationSettings.Default.UchPr * disciplineYear.CountOfLearnigPracticeWeeks;
            workloadCost += CalculationSettings.Default.PrPr * disciplineYear.CountOfManufacturePracticeWeeks;
            workloadCost += CalculationSettings.Default.NIIR * disciplineYear.CountOfNIIR * group.CountOfStudents;
            switch (disciplineYear.Discipline.SpecialType)
            {
            case SpecialDisciplineKind.ASP_RUK:
                workloadCost += CalculationSettings.Default.AspRuk;
                break;

            case SpecialDisciplineKind.GEK:
                workloadCost += CalculationSettings.Default.GEK * group.CountOfStudents * 6;
                break;

            case SpecialDisciplineKind.GAK:
                workloadCost += CalculationSettings.Default.GAK * group.CountOfStudents * 6;
                break;

            case SpecialDisciplineKind.BAK_RUK:
                workloadCost += CalculationSettings.Default.DPruk;
                break;

            default:
                break;
            }

            return(workloadCost);
        }
Exemplo n.º 5
0
        public bool ImportDataFromExcel(string path, int year)
        {
            xlApp       = new Excel.Application();
            xlWorkBook  = xlApp.Workbooks.Open(path, 0, true, 5, "", "", true, Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
            xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
            //Проход по обоим листам
            if (_studyYear == null)
            {
                if (_studyYears.FirstOrDefault(s => s.Year == year) == null)
                {
                    _studyYear = new StudyYear {
                        Year = year
                    }
                }
                ;
                else
                {
                    _studyYear = _studyYears.FirstOrDefault(s => s.Year == year);
                }
            }
            string semester = path.Split('_').LastOrDefault()?.Split('.').FirstOrDefault();

            if (semester == null)
            {
                Log.Add($"ФАТАЛЬНО: В конце имени файла не сожержится информация о номере семестра");
                return(false);
            }
            xlWorkSheet = xlWorkBook.Worksheets[1];
            int counter = Properties.Import.Default.StartRow;

            while (xlWorkSheet.GetCellText(counter, Properties.Import.Default.Department) != "")
            {
                var department = xlWorkSheet.GetCellText(counter, Properties.Import.Default.Department);
                if (department != "ПО")
                {
                    counter++;
                    continue;
                }
                string specialityName = "ПИН.РИС";
                string disciplineName = xlWorkSheet.GetCellText(counter, Properties.Import.Default.Discipline);
                int    lectures       = xlWorkSheet.GetCellText(counter, Properties.Import.Default.Lectures) != "" ? Convert.ToInt32(xlWorkSheet.GetCellText(counter, Properties.Import.Default.Lectures)) : 0;
                int    labs           = xlWorkSheet.GetCellText(counter, Properties.Import.Default.Labs) != "" ? Convert.ToInt32(xlWorkSheet.GetCellText(counter, Properties.Import.Default.Labs)) : 0;
                int    practices      = xlWorkSheet.GetCellText(counter, Properties.Import.Default.Practicies) != "" ? Convert.ToInt32(xlWorkSheet.GetCellText(counter, Properties.Import.Default.Practicies)) : 0;
                bool   kr             = xlWorkSheet.GetCellText(counter, Properties.Import.Default.KR) != "";
                bool   kp             = xlWorkSheet.GetCellText(counter, Properties.Import.Default.KP) != "";
                bool   ekz            = xlWorkSheet.GetCellText(counter, Properties.Import.Default.EKZ) != "";
                bool   zach           = xlWorkSheet.GetCellText(counter, Properties.Import.Default.ZACH) != "";

                Discipline discipline = _allDisciplines.FirstOrDefault(d => d.Name == disciplineName);
                if (discipline == null)
                {
                    discipline = _newDisciplines.FirstOrDefault(d => d.Name == disciplineName);
                    if (discipline == null)
                    {
                        bool         isSpecial = !(kr || kp || ekz || zach);
                        bool         hasWeeks  = lectures + labs + practices != 0;
                        PracticeKind?type      = null;
                        if (!hasWeeks && isSpecial)//выбрасываем всё кроме практик и учебных дисциплин
                        {
                            counter++;
                            continue;
                        }
                        else if (isSpecial)
                        {
                            type = GetSpecial(disciplineName);//определяем тип практики
                        }
                        discipline = new Discipline
                        {
                            Department       = _defaultDepartment,
                            Name             = disciplineName,
                            PracticeType     = type,
                            TypeOfDiscipline = type == null ? DisciplineType.EASY : DisciplineType.PRACTICE
                        };
                        _newDisciplines.Add(discipline);
                        Log.Add($"Неизвестная дисциплина:'[{discipline.Name}]'");
                    }
                }

                DisciplineYear disciplineYear = new DisciplineYear {
                    Discipline = discipline
                };

                disciplineYear.CountOfLecture  = lectures;
                disciplineYear.CountOfPractice = practices;
                disciplineYear.CountOfLabs     = labs;
                disciplineYear.HasKR           = kr;
                disciplineYear.HasKP           = kp;
                disciplineYear.HasEx           = ekz;
                disciplineYear.HasCR           = zach;

                _disciplineYears.Add(disciplineYear);
                int course = 1;
                if (semester != "")
                {
                    course = (int)Math.Ceiling(Convert.ToInt32(semester) / 2f);
                }
                int entryYear = (Convert.ToInt32(year) - course + 1);

                DisciplineWorkload workload = new DisciplineWorkload
                {
                    DisciplineYear = disciplineYear,
                    Semester       = _semesters.FirstOrDefault(s => s.Number == Convert.ToInt32(semester))
                };
                if (workload.Semester == null)
                {
                    Log.Add($"ФАТАЛЬНО: Не найден семестр {semester}. Строка {counter}");
                    return(false);
                }

                workload.StudyYear = _studyYear;
                var gr = _groups.FirstOrDefault(g => g.EntryYear == entryYear && g.Speciality.Name == specialityName);
                if (gr == null)
                {
                    var speciality = _specialities.FirstOrDefault(s => s.Name == specialityName);
                    if (speciality == null)
                    {
                        Log.Add($"ФАТАЛЬНО: Не найдена специальность {specialityName}. Строка {counter}");
                        return(false);
                    }
                    if ((gr = _newGroups.FirstOrDefault(g => g.Speciality == speciality && g.EntryYear == entryYear)) == null)
                    {
                        _newGroups.Add(gr = new Group {
                            EntryYear = entryYear, Name = $"{specialityName}{entryYear}", Speciality = speciality
                        });
                    }
                    Log.Add($"Неизвестная группа {specialityName} поступившая в {entryYear} год. Строка {counter}");
                }
                workload.Group = gr;
                _workloads.Add(workload);
                counter++;
            }


            xlWorkBook.Close(true, misValue, misValue);
            xlApp.Quit();
            ReleaseObject(xlWorkSheet);
            ReleaseObject(xlWorkBook);
            ReleaseObject(xlApp);
            return(true);
        }