# frozen_string_literal: true

module Skippable
  extend ActiveSupport::Concern

  def create_skipped_email_log(email_type:, to_address:, user_id:, post_id:, reason_type:)
    attributes = {
      email_type: email_type,
      to_address: to_address,
      user_id: user_id,
      post_id: post_id,
      reason_type: reason_type,
    }

    if reason_type == SkippedEmailLog.reason_types[:exceeded_emails_limit]
      exists =
        SkippedEmailLog.exists?(
          { created_at: (Time.zone.now.beginning_of_day..Time.zone.now.end_of_day) }.merge!(
            attributes.except(:post_id),
          ),
        )

      return if exists
    end

    SkippedEmailLog.create!(attributes)
  end
end