require 'securerandom' class Videolisting < ActiveRecord::Base belongs_to :campaign validates :videocode, presence: true, uniqueness: true validates :voiceoverselection, presence: true validates :musicselection, presence: true after_create :fix_videocode after_save :send_notification_after_change after_initialize :set_defaults before_validation :set_videocode def get_video_url "http://video2.bettervideo.com/video/pro/MP4640x360/720.#{videocode}.mp4" end def get_preview_url "http://video2.bettervideo.com/video/pro/jpg640x360/720.#{videocode}.jpg" end def asseturls_array self.asseturls.split(',').collect { |url| { asseturl: url.strip } } end def as_json { assets: self.asseturls_array, clientprovidedscript: self.clientprovidedscript, musicselection: self.musicselection, notes: self.notes, producttypeid: 721, toneofvideo: self.toneofvideo, videocode: self.videocode, voiceoverselection: self.voiceoverselection }.as_json end private def set_videocode self.videocode ||= SecureRandom.hex end def fix_videocode if self.campaign self.videocode = "#{self.campaign.listingcode}-#{self.id}" self.save end end def set_defaults self.producttypeid = 721 end def send_notification_after_change if self.published_changed? && self.published? end true end end