public ActionResult DisplayUserAttempts() { RecipeDBEntities ORM = new RecipeDBEntities(); //Entity var User_ID = User.Identity.GetUserId(); //-Get the initial portion of a username from recipe //attempts in RECIPEDB List <RecipeAttempt> UserList = ORM.RecipeAttempts.Where(x => x.User_ID == User_ID).ToList(); string username = User.Identity.GetUserName().ToString(); username = username.Substring(0, username.IndexOf("@")); ViewBag.Results = UserList; ViewBag.Username = username; List <RecipeAttempt> YourList = ORM.RecipeAttempts.Where(x => x.User_ID == User_ID).ToList(); ViewBag.AllResults = JsonConvert.SerializeObject(ORM.RecipeAttempts.ToList()); ViewBag.YourResults = JsonConvert.SerializeObject(YourList); return(View("../Home/UserProfile")); }
//TODO: Add complexity to selection system //Search all attempts by title, difficulty, or rating public ActionResult SearchAllAttempts(string InputTitle, string InputDifficulty, string InputRating) { RecipeDBEntities ORM = new RecipeDBEntities(); ContingencyCookingDAL DAL = new ContingencyCookingDAL(); List <RecipeAttempt> UserList = new List <RecipeAttempt>(); if (InputTitle != null && InputDifficulty == null && InputRating == null) { UserList = (ORM.RecipeAttempts.Where(x => x.Recipe.Title.ToLower().Contains(InputTitle.ToLower())).ToList()); } else if (InputTitle == null && InputDifficulty != null && InputRating == null) { UserList = ORM.RecipeAttempts.Where(x => x.Difficulty.Contains(InputDifficulty)).ToList(); } else if (InputTitle == null && InputDifficulty == null && InputRating != null) { UserList = ORM.RecipeAttempts.Where(x => x.Rating.ToString().Contains(InputRating)).ToList(); } List <string> UserEmails = DAL.GetUserEmailsFromAttempts(UserList); ViewBag.Emails = UserEmails; ViewBag.Results = UserList; ViewBag.ListDifficulty = ORM.RecipeAttempts.Select(y => y.Difficulty).Distinct().ToList(); ViewBag.ListRating = ORM.RecipeAttempts.Select(y => y.Rating).Distinct().ToList(); return(View("../Home/AllResults")); }
//Submit a user's attempt to RECIPEDB public ActionResult SubmitRecipeAttempt(RecipeAttempt attempt) { RecipeDBEntities ORM = new RecipeDBEntities(); try { if (ORM.Recipes.Find(attempt.RecipeID) == null) { JObject JsonData = (JObject)Session["Recipe"]; Recipe RecipeForDB = new Recipe(); RecipeForDB.RecipeID = JsonData["RecipeID"].ToString(); // RecipeForDB.Description = JsonData["Description"].ToString(); RecipeForDB.Ingredients_Num = JsonData["Ingredients"].ToList().Count; RecipeForDB.Category = JsonData["Cuisine"].ToString(); RecipeForDB.Title = JsonData["Title"].ToString(); ORM.Recipes.Add(RecipeForDB); } ORM.RecipeAttempts.Add(attempt); ORM.SaveChanges(); Session["Recipe"] = null; return(RedirectToAction("DisplayUserAttempts", new { User_ID = attempt.User_ID })); } catch (Exception e) { Debug.WriteLine(e); return(View("../Home/ErrorPage")); } }
public ActionResult SaveUserRating(int AttemptID, int Value) { RecipeDBEntities ORM = new RecipeDBEntities(); List <Rating> RatingList = ORM.Ratings.Where(x => x.AttemptID == AttemptID).ToList(); List <string> UserList = ORM.Ratings.Where(x => x.AttemptID == AttemptID).Select(x => x.User_ID).ToList(); if (UserList.Contains(User.Identity.GetUserId())) { Rating update = RatingList.FirstOrDefault(x => x.User_ID == User.Identity.GetUserId()); update.Rating1 = Value; ORM.Entry(update).State = System.Data.Entity.EntityState.Modified; } else { Rating temp = new Rating(); temp.Rating1 = Value; temp.User_ID = User.Identity.GetUserId(); temp.AttemptID = AttemptID; ORM.Ratings.Add(temp); } ORM.SaveChanges(); return(RedirectToAction("DisplayAllAttempts")); }
public ActionResult Graph() { RecipeDBEntities ORM = new RecipeDBEntities(); var User_ID = User.Identity.GetUserId(); List <RecipeAttempt> UserList = ORM.RecipeAttempts.Where(x => x.User_ID == User_ID).ToList(); ViewBag.AllResults = JsonConvert.SerializeObject(ORM.RecipeAttempts.ToList()); ViewBag.YourResults = JsonConvert.SerializeObject(UserList); return(View()); }
//Order profile by Title public ActionResult OrderByTitle(string User_ID) { RecipeDBEntities ORM = new RecipeDBEntities(); List <RecipeAttempt> UserList = ORM.RecipeAttempts.OrderBy(w => w.Recipe.Title).Where(x => x.User_ID == User_ID).ToList(); ViewBag.Results = UserList; List <RecipeAttempt> YourList = ORM.RecipeAttempts.Where(x => x.User_ID == User_ID).ToList(); ViewBag.AllResults = JsonConvert.SerializeObject(ORM.RecipeAttempts.ToList()); ViewBag.YourResults = JsonConvert.SerializeObject(YourList); return(View("../Home/UserProfile")); }
//Get and display a list of distinct recipes public ActionResult DisplayAllAttempts() { RecipeDBEntities ORM = new RecipeDBEntities(); ContingencyCookingDAL DAL = new ContingencyCookingDAL(); List <RecipeAttempt> UserList = ORM.RecipeAttempts.ToList(); List <string> UserEmails = DAL.GetUserEmailsFromAttempts(UserList); ViewBag.Emails = UserEmails; ViewBag.Results = UserList; ViewBag.ListDifficulty = ORM.RecipeAttempts.Select(y => y.Difficulty).Distinct().ToList(); ViewBag.ListRating = ORM.RecipeAttempts.Select(y => y.Rating).Distinct().ToList(); return(View("../Home/AllResults")); }
//Generate a Leaderboard View by grabbing an ApplicationUser from Identity //and using that data we popuplate a LeaderboardUser public ActionResult DisplayLeaderboard() { RecipeDBEntities ORM = new RecipeDBEntities(); ApplicationDbContext UserORM = new ApplicationDbContext(); List <LeaderboardUser> LBlist = new List <LeaderboardUser>(); List <string> tempList = ORM.RecipeAttempts.Select(x => x.User_ID).Distinct().ToList(); foreach (string UserID in tempList) { LeaderboardUser temp = new LeaderboardUser(); ApplicationUser tempUser = UserORM.Users.Find(UserID); temp.UserName = tempUser.Email; temp.TotalAttempts = ORM.RecipeAttempts.Where(x => x.User_ID == UserID).Count(); temp.AveDifficulty = Math.Round(ORM.RecipeAttempts.Where(x => x.User_ID == UserID).Select(x => x.Difficulty).Select(int.Parse).Average(), 3); temp.AveIngredients = Math.Round((double)ORM.RecipeAttempts.Where(x => x.User_ID == UserID).Select(x => x.Recipe.Ingredients_Num).Average(), 3); LBlist.Add(temp); } List <int?> RatingList = ORM.Ratings.Select(x => x.AttemptID).Distinct().ToList(); List <LeaderboardRating> LBRatingList = new List <LeaderboardRating>(); foreach (var Attempt in RatingList) { RecipeAttempt AttemptForLB = ORM.RecipeAttempts.Find(Attempt); ApplicationUser tempUser = UserORM.Users.Find(AttemptForLB.User_ID); LeaderboardRating temp = new LeaderboardRating(); temp.UserName = tempUser.Email; temp.Image = AttemptForLB.image; temp.Title = AttemptForLB.Recipe.Title; double AveRating = (double)ORM.Ratings.Where(x => x.RecipeAttempt.AttemptID == AttemptForLB.AttemptID).Select(x => x.Rating1).Average(); temp.AveRating = String.Format("{0:P2}.", AveRating); temp.NumberOfRatings = ORM.Ratings.Where(x => x.RecipeAttempt.AttemptID == AttemptForLB.AttemptID).Count(); LBRatingList.Add(temp); } ViewBag.Ratings = LBRatingList; ViewBag.Users = LBlist; return(View("../Home/Leaderboard")); }
//TODO: Add complexity to selection system //Search all attempts by title, difficulty, or rating public ActionResult SearchAllAttempts(string InputTitle, string InputDifficulty, string InputRating) { RecipeDBEntities ORM = new RecipeDBEntities(); ContingencyCookingDAL DAL = new ContingencyCookingDAL(); List <RecipeAttempt> UserList = new List <RecipeAttempt>(); string[] splitInput = InputTitle.Split(' '); if (InputTitle != null && InputDifficulty == null && InputRating == null) { for (int i = 0; i < splitInput.Length; i++) { if (InputTitle.Contains(splitInput[i])) { var temp = splitInput[i]; UserList = ORM.RecipeAttempts.Where(x => x.Recipe.Title.ToLower().Contains(temp.ToString())).ToList(); } } //UserList = (from p in ORM.RecipeAttempts where splitInput.Any(val => p.Recipe.Title.Contains(val)) select p).ToList(); } else if (InputTitle == null && InputDifficulty != null && InputRating == null) { UserList = ORM.RecipeAttempts.Where(x => x.Difficulty.Contains(InputDifficulty)).ToList(); } else if (InputTitle == null && InputDifficulty == null && InputRating != null) { UserList = ORM.RecipeAttempts.Where(x => x.Rating.ToString().Contains(InputRating)).ToList(); } List <string> UserEmails = DAL.GetUserEmailsFromAttempts(UserList); ViewBag.Emails = UserEmails; ViewBag.Results = UserList; ViewBag.ListDifficulty = ORM.RecipeAttempts.Select(y => y.Difficulty).Distinct().ToList(); ViewBag.ListRating = ORM.RecipeAttempts.Select(y => y.Rating).Distinct().ToList(); return(View("../Home/AllResults")); }
public ActionResult OrderByTotalAttempts() { RecipeDBEntities ORM = new RecipeDBEntities(); ApplicationDbContext UserORM = new ApplicationDbContext(); List <LeaderboardUser> LBlist = new List <LeaderboardUser>(); List <string> tempList = ORM.RecipeAttempts.Select(x => x.User_ID).Distinct().ToList(); foreach (string UserID in tempList) { LeaderboardUser temp = new LeaderboardUser(); ApplicationUser tempUser = UserORM.Users.Find(UserID); temp.UserName = tempUser.Email; temp.TotalAttempts = ORM.RecipeAttempts.Where(x => x.User_ID == UserID).Count(); temp.AveDifficulty = Math.Round(ORM.RecipeAttempts.Where(x => x.User_ID == UserID).Select(x => x.Difficulty).Select(int.Parse).Average(), 3); temp.AveIngredients = Math.Round((double)ORM.RecipeAttempts.Where(x => x.User_ID == UserID).Select(x => x.Recipe.Ingredients_Num).Average(), 3); LBlist.Add(temp); } ViewBag.Users = LBlist.OrderBy(x => x.TotalAttempts); return(View("../Home/Leaderboard")); }