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; } }
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); }
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); }