Esempio n. 1
0
        public void AddOrUpdateDisciplineYear(DisciplineYear disYear)
        {
            using (var scope = Db.BeginWork())
            {
                var discipline = disYear.Discipline;
                if (discipline != null)
                {
                    disYear.DisciplineId = discipline.Id;
                }
                disYear.Discipline = null;

                _disciplineYearRepository.AddOrUpdate(disYear);
                scope.SaveChanges();

                disYear.Discipline = discipline;
            }
        }
Esempio n. 2
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);
        }
Esempio n. 3
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);
        }