Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
j_platform / app / models / j_platform / scheduled_items_group.rb
Size: Mime:
module JPlatform
  class ScheduledItemsGroup < ::PlatformResource
    include ScheduledTimeConcern

    has_many :scheduled_items, class_name: 'JPlatform::ScheduledItem'
    belongs_to :project

    def self.ordered_by_schedule(find_conditions)
      groups = self.where(find_conditions)
      groups = groups.sort { |a,b| a.scheduled_time <=> b.scheduled_time }.reverse if !!groups
      groups
    end

    def social_accounts
      scheduled_items.map(&:social_account)
    end

    def is_first(is_first = nil)
      is_first = !!@is_first if is_first.nil?
      @is_first = is_first
    end

    def first_item
      @first_item ||= scheduled_items.first
    end

    def day_scheduled
      scheduled_time.beginning_of_day
    end

    def message_preview
      nil if first_item.blank?
      first_item.options.message
    end

    #TODO - Add tests
    def status
      all_current_statuses = scheduled_items.map(&:status_cd)
      if all_current_statuses.include?('failed')
        return :failed
      elsif (['scheduled', 'completed'] - all_current_statuses) == ['completed']
        return :scheduled
      elsif (['scheduled', 'completed'] - all_current_statuses) == ['scheduled']
        return :posted
      elsif (['scheduled', 'completed'] - all_current_statuses) == []
        return :sending
      end
    end

    [:scheduled, :sending, :posted, :failed].each do |group_status|
      define_method "#{group_status}?" do
        self.status == group_status
      end
    end

    def index_preview_view
      #Not partial view because it's a much more concise version.
      'j_platform/scheduled_items_groups/group_preview'
    end

    def to_partial_path
      'j_platform/scheduled_items_groups/scheduled_items_group'
    end

    def item_route
      scheduled_items_group_path(id)
    end

    def privacy_settings
      if !@privacy_settings
        @privacy_settings = {}
        privacy_items = scheduled_items.reject{|si| si.privacy.nil? }
        privacy_items.each do |item|
          @privacy_settings[item.social_account] = item.privacy
        end
      end
      @privacy_settings
    end

  end
end