You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							67 lines
						
					
					
						
							2.3 KiB
						
					
					
				
			
		
		
	
	
							67 lines
						
					
					
						
							2.3 KiB
						
					
					
				module Mobile
 | 
						|
  module Entities
 | 
						|
    class Issue <Grape::Entity
 | 
						|
      include ApiHelper
 | 
						|
      include Redmine::I18n
 | 
						|
      def self.issue_expose(f)
 | 
						|
        expose f do |issue, opt|
 | 
						|
          if issue.is_a?(Hash) && issue.key?(f)
 | 
						|
            issue[f]
 | 
						|
          elsif issue.is_a?(::Issue)
 | 
						|
            if issue.respond_to?(f)
 | 
						|
              if f == :created_on
 | 
						|
                format_time(issue.send(f))
 | 
						|
              else
 | 
						|
                issue.send(f)
 | 
						|
              end
 | 
						|
            else
 | 
						|
              case f
 | 
						|
                when :issue_priority
 | 
						|
                  get_issue_priority_api issue.priority_id
 | 
						|
                when :issue_assigned_to
 | 
						|
                  (get_user(issue.assigned_to_id)).login
 | 
						|
                when :issue_status
 | 
						|
                  IssueStatus.find(issue.status_id).name
 | 
						|
                when :journals_count
 | 
						|
                  issue.journals.where("notes is not null and notes != ''").count
 | 
						|
                when :project_name
 | 
						|
                  issue.project.name
 | 
						|
                when :praise_count
 | 
						|
                  get_activity_praise_num(issue)
 | 
						|
                when :act_type
 | 
						|
                  'Issue'
 | 
						|
                when :act_id
 | 
						|
                  issue.id
 | 
						|
              end
 | 
						|
            end
 | 
						|
          end
 | 
						|
        end
 | 
						|
      end
 | 
						|
      expose :subject
 | 
						|
      expose :description
 | 
						|
      expose :author, using: Mobile::Entities::User
 | 
						|
      expose :done_ratio
 | 
						|
      issue_expose :act_type
 | 
						|
      issue_expose :act_id
 | 
						|
      issue_expose :created_on
 | 
						|
      issue_expose :issue_priority
 | 
						|
      issue_expose :issue_assigned_to
 | 
						|
      issue_expose :issue_status
 | 
						|
      issue_expose :journals_count
 | 
						|
      issue_expose :project_name
 | 
						|
      issue_expose :praise_count
 | 
						|
      expose :issue_journals, using: Mobile::Entities::Journal  do |f, opt|
 | 
						|
        if f.is_a?(::Issue)
 | 
						|
          f.journals.where("notes is not null and notes != ''").reverse
 | 
						|
        end
 | 
						|
      end
 | 
						|
      expose :has_praise , if: lambda { |instance, options| options[:user] } do |instance, options|
 | 
						|
        has_praise = false
 | 
						|
        current_user = options[:user]
 | 
						|
        obj = PraiseTread.where("praise_tread_object_id=? and praise_tread_object_type=? and user_id=?",instance.id,instance.class.to_s,current_user.id)
 | 
						|
        has_praise = obj.empty? ? false : true
 | 
						|
        has_praise
 | 
						|
      end
 | 
						|
    end
 | 
						|
  end
 | 
						|
end |