# Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/

class Service::User::Device::Delete < Service::Base
  attr_reader :user, :device

  def initialize(user:, device:)
    super()

    raise Exceptions::UnprocessableEntity, __('UserDevice could not be found.') if device.blank?

    @user = user
    @device = device
  end

  def execute
    Session.all.each do |session|
      next if session.data['user_id'] != user.id
      next if session.data['user_device_fingerprint'] != device.fingerprint

      begin
        session.destroy!
      rescue
        # noop
      end
    end

    device.destroy!
  end
end