class CommentService
  include ApiHelper
  include Redmine::I18n
  #评论
  def news_comments params,current_user
    @news = News.find(params[:id])
    @course = @news.course
    if @course.nil?
      raise 'news in unknown course'
    end
    raise Unauthorized unless @news.commentable?(current_user)
    if current_user.nil? || !(current_user.admin? || @course.is_public == 1 || (@course.is_public == 0 && current_user.member_of_course?(@course)))
      raise '403'
    end
    @comment = Comment.new
    @comment.send(:safe_attributes=,params[:comment],current_user)
    @comment.author = current_user
    @news.comments << @comment
    @comment
  end

  #作业留言
  def homework_message params,current_user
    @bid = Bid.find(params[:id], :include => [{:homeworks => :user}])
    if params[:bid_message][:message].size>0
      if params[:reference_content]
        message = params[:bid_message][:message] + "\n" + params[:reference_content]
      else
        message = params[:bid_message][:message]
        @m = message
      end
      refer_user_id = params[:bid_message][:reference_user_id].to_i
      jfm = @bid.add_jour(current_user, message, refer_user_id)
    end
    #@user = @bid.author
    #@jours = @bid.journals_for_messages.where('m_parent_id IS NULL').order('created_on DESC')
    #@jour = paginateHelper @jours,10
    @bid.set_commit(@feedback_count)
    jfm
  end
  #课程留言接口
  def leave_course_message params,current_user
    message = params[:new_form][:course_message]
    feedback = Course.add_new_jour(current_user, message, params[:id])
    feedback
  end

  #回复留言接口
  def create_reply params,current_user
    # 这里是创建回复所使用的方法，此方法只针对回复，每一个新的留言并不在此方法管理范围内。
    # 由于多个地方用到了留言，而之前的表设计也有jour_type/jour_id这类信息
    # 所以在方法 add_reply_adapter 中判断所有调用此方法的来源页面，
    # 为了保证兼容以往所有的代码，保证以往的方法可以调用，在返回页面中都做了各式各样的判断。
    # 页面保证 render new_respond/journal_reply
    # 修改 add_reply_adapter 中可以确保留言创建成功
    # 删除留言功能要调用destroy，也记得在destroy.js中修改

    # deny api. api useless
    parent_id = params[:reference_id]
    author_id = current_user.id
    reply_user_id = params[:reference_user_id]
    reply_id = params[:reference_message_id] # 暂时不实现
    content = params[:user_notes]
    jour_type = params[:jour_type]
    jour_id = params[:jour_id]
    @show_name = params[:show_name] == "true"
    options = {
               :jour_id => jour_id,
               :jour_type => jour_type,
               :user_id => author_id,
               :status => true,
               :m_parent_id => parent_id,
               :m_reply_id => reply_id,
               :reply_id => reply_user_id,
               :notes => content,
               :is_readed => false}
    @jfm = ::JournalsForMessage.new(options)
    #@save_succ = true if @jfm.errors.empty?
    @jfm.save
    @jfm
  end

  #发贴，用于意见反馈
  def create_feedback params,current_user
    @memo = Memo.new(params[:memo])
    @memo.forum_id = "1"
    @memo.author_id = current_user.id
    @memo.save
    message = "#{l(:label_commit_failed,:locale => get_user_language(current_user))}: #{@memo.errors.full_messages}" if @memo.new_record?
    [@memo,message]
  end

  #课程留言列表
  def course_messages params,current_user
    @course = ::Course.find(params[:id])
    if (current_user.admin? || @course.is_public == 1 || (@course.is_public == 0 && current_user.member_of_course?(@course)))
      @jours = @course.journals_for_messages.where('m_parent_id IS NULL').order('created_on DESC').page(params[:page] ||= 1).per(10)
    else
      raise '403'
    end
    @jours
  end

  def comment_detail params,current_user
    if !params[:course_id].nil? && params[:course_id] != 0
      course = Course.find(params[:course_id])
      jour = course.journals_for_messages.where("id = ?  ",params[:comment_parent_id])
      jour
    else
     jour1 = JournalsForMessage.where("id = ?  ",params[:comment_parent_id])
     jour1
    end
  end

  # 获取课程里的某个通知的所有回复
  def notice_comments params,current_user
    News.find(params[:notice_id]).comments.page(params[:page] || 1).per(10)
  end

end