// GET: Classes public ActionResult Show() { var classes = ClassesRepository.GetClasses(); var vm = new ClassesViewModel() { AllClasses = classes }; return(View(vm)); }
private static void WriteSubjectStats(Application oXL, int semester) { var classes = ClassesRepository.GetClasses(); classes.Reverse(); int y = 1; int count = 1; foreach (var cl in classes) { Microsoft.Office.Interop.Excel.Worksheet newWorksheet; newWorksheet = (Microsoft.Office.Interop.Excel.Worksheet)oXL.Application.Worksheets.Add(); newWorksheet.Name = cl.Number + DB.ConvertClassLetter(cl.Letter); newWorksheet.Range[newWorksheet.Cells[2, 1], newWorksheet.Cells[2, 10]].Merge(); newWorksheet.Cells[2, 1] = cl.Number + DB.ConvertClassLetter(cl.Letter); for (int p = 0; p <= 1; p++) { int totalIzpitani = 0; int total2 = 0; int total3 = 0; int total4 = 0; int total5 = 0; int total6 = 0; int totalNeizpitani = 0; double totalAverage = 0; int totalGrades = 0; int tableHeadersX = x - 2; int tableHeadersY = y; var stats = Helpers.StatsHelpers.GetSubjectsStats(semester, cl.Id, Convert.ToBoolean(p)); newWorksheet.Range[newWorksheet.Cells[x - 3, 1], newWorksheet.Cells[x - 3, 10]].Merge(); if (p == 0) { newWorksheet.Cells[x - 3, tableHeadersY] = "ЗАДЪЛЖИТЕЛНА И ПРОФИЛИРАНА ПОДГОТОВКА"; } else { newWorksheet.Cells[x - 3, tableHeadersY] = "ЗАДЪЛЖИТЕЛНОИЗБИРАЕМА ПОДГОТОВКА"; } newWorksheet.Range[newWorksheet.Cells[tableHeadersX, tableHeadersY], newWorksheet.Cells[tableHeadersX + 1, tableHeadersY]].Merge(); newWorksheet.Cells[tableHeadersX, tableHeadersY] = "№"; tableHeadersY++; newWorksheet.Range[newWorksheet.Cells[tableHeadersX, tableHeadersY], newWorksheet.Cells[tableHeadersX + 1, tableHeadersY]].Merge(); newWorksheet.Cells[tableHeadersX, tableHeadersY] = "Предмет"; tableHeadersY++; newWorksheet.Range[newWorksheet.Cells[tableHeadersX, tableHeadersY], newWorksheet.Cells[tableHeadersX + 1, tableHeadersY]].Merge(); newWorksheet.Cells[tableHeadersX, tableHeadersY] = "Изпитани"; tableHeadersY++; newWorksheet.Range[newWorksheet.Cells[tableHeadersX, tableHeadersY], newWorksheet.Cells[tableHeadersX, tableHeadersY + 4]].Merge(); newWorksheet.Cells[tableHeadersX, tableHeadersY] = "Оценки"; newWorksheet.Cells[tableHeadersX + 1, tableHeadersY] = "2"; tableHeadersY++; newWorksheet.Cells[tableHeadersX + 1, tableHeadersY] = "3"; tableHeadersY++; newWorksheet.Cells[tableHeadersX + 1, tableHeadersY] = "4"; tableHeadersY++; newWorksheet.Cells[tableHeadersX + 1, tableHeadersY] = "5"; tableHeadersY++; newWorksheet.Cells[tableHeadersX + 1, tableHeadersY] = "6"; tableHeadersY++; newWorksheet.Range[newWorksheet.Cells[tableHeadersX, tableHeadersY], newWorksheet.Cells[tableHeadersX + 1, tableHeadersY]].Merge(); newWorksheet.Cells[tableHeadersX, tableHeadersY] = "Неизпитани"; tableHeadersY++; newWorksheet.Range[newWorksheet.Cells[tableHeadersX, tableHeadersY], newWorksheet.Cells[tableHeadersX + 1, tableHeadersY]].Merge(); newWorksheet.Cells[tableHeadersX, tableHeadersY] = "Среден успех"; tableHeadersY++; newWorksheet.Range[newWorksheet.Cells[tableHeadersX - 1, 1], newWorksheet.Cells[tableHeadersX + 1, 10]].Font.Bold = true; foreach (var subject in stats) { newWorksheet.Cells[x, y] = count; y++; newWorksheet.Cells[x, y] = subject.Subject.Title; y++; newWorksheet.Cells[x, y] = subject.StudentsWithGrades; totalIzpitani += subject.StudentsWithGrades; y++; for (int i = 2; i <= 6; i++) { newWorksheet.Cells[x, y] = subject.Grades.Where(g => g.Grade1 == i).Count(); y++; } int studentsWithoutGrades = subject.AllStudents - subject.StudentsWithGrades; newWorksheet.Cells[x, y] = studentsWithoutGrades; totalNeizpitani += studentsWithoutGrades; y++; newWorksheet.Cells[x, y] = Math.Round(subject.Average, 2); if (subject.Average != 0) { totalAverage += subject.Average; totalGrades++; } x++; y = 1; count++; } newWorksheet.Cells[x, 2] = "Всичко"; newWorksheet.Cells[x, 3] = totalIzpitani; newWorksheet.Cells[x, 4] = total2; newWorksheet.Cells[x, 5] = total3; newWorksheet.Cells[x, 6] = total4; newWorksheet.Cells[x, 7] = total5; newWorksheet.Cells[x, 8] = total6; newWorksheet.Cells[x, 9] = totalNeizpitani; newWorksheet.Cells[x, 10] = Math.Round(totalAverage / totalGrades, 2); newWorksheet.Range[newWorksheet.Cells[tableHeadersX - 1, 1], newWorksheet.Cells[x, 10]].Borders.LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous; count = 1; x += 5; y = 1; } x -= 5; WriteAttendanceStats(newWorksheet, semester, cl.Id); if (cl.Teachers.Count() != 0) { x += 2; newWorksheet.Cells[x, 1] = "Класен ръководител"; newWorksheet.Cells[x, 2] = cl.Teachers.FirstOrDefault().Name; newWorksheet.Range[newWorksheet.Cells[x, 1], newWorksheet.Cells[x, 2]].Font.Bold = true; newWorksheet.Range[newWorksheet.Cells[x, 1], newWorksheet.Cells[x, 2]].Borders.LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous; } newWorksheet.get_Range("A1", "Q200").VerticalAlignment = Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter; newWorksheet.get_Range("A1", "Q200").HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter; newWorksheet.get_Range("A1", "Q200").Columns.AutoFit(); newWorksheet.get_Range("A1", "Q200").Rows.AutoFit(); x = 7; y = 1; count = 1; } }