Sha256: dee9708dd1dcb0176678f7b7c4a38055ec343cb19228aa58449d533b63790fc2

Contents?: true

Size: 1.58 KB

Versions: 15

Compression:

Stored size: 1.58 KB

Contents

# frozen_string_literal: true

module Decidim
  module Meetings
    class BaseMeetingForm < Decidim::Form
      attribute :address, String
      attribute :latitude, Float
      attribute :longitude, Float
      attribute :online_meeting_url, String
      attribute :type_of_meeting, String
      attribute :start_time, Decidim::Attributes::TimeWithZone
      attribute :end_time, Decidim::Attributes::TimeWithZone

      validates :current_component, presence: true

      validates :address, presence: true, if: ->(form) { form.needs_address? }
      validates :address, geocoding: true, if: ->(form) { form.has_address? && !form.geocoded? && form.needs_address? }
      validates :start_time, presence: true, date: { before: :end_time }
      validates :end_time, presence: true, date: { after: :start_time }

      def type_of_meeting_select
        Decidim::Meetings::Meeting::TYPE_OF_MEETING.keys.map do |type|
          [
            I18n.t("type_of_meeting.#{type}", scope: "decidim.meetings"),
            type
          ]
        end
      end

      def geocoding_enabled?
        Decidim::Map.available?(:geocoding)
      end

      def geocoded?
        latitude.present? && longitude.present?
      end

      def has_address?
        geocoding_enabled? && address.present?
      end

      def needs_address?
        in_person_meeting? || hybrid_meeting?
      end

      def online_meeting?
        type_of_meeting == "online"
      end

      def in_person_meeting?
        type_of_meeting == "in_person"
      end

      def hybrid_meeting?
        type_of_meeting == "hybrid"
      end
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
decidim-meetings-0.29.2 app/forms/decidim/meetings/base_meeting_form.rb
decidim-meetings-0.28.5 app/forms/decidim/meetings/base_meeting_form.rb
decidim-meetings-0.29.1 app/forms/decidim/meetings/base_meeting_form.rb
decidim-meetings-0.28.4 app/forms/decidim/meetings/base_meeting_form.rb
decidim-meetings-0.29.0 app/forms/decidim/meetings/base_meeting_form.rb
decidim-meetings-0.28.3 app/forms/decidim/meetings/base_meeting_form.rb
decidim-meetings-0.29.0.rc4 app/forms/decidim/meetings/base_meeting_form.rb
decidim-meetings-0.29.0.rc3 app/forms/decidim/meetings/base_meeting_form.rb
decidim-meetings-0.29.0.rc2 app/forms/decidim/meetings/base_meeting_form.rb
decidim-meetings-0.29.0.rc1 app/forms/decidim/meetings/base_meeting_form.rb
decidim-meetings-0.28.2 app/forms/decidim/meetings/base_meeting_form.rb
decidim-meetings-0.28.1 app/forms/decidim/meetings/base_meeting_form.rb
decidim-meetings-0.28.0 app/forms/decidim/meetings/base_meeting_form.rb
decidim-meetings-0.28.0.rc5 app/forms/decidim/meetings/base_meeting_form.rb
decidim-meetings-0.28.0.rc4 app/forms/decidim/meetings/base_meeting_form.rb