2018-09-11 10:38:07 -05:00
|
|
|
class FoodsController < ApplicationController
|
|
|
|
|
|
|
|
before_action :set_food, only: [:show, :edit, :update, :destroy]
|
|
|
|
|
|
|
|
before_action :ensure_valid_user, except: [:index, :show]
|
|
|
|
|
|
|
|
# GET /foods
|
|
|
|
# GET /foods.json
|
|
|
|
def index
|
|
|
|
@foods = Food.all.order(:name).page(params[:page]).per(params[:per])
|
|
|
|
if params[:name].present?
|
|
|
|
@foods = @foods.matches_tokens(:name, params[:name].split.take(4))
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def show
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
# GET /foods/new
|
|
|
|
def new
|
|
|
|
@food = Food.new
|
|
|
|
end
|
|
|
|
|
|
|
|
# GET /foods/1/edit
|
|
|
|
def edit
|
|
|
|
ensure_owner @food
|
|
|
|
end
|
|
|
|
|
|
|
|
# POST /foods
|
|
|
|
# POST /foods.json
|
|
|
|
def create
|
|
|
|
@food = Food.new(food_params)
|
|
|
|
@food.user = current_user
|
|
|
|
if @food.ndbn.present?
|
|
|
|
@food.set_usda_food(UsdaFood.find_by_ndbn(@food.ndbn))
|
|
|
|
end
|
|
|
|
|
|
|
|
respond_to do |format|
|
|
|
|
if @food.save
|
|
|
|
format.html { redirect_to foods_path, notice: 'Ingredient was successfully created.' }
|
|
|
|
format.json { render json: { success: true }, status: :created, location: @food }
|
|
|
|
else
|
|
|
|
format.html { render :new }
|
|
|
|
format.json { render json: @food.errors, status: :unprocessable_entity }
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
# PATCH/PUT /foods/1
|
|
|
|
def update
|
|
|
|
ensure_owner @food do
|
|
|
|
@food.assign_attributes(food_params)
|
|
|
|
if @food.ndbn.present?
|
|
|
|
@food.set_usda_food(UsdaFood.find_by_ndbn(@food.ndbn))
|
|
|
|
end
|
|
|
|
|
|
|
|
respond_to do |format|
|
|
|
|
if @food.save
|
|
|
|
format.html { redirect_to foods_path, notice: 'Ingredient was successfully updated.' }
|
|
|
|
format.json { render json: { success: true }, status: :ok, location: @food }
|
|
|
|
else
|
|
|
|
format.html { render :edit }
|
|
|
|
format.json { render json: @food.errors, status: :unprocessable_entity }
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
# DELETE /foods/1
|
|
|
|
# DELETE /foods/1.json
|
|
|
|
def destroy
|
|
|
|
ensure_owner @food do
|
|
|
|
@food.destroy
|
|
|
|
respond_to do |format|
|
|
|
|
format.html { redirect_to foods_url, notice: 'Ingredient was successfully destroyed.' }
|
|
|
|
format.json { head :no_content }
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def select_ndbn
|
|
|
|
if params[:id].present?
|
|
|
|
@food = Food.find(params[:id])
|
|
|
|
else
|
|
|
|
@food = Food.new
|
|
|
|
end
|
|
|
|
|
|
|
|
@food.assign_attributes(food_params)
|
|
|
|
|
|
|
|
if @food.ndbn.present?
|
|
|
|
@food.set_usda_food(UsdaFood.find_by_ndbn(@food.ndbn))
|
|
|
|
end
|
|
|
|
|
|
|
|
render :show
|
|
|
|
end
|
|
|
|
|
|
|
|
def convert
|
|
|
|
@conversion = Conversion.new(conversion_params)
|
|
|
|
|
|
|
|
if @conversion.valid?
|
|
|
|
@output_quantity = @conversion.output_quantity
|
|
|
|
@conversion = Conversion.new
|
|
|
|
else
|
|
|
|
@output_quantity = ''
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def usda_food_search
|
|
|
|
@foods = UsdaFood.search(params[:query]).limit(250).order(:long_description)
|
|
|
|
|
|
|
|
respond_to do |format|
|
|
|
|
format.html { render :layout => false }
|
|
|
|
format.json { }
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
private
|
|
|
|
# Use callbacks to share common setup or constraints between actions.
|
|
|
|
def set_food
|
|
|
|
@food = Food.find(params[:id])
|
|
|
|
end
|
|
|
|
|
|
|
|
# Never trust parameters from the scary internet, only allow the white list through.
|
|
|
|
def food_params
|
2018-09-12 09:43:50 -05:00
|
|
|
params.require(:food).permit(:name, :notes, :ndbn, :density, :water, :protein, :lipids, :carbohydrates, :kcal, :fiber, :sugar, :calcium, :sodium, :vit_k, :ash, :iron, :magnesium, :phosphorus, :potassium, :zinc, :copper, :manganese, :vit_c, :vit_b6, :vit_b12, :vit_a, :vit_e, :vit_d, :cholesterol, :food_units_attributes => [:name, :gram_weight, :id, :_destroy])
|
2018-09-11 10:38:07 -05:00
|
|
|
end
|
|
|
|
|
|
|
|
def conversion_params
|
|
|
|
params.require(:conversion).permit(:input_quantity, :input_units, :scale, :output_units, :ingredient_id)
|
|
|
|
end
|
|
|
|
end
|