Secretprtay

QuestionnairesController

Jan 31st, 2022 (edited)
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Rails 3.21 KB | None | 0 0
  1. class QuestionnairesController < ApplicationController
  2.   before_action :customer, only: %i(create update)
  3.   before_action :check_present, only: %i(create update)
  4.   # before_action :authenticate_customer!, only: %i(create update)
  5.   before_action :authenticate_customer!, only: :create
  6.   before_action :set_questionnaire, only: :update
  7.   before_action :authenticate_role, only: :update
  8.  
  9.   def show
  10.    def show
  11.     render json: @questionnaire.as_json(only: [:type_of_questionnaire, :description, :status, :price, :reward],
  12.                   include: { questions: { only: [:type_of_question, :text, :variants]}},
  13.                   methods: [:company_name, :videos_link, :images_link])
  14.   end
  15.  
  16.   def create
  17.     questionnaire = @customer.questionnaires.build(questionnaire_params)
  18.     if questionnaire.save
  19.       render json: questionnaire, status: :ok
  20.     else
  21.       render json: { message: 'An error occurred!' }, status: 422
  22.     end
  23.   end
  24.  
  25.   def update
  26.     unless current_customer == @customer || current_admin # admin_signed_in?
  27.       return render json: { error: 'An unauthorized!' }, status: 401
  28.     end
  29.  
  30.     if @questionnaire.update(questionnaire_params)
  31.       render json: @questionnaire, status: :ok
  32.     else
  33.       render json: { message: 'An error occurred!' }, status: 422
  34.     end
  35.   end
  36.  
  37.   private
  38.  
  39.   def customer
  40.     @customer ||= Customer.find_by_id(params[:customer_id])
  41.   end
  42.  
  43.   def check_present
  44.     return render json: { message: 'Customer not found'}, status: 400 if @customer.nil?
  45.   end
  46.  
  47.   def set_questionnaire
  48.     @questionnaire = Questionnaire.find_by_id(params[:id])
  49.   end
  50.  
  51.   def authenticate_role
  52.     # return if admin_signed_in?
  53.     return if authenticate_admin!
  54.  
  55.     authenticate_customer!
  56.   end
  57.  
  58.   def questionnaire_params
  59.     params.require(:questionnaire).permit(:customer,
  60.                                           :name,
  61.                                           :description,
  62.                                           :status,
  63.                                           :admin_id,
  64.                                           :price,
  65.                                           :reward,
  66.                                           :type_of_questionnaire,
  67.                                           :slogan,
  68.                                           :min_age,
  69.                                           :max_age,
  70.                                           :min_monthly_income,
  71.                                           :max_monthly_income,
  72.                                           :regions,
  73.                                           :sexs,
  74.                                           :family_statuses,
  75.                                           :is_having_childrens,
  76.                                           :field_of_activity,
  77.                                           images: [],
  78.                                           videos:[],
  79.                     questions_attributes: [:id,
  80.                                            :type_of_question,
  81.                                            :text,
  82.                                            :variants,
  83.                                            :max_variants
  84.                                           ]
  85.                                          )
  86.   end
  87. end
Add Comment
Please, Sign In to add comment