class Api::DiaryController < ApplicationController

    skip_before_action :verify_authenticity_token, raise: false
    before_action :authenticate_devise_api_token!
    before_action :set_user

    # La misma funcionalidad de parte de usuario está en {diet#meals}
    def check_meal
        @id = params[:id].to_i
        @value = params[:value].to_i
        # Si llegan valores mayores a los mínimos máximos saltamos registro
        @meal = @plan.meals.find(@id)
        if @meal
            if (@value > 0 && @value <= 3) # Value puede tener valores 0|1|2|3
                register = registro_diario(@plan) # Obtenemos el registro diario de comidas
                register[@plan.index_day][@meal.index] = @value # Registramos la comida correspondiente al día activo.
                meals_record = format_meals_record(register) # No se puede hacer registro de comidas en días anteriores o futuros
                @plan.update(meals_record: meals_record )
                return render json: { message: "success", message_description: "El check de comida ha sido realizado." }
            else
                return render json: { error: "invalid_value", error_description: "#{@value} no es un valor válido." }
            end
        else
            return render json: { error: "invalid_id", error_description: "La comida no existe" }
        end
    end

    def diet
        @days = diario(@user, "alimentacion")
    end

    def diet_msg
        if @plan
            @comment = params[:message]
            if @comment.blank?
                return render json: { error: "message_blank", error_description: "{message} es requerido." }
            else
                registro = plan_notes(@plan, @plan.comments)
                registro[@plan.index_day] += "#{@comment.delete('|')}~"
                @plan.update(comments: registro.join("|"))
                return render json: { message: "success", message_description: "El mensaje ha sido guardado." }
            end
        else
            return render json: { error: "inactive", error_description: "El paciente no tiene plan activo." }
        end
    end
    
    def routine_msg
        if @plan
            @comment = params[:message]
            if @comment.blank?
                return render json: { error: "message_blank", error_description: "{message} es requerido." }
            else
                registro = plan_notes(@plan, @plan.sessions_notes)
                registro[@plan.index_day] += "#{@comment.delete('|')}~"
                @plan.update(sessions_notes: registro.join("|"))
                return render json: { message: "success", message_description: "El mensaje ha sido guardado." }
            end
        else
            return render json: { error: "inactive", error_description: "El paciente no tiene plan activo." }
        end
    end
    
    def routine
        @days = diario(@user, "entrenamiento")
    end
    
    private
    
    def set_user
        # @user = User.where(email:"ricardonts@gmail.com").first
        if current_devise_api_token
            @user = current_devise_api_token.resource_owner
            @plan = @user.plan_active
        else
            return render json: { error: "invalid_token", error_description: I18n.t('devise.api.error_response.invalid_authentication') }, status: :unauthorized
        end
    end

    def address_params
        params.permit(:cp)
    end

end