public IActionResult LinkWithRecipe_Rating(int Rating_id, int Recipe_id) { var session = HttpContext.Get <LoggableEntities>(_context); var current_User = session == null ? null : session.User; var current_Admin = session == null ? null : session.Admin; var allowed_sources = _context.Rating; var source = allowed_sources.FirstOrDefault(s => s.Id == Rating_id); var allowed_targets = _context.Recipe; var target = allowed_targets.FirstOrDefault(s => s.Id == Recipe_id); var can_edit_source_by_token = ApiTokenValid || true; var can_edit_target_by_token = ApiTokenValid || true; var can_link_by_token = ApiTokenValid || true; if (!CanAdd_Rating_Recipe_Ratings(source) || !can_link_by_token || !can_edit_source_by_token || !can_edit_target_by_token) { return(BadRequest()); } // throw new Exception("Cannot add item to relation Recipe_Ratings"); if (!CanAdd_Recipe_Recipe_Ratings(target)) { return(BadRequest()); } // throw new Exception("Cannot add item to relation Recipe_Ratings"); var link = new Recipe_Rating() { Id = _context.Recipe_Rating.Max(i => i.Id) + 1, RatingId = source.Id, RecipeId = target.Id }; _context.Recipe_Rating.Add(link); _context.SaveChanges(); return(Ok()); }
public void UserRating(int rating, int recipe_id, int user_id) { var stored_rating = (from recipe_rating in _context.Recipe_Rating where (recipe_rating.RecipeId == recipe_id) from user_rating in _context.User_Rating where (user_rating.UserId == user_id) && (recipe_rating.RatingId == user_rating.RatingId) from Rating in _context.Rating where (Rating.Id == user_rating.RatingId && Rating.Id == recipe_rating.RatingId) select Rating).FirstOrDefault(); if (stored_rating == null) { System.Console.WriteLine("did not found one!"); Rating newRating = new Rating() { rating = rating, Id = _context.Rating.Max(elem => elem.Id) + 1 }; _context.Rating.Add(newRating); User_Rating newUser_Rating = new User_Rating() { UserId = user_id, RatingId = newRating.Id }; _context.User_Rating.Add(newUser_Rating); Recipe_Rating newRecipe_Rating = new Recipe_Rating() { RecipeId = recipe_id, RatingId = newRating.Id }; _context.Recipe_Rating.Add(newRecipe_Rating); } else { System.Console.WriteLine("found one!"); stored_rating.rating = rating; } _context.SaveChanges(); }
public IActionResult /*IEnumerable<Recipe>*/ CreateNewRecipe_Rating_Recipe(int Rating_id) { var session = HttpContext.Get <LoggableEntities>(_context); var current_User = session == null ? null : session.User; var current_Admin = session == null ? null : session.Admin; var allowed_sources = ApiTokenValid ? _context.Rating : _context.Rating; var source = allowed_sources.FirstOrDefault(s => s.Id == Rating_id); var can_create_by_token = ApiTokenValid || true; if (source == null || !can_create_by_token) { return(Unauthorized()); } // throw new Exception("Cannot create item in relation Recipe_Ratings"); var can_link_by_token = ApiTokenValid || true; if (!CanAdd_Rating_Recipe_Ratings(source) || !can_link_by_token) { return(Unauthorized()); } //throw new Exception("Cannot add item to relation Recipe_Ratings"); var new_target = new Recipe() { CreatedDate = DateTime.Now, Id = _context.Recipe.Max(i => i.Id) + 1 }; _context.Recipe.Add(new_target); _context.SaveChanges(); var link = new Recipe_Rating() { Id = _context.Recipe_Rating.Max(l => l.Id) + 1, RatingId = source.Id, RecipeId = new_target.Id }; _context.Recipe_Rating.Add(link); _context.SaveChanges(); return(Ok(new Recipe[] { new_target })); }