class Public::ConferenceFeedbacksController < Public::ApplicationController def index @conference = current_conference @unrated_events = @conference.events .joins(:proposition).approved .joins("LEFT JOIN feedbacks ON feedbacks.feedback_receiving_id = events.id AND feedbacks.feedback_receiving_type = 'Event'") .where("feedbacks.session_id != ? OR feedbacks.id IS NULL", session.id.to_s).distinct @rated_events = @conference.events .joins(:proposition).approved .joins(:feedbacks) .where(feedbacks: {session_id: session.id.to_s}).distinct end def new if current_conference.feedbacks.where(session_id: session.id.to_s).exists? @feedback = current_conference.feedbacks.where(session_id: session.id.to_s).order(updated_at: :asc).last else @feedback = current_conference.feedbacks.build @feedback.author_email = Feedback.where(session_id: session.id.to_s).order(updated_at: :asc).last.try(:author_email) end end def create @feedback = current_conference.feedbacks.build(feedback_params) @feedback.ip_address = request.remote_ip @feedback.session_id = session.id.to_s if @feedback.save flash[:notice] = I18n.t("public.conference_feedbacks.new.success") redirect_to conference_feedbacks_path else render :new, status: :unprocessable_entity end end private def feedback_params params.require(:feedback).permit(:author_email, :rating, :comment) end end