Class: UnprocessedAccessionsReport

Inherits:
AbstractReport show all
Defined in:
backend/app/model/reports/unprocessed_accessions_report.rb

Overview

noinspection ALL

Instance Attribute Summary

Attributes inherited from AbstractReport

#format, #params, #repo_id

Instance Method Summary (collapse)

Methods inherited from AbstractReport

#each, #get_binding, #layout, #report, #template, #title

Methods included from ReportManager::Mixin

included

Constructor Details

- (UnprocessedAccessionsReport) initialize(params)

Returns a new instance of UnprocessedAccessionsReport



8
9
10
# File 'backend/app/model/reports/unprocessed_accessions_report.rb', line 8

def initialize(params)
  super
end

Instance Method Details

- (Object) headers



12
13
14
# File 'backend/app/model/reports/unprocessed_accessions_report.rb', line 12

def headers
  ['id', 'identifier', 'title', "processing_priority", "processing_status", "processors"]
end

- (Object) processor



16
17
18
19
20
# File 'backend/app/model/reports/unprocessed_accessions_report.rb', line 16

def processor
  {
    'identifier' => proc {|record| ASUtils.json_parse(record[:identifier] || "[]").compact.join("-")}
  }
end

- (Object) query(db)



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'backend/app/model/reports/unprocessed_accessions_report.rb', line 27

def query(db)
  dataset = db[:accession].
    left_outer_join(:collection_management, :accession_id => :id).
    join(:enumeration,
         {
            :name => 'collection_management_processing_status'
         },
         {
           :table_alias => :enum_processing_status
         }).
    join(:enumeration,
         {
           :name => 'collection_management_processing_priority'
         },
         {
           :table_alias => :enum_processing_priority
         }).
    left_outer_join(:enumeration_value,
         {
          Sequel.qualify(:enumvals_processing_status, :enumeration_id) =>  Sequel.qualify(:enum_processing_status, :id),
          Sequel.qualify(:collection_management, :processing_status_id) => Sequel.qualify(:enumvals_processing_status, :id),
         },
         {
           :table_alias => :enumvals_processing_status
         }).
    left_outer_join(:enumeration_value,
         {
          Sequel.qualify(:enumvals_processing_priority, :enumeration_id) =>  Sequel.qualify(:enum_processing_priority, :id),
          Sequel.qualify(:collection_management, :processing_priority_id) => Sequel.qualify(:enumvals_processing_priority, :id),
         },
         {
           :table_alias => :enumvals_processing_priority
         }).
    select(
      Sequel.qualify(:accession, :id),
      Sequel.qualify(:accession, :identifier),
      Sequel.qualify(:accession, :title),
      Sequel.qualify(:collection_management, :processors),
      Sequel.qualify(:enumvals_processing_status, :value).as(:processing_status),
      Sequel.qualify(:enumvals_processing_priority, :value).as(:processing_priority)
    )

  dataset = dataset.where(Sequel.qualify(:accession, :repo_id) => @repo_id) if @repo_id

  dataset.from_self(:alias => :all_results).
    filter(Sequel.|(
             Sequel.~(Sequel.qualify(:all_results, :processing_status) => 'completed'),
             {
               Sequel.qualify(:all_results, :processing_status) => nil
             }
           )).
    order_by(Sequel.asc(:processing_priority), Sequel.asc(:processing_status), Sequel.asc(:title))
end

- (Object) scope_by_repo_id(dataset)



22
23
24
25
# File 'backend/app/model/reports/unprocessed_accessions_report.rb', line 22

def scope_by_repo_id(dataset)
  # repo scope is applied in the query below
  dataset
end