Пример #1
0
        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));
        }
Пример #5
0
        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"));
        }
Пример #6
0
        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));
        }