public async Task <IHttpActionResult> RemoveLearner(UpdateLearnerEnrollmentModel model)
        {
            try
            {
                var courseEvent = await db.CourseEvents.FindAsync(model.CourseEventId);

                foreach (var userId in model.UserId)
                {
                    var learner = await db.Learners
                                  .Include(x => x.User)
                                  .FirstOrDefaultAsync(x => x.UserId == userId);

                    if (learner == null)
                    {
                        return(BadRequest("Unable to unenroll learner"));
                    }

                    var enrollment = db.Enrollments.FirstOrDefault(x => x.CourseEventId == courseEvent.Id &&
                                                                   x.LearnerId == learner.Id && x.Status == EnrollmentStatus.Enrolled);

                    if (enrollment == null)
                    {
                        return(BadRequest("Unable to unenroll learner"));
                    }

                    enrollment.Status = EnrollmentStatus.Removed;

                    enrollment.EnrollmentHistories.Add(
                        new EnrollmentHistory
                    {
                        EnrollmentId = enrollment.Id,
                        LearnerId    = learner.Id,
                        Status       = EnrollmentStatus.Removed,
                        Remark       = "Removed from Enrollment"
                    }
                        );

                    db.SetModified(enrollment);
                    db.SaveChanges();
                }

                return(Ok(courseEvent.CourseId.ToString()));
            }
            catch (Exception e)
            {
                return(BadRequest(e.Message));
            }
        }
Exemplo n.º 2
0
        public async Task <ActionResult> RemoveLearner(int CourseId, int CourseEventId, int[] Ids)
        {
            var model = new UpdateLearnerEnrollmentModel
            {
                CourseEventId = CourseEventId,
                UserId        = Ids.ToList()
            };

            var response = await WepApiMethod.SendApiAsync <string>(HttpVerbs.Post, CourseEventApiUrl.RemoveLearner, model);

            if (response.isSuccess)
            {
                TempData["SuccessMessage"] = "User successfully removed from this course.";
                await LogActivity(Modules.Learning, "Remove learner from this course.", model);
            }
            else
            {
                TempData["ErrorMessage"] = "Fail to remove learner to this course.";
            }

            return(RedirectToAction("Content", "Courses", new { area = "eLearning", id = CourseId }));
        }
        public async Task <IHttpActionResult> AddLearner(UpdateLearnerEnrollmentModel model)
        {
            try
            {
                var courseEvent = await db.CourseEvents.FindAsync(model.CourseEventId);

                foreach (var userId in model.UserId)
                {
                    var learner = await db.Learners
                                  .Include(x => x.User)
                                  .FirstOrDefaultAsync(x => x.UserId == userId);

                    if (learner == null)
                    {
                        learner = new Learner
                        {
                            UserId         = userId,
                            Point          = 0,
                            CourseEnrolled = 1
                        };

                        db.Learners.Add(learner);
                        db.SaveChanges();
                    }

                    var enrollment = db.Enrollments.FirstOrDefault(x => x.CourseEventId == courseEvent.Id &&
                                                                   x.LearnerId == learner.Id);

                    if (enrollment == null)
                    {
                        var newEnrollment = new Enrollment
                        {
                            CourseId      = courseEvent.CourseId,
                            CourseEventId = courseEvent.Id,
                            LearnerId     = learner.Id,
                            EnrolledDate  = DateTime.Now,
                            Status        = EnrollmentStatus.Enrolled,
                        };

                        db.Enrollments.Add(newEnrollment);

                        db.SaveChanges();

                        newEnrollment.EnrollmentHistories = new List <EnrollmentHistory>
                        {
                            new EnrollmentHistory
                            {
                                EnrollmentId  = newEnrollment.Id,
                                LearnerId     = learner.Id,
                                Status        = EnrollmentStatus.Enrolled,
                                UserId        = userId,
                                CourseId      = courseEvent.CourseId,
                                CourseEventId = courseEvent.Id
                            }
                        };

                        db.SetModified(newEnrollment);
                        db.SaveChanges();
                    }
                    else
                    {
                        enrollment.Status = EnrollmentStatus.Enrolled;
                        enrollment.EnrollmentHistories.Add(new EnrollmentHistory
                        {
                            EnrollmentId  = enrollment.Id,
                            LearnerId     = learner.Id,
                            Status        = EnrollmentStatus.Enrolled,
                            Remark        = "Learner reenrolled",
                            UserId        = userId,
                            CourseId      = courseEvent.CourseId,
                            CourseEventId = courseEvent.Id
                        }
                                                           );

                        db.SetModified(enrollment);
                        db.SaveChanges();
                    }
                }

                return(Ok(courseEvent.CourseId.ToString()));
            }
            catch (Exception e)
            {
                return(BadRequest(e.Message));
            }
        }