Repository URL to install this package:
|
Version:
2.23.0 ▾
|
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