Exemplo n.º 1
0
        public async Task <IActionResult> AddToFavorite(int?id, string control)
        {
            if (id == null)
            {
                return(NotFound());
            }
            Subject subject = await _db.Subjects.FindAsync(id);

            if (subject == null)
            {
                return(NotFound());
            }


            if (User.Identity.IsAuthenticated)
            {
                User user = await _userManager.GetUserAsync(User);

                SavedSubject savedSubject = new SavedSubject
                {
                    User    = user,
                    Subject = subject
                };

                _db.SavedSubjects.Add(savedSubject);
                await _db.SaveChangesAsync();
            }

            else
            {
                string         cookie = Request.Cookies["subject"];
                List <Subject> subjects;

                if (cookie == null)
                {
                    subjects = new List <Subject>();
                }
                else
                {
                    subjects = JsonConvert.DeserializeObject <List <Subject> >(cookie);
                }

                subjects.Add(subject);
                string favorite = JsonConvert.SerializeObject(subjects);
                Response.Cookies.Append("subject", favorite, new CookieOptions {
                    MaxAge = TimeSpan.FromDays(14)
                });
            }
            if (control == "Bookmark")
            {
                return(RedirectToAction("Bookmark", "Course"));
            }
            if (control == "Subject")
            {
                return(RedirectToAction("Subject", new { id = subject.CourseId }));
            }
            return(RedirectToAction("Index", control));
        }
Exemplo n.º 2
0
        public async Task <IActionResult> RemoveFromFavorite(int?id, string control)
        {
            if (id == null)
            {
                return(NotFound());
            }

            if (User.Identity.IsAuthenticated)
            {
                User user = await _userManager.GetUserAsync(User);

                SavedSubject savedSubject = _db.SavedSubjects.FirstOrDefault(s => s.SubjectId == id && s.User == user);

                _db.SavedSubjects.Remove(savedSubject);
                await _db.SaveChangesAsync();

                if (Request.Cookies["subject"] != null)
                {
                    List <Subject> subjects = JsonConvert.DeserializeObject <List <Subject> >(Request.Cookies["subject"]);
                    if (subjects.Any(s => s.Id == id))
                    {
                        subjects.Remove(subjects.FirstOrDefault(s => s.Id == id));
                    }
                    ;
                    if (subjects.Count == 0)
                    {
                        HttpContext.Response.Cookies.Delete("subject");
                    }
                    string favorite = JsonConvert.SerializeObject(subjects);
                    Response.Cookies.Append("subject", favorite, new CookieOptions {
                        MaxAge = TimeSpan.FromDays(14)
                    });
                }
            }
            else
            {
                List <Subject> subjects = JsonConvert.DeserializeObject <List <Subject> >(Request.Cookies["subject"]);
                if (subjects.Find(s => s.Id == id) == null)
                {
                    return(NotFound());
                }
                subjects.Remove(subjects.FirstOrDefault(s => s.Id == id));
                if (subjects.Count == 0)
                {
                    HttpContext.Response.Cookies.Delete("subject");
                }
                string favorite = JsonConvert.SerializeObject(subjects);
                Response.Cookies.Append("subject", favorite, new CookieOptions {
                    MaxAge = TimeSpan.FromDays(14)
                });
            }


            if (control == "Bookmark")
            {
                return(RedirectToAction("Bookmark", "Course"));
            }
            if (control == "Subject")
            {
                Subject subject = await _db.Subjects.Include(s => s.Course).Where(s => s.Id == id).FirstOrDefaultAsync();

                return(RedirectToAction("Subject", new { id = subject.CourseId }));
            }
            return(RedirectToAction("Index", control));
        }