public IActionResult LinkWithUser_Recipe(int User_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.User; var source = allowed_sources.FirstOrDefault(s => s.Id == User_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_User_User_Recipes(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 User_Recipes"); if (!CanAdd_Recipe_User_Recipes(target)) { return(BadRequest()); } // throw new Exception("Cannot add item to relation User_Recipes"); var link = new User_Recipe() { Id = _context.User_Recipe.Max(i => i.Id) + 1, UserId = source.Id, RecipeId = target.Id }; _context.User_Recipe.Add(link); _context.SaveChanges(); return(Ok()); }
public IActionResult /*IEnumerable<Recipe>*/ CreateNewUser_Recipe_Recipe(int User_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.User : _context.User; var source = allowed_sources.FirstOrDefault(s => s.Id == User_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 User_Recipes"); var can_link_by_token = ApiTokenValid || true; if (!CanAdd_User_User_Recipes(source) || !can_link_by_token) { return(Unauthorized()); } //throw new Exception("Cannot add item to relation User_Recipes"); 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 User_Recipe() { Id = _context.User_Recipe.Max(l => l.Id) + 1, UserId = source.Id, RecipeId = new_target.Id }; _context.User_Recipe.Add(link); _context.SaveChanges(); return(Ok(new Recipe[] { new_target })); }