Skip to content

Commit

Permalink
Merge d75d9c7 into 20088cb
Browse files Browse the repository at this point in the history
  • Loading branch information
susannasiebert committed Feb 26, 2019
2 parents 20088cb + d75d9c7 commit 883d49d
Showing 1 changed file with 38 additions and 0 deletions.
38 changes: 38 additions & 0 deletions app/models/overview_dashboard.rb
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,17 @@ def available_stats
'counts_by_clinical_significance' => ->() { EvidenceItem.count_by_clinical_significance(where_clause, join_clause) },
'counts_by_rating' => ->() { EvidenceItem.where(where_clause).joins(join_clause).group(:rating).count },
'counts_by_status' => ->() { EvidenceItem.where(where_clause).joins(join_clause).group(:status).count },
'counts_by_pending_revisions' => ->() { count_by_pending_revisions(where_clause, join_clause) },
'top_journals_with_levels' => ->() { count_eids_by_field(top_journals, :journal, :evidence_level) },
'top_journals_with_types' => ->() { count_eids_by_field(top_journals, :journal, :evidence_type) },
'top_diseases_with_levels' => ->() { count_eids_by_field(top_diseases, :display_name, :evidence_level) },
'top_diseases_with_types' => ->() { count_eids_by_field(top_diseases, :display_name, :evidence_type) },
'top_drugs_with_levels' => ->() { count_eids_by_field(top_drugs, :name, :evidence_level) },
'top_drugs_with_clinical_significance' => ->() { count_eids_by_field(top_drugs, :name, :clinical_significance) },
'count_by_source_publication_year' => method(:count_by_publication_year),
'organization_user_count' => method(:organization_user_count),
'organization_badge_count' => method(:organization_badge_count),
'organization_activity_count' => method(:organization_activity_count),
}
end

Expand Down Expand Up @@ -104,4 +108,38 @@ def count_by_publication_year
end
end
end

def count_by_pending_revisions(where_filter, join_clause)
eid_count_with_pending_changes = EvidenceItem.joins(:suggested_changes).joins(join_clause).where("suggested_changes.status = 'new'").where(where_filter).count
{
'has_pending_changes': eid_count_with_pending_changes,
'has_no_pending_changes': EvidenceItem.joins(join_clause).where(where_filter).count - eid_count_with_pending_changes
}
end

def organization_user_count
User.group(:organization)
.count
.delete_if{|key, value| key.nil?}
.map{|organization, count| [organization.name, count]}
.to_h
end

def organization_badge_count
BadgeAward.joins(:badge, user: [:organization])
.group("badge_awards.tier, badges.name, organizations.name")
.select("count(badge_awards.id) as badge_count, badge_awards.tier, organizations.name as org_name, badges.name as badge_name")
.group_by{|award| award.org_name}
.map{|org, awards| [org, awards.group_by{|award| award.badge_name}.map{|badge_name, awards| [badge_name, awards.map{|award| [award.tier, award.badge_count]}.to_h]}.to_h]}.to_h
end

def organization_activity_count
Organization.all.each_with_object(Hash.new(0)){ |organization, h|
h[organization.name] = {
'evidence_counts': EvidenceItem.all.select{|e| e.submitter.organization == organization}.group_by{|e| e.status}.map{|status, es| [status, es.count]}.to_h,
'suggested_change_counts': SuggestedChange.all.select{|c| c.originating_user.organization == organization}.group_by{|c| c.status}.map{|status, cs| [status, cs.count]}.to_h,
'assertion_count': Assertion.all.select{|a| a.submitter.organization == organization}.group_by{|a| a.status}.map{|status, as| [status, as.count]}.to_h,
}
}
end
end

0 comments on commit 883d49d

Please sign in to comment.