public ActionResult Create() { // Δημιουργία νέας δήλωσης var userId = userManager.GetUserId(HttpContext.User); var student = context.Students.Include(s => s.ApplicationUser).FirstOrDefault(u => u.UserId == userId); var academicperiod = context.AcademicPeriods.Where(ap => ap.Current == true).Where(ap => ap.OpenEnrollment == true).FirstOrDefault(); if (academicperiod == null) { TempData["ErrorMessage"] = "Δεν μπορείς να δημιουργήσεις νέα δήλωση. Η περίοδος δηλώσεων τελείωσε."; return(RedirectToAction("Index", "Enrollment")); } var enrollmentExists = context.Enrollments .Where(ap => ap.StudentId == student.Id) .Where(ap => ap.AcademicPeriodId == academicperiod.Id) .FirstOrDefault(); if (enrollmentExists != null) { return(RedirectToAction("Edit", "Enrollment", new { @id = enrollmentExists.Id })); } var courses = context.Courses .Include(c => c.Direction) .Where(e => e.Semester == academicperiod.SemesterNum).ToList() .Except(from c in context.Courses join g in context.Grades on c.Id equals g.CourseId join e in context.Enrollments on g.EnrollmentId equals e.Id where e.StudentId == student.Id where g.Value >= 5 select c).ToList(); var checkedcourses = new List <CheckCourseViewModel>(); foreach (var course in courses) { checkedcourses.Add(new CheckCourseViewModel() { Course = course, Checked = false //On the Create view, no courses are selected by default }); } EnrollmentFormViewModel enrollmentformViewModel = new EnrollmentFormViewModel { Student = student, AcademicPeriod = academicperiod, Courses = checkedcourses }; return(View("EnrollmentForm", enrollmentformViewModel)); }
public async Task <IActionResult> EditByStudent(int id, EnrollmentFormViewModel vm) { if (id != vm.Id) { return(NotFound()); } if (ModelState.IsValid) { try { string uniqueFileName = UploadedFile(vm); Enrollment enrollment = new Enrollment { Id = vm.Id, Semester = vm.Semester, Year = vm.Year, Grade = vm.Grade, SeminalUrl = uniqueFileName, ProjectUrl = vm.ProjectUrl, SeminalPoints = vm.SeminalPoints, ProjectPoints = vm.ProjectPoints, AdditionalPoints = vm.AdditionalPoints, ExamPoints = vm.ExamPoints, FinishDate = vm.FinishDate, CourseId = vm.CourseId, StudentId = vm.StudentId }; _context.Update(enrollment); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!EnrollmentExists(vm.Id)) { return(NotFound()); } else { throw; } } return(RedirectToAction("Details", new { id = vm.Id })); } ViewData["CourseId"] = new SelectList(_context.Course, "Id", "Title", vm.CourseId); ViewData["StudentId"] = new SelectList(_context.Student, "Id", "FullName", vm.StudentId); return(View(vm)); }
private string UploadedFile(EnrollmentFormViewModel model) { string uniqueFileName = null; if (model.SeminalUrl != null) { string uploadsFolder = Path.Combine(_webHostEnvironment.WebRootPath, "seminalFiles"); uniqueFileName = Guid.NewGuid().ToString() + "_" + Path.GetFileName(model.SeminalUrl.FileName); string filePath = Path.Combine(uploadsFolder, uniqueFileName); using (var fileStream = new FileStream(filePath, FileMode.Create)) { model.SeminalUrl.CopyTo(fileStream); } } return(uniqueFileName); }
public async Task <IActionResult> EditByStudent(int?id) { if (id == null) { return(NotFound()); } var enrollment = await _context.Enrollment.FindAsync(id); if (enrollment == null) { return(NotFound()); } AppUser loggedUser = await userManager.GetUserAsync(User); if (loggedUser.StudentId != enrollment.StudentId) { return(RedirectToAction("AccessDenied", "Account", null)); } ViewData["CourseId"] = new SelectList(_context.Course, "Id", "Title", enrollment.CourseId); ViewData["StudentId"] = new SelectList(_context.Student, "Id", "FullName", enrollment.StudentId); EnrollmentFormViewModel vm = new EnrollmentFormViewModel { Id = enrollment.Id, Semester = enrollment.Semester, Year = enrollment.Year, Grade = enrollment.Grade, ProjectUrl = enrollment.ProjectUrl, SeminalPoints = enrollment.SeminalPoints, ProjectPoints = enrollment.ProjectPoints, AdditionalPoints = enrollment.AdditionalPoints, ExamPoints = enrollment.ExamPoints, FinishDate = enrollment.FinishDate, CourseId = enrollment.CourseId, StudentId = enrollment.StudentId }; ViewData["StudentName"] = _context.Student.Where(s => s.Id == enrollment.StudentId).Select(s => s.FullName).FirstOrDefault(); ViewData["CourseName"] = _context.Course.Where(s => s.Id == enrollment.CourseId).Select(s => s.Title).FirstOrDefault(); return(View(vm)); }
public IActionResult Save(EnrollmentFormViewModel efvm) { if (!ModelState.IsValid) { var message = string.Join(" | ", ModelState.Values .SelectMany(v => v.Errors) .Select(e => e.ErrorMessage)); TempData["ErrorMessage"] = "Κάτι πήγε στραβά: " + message + " . Παρακαλώ δοκιμάστε ξανά αργότερα."; return(RedirectToAction("Index", "Enrollment")); } if (efvm.Id == 0) { Enrollment enrollmentInDb = new Enrollment { StudentId = efvm.Student.Id, AcademicPeriodId = efvm.AcademicPeriod.Id, DateAdded = DateTime.Today }; try { context.Enrollments.Add(enrollmentInDb); context.SaveChanges(); } catch (Exception ex) { TempData["ErrorMessage"] = ex.Message; } var selectedCourses = efvm.Courses.Where(ef => ef.Checked).Select(ef => ef.Course.Id).ToList(); var enrollment = context .Enrollments .Where(e => e.StudentId == enrollmentInDb.StudentId) .Where(e => e.AcademicPeriodId == enrollmentInDb.AcademicPeriodId) .Single(); foreach (var course in selectedCourses) { Grade grade = new Grade { CourseId = course, EnrollmentId = enrollment.Id }; context.Grades.Add(grade); } } else { var enrollment = context.Enrollments.FirstOrDefault(e => e.Id == efvm.Id); if (enrollment == null) { TempData["ErrorMessage"] = "Η Δήλωση δε βρέθηκε!"; return(RedirectToAction("Index", "Enrollment")); } context.Grades.RemoveRange(context.Grades.Where(g => g.EnrollmentId == efvm.Id)); context.SaveChanges(); var selectedCourses = efvm.Courses.Where(ef => ef.Checked).Select(ef => ef.Course.Id).ToList(); foreach (var course in selectedCourses) { Grade grade = new Grade { CourseId = course, EnrollmentId = enrollment.Id }; context.Grades.Add(grade); } } try { context.SaveChanges(); TempData["SuccessMessage"] = "Η Δήλωση στάλθηκε στη Γραμματεία."; } catch (Exception ex) { TempData["ErrorMessage"] = "Κάτι πήγε στραβά: " + ex.Message + " " + ex.InnerException + " . Παρακαλώ δοκιμάστε ξανά αργότερα."; } return(RedirectToAction("Index", "Enrollment")); }
public ActionResult Edit(int id) { // Ενημέρωση δήλωσης var en = context.Enrollments.FirstOrDefault(e => e.Id == id); if (en == null) { TempData["ErrorMessage"] = "Η Δήλωση δε βρέθηκε"; return(RedirectToAction("Index", "Enrollment")); } var userId = userManager.GetUserId(HttpContext.User); var student = context.Students.Include(s => s.ApplicationUser).FirstOrDefault(u => u.UserId == userId); var academicperiod = context.AcademicPeriods.Where(ap => ap.Current == true).Where(ap => ap.OpenEnrollment == true).FirstOrDefault(); if (academicperiod == null) { TempData["ErrorMessage"] = "Δεν μπορείς να ενημερώσεις αυτή τη δήλωση. Η περίοδος δηλώσεων τελείωσε."; return(RedirectToAction("Index", "Enrollment")); } var courses = context.Courses .Include(c => c.Direction) .Where(e => e.Semester == academicperiod.SemesterNum).ToList() .Except(from c in context.Courses join g in context.Grades on c.Id equals g.CourseId join e in context.Enrollments on g.EnrollmentId equals e.Id where e.StudentId == student.Id where g.Value >= 5 select c).ToList(); var selectedcourses = (from c in context.Courses join g in context.Grades on c.Id equals g.CourseId join e in context.Enrollments on g.EnrollmentId equals e.Id where e.Id == id select c).ToList(); var checkedcourses = new List <CheckCourseViewModel>(); foreach (var course in courses) { checkedcourses.Add(new CheckCourseViewModel() { Course = course, Checked = selectedcourses.Where(x => x.Id == course.Id).Any() }); } EnrollmentFormViewModel enrollmentformViewModel = new EnrollmentFormViewModel { Id = id, Student = student, AcademicPeriod = academicperiod, Courses = checkedcourses }; return(View("EnrollmentForm", enrollmentformViewModel)); }