Sha256: bf460a77607ee4c818346f46f7a8f19c787d050833f2825a6b16bcee6545691c

Contents?: true

Size: 1.05 KB

Versions: 9

Compression:

Stored size: 1.05 KB

Contents

module SolidusBling
  class Seller < ApplicationRecord
    validates :name, presence: true
    validates :external_id, presence: true

    belongs_to :account

    def self.upsert_sellers account
      account.check_token
      BlingApi.configure { |config| config.access_token = account.access_token }

      sellers = BlingApi::Seller.get_sellers
      upsert_sellers = sellers.map { |seller| { name: seller[:nome], external_id: seller[:id], account_id: account.id, active: true } }
      SolidusBling::Seller.upsert_all(upsert_sellers, unique_by: :external_id)
      inactivate_sellers(sellers)
    end

    def self.default
      find_by(default: true)
    end

    def self.actives
      where(active: true)
    end

    def self.inactivate_sellers sellers_bling
      ids_sellers_bling = sellers_bling.pluck(:id)
      ids_sellers_store = pluck(:external_id).map(&:to_i)
      ids_sellers_inactive = ids_sellers_store - ids_sellers_bling
      sellers_inactive = where(external_id: ids_sellers_inactive)
      sellers_inactive.update_all(active: false)
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
solidus_bling-3.4.5 app/models/solidus_bling/seller.rb
solidus_bling-3.4.4 app/models/solidus_bling/seller.rb
solidus_bling-3.4.3 app/models/solidus_bling/seller.rb
solidus_bling-3.4.2 app/models/solidus_bling/seller.rb
solidus_bling-3.4.1 app/models/solidus_bling/seller.rb
solidus_bling-3.4.0 app/models/solidus_bling/seller.rb
solidus_bling-3.3.6 app/models/solidus_bling/seller.rb
solidus_bling-3.3.5 app/models/solidus_bling/seller.rb
solidus_bling-3.3.3 app/models/solidus_bling/seller.rb