-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.php
199 lines (179 loc) · 5.21 KB
/
index.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
<?php
# Bidding
#
# Tujuan dari bidding ini adalah untuk mencari harga terendah yang ditawarkan oleh setiap partner sebagai pemenang project.
# Terdapat 2 items yang dibuka untuk bidding di bawah ini.
# Setiap item mempunyai harga maximum yang boleh diajukan oleh peserta bidding.
# Peserta bidding dapat memasukkan harga penawaran selama bidding masih aktif yaitu di antara waktu "start" dan "end".
$items = array(
array(
'name' => 'item-a', # Nama Item
'price' => 70000, # Harga Maximum
'quantity' => 1000, # Jumlah item yang akan dikerjakan
'production_time' => 8, # Lama pengerjaan dalam hari
'start' => '2017-11-14 10:00', # Mulai bidding
'end' => '2017-11-14 12:00' # Akhir bidding
),
array(
'name' => 'item-b',
'price' => 50000,
'quantity' => 2000,
'production_time' => 10,
'start' => '2017-11-14 12:00',
'end' => '2017-11-14 15:00'
)
);
# Submissions
#
# Berikut adalah data harga yang ditawarkan oleh masing-masing peserta bidding untuk setiap item di atas.
# Urutan tanggal submit sengaja diacak.
# Harga yang diambil dari setiap user adalah harga yang terakhir di tawarkan.
$submissions = array(
array(
'name' => 'Wili', # Nama Partner
'bidding' => array(
'item-a' => array( # Submissions untuk item-a
'2017-11-14 10:00' => array( # Tanggal submit
'price' => 65000, # Harga yang ditawarkan
'production_time' => 9 # Lama pengerjaan dalam hari
),
'2017-11-14 12:00' => array(
'price' => 68000,
'production_time' => 9
),
'2017-11-14 10:30' => array(
'price' => 71000,
'production_time' => 9
),
'2017-11-14 12:30' => array(
'price' => 10000,
'production_time' => 9
)
),
'item-b' => array(
'2017-11-14 14:30' => array(
'price' => 40000,
'production_time' => 9
),
'2017-11-14 12:30' => array(
'price' => 50000,
'production_time' => 9
)
)
)
),
array(
'name' => 'Lita',
'bidding' => array(
'item-b' => array(
'2017-11-14 13:30' => array(
'price' => 45000,
'production_time' => 9
),
'2017-11-14 15:01' => array(
'price' => 35000,
'production_time' => 9
),
'2017-11-14 12:30' => array(
'price' => 48000,
'production_time' => 9
)
)
)
),
array(
'name' => 'Sabar',
'bidding' => array(
'item-a' => array(
'2017-11-14 11:50' => array(
'price' => 65000,
'production_time' => 9
),
'2017-11-14 11:30' => array(
'price' => 68000,
'production_time' => 9
),
'2017-11-14 11:00' => array(
'price' => 69000,
'production_time' => 9
)
)
)
),
array(
'name' => 'Makmur',
'bidding' => array(
'item-a' => array(
'2017-11-14 12:00' => array(
'price' => 50000,
'production_time' => 9
),
'2017-11-14 11:00' => array(
'price' => 5000,
'production_time' => 9
)
)
)
)
);
# Buatlah sebuat code untuk mengolah data di atas, sehingga dapat menampilkan hasil seperti di bawah ini.
#
# # item-a - 1000 - 70000
# Peserta (3):
# 1. Makmur 2017-11-14 12:00 50000 50000000
# 2. Sabar 2017-11-14 11:50 65000 65000000
# 3. Wili 2017-11-14 12:00 68000 68000000
# # item-b - 2000 - 50000
# Peserta (2):
# 1. Wili 2017-11-14 14:30 40000 80000000
# 2. Lita 2017-11-14 13:30 45000 90000000
#
# Paste perkerjaan anda ke http://sandbox.onlinephpfunctions.com/
# Click "Save or share your code" dan kirimkan link tersebut ke [email protected]
# Subject: Printerous Challenge - YOUR NAME
#
# Your code down here
echo '<table>';
foreach ($items as $item_key => $item) {
$count_participant = 0;
$participants = [];
foreach ($submissions as $submission_key => $submission) {
foreach ($submission['bidding'] as $bidding_key => $bidding) {
if($bidding_key == $item['name']) {
$time_bid = null;
$price_bid = 0;
foreach ($bidding as $time_key => $bid) {
$temp_time = strtotime($time_key);
if($time_bid == null){
$time_bid = $temp_time;
$price_bid = $bid['price'];
} elseif($time_bid < $temp_time){
$time_bid = $temp_time;
$price_bid = $bid['price'];
}
}
$sub_participant = [
'name' => $submission['name'],
'price' => $price_bid,
'date' => date('Y-m-d H:i:s', $time_bid),
'total' => $price_bid * $item['quantity'],
];
array_push($participants, $sub_participant);
$count_participant++;
}
}
}
// sort participants by price ASC
usort($participants, function($a, $b) {
return strcmp($a['price'], $b['price']);
});
echo '<tr><td colspan="5"># ' . $item['name'] . ' - ' . $item['quantity'] . ' - ' . $item['price'] . '</td></tr>';
echo '<tr><td colspan="5">Peserta (' . $count_participant . ')</td></tr>';
$no = 1;
foreach ($participants as $key => $value) {
echo '<tr><td>' . $no . '. </td><td>' . $value['name'] . '</td><td>'.$value['date'].'</td><td>'.$value['price'].'</td><td>'.$value['total'].'</td></tr>';
$no++;
}
}
echo '</table>';
?>