module Forms
  module BulkUploadForm
    class Year
      include ActiveModel::Model
      include ActiveModel::Attributes
      include Rails.application.routes.url_helpers

      attribute :log_type
      attribute :year, :integer
      attribute :organisation_id, :integer

      validates :year, presence: true

      def view_path
        "bulk_upload_#{log_type}_logs/forms/year"
      end

      def options
        possible_years.map do |year|
          OpenStruct.new(id: year, name: "#{year} to #{year + 1}")
        end
      end

      def back_path
        if organisation_id.present?
          send("#{log_type}_logs_organisation_path", organisation_id)
        else
          send("#{log_type}_logs_path")
        end
      end

      def next_path
        send("bulk_upload_#{log_type}_log_path", id: "prepare-your-file", form: { year:, organisation_id: }.compact)
      end

      def save!
        true
      end

    private

      def possible_years
        [
          FormHandler.instance.send("#{log_type}_forms")["current_#{log_type}"].start_date.year,
          (FormHandler.instance.send("previous_#{log_type}_form").start_date.year if FormHandler.instance.send("#{log_type}_in_crossover_period?")),
          (FormHandler.instance.send("next_#{log_type}_form").start_date.year if FeatureToggle.allow_future_form_use?),
        ].compact
      end
    end
  end
end