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

module Service::Channel::Whatsapp
  class Update < Base
    attr_reader :channel_id

    def initialize(params:, channel_id:)
      super()

      @channel_id = channel_id
      @params     = params
    end

    def options
      channel.options.merge(
        params.slice(
          :business_id, :access_token, :app_secret, :phone_number_id, :welcome, :reminder_active, :reminder_message
        )
      )
    end

    def execute
      ActiveRecord::Base.transaction do
        channel
          .tap { |channel| channel.update!(**attributes_hash) }
          .tap { |channel| add_metadata(channel:) }
      end
    end

    private

    def channel
      area_channel_list.find(channel_id)
    end
  end
end