Example #1
0
    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());
    }
Example #2
0
    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();
    }
Example #3
0
    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 }));
    }