2016-07-02 23:46:45 +08:00
#coding=utf-8
class ResourcesService
#发送资源到课程
2016-07-08 17:22:58 +08:00
def send_resource_to_course user , params
2016-07-02 23:46:45 +08:00
send_id = params [ :send_id ]
@ori = Attachment . find_by_id ( send_id )
course_ids = params [ :course_ids ]
@flag = false
unless course_ids . nil?
course_ids . each do | id |
next if @ori . blank?
@exist = false
Course . find ( id ) . attachments . each do | att | #如果课程中包含该资源
if att . id == @ori . id || ( ! att . copy_from . nil? && ! @ori . copy_from . nil? && att . copy_from == @ori . copy_from ) || att . copy_from == @ori . id || att . id == @ori . copy_from
att . created_on = Time . now
att . save
@exist = true
@flag = true
break
end
end
next if @exist
attach_copied_obj = @ori . copy
attach_copied_obj . tag_list . add ( @ori . tag_list ) # tag关联
attach_copied_obj . container = Course . find ( id )
attach_copied_obj . created_on = Time . now
2016-07-08 17:22:58 +08:00
attach_copied_obj . author_id = user . id
2016-07-02 23:46:45 +08:00
attach_copied_obj . is_public = 0
attach_copied_obj . copy_from = @ori . copy_from . nil? ? @ori . id : @ori . copy_from #发送要添加copy_from
if attach_copied_obj . attachtype == nil
attach_copied_obj . attachtype = 4
end
if attach_copied_obj . save
# 更新引用次数
quotes = @ori . quotes . to_i + 1
@ori . update_attribute ( :quotes , quotes ) unless @ori . nil?
@ori . forwards << Forward . new ( :to_type = > attach_copied_obj . class . name , :to_id = > attach_copied_obj . id , :created_at = > Time . now )
@flag = true
else
@flag = false
@save_message = attach_copied_obj . errors . full_messages
break
end
end
end
[ @ori , @flag , @save_message ]
end
2016-07-18 11:08:02 +08:00
def send_homework_to_course user , params
homework = HomeworkCommon . find params [ :send_id ] . to_i
@ori = homework
course_ids = params [ :course_ids ]
@flag = false
unless course_ids . nil?
course_ids . each do | course_id |
course = Course . find course_id . to_i
new_homework = HomeworkCommon . new
new_homework . name = homework . name
new_homework . user_id = user . id
new_homework . description = homework . description
new_homework . homework_type = homework . homework_type
new_homework . late_penalty = homework . late_penalty
new_homework . course_id = course . id
new_homework . teacher_priority = homework . teacher_priority
new_homework . anonymous_comment = homework . anonymous_comment
new_homework . quotes = 0
new_homework . is_open = homework . is_open
homework . attachments . each do | attachment |
att = attachment . copy
att . container_id = nil
att . container_type = nil
att . copy_from = attachment . id
att . save
new_homework . attachments << att
end
homework_detail_manual = homework . homework_detail_manual
homework_detail_programing = homework . homework_detail_programing
homework_detail_group = homework . homework_detail_group
if homework_detail_manual
new_homework . homework_detail_manual = HomeworkDetailManual . new
new_homework_detail_manual = new_homework . homework_detail_manual
new_homework_detail_manual . ta_proportion = homework_detail_manual . ta_proportion
new_homework_detail_manual . comment_status = 0
new_homework_detail_manual . evaluation_num = homework_detail_manual . evaluation_num
new_homework_detail_manual . absence_penalty = homework_detail_manual . absence_penalty
end
if homework_detail_programing
new_homework . homework_detail_programing = HomeworkDetailPrograming . new
new_homework . homework_detail_programing . ta_proportion = homework_detail_programing . ta_proportion
new_homework . homework_detail_programing . language = homework_detail_programing . language
homework . homework_tests . each_with_index do | homework_test |
new_homework . homework_tests << HomeworkTest . new (
input : homework_test . input ,
output : homework_test . output
)
end
end
if homework_detail_group
new_homework . homework_detail_group = HomeworkDetailGroup . new
new_homework . homework_detail_group . min_num = homework_detail_group . min_num
new_homework . homework_detail_group . max_num = homework_detail_group . max_num
new_homework . homework_detail_group . base_on_project = homework_detail_group . base_on_project
end
if new_homework . save
new_homework_detail_manual . save if new_homework_detail_manual
new_homework . homework_detail_programing . save if new_homework . homework_detail_programing
new_homework . homework_detail_group . save if new_homework . homework_detail_group
@flag = true
else
@flag = false
@save_message = new_homework . errors . full_messages
break
end
homework . update_column ( :quotes , homework . quotes + 1 )
end
end
[ @ori , @flag , @save_message ]
end
def send_exercise_to_course user , params
# send_id = params[:send_id]
# @ori = Attachment.find_by_id(send_id)
# course_ids = params[:course_ids]
# @flag = false
# unless course_ids.nil?
# course_ids.each do |id|
# next if @ori.blank?
# @exist = false
# Course.find(id).attachments.each do |att| #如果课程中包含该资源
# if att.id == @ori.id || (!att.copy_from.nil? && !@ori.copy_from.nil? && att.copy_from == @ori.copy_from) || att.copy_from == @ori.id || att.id == @ori.copy_from
# att.created_on = Time.now
# att.save
# @exist = true
# @flag = true
# break
# end
# end
# next if @exist
# attach_copied_obj = @ori.copy
# attach_copied_obj.tag_list.add(@ori.tag_list) # tag关联
# attach_copied_obj.container = Course.find(id)
# attach_copied_obj.created_on = Time.now
# attach_copied_obj.author_id = user.id
# attach_copied_obj.is_public = 0
# attach_copied_obj.copy_from = @ori.copy_from.nil? ? @ori.id : @ori.copy_from #发送要添加copy_from
# if attach_copied_obj.attachtype == nil
# attach_copied_obj.attachtype = 4
# end
# if attach_copied_obj.save
# # 更新引用次数
# quotes = @ori.quotes.to_i + 1
# @ori.update_attribute(:quotes, quotes) unless @ori.nil?
# @ori.forwards << Forward.new(:to_type => attach_copied_obj.class.name, :to_id => attach_copied_obj.id,:created_at => Time.now)
# @flag = true
# else
# @flag = false
# @save_message = attach_copied_obj.errors.full_messages
# break
# end
#
# end
# end
[ @ori , @flag , @save_message ]
end
2016-07-11 14:49:59 +08:00
# 我的资源-课件 已发布的
def all_course_attachments user
courses = user . courses . not_deleted
courses_ids = courses . empty? ? '(-1)' :" ( " + courses . map ( & :id ) . join ( " , " ) + " ) "
attchments = Attachment . where ( " (author_id = #{ user . id } and is_publish = 1 and container_id in #{ courses_ids } and container_type = 'Course') or (container_type = 'Course' and is_publish = 1 and container_id in #{ courses_ids } ) " ) . order ( " created_on desc " )
2016-07-14 16:54:43 +08:00
# attchments.each do |v|
# course = Course.where("id=?",v.container_id).first
# v[:coursename] = course.nil? ? "未知" : course.name
# v[:attafile_size] = (number_to_human_size(v[:filesize])).gsub("ytes", "").to_s
# end
2016-07-12 10:25:18 +08:00
2016-07-11 14:49:59 +08:00
attchments
end
# 我的资源-作业 已发布的
def all_homework_commons user
courses = user . courses . not_deleted
courses_ids = courses . empty? ? '(-1)' :" ( " + courses . map ( & :id ) . join ( " , " ) + " ) "
homeworks = HomeworkCommon . where ( " course_id in #{ courses_ids } and publish_time <= ? " , Time . now . strftime ( " %Y-%m-%d " ) ) . order ( " created_at desc " )
2016-07-14 16:54:43 +08:00
# homeworks.each do |v|
# course = Course.where("id=?",v.course_id).first
# v[:coursename] = course.nil? ? "未知" : course.name
# end
2016-07-12 10:25:18 +08:00
2016-07-11 14:49:59 +08:00
homeworks
end
# 我的资源-测验 已发布的
def all_exercises user
courses = user . courses . not_deleted
courses_ids = courses . empty? ? '(-1)' :" ( " + courses . map ( & :id ) . join ( " , " ) + " ) "
exercises = Exercise . where ( " exercise_status <> 1 and course_id in #{ courses_ids } " ) . order ( " created_at desc " )
2016-07-14 16:54:43 +08:00
# exercises.each do |v|
# course = Course.where("id=?",v.course_id).first
# v[:coursename] = course.nil? ? "未知" : course.name
# end
2016-07-12 10:25:18 +08:00
2016-07-11 14:49:59 +08:00
exercises
end
2016-07-02 23:46:45 +08:00
end