app/controllers/kaui/custom_fields_controller.rb in kaui-2.1.0 vs app/controllers/kaui/custom_fields_controller.rb in kaui-2.2.1

- old
+ new

@@ -1,68 +1,202 @@ -class Kaui::CustomFieldsController < Kaui::EngineController +# frozen_string_literal: true - def index - @search_query = params[:q] +module Kaui + class CustomFieldsController < Kaui::EngineController + def index + @search_query = params[:q] - @ordering = params[:ordering] || (@search_query.blank? ? 'desc' : 'asc') - @offset = params[:offset] || 0 - @limit = params[:limit] || 50 + @ordering = params[:ordering] || (@search_query.blank? ? 'desc' : 'asc') + @offset = params[:offset] || 0 + @limit = params[:limit] || 50 - @max_nb_records = @search_query.blank? ? Kaui::CustomField.list_or_search(nil, 0, 0, options_for_klient).pagination_max_nb_records : 0 - end - - def pagination - searcher = lambda do |search_key, offset, limit| - Kaui::CustomField.list_or_search(search_key, offset, limit, options_for_klient) + @max_nb_records = @search_query.blank? ? Kaui::CustomField.list_or_search(nil, 0, 0, options_for_klient).pagination_max_nb_records : 0 end - data_extractor = lambda do |custom_field, column| - [ + def pagination + searcher = lambda do |search_key, offset, limit| + Kaui::CustomField.list_or_search(search_key, offset, limit, options_for_klient) + end + + data_extractor = lambda do |custom_field, column| + [ custom_field.object_id, custom_field.object_type, custom_field.name, custom_field.value - ][column] - end + ][column] + end - formatter = lambda do |custom_field| - url_for_object = view_context.url_for_object(custom_field.object_id, custom_field.object_type) - [ + formatter = lambda do |custom_field| + url_for_object = view_context.url_for_object(custom_field.object_id, custom_field.object_type) + [ url_for_object ? view_context.link_to(custom_field.object_id, url_for_object) : custom_field.object_id, custom_field.object_type, custom_field.name, custom_field.value - ] + ] + end + + paginate searcher, data_extractor, formatter end - paginate searcher, data_extractor, formatter - end + def new + @custom_field = Kaui::CustomField.new + end - def new - @custom_field = Kaui::CustomField.new - end + def check_object_exist + param_uuid = params[:uuid] + param_object_type = params[:object_type] - def create - @custom_field = Kaui::CustomField.new(params.require(:custom_field)) + _check_object_exist(param_uuid, param_object_type) + end - model = case @custom_field.object_type.to_sym + def create + @custom_field = Kaui::CustomField.new(params.require(:custom_field)) + + param_uuid = @custom_field.object_id + + test_uuid = nil + case @custom_field.object_type.to_sym + when :ACCOUNT + begin + test_uuid = Kaui::Account.find_by_id_or_key(param_uuid, false, false, options_for_klient) + rescue StandardError + # Ignore + end + when :BUNDLE + begin + test_uuid = Kaui::Bundle.find_by_id_or_key(param_uuid, options_for_klient) + rescue StandardError + # Ignore + end + when :SUBSCRIPTION + begin + test_uuid = Kaui::Subscription.find_by_id(param_uuid, options_for_klient) + rescue StandardError + # Ignore + end + when :INVOICE + begin + test_uuid = Kaui::Invoice.find_by_id(param_uuid, false, 'NONE', options_for_klient) + rescue StandardError + # Ignore + end + when :PAYMENT + begin + test_uuid = Kaui::InvoicePayment.find_by_id(param_uuid, false, true, options_for_klient) + rescue StandardError + # Ignore + end + begin + test_uuid = Kaui::Payment.find_by_external_key(param_uuid, false, true, options_for_klient) + rescue StandardError + # Ignore + end + when :INVOICE_ITEM + begin + test_uuid = Kaui::Invoice.find_by_invoice_item_id(param_uuid, false, 'NONE', options_for_klient) + rescue StandardError + # Ignore + end + end + + if test_uuid.blank? + flash[:error] = I18n.translate('object_invalid_dont_exist') + redirect_to custom_fields_path + return + end + + model = case @custom_field.object_type.to_sym when :ACCOUNT - Kaui::Account.new(:account_id => @custom_field.object_id) + Kaui::Account.new(account_id: @custom_field.object_id) when :BUNDLE - Kaui::Bundle.new(:bundle_id => @custom_field.object_id) + Kaui::Bundle.new(bundle_id: @custom_field.object_id) when :SUBSCRIPTION - Kaui::Subscription.new(:subscription_id => @custom_field.object_id) + Kaui::Subscription.new(subscription_id: @custom_field.object_id) when :INVOICE - Kaui::Invoice.new(:invoice_id => @custom_field.object_id) + Kaui::Invoice.new(invoice_id: @custom_field.object_id) when :PAYMENT - Kaui::Payment.new(:payment_id => @custom_field.object_id) + Kaui::Payment.new(payment_id: @custom_field.object_id) when :INVOICE_ITEM - Kaui::InvoiceItem.new(:invoice_item_id => @custom_field.object_id) + Kaui::InvoiceItem.new(invoice_item_id: @custom_field.object_id) else - flash.now[:error] = "Invalid object type #{@custom_field.object_type}" + flash.now[:error] = I18n.translate('invalid_object_type', error: @custom_field.object_type) render :new and return - end - model.add_custom_field(@custom_field, current_user.kb_username, params[:reason], params[:comment], options_for_klient) + end + model.add_custom_field(@custom_field, current_user.kb_username, params[:reason], params[:comment], options_for_klient) - redirect_to custom_fields_path, :notice => 'Custom field was successfully created' + redirect_to custom_fields_path, notice: I18n.translate('custom_field_created_success') + end + + private + + def _check_object_exist(uuid, object_type) + param_uuid = uuid + param_object_type = object_type + + test_uuid = nil + msg = nil + case param_object_type + when 'INVOICE_ITEM' + begin + test_uuid = Kaui::Invoice.find_by_invoice_item_id(param_uuid, false, 'NONE', options_for_klient) + rescue StandardError + # Ignore + ensure + msg = { status: '200', message: I18n.translate('custom_field_uuid_exist_in_invoice_item_db') } unless test_uuid.blank? + end + when 'ACCOUNT' + begin + test_uuid = Kaui::Account.find_by_id_or_key(param_uuid, false, false, options_for_klient) + rescue StandardError + # Ignore + ensure + msg = { status: '200', message: I18n.translate('custom_field_uuid_exist_in_account_db') } if !test_uuid.blank? && (test_uuid.account_id == param_uuid) + end + when 'BUNDLE' + begin + test_uuid = Kaui::Bundle.find_by_id_or_key(param_uuid, options_for_klient) + rescue StandardError + # Ignore + ensure + msg = { status: '200', message: I18n.translate('custom_field_uuid_exist_in_bundle_db') } if !test_uuid.blank? && (test_uuid.bundle_id == param_uuid) + end + when 'SUBSCRIPTION' + begin + test_uuid = Kaui::Subscription.find_by_id(param_uuid, options_for_klient) + rescue StandardError + # Ignore + ensure + msg = { status: '200', message: I18n.translate('custom_field_uuid_exist_in_subscription_db') } if !test_uuid.blank? && (test_uuid.subscription_id == param_uuid) + end + when 'INVOICE' + begin + cached_options_for_klient = options_for_klient + test_uuid = Kaui::Invoice.find_by_id(param_uuid, 'FULL', cached_options_for_klient) + rescue StandardError + # Ignore + ensure + msg = { status: '200', message: I18n.translate('custom_field_uuid_exist_in_invoice_db') } if !test_uuid.blank? && (test_uuid.invoice_id == param_uuid) + end + when 'PAYMENT' + begin + test_uuid = Kaui::InvoicePayment.find_by_id(param_uuid, false, true, options_for_klient) + rescue StandardError + # Ignore + ensure + msg = { status: '200', message: I18n.translate('custom_field_uuid_exist_in_invoice_payment_db') } if !test_uuid.blank? && (test_uuid.payment_id == param_uuid) + end + begin + test_uuid = Kaui::Payment.find_by_external_key(param_uuid, false, true, options_for_klient) + rescue StandardError + # Ignore + ensure + msg = { status: '200', message: I18n.translate('custom_field_uuid_exist_in_payment_db') } if !test_uuid.blank? && (test_uuid.payment_id == param_uuid) + end + end + + msg ||= { status: '431', message: I18n.translate('custom_field_uuid_do_not_exist_in_db') } + render json: msg + end end end