Sha256: 326bb4b6f03ce36653c53deaece4ca0c8c8e191aa5bf8344be775494c8d7a523

Contents?: true

Size: 1.19 KB

Versions: 3

Compression:

Stored size: 1.19 KB

Contents

module SolidusBling
  class Seller < ApplicationRecord
    validates :name, presence: true
    validates :external_id, presence: true
    belongs_to :account
    after_save :falsify_all_others

    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

    def falsify_all_others
      self.class.where("id != ?", id).update(default: false) if default
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
solidus_bling-3.5.1 app/models/solidus_bling/seller.rb
solidus_bling-3.4.7 app/models/solidus_bling/seller.rb
solidus_bling-3.4.6 app/models/solidus_bling/seller.rb