Last active
February 3, 2020 18:40
-
-
Save devifr/a006037218fd5849e76dfb071392ede2 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@items = [ | |
{ | |
name: 'item-a', # Nama Item | |
price: 70000, # Harga Maximum | |
quantity: 1000, # Jumlah item yang akan dikerjakan | |
production_time: 8, # Lama pengerjaan dalam hari | |
start_time: '2017-11-14 10:00', # Mulai bidding | |
end_time: '2017-11-14 12:00' # Akhir bidding | |
}, | |
{ | |
name: 'item-b', | |
price: 50000, | |
quantity: 2000, | |
production_time: 10, | |
start_time: '2017-11-14 12:00', | |
end_time: '2017-11-14 15:00' | |
} | |
] | |
@submissions = [ | |
{ | |
name: 'Wili', # Nama Partner | |
bidding: { | |
'item-a' => { | |
'2017-11-14 10:00' => { # Tanggal submit | |
price: 65000, # Harga yang ditawarkan | |
production_time: 9 # Waktu pengerjaan dalam hari | |
}, | |
'2017-11-14 12:00' => { | |
price: 68000, | |
production_time: 9 | |
}, | |
'2017-11-14 10:30' => { | |
price: 71000, | |
production_time: 9 | |
}, | |
'2017-11-14 12:30' => { | |
price: 10000, | |
production_time: 9 | |
} | |
}, | |
'item-b' => { | |
'2017-11-14 14:30' => { | |
price: 40000, | |
production_time: 9 | |
}, | |
'2017-11-14 12:30' => { | |
price: 50000, | |
production_time: 9 | |
} | |
} | |
} | |
}, | |
{ | |
name: 'Lita', | |
bidding: { | |
'item-b' => { | |
'2017-11-14 13:30' => { | |
price: 45000, | |
production_time: 9 | |
}, | |
'2017-11-14 15:01' => { | |
price: 35000, | |
production_time: 9 | |
}, | |
'2017-11-14 12:30' => { | |
price: 48000, | |
production_time: 9 | |
} | |
} | |
} | |
}, | |
{ | |
name: 'Sabar', | |
bidding: { | |
'item-a' => { | |
'2017-11-14 11:50' => { | |
price: 65000, | |
production_time: 9 | |
}, | |
'2017-11-14 11:30' => { | |
price: 68000, | |
production_time: 9 | |
}, | |
'2017-11-14 11:00' => { | |
price: 69000, | |
production_time: 9 | |
} | |
} | |
} | |
}, | |
{ | |
name: 'Makmur', | |
bidding: { | |
'item-a' => { | |
'2017-11-14 12:00' => { | |
price: 50000, | |
production_time: 9 | |
}, | |
'2017-11-14 11:00' => { | |
price: 5000, | |
production_time: 9 | |
} | |
} | |
} | |
} | |
] | |
@items.each do |itm| | |
get_binding = [] | |
get_binding_new = {} | |
get_price = [] | |
get_name = [] | |
item_name = itm[:name] | |
item_qty = itm[:quantity] | |
item_max_price = itm[:price] | |
item_start_time = itm[:start_time] | |
item_end_time = itm[:end_time] | |
range_time = (item_start_time..item_end_time).to_a | |
puts "# #{item_name}: #{item_qty} - #{item_max_price}" | |
puts "Start Time: #{item_start_time}" | |
puts "End Time: #{item_end_time}" | |
puts "Peserta (1):" | |
range_time.each do |time| | |
@submissions.each do |data| | |
name = data[:name] | |
biddings = data[:bidding][item_name] | |
next if biddings.nil? | |
get_data = biddings[time] | |
next if get_data.nil? | |
if get_data[:price] <= item_max_price | |
get_binding_new[name] = {price: get_data[:price], name: name, date: time, total: (get_data[:price] * item_qty)} | |
end | |
end | |
end | |
# sort by price | |
sort_binding = get_binding_new.sort_by {|k,v| v[:price]} | |
sort_binding.each.with_index(1) do |data,i| | |
name_p = data.first | |
data_p = data.last | |
puts "#{i}. #{name_p} #{data_p[:date]} #{data_p[:price]} #{data_p[:total]}" | |
end | |
puts | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment