Sha256: 8aeb6a1c5a1ff7ae900bae34c7636956ec12ddbb5d7fd3722c609aca6a16c458

Contents?: true

Size: 1.76 KB

Versions: 1

Compression:

Stored size: 1.76 KB

Contents

module Decidim
  module Lausanne
    module Budgets
      class UserRecordForm < Decidim::Form
        include TranslatableAttributes
        include TranslationsHelper
        include Decidim::ApplicationHelper
        mimic :user_record
        attribute :first_name, String
        attribute :last_name, String
        attribute :birthdate, String
        attribute :allow_process_data, Boolean
        attribute :its_me, Boolean
        attribute :iam_lausanne, Boolean

        validates :first_name, presence: true
        validates :last_name, presence: true
        validates :birthdate, presence: true
        validates :allow_process_data, presence: true
        validates :its_me, presence: true
        validates :iam_lausanne, presence: true
        validate :budget_context
        validate :unique!

        def budget_context
          errors.add(:base, "Budget context should be passed to UserRecordForm") unless budget.present?
        end

        def budget
          context.budget
        end

        ##
        # Extract the first name, last name and
        # birthday, remove all non-alpha numeric
        # and compare it to the database.
        def unique?
          !copies.exists?
        end

        def unique!
          return if context.user
          errors.add(:base, "Vous avez déjà soumis votre vote") unless unique?
        end

        def copies
          Decidim::Lausanne::Budgets::UserRecord.joins(:order).where(
            "UPPER(last_name) = UPPER(?)",
            last_name
          ).where(
            "UPPER(first_name) = UPPER(?)",
            first_name
          ).where(
            birthdate: birthdate,
            decidim_lausanne_budgets_orders: { loz_budgets_budget_id: budget.id }
          )
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
decidim-lausanne-budgets-0.1.0 app/forms/decidim/lausanne/budgets/user_record_form.rb