require 'json' class Campaign < ActiveRecord::Base has_many :videolistings, :dependent => :delete_all accepts_nested_attributes_for :videolistings,:reject_if => :all_blank, :allow_destroy => true validates :listingcode, presence: true, uniqueness: true validates :advertisername, presence: true validates :websiteurl, presence: true validates :description, presence: true validates :productsandservices, presence: true validate :has_at_least_one_videolisting after_initialize :set_defaults def set_defaults self.clientid = 720 end def has_at_least_one_videolisting errors.add(:base, 'Must add at least one Videolisting') if self.videolistings.blank? end def video_completion_percent published = videolistings.where({published: true}).length ((published.to_f / videolistings.count.to_f) * 100).to_i rescue 0 end def to_bettervideo_format campaign = self.as_json(except: [:vpa_email,]) campaign[:videolistings] = self.videolistings.all.map {|vl| vl.as_json } campaigns = {campaigns: [campaign,], key: ENV['BETTER_VIDEO_KEY']} campaigns.to_json end end