Class: Dscf::Marketplace::RequestForQuotationsController
- Inherits:
-
ApplicationController
- Object
- ActionController::API
- ApplicationController
- Dscf::Marketplace::RequestForQuotationsController
- Includes:
- Core::Common
- Defined in:
- app/controllers/dscf/marketplace/request_for_quotations_controller.rb
Instance Method Summary collapse
- #close ⇒ Object
- #create ⇒ Object
- #filter ⇒ Object
- #my_rfqs ⇒ Object
- #respond ⇒ Object
- #send_rfq ⇒ Object
Methods inherited from ApplicationController
#bypass_permissions_for_demo?, #pundit_user
Instance Method Details
#close ⇒ Object
54 55 56 57 58 59 60 61 62 |
# File 'app/controllers/dscf/marketplace/request_for_quotations_controller.rb', line 54 def close @obj = find_record @obj, :close? if (@obj.sent? || @obj.responded?) && @obj.update(status: :closed) render_success("request_for_quotations.success.closed", data: @obj) else render_error("request_for_quotations.errors.close_failed") end end |
#create ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'app/controllers/dscf/marketplace/request_for_quotations_controller.rb', line 26 def create @clazz.new, :create? obj = @clazz.new(model_params) if obj.save obj = @clazz.includes(eager_loaded_associations).find(obj.id) if eager_loaded_associations.present? includes = default_serializer_includes[:create] || [] = {include: includes} if includes.present? Rails.logger.info("RFQ created with #{obj.rfq_items.count} items") render_success(data: obj, serializer_options: , status: :created) else Rails.logger.info("RFQ save failed: #{obj.errors.}") Rails.logger.info("RFQ rfq_items errors: #{obj.rfq_items.map(&:errors).map(&:full_messages)}") render_error(errors: "Validation failed: #{obj.errors..join(", ")}", status: :unprocessable_entity) end rescue => e render_error(error: e.) end |
#filter ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'app/controllers/dscf/marketplace/request_for_quotations_controller.rb', line 6 def filter @clazz.new, :filter? rfqs = @clazz.all # Apply Ransack filtering if q params present if params[:q].present? rfqs = rfqs.ransack(params[:q]).result end # Apply eager loading rfqs = rfqs.includes(eager_loaded_associations) if eager_loaded_associations.present? # Add serializer includes includes = serializer_includes_for_action(:index) = {} [:include] = includes if includes.present? render_success(data: rfqs, serializer_options: ) end |
#my_rfqs ⇒ Object
64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'app/controllers/dscf/marketplace/request_for_quotations_controller.rb', line 64 def my_rfqs @clazz.new, :my_rfqs? service = MyResourceService.new(current_user) rfqs = service.my_rfqs(params) = { include: default_serializer_includes[:index] || [], meta: {resource_type: "my_rfqs"} } render_success("request_for_quotations.success.index", data: rfqs, serializer_options: ) end |
#respond ⇒ Object
77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'app/controllers/dscf/marketplace/request_for_quotations_controller.rb', line 77 def respond @rfq = Dscf::Marketplace::RequestForQuotation.find(params[:id]) @rfq, :respond? service = RfqResponseService.new(current_user) result = service.respond_to_rfq(@rfq, params.permit(:notes, :valid_until, :delivery_date, quotation_items_attributes: [ :rfq_item_id, :unit_id, :quantity, :unit_price, :notes ])) if result[:success] render_success("request_for_quotations.success.responded", data: result[:quotation], serializer_options: {include: [ :business, quotation_items: [ :product, :unit, :rfq_item ] ]}) else render_error("request_for_quotations.errors.respond_failed", errors: result[:errors]) end end |
#send_rfq ⇒ Object
44 45 46 47 48 49 50 51 52 |
# File 'app/controllers/dscf/marketplace/request_for_quotations_controller.rb', line 44 def send_rfq @obj = find_record @obj, :send_rfq? if @obj.draft? && @obj.update(status: :sent) render_success("request_for_quotations.success.sent", data: @obj) else render_error("request_for_quotations.errors.send_failed") end end |