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



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

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



92
93
94
95
96
97
98
99
# File 'lib/tiny_builder/data_loader.rb', line 92

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
# File 'lib/tiny_builder/data_loader.rb', line 46

def collect_associated_listings
  data = []
  MongoVariantListing.in(master_variant_id: variant_ids).each do |listing|
    data << listing
  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

#listing_warehouse_spaces(listing) ⇒ Object



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

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

#mapped_dataObject



74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/tiny_builder/data_loader.rb', line 74

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



88
89
90
# File 'lib/tiny_builder/data_loader.rb', line 88

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

#stock_allocationsObject



54
55
56
57
58
# File 'lib/tiny_builder/data_loader.rb', line 54

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



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

def warehouse_spaces
  @warehouse_spaces ||= WarehouseSpace.where(item_variant_id: variant_ids).where.not(warehouse_id: nil)
end