public IActionResult AddToComparison(int?id) { // Find the object by id in the db (with its images) GuitarViewModel obj = new GuitarViewModel(_db.Guitars.Find(id), _db.Images.Where(i => i.GuitarID == id.ToString())); // Get the current session comparison model GuitarComparisonViewModel compModel = HttpContext.Session.Get <GuitarComparisonViewModel>(SiteConstants.SessionName); if (compModel == null) { HttpContext.Session.Set(SiteConstants.SessionName, new GuitarComparisonViewModel()); compModel = HttpContext.Session.Get <GuitarComparisonViewModel>(SiteConstants.SessionName); } // Check if the obj found is already part of the comparison. (Early Out) if (compModel.IsInComparison(obj)) { return(RedirectToAction("Index", "Guitar")); } // If the comparison is full, replace guitar 1 with 2, then set 2 to the new object if (compModel.IsFull()) { compModel.Guitar1 = compModel.Guitar2; compModel.Guitar2 = obj; } else if (compModel.Guitar1 == null) { compModel.Guitar1 = obj; } else if (compModel.Guitar2 == null) { compModel.Guitar2 = obj; } // Set the session and redirect HttpContext.Session.Set(SiteConstants.SessionName, compModel); return(RedirectToAction("Compare", "Guitar")); }
public IActionResult RemoveFromComparison(int?id) { // Find the object by id in the db (with its images) GuitarViewModel obj = new GuitarViewModel(_db.Guitars.Find(id), _db.Images.Where(i => i.GuitarID == id.ToString())); GuitarComparisonViewModel compModel = HttpContext.Session.Get <GuitarComparisonViewModel>(SiteConstants.SessionName); if (compModel.IsInComparison(obj)) { if (compModel.Guitar1.Guitar.Id == obj.Guitar.Id) { compModel.Guitar1 = null; } else { compModel.Guitar2 = null; } } HttpContext.Session.Set <GuitarComparisonViewModel>(SiteConstants.SessionName, compModel); return(RedirectToAction("Index", "Guitar")); }