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