module Webex
  module Meeting
    # comment
    class Report
      include Webex
      attr_accessor :recording_topic, :specify_url, :agenda, :registration,
                    :destination_address_after_session, :description, :email_address,
                    :duration_hours, :duration_minutes, :month, :year, :presenter,
                    :file_access_password, :file_size, :recording_type, :view_download,
                    :back_url, :day
      # phones = {PhoneCountry: nil, PhoneArea: nil, PhoneNumber: nil, PhoneExt: nil}

      def initialize(attributes = {})
        attributes.each { |k, v| send("#{k}=", v) }
        env_attributes!
        option_required! :back_url
      end

      def create
        option_required! :recording_topic
        { params: generate_params(api_type: 'CR'),
          url: URI.join(CONFIGURATION.host_url + PATH_URL) }
      end

      private

      def cancel_mail?
        cancel_mail
      end

      def phone_params
        result = {}
        result[:PC] = phones[:PhoneCountry]
        result[:PA] = phones[:PhoneArea]
        result[:PN] = phones[:PhoneNumber]
        result[:PE] = phones[:PhoneExt]
        result
      end

      def generate_params(overwrite_params = {})
        result = {}
        result[:AT] = overwrite_params[:api_type]
        result[:RT] = recording_topic
        result[:UL] = specify_url
        result[:AG] = agenda
        result[:AR] = registration
        result[:DstURL] = destination_address_after_session
        result[:DS] = description
        result[:EM] = email_address
        result[:HR] = duration_hours
        result[:MI] = duration_minutes
        result[:MH] = month
        result[:DY] = day
        result[:YR] = year
        result[:PT] = presenter
        result[:PW] = file_access_password
        result[:SZ] = file_size
        result[:TP] = recording_type
        result[:VD] = view_download
        result[:BU] = back_url
        result.delete_if { |k, v| v.nil? }
      end
    end
  end
end