# frozen_string_literal: true class WritersController < ApplicationController respond_to :json, only: [:check] before_action :perpage!, only: [:index] before_action :find_structure, only: [:index, :show] caches_page :index, :show, :check def check @writer = TranslationCms::Api::Writer.new(id: params[:id]).exists respond_to do |format| format.json { render json: { id: @writer.blank? ? nil : @writer.first.try(:id) } } format.all { raise ActiveRecord::RecordNotFound, "Writer #{params[:id]} not found" } end end def index @no_writers_text = structure_by(slug: 'additional-no-writers-found-text').try(:main) @languages = TranslationCms::Api::Language.all! @industries = TranslationCms::Api::IndustryExpertise.all! @statuses = WriterActivityState.filter_list @filter_state = WriterActivityState.find_by(slug: params[:activity_state]) @sort_column = WriterSortType.find_by(slug: params[:sort_column]) @sort_order = SortOrder.find_by(slug: params[:sort_order]) @writers = TranslationCms::Api::Writer.page(params[:page]).per(params[:per]).where(permited_params).all @page_offset = params[:per].to_i * (@writers.current_page - 1) respond_with @writers end def show params[:per] = 10 if params[:per].blank? || params[:per].to_i < 1 api_responce = TranslationCms::Api::Writer.find(params[:id]) raise ActiveRecord::RecordNotFound, "Writer #{params[:id]} not found" if api_responce.errors.present? @writer = api_responce.first @feedbacks = @writer.writer_feedbacks @industries = TranslationCms::Api::IndustryExpertise.all! # Seo meta tags @meta_record = @writer respond_with @writer end protected def permited_params params.permit(:industry_expertise, :language_from, :language_to) .merge(activity_state: @filter_state.try(:id), sort_column: @sort_column.try(:code), sort_mode: @sort_order.try(:code)).compact end def find_structure load_structure(StructureType.writers) end end