Sha256: 3f1c512f4a1f4ba6faa7c2cfd622c8d1a8e2cd275e2fce80452104d4896f1894

Contents?: true

Size: 1.04 KB

Versions: 4

Compression:

Stored size: 1.04 KB

Contents

# frozen_string_literal: true

module SolidusGraphqlApi
  module Mutations
    module Checkout
      class SelectShippingRate < BaseMutation
        null true

        argument :shipping_rate_id, ID, required: true, loads: Types::ShippingRate

        field :order, Types::Order, null: true
        field :errors, [Types::UserError], null: false

        def resolve(shipping_rate:)
          current_order.update(state: :delivery)

          update_params = {
            shipments_attributes: {
              id: shipping_rate.shipment_id,
              selected_shipping_rate_id: shipping_rate.id
            }
          }

          if Spree::OrderUpdateAttributes.new(current_order, update_params).apply
            current_order.recalculate
            errors = []
          else
            errors = current_order.errors
          end

          { errors: user_errors('order', errors), order: current_order }
        end

        def ready?(*)
          current_ability.authorize!(:update, current_order, guest_token)
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
solidus_graphql_api-0.3.1 lib/solidus_graphql_api/mutations/checkout/select_shipping_rate.rb
solidus_graphql_api-0.3.0 lib/solidus_graphql_api/mutations/checkout/select_shipping_rate.rb
solidus_graphql_api-0.2.0 lib/solidus_graphql_api/mutations/checkout/select_shipping_rate.rb
solidus_graphql_api-0.1.0 lib/solidus_graphql_api/mutations/checkout/select_shipping_rate.rb