示例#1
0
        public ActionResult Create([Bind(Include = "CourseCompletionId,UserId,CourseId,DateCompleted")] CourseCompletion courseCompletion)
        {
            if (ModelState.IsValid)
            {
                db.CourseCompletions.Add(courseCompletion);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }



            //newView.UserId = User.Identity.GetUserId();
            //newView.LessonId = lesson.LessonId;
            //newView.DateViewed = DateTime.Now;
            //db.LessonViews.Add(newView);
            //db.SaveChanges();
            //List<Lesson> viewedList = new List<Lesson>();
            //Lesson view = new Lesson();
            //foreach (Lesson item in viewedList)
            //{
            //    if (viewedList.Count() < db.LessonViews.Count())
            //    {

            //    }
            //}


            ViewBag.CourseId = new SelectList(db.Courses, "CourseId", "CourseName", courseCompletion.CourseId);
            ViewBag.UserId   = new SelectList(db.UserDetails, "UserId", "FirstName", courseCompletion.UserId);
            return(View(courseCompletion));
        }
        public ActionResult Create([Bind(Include = "CourseId,CourseName,CourseDescription,IsActive")] Course course)
        {
            if (ModelState.IsValid)
            {
                db.Courses.Add(course);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(course));
        }
示例#3
0
        public ActionResult Create([Bind(Include = "LessonViewId,UserId,LessonId,DateViewed")] LessonView lessonView)
        {
            if (ModelState.IsValid)
            {
                db.LessonViews.Add(lessonView);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            ViewBag.LessonId = new SelectList(db.Lessons, "LessonId", "LessonTitle", lessonView.LessonId);
            ViewBag.UserId   = new SelectList(db.UserDetails, "UserId", "FirstName", lessonView.UserId);
            return(View(lessonView));
        }
        public async Task <ActionResult> Register(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser {
                    UserName = model.Email, Email = model.Email
                };
                var result = await UserManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    //default role to User
                    UserManager.AddToRole(user.Id, "User");
                    #region Custom User Details
                    UserDetail newUserDeets = new UserDetail();
                    newUserDeets.UserId    = user.Id;
                    newUserDeets.FirstName = model.FirstName;
                    newUserDeets.LastName  = model.LastName;
                    newUserDeets.Email     = model.Email;
                    CanineCoursesEntities db = new CanineCoursesEntities();
                    db.UserDetails.Add(newUserDeets);
                    db.SaveChanges();
                    #endregion
                    //var code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
                    //var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
                    //await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking this link: <a href=\"" + callbackUrl + "\">link</a>");
                    //ViewBag.Link = callbackUrl;
                    return(View("Login"));
                }
                AddErrors(result);
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }
        // GET: Lessons/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Lesson lesson = db.Lessons.Find(id);

            if (lesson == null)
            {
                return(HttpNotFound());
            }

            if (lesson.VideoURL != null)
            {
            }

            //var views = db.UserDetails.Include(i => i.UserId).Include(i => lesson.LessonId).Include(i => DateTime.Now);
            //var views = db.LessonViews.Include(l => l.Lesson).Include(l => l.UserDetail).Include(l => l.UserId).Include(l => (DateTime.Now));
            var currentUser     = User.Identity.GetUserId();
            var lessonNotViewed = db.LessonViews.Where(lv => lv.LessonId == lesson.LessonId && lv.UserId == currentUser).Count();

            if (lessonNotViewed == 0)
            {
                LessonView newView = new LessonView
                {
                    UserId     = User.Identity.GetUserId(),
                    LessonId   = lesson.LessonId,
                    DateViewed = DateTime.Now
                };
                db.LessonViews.Add(newView);
                db.SaveChanges();

                #region Original completion Code

                //var counter = 0;
                ////var idCourse = from l in db.Lessons
                ////               select l.CourseId;
                //var idView = from v in db.LessonViews
                //             select v.LessonViewId;
                //var idCourse = from l in db.LessonViews
                //               join i in db.Lessons on l.LessonId equals i.LessonId
                //               select new { i.CourseId };

                //foreach (var view in db.LessonViews)
                //{
                //    if (idView.Count() != idCourse.Count())
                //    {
                //        counter += 1;
                //    }
                //    else
                //    {
                //        CourseCompletion completedCourse = new CourseCompletion();
                //        completedCourse.UserId = User.Identity.GetUserId();
                //        completedCourse.CourseId = lesson.CourseId;
                //        completedCourse.DateCompleted = DateTime.Now;
                //        db.CourseCompletions.Add(completedCourse);
                //        db.SaveChanges();
                //    }
                //}
                #endregion

                #region Archive 2
                ////Course completion should be created when the user has completed all lesson views associated to the course

                ////A count will tell you how many lesson views but there is a possibility of a logic error if you do NOT prevent
                ////multiple lesson views from being created for a single lesson for the same user. - Cared for with lesson not viewd on 44

                ////get the course id and number of lessons associated to the course
                ////var lessons = (from l in db.Lessons
                ////              where l.CourseId == lesson.CourseId
                ////              select l).Count();

                //var lessonsByTHISCourse = db.Lessons.Where(Course => Course.CourseId == lesson.CourseId).Count();

                ////get the number of lessons completed in the course by the user
                ////var user = (from u in db.LessonViews
                ////            where u.LessonViewId == lesson.LessonId
                ////            select u).Count();

                ////var lessonsTotalUser = db.LessonViews.Where(Lesson => Lesson.LessonId == lesson.LessonId).OrderBy(Lesson => Lesson.UserId).Count();

                //var lessonsTotalUser = db.LessonViews.Where(lv => lv.LessonId == lesson.LessonId && lv.UserId == newView.UserId).Count();

                ////if equal then create the course completed object
                //if (lessonsByTHISCourse == lessonsTotalUser)
                //{
                //    CourseCompletion completedCourse = new CourseCompletion();
                //    completedCourse.UserId = User.Identity.GetUserId();
                //    completedCourse.CourseId = lesson.CourseId;
                //    completedCourse.DateCompleted = DateTime.Now;
                //    db.CourseCompletions.Add(completedCourse);
                //    db.SaveChanges();
                //}

                #endregion

                #region Completion code attempt 1 archive
                //var complete = from c in db.LessonViews
                //               group c by c.LessonViewId into v
                //               select v;

                //var idCourse = from l in db.Lessons
                //               select l.CourseId;
                //var counter = 0;
                //foreach (var view in db.LessonViews)
                //{
                //    if (counter < idCourse.Count())
                //    {
                //        counter++;
                //    }
                //    else
                //    {
                //        CourseCompletion completedCourse = new CourseCompletion();
                //        completedCourse.UserId = User.Identity.GetUserId();
                //        completedCourse.CourseId = lesson.CourseId;
                //        completedCourse.DateCompleted = DateTime.Now;
                //    }
                //}
                #endregion

                var totalViewed = db.LessonViews.Where(x => x.Lesson.CourseId == lesson.CourseId).Count();


                if (totalViewed == lesson.Cours.Lessons.Count)
                {
                    // Create CourseCompleted

                    CourseCompletion completedCourse = new CourseCompletion()
                    {
                        UserId = User.Identity.GetUserId(), CourseId = lesson.CourseId, DateCompleted = DateTime.Now
                    };

                    db.CourseCompletions.Add(completedCourse);
                    db.SaveChanges();

                    string message = $"{lesson.Cours.CourseName} has been completed by {User.Identity.Name}!";

                    //what sends the email
                    MailMessage mm = new MailMessage("*****@*****.**", "*****@*****.**", null, message);

                    //mail message properties
                    //allow html formatting in email
                    mm.IsBodyHtml = true;
                    //high priority
                    mm.Priority = MailPriority.High;
                    //respond to sender's email
                    //mm.ReplyToList.Add(cvm.Email);

                    //info from host - allow email to be sent
                    SmtpClient client = new SmtpClient("mail.rachelpunches.com");
                    //client credentials
                    client.Credentials = new NetworkCredential("*****@*****.**", "Optimus!!11");

                    // try/catch
                    try
                    {
                        client.Send(mm);
                    }
                    catch (Exception ex)
                    {
                        ViewBag.CustomerMessage = $"We are sorry.  Your request could not be completed at this time.  Please try again later.<br/>Error Message: <br/>{ex.StackTrace}";
                        return(View());
                    }
                    //return confirmation to user
                    //return View();
                }
            }

            return(View(lesson));
        }