Sha256: 2cc6b90477cbb70684515286346d46b143ddcce370a64e1cd31868f9968f8d7d
Contents?: true
Size: 1.93 KB
Versions: 1
Compression:
Stored size: 1.93 KB
Contents
#++ # Базовый контроллер для всех remedy-запросов. # # Базовый action-методы описываются тут, если в конкретном подклассе необходимо, # то всегда базовый метод можно переопределить. #-- class RemedyController < Tehportal.config.parent_controller.constantize # before_filter :specify_params, only: %i(index search) # respond_with_params only: %i(index search) def send_request model = "Tehportal::#{params[:model].capitalize}".constantize render_remedy_json model.send(params[:method], params[:data]) end # ВСЕВОЗМОЖНЫЕ СПИСКИ def index result = model.list(params[:operation], list_params) result['getListValues'] = Array.wrap(result['getListValues']) render_remedy_json result end # СВЯЗИ def associations render_remedy_json model.associations('GetList_Association', association_params) end private # Получение класса модели, через которую будут делаться запросы def model @model ||= "Tehportal::#{params[:controller].split('/').last.capitalize}".constantize end def model_class(name) "Tehportal::#{name.capitalize}".constantize end # Запрос на получение связей, имя ID объекта у всех разный def association_params data = {} model_name = params[:controller].split('/').last.downcase.to_sym params_map = {incidents: 'IncidentNumber', problems: 'ProblemInvestigationID', changes: 'Infrastructure_Change_ID'} data[params_map[model_name]] = params[:id] data end private def render_remedy_json(data) if data.is_a? Array render json: data else prepared = data.except!('@xmlns:ns0', '@xmlns:xsd', '@xmlns:xsi') render json: (prepared.blank? && data.length != 3) ? {} : prepared end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
tehportal-0.1.3 | app/controllers/remedy_controller.rb |