Sha256: 7d484b85b6ceb87331aa4b58d9678af2be70688f806f736d34228e8843f5045c

Contents?: true

Size: 1.01 KB

Versions: 1

Compression:

Stored size: 1.01 KB

Contents

module Spree
  class DeviceService
    include Singleton

    def find_or_create_user_device(user, name, uid)
      user_device = find_user_device(user, uid)
      return user_device if user_device.present?

      create_user_device(user, name, uid)
    end

    def destroy_user_device(user, device_id)
      device = Spree::Device.find(device_id)
      user_device = Spree::UserDevice.where(user: user, device: device).first
      user_device.destroy if user_device.present?
      device.destroy if device.user_devices.count.zero?
    end

    def find_user_device(user, uid)
      Spree::UserDevice.joins(:device)
                       .where('spree_user_devices.user_id = ?', user.id)
                       .where('spree_devices.uid = ?', uid).first
    end

    private

    def create_user_device(user, name, uid)
      device = Spree::Device.where(name: name, uid: uid).first_or_initialize
      user_device = Spree::UserDevice.new(user: user, device: device)

      user_device.save

      user_device
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
spree_devices-1.2.0 app/services/spree/device_service.rb