Sha256: e6676f7d861dffe3e328a30e15263e1ae7036b1784c86e69413d8e3b663b1081

Contents?: true

Size: 1.28 KB

Versions: 4

Compression:

Stored size: 1.28 KB

Contents

# frozen_string_literal: true

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

        argument :billing_address, Types::InputObjects::AddressInput, required: true
        argument :shipping_address, Types::InputObjects::AddressInput, required: false
        argument :ship_to_billing_address, Boolean, required: false

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

        def resolve(billing_address:, shipping_address: nil, ship_to_billing_address: false)
          current_order.update(state: :address)

          update_params = {
            bill_address: Spree::Address.new(billing_address.to_h),
            ship_address: Spree::Address.new(shipping_address.to_h),
            use_billing: ship_to_billing_address
          }

          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/add_addresses_to_checkout.rb
solidus_graphql_api-0.3.0 lib/solidus_graphql_api/mutations/checkout/add_addresses_to_checkout.rb
solidus_graphql_api-0.2.0 lib/solidus_graphql_api/mutations/checkout/add_addresses_to_checkout.rb
solidus_graphql_api-0.1.0 lib/solidus_graphql_api/mutations/checkout/add_addresses_to_checkout.rb