Module: TinyBuilder::DataLoader

Included in:
BaseBuilder
Defined in:
lib/tiny_builder/data_loader.rb

Instance Method Summary collapse

Instance Method Details

#account_idObject



24
25
26
# File 'lib/tiny_builder/data_loader.rb', line 24

def 
  listings[0]&.
end

#associated_listingsObject



42
43
44
# File 'lib/tiny_builder/data_loader.rb', line 42

def associated_listings
  @associated_listings ||= collect_associated_listings
end

#associated_stock_allocationsObject



65
66
67
68
69
# File 'lib/tiny_builder/data_loader.rb', line 65

def associated_stock_allocations
  @associated_stock_allocations ||= VariantListingStockAllocation.where(
    variant_association_id: associated_listings.map(&:icava_id)
  ).where('end_at >= NOW()')
end

#associated_stock_allocs(listing) ⇒ Object



105
106
107
108
109
110
111
112
# File 'lib/tiny_builder/data_loader.rb', line 105

def associated_stock_allocs(listing)
  ids = associated_listings.select{ |l| l.master_variant_id == listing.master_variant_id }.map(&:icava_id)
  associated_stock_allocations.map do |asa|
    if ids.include?(asa)
      asa
    end
  end.compact
end

#collect_associated_listingsObject



46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/tiny_builder/data_loader.rb', line 46

def collect_associated_listings
  data = []
  MongoVariantListing.in(master_variant_id: variant_ids).each do |listing|
    begin
      listing.icava_id
      data << listing
    rescue
      next
    end
  end
  data
end

#collect_variants_dataObject



11
12
13
14
15
16
17
18
# File 'lib/tiny_builder/data_loader.rb', line 11

def collect_variants_data
  data = Variant.where(
    id: listings.map(&:master_variant_id)
  )
  listings.map do |listing|
    [listing.icava_id, data.find{ |v| v.id == listing.master_variant_id }]
  end
end

#get_mongo_wh_spacesObject



114
115
116
117
118
119
120
# File 'lib/tiny_builder/data_loader.rb', line 114

def get_mongo_wh_spaces
  spaces = []
  MongoWarehouseSpace.in(item_variant_id: variant_ids).where(:warehouse_id.exists => true).each do |ws|
    spaces << ws
  end
  spaces
end

#get_warehouse_spacesObject



75
76
77
78
79
80
81
# File 'lib/tiny_builder/data_loader.rb', line 75

def get_warehouse_spaces
  if inventory_v2
    get_mongo_wh_spaces
  else
    WarehouseSpace.where(item_variant_id: variant_ids).where.not(warehouse_id: nil)
  end
end

#listing_warehouse_spaces(listing) ⇒ Object



83
84
85
# File 'lib/tiny_builder/data_loader.rb', line 83

def listing_warehouse_spaces(listing)
  warehouse_spaces.select{ |wh_space| wh_space.item_variant_id == listing.master_variant_id }
end

#mapped_dataObject



87
88
89
90
91
92
93
94
95
96
97
98
99
# File 'lib/tiny_builder/data_loader.rb', line 87

def mapped_data
  @mapped_data ||= listings.map do |listing|
    [
      listing.icava_id,
      {
        variant: variants.find{ |v| v.id == listing.master_variant_id },
        warehouse_spaces: listing_warehouse_spaces(listing),
        stock_alloc: stock_alloc(listing),
        associated_stock_allocs: associated_stock_allocs(listing)
      }
    ]
  end.to_h
end

#mapped_wh_mappingsObject



38
39
40
# File 'lib/tiny_builder/data_loader.rb', line 38

def mapped_wh_mappings
  @mapped_wh_mappings ||= warehouse_mappings.pluck(:warehouse_id, :channel_warehouse_id).to_h
end

#stock_alloc(listing) ⇒ Object



101
102
103
# File 'lib/tiny_builder/data_loader.rb', line 101

def stock_alloc(listing)
  stock_allocations.find{ |sa| sa.variant_association_id == listing.icava_id }
end

#stock_allocationsObject



59
60
61
62
63
# File 'lib/tiny_builder/data_loader.rb', line 59

def stock_allocations
  @stock_allocations ||= VariantListingStockAllocation.where(
    variant_association_id: listings.map(&:icava_id)
  ).where('end_at >= NOW()')
end

#variant_idsObject



20
21
22
# File 'lib/tiny_builder/data_loader.rb', line 20

def variant_ids
  @variant_ids ||= variants.map(&:id)
end

#variantsObject



5
6
7
8
9
# File 'lib/tiny_builder/data_loader.rb', line 5

def variants
  @variants ||= Variant.where(
    id: listings.map(&:master_variant_id)
  )
end

#warehouse_mappingObject



34
35
36
# File 'lib/tiny_builder/data_loader.rb', line 34

def warehouse_mapping
  warehouse_mapping ||= warehouse_mappings.first
end

#warehouse_mappingsObject



28
29
30
31
32
# File 'lib/tiny_builder/data_loader.rb', line 28

def warehouse_mappings
  @warehouse_mappings ||= WarehouseMapping.joins(:warehouse).where(
    profile_channel_association_id: 
  ).where(warehouses: {consignment: false})
end

#warehouse_spacesObject



71
72
73
# File 'lib/tiny_builder/data_loader.rb', line 71

def warehouse_spaces
  @warehouse_spaces ||= get_warehouse_spaces
end