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)); }
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)); }