· 7 years ago · Dec 14, 2018, 03:24 AM
1<?php
2
3namespace App\Http\Controllers;
4
5
6namespace App\Http\Controllers;
7ini_set('max_execution_time', 300);
8use Illuminate\Http\Request;
9use Validator;
10use Illuminate\Support\Collection;
11use App\dota_contest;
12use App\dota_contest_detail;
13use App\dota_contest_type;
14use App\CookiesDistribution;
15use App\csgo;
16use App\DotaHero;
17use App\Players;
18use Session;
19use Auth;
20use Illuminate\Support\Facades\Cache;
21use Illuminate\Support\Facades\DB;
22use thiagoalessio\TesseractOCR\TesseractOCR;
23use App\Player;
24use GoogleCloudVisionPHP\GoogleCloudVision;
25
26use Aws\Rekognition\RekognitionClient;
27
28use App\Team;
29use App\mllobby;
30
31use App\TeamMember;
32use App\PlayerInGameId;
33
34use App\YamisokParam;
35
36
37
38class Index extends Controller
39{
40 public function index(){
41 DB::transaction(function(){
42 $date=date("Y-m-d H:i:s");
43 $contest=dota_contest::with("rules")->where([['status',0],['start_date','<',$date]])->get();
44 if($contest->count() >0){
45 foreach($contest as $rowcontest){
46 if($rowcontest->rules->whitelist_hero!=''){
47 $temp_whitelist=explode(';',$rowcontest->rules->whitelist_hero);
48 $jum_whitelist=count($temp_whitelist);
49 $assign=array_flip($temp_whitelist);
50 }
51
52 if($rowcontest->rules->blacklist_hero!=''){
53 $temp_blacklist=explode(';',$rowcontest->rules->blacklist_hero);
54 $jum_blacklist=count($temp_blacklist);
55 $assign2=array_flip($temp_blacklist);
56 }
57
58 $party_size=$rowcontest->rules->party_size;
59
60
61 if($rowcontest->league_id!=0){
62 $league_id=explode(';',$rowcontest->league_id);
63 $assign3=array_flip($league_id);
64 }
65
66 $judge=explode(';',$rowcontest->rules->var_to_record);
67 $opt=explode(';',$rowcontest->rules->other_factor);
68 $countopt=count($opt);
69 $countdata=count($judge);
70
71 $leaderboard=array();
72
73 $participant=dota_contest_detail::where([['status',0],['contest_id',$rowcontest->id]])->get();
74 $vardata=array('kills','deaths','assists','last_hits','denies','gold_per_min','xp_per_min','level','hero_damage','tower_damage','hero_healing','gold','gold_spent','scaled_hero_damage','scaled_tower_damage','scaled_hero_healing','nett','duration');
75 if($participant->count() > 0){
76 foreach($participant as $player){
77 for($i=0;$i<count($vardata);$i++){
78 $variable=$vardata[$i];
79 $record_data[''.$vardata[$i].'']=$player->$variable;
80 }
81 $record_match_id=$player->record_match_id;
82 $new_record_match_id="";
83 $new_record_data=array();
84 $points=$player->points;
85
86 $gethistory=file_get_contents('https://api.opendota.com/api/players/'.$player->steamid.'/matches');
87 $rawhistory=json_decode($gethistory);
88
89
90 if($record_match_id!=""){
91
92 $temp_last_match_id=explode(';', $record_match_id);
93 $lastkey=count($temp_last_match_id);
94 $last_match_id=$temp_last_match_id[$lastkey-1];
95 $datahistory=1;
96 }else{
97 if($player->last_match_id!=""){
98 $last_match_id=$player->last_match_id;
99 $datahistory=1;
100 }else{
101 $last_match_id="";
102 $datahistory=0;
103 }
104 $lastkey=0;
105 }
106
107
108 foreach($rawhistory as $history){
109
110 if($history->party_size==NULL){
111 $datapz=1;
112 }else{
113 $datapz=$history->party_size;
114 }
115
116 if($lastkey<$rowcontest->match_count){
117 if($last_match_id!=""){
118
119 if($history->match_id!=$last_match_id){
120
121 $sectomin=$history->duration/60;
122 $time= (int)$sectomin;
123 if($history->lobby_type==$rowcontest->rules->lobby_type && $time >= $rowcontest->match_duration && $datapz==$party_size ){
124 $getdetail=file_get_contents('https://api.steampowered.com/IDOTA2Match_570/GetMatchDetails/v0001/?match_id='.$history->match_id.'&key=A73DEE88C6E2519CE09666F9CCABEAFC');
125 $rawdetail=json_decode($getdetail);
126 foreach($rawdetail->result->players as $detail){
127 if($detail->account_id==$player->steamid){
128 $vararray=array();
129 $vararray['duration']=$time;
130 $vararray['kills']=$detail->kills;
131 $vararray['deaths']=$detail->deaths;
132 $vararray['assists']=$detail->assists;
133 $vararray['last_hits']=$detail->last_hits;
134 $vararray['denies']=$detail->denies;
135 $vararray['gold_per_min']=$detail->gold_per_min;
136 $vararray['xp_per_min']=$detail->xp_per_min;
137 $vararray['level']=$detail->level;
138 $vararray['hero_damage']=$detail->hero_damage;
139 $vararray['tower_damage']=$detail->tower_damage;
140 $vararray['hero_healing']=$detail->hero_healing;
141 $vararray['gold']=$detail->gold;
142 $vararray['gold_spent']=$detail->gold_spent;
143 $vararray['scaled_hero_damage']=$detail->scaled_hero_damage;
144 $vararray['scaled_tower_damage']=$detail->scaled_tower_damage;
145 $vararray['scaled_hero_healing']=$detail->scaled_hero_healing;
146 $vararray['nett']=$detail->gold+$detail->gold_spent;
147 }
148 }
149
150 if($rowcontest->league_id!=0){
151 if(array_key_exists($history->league_id,$assign)){
152 if($rowcontest->rules->whitelist_hero!=''){
153 if(array_key_exists($history->hero_id,$assign)){
154
155 //points
156
157 if($rowcontest->rules->formula_id==2){
158 $tempoints=$vararray[''.$judge[0].'']-$vararray[''.$judge[1].''];
159 $points=$points+$tempoints;
160 }else{
161 $points=$vararray[''.$judge[0].''];
162 }
163
164 if($new_record_match_id==""){
165 $new_record_match_id=$history->match_id;
166 }else{
167 $new_record_match_id=$new_record_match_id.";".$history->match_id;
168 }
169
170
171 for($i=0;$i<count($vardata);$i++){
172 $datavar=$vardata[$i];
173 if(!isset($new_record_data[''.$datavar.''])){
174 $new_record_data[''.$datavar.'']=$vararray[''.$datavar.''];
175 }else{
176 $new_record_data[''.$datavar.'']=$new_record_data.";".$vararray[''.$datavar.''];
177 }
178 }
179
180 $lastkey++;
181 if($lastkey>=$rowcontest->match_count){
182 $datafinish=array();
183 $datafinish["status"]=1;
184 $finish=dota_contest_detail::where([['uid', $player->uid],["contest_id",$player->contest_id]])->update($datafinish);
185 break;
186 }
187 }
188 }elseif($rowcontest->rules->blacklist_hero!=''){
189 if(!array_key_exists($history->hero_id,$assign2)){
190
191 //points
192
193 if($rowcontest->rules->formula_id==2){
194 $tempoints=$vararray[''.$judge[0].'']-$vararray[''.$judge[1].''];
195 $points=$points+$tempoints;
196 }else{
197 $points=$vararray[''.$judge[0].''];
198 }
199
200 if($new_record_match_id==""){
201 $new_record_match_id=$history->match_id;
202 }else{
203 $new_record_match_id=$new_record_match_id.";".$history->match_id;
204 }
205
206 for($i=0;$i<count($vardata);$i++){
207 $datavar=$vardata[$i];
208 if(!isset($new_record_data[''.$datavar.''])){
209 $new_record_data[''.$datavar.'']=$vararray[''.$datavar.''];
210 }else{
211 $new_record_data[''.$datavar.'']=$new_record_data.";".$vararray[''.$datavar.''];
212 }
213 }
214
215 $lastkey++;
216 if($lastkey>=$rowcontest->match_count){
217 $datafinish=array();
218 $datafinish["status"]=1;
219 $finish=dota_contest_detail::where([['uid', $player->uid],["contest_id",$player->contest_id]])->update($datafinish);
220 break;
221 }
222 }
223 }else{
224
225 //points
226
227 if($rowcontest->rules->formula_id==2){
228 $tempoints=$vararray[''.$judge[0].'']-$vararray[''.$judge[1].''];
229 $points=$points+$tempoints;
230 }else{
231 $points=$vararray[''.$judge[0].''];
232 }
233
234 if($new_record_match_id==""){
235 $new_record_match_id=$history->match_id;
236 }else{
237 $new_record_match_id=$new_record_match_id.";".$history->match_id;
238 }
239
240
241 for($i=0;$i<count($vardata);$i++){
242 $datavar=$vardata[$i];
243 if(!isset($new_record_data[''.$datavar.''])){
244 $new_record_data[''.$datavar.'']=$vararray[''.$datavar.''];
245 }else{
246 $new_record_data[''.$datavar.'']=$new_record_data.";".$vararray[''.$datavar.''];
247 }
248 }
249
250 $lastkey++;
251 if($lastkey>=$rowcontest->match_count){
252 $datafinish=array();
253 $datafinish["status"]=1;
254 $finish=dota_contest_detail::where([['uid', $player->uid],["contest_id",$player->contest_id]])->update($datafinish);
255 break;
256 }
257 }
258 }
259
260 }else{
261
262 if($rowcontest->rules->whitelist_hero!=''){
263
264 if(array_key_exists($history->hero_id,$assign)){
265
266 if($rowcontest->rules->formula_id==2){
267 $tempoints=$vararray[''.$judge[0].'']-$vararray[''.$judge[1].''];
268 $points=$points+$tempoints;
269 }else{
270 $points=$vararray[''.$judge[0].''];
271 }
272
273
274 if($new_record_match_id==""){
275 $new_record_match_id=$history->match_id;
276 }else{
277 $new_record_match_id=$new_record_match_id.";".$history->match_id;
278 }
279
280
281 for($i=0;$i<count($vardata);$i++){
282 $datavar=$vardata[$i];
283 if(!isset($new_record_data[''.$datavar.''])){
284 $new_record_data[''.$datavar.'']=$vararray[''.$datavar.''];
285 }else{
286 $new_record_data[''.$datavar.'']=$new_record_data.";".$vararray[''.$datavar.''];
287 }
288 }
289
290 $lastkey++;
291 if($lastkey>=$rowcontest->match_count){
292 $datafinish=array();
293 $datafinish["status"]=1;
294 $finish=dota_contest_detail::where([['uid', $player->uid],["contest_id",$player->contest_id]])->update($datafinish);
295 break;
296 }
297 }
298 }elseif($rowcontest->rules->blacklist_hero!=''){
299 if(!array_key_exists($history->hero_id,$assign2)){
300
301 //points
302
303 if($rowcontest->rules->formula_id==2){
304 $tempoints=$vararray[''.$judge[0].'']-$vararray[''.$judge[1].''];
305 $points=$points+$tempoints;
306 }else{
307 $points=$vararray[''.$judge[0].''];
308 }
309
310 if($new_record_match_id==""){
311 $new_record_match_id=$history->match_id;
312 }else{
313 $new_record_match_id=$new_record_match_id.";".$history->match_id;
314 }
315
316 for($i=0;$i<count($vardata);$i++){
317 $datavar=$vardata[$i];
318 if(!isset($new_record_data[''.$datavar.''])){
319 $new_record_data[''.$datavar.'']=$vararray[''.$datavar.''];
320 }else{
321 $new_record_data[''.$datavar.'']=$new_record_data.";".$vararray[''.$datavar.''];
322 }
323 }
324
325 $lastkey++;
326 if($lastkey>=$rowcontest->match_count){
327 $datafinish=array();
328 $datafinish["status"]=1;
329 $finish=dota_contest_detail::where([['uid', $player->uid],["contest_id",$player->contest_id]])->update($datafinish);
330 break;
331 }
332 }
333 }else{
334 //points
335
336 if($rowcontest->rules->formula_id==2){
337 $tempoints=$vararray[''.$judge[0].'']-$vararray[''.$judge[1].''];
338 $points=$points+$tempoints;
339 }else{
340 $points=$vararray[''.$judge[0].''];
341 }
342
343 if($new_record_match_id==""){
344 $new_record_match_id=$history->match_id;
345 }else{
346 $new_record_match_id=$new_record_match_id.";".$history->match_id;
347 }
348
349
350 for($i=0;$i<count($vardata);$i++){
351 $datavar=$vardata[$i];
352 if(!isset($new_record_data[''.$datavar.''])){
353 $new_record_data[''.$datavar.'']=$vararray[''.$datavar.''];
354 }else{
355 $new_record_data[''.$datavar.'']=$new_record_data.";".$vararray[''.$datavar.''];
356 }
357 }
358
359 $lastkey++;
360 if($lastkey>=$rowcontest->match_count){
361 $datafinish=array();
362 $datafinish["status"]=1;
363 $finish=dota_contest_detail::where([['uid', $player->uid],["contest_id",$player->contest_id]])->update($datafinish);
364 break;
365 }
366 }
367
368
369 }
370
371 }
372
373
374 }else{
375 break;
376 }
377 }else{
378 $last_match_id=$history->match_id;
379 $sectomin=$history->duration/60;
380 $time= (int)$sectomin;
381 if($history->start_time>strtotime($rowcontest->start_date)){
382 if($history->lobby_type==$rowcontest->rules->lobby_type && $time >= $rowcontest->match_duration && $datapz==$party_size ){
383 $getdetail=file_get_contents('https://api.steampowered.com/IDOTA2Match_570/GetMatchDetails/v0001/?match_id='.$history->match_id.'&key=A73DEE88C6E2519CE09666F9CCABEAFC');
384 $rawdetail=json_decode($getdetail);
385 $vararray['duration']=$rawdetail->result->duration;
386 foreach($rawdetail->result->players as $detail){
387 if($detail->account_id==$player->steamid){
388 $vararray=array();
389 $vararray['duration']=$time;
390 $vararray['kills']=$detail->kills;
391 $vararray['deaths']=$detail->deaths;
392 $vararray['assists']=$detail->assists;
393 $vararray['last_hits']=$detail->last_hits;
394 $vararray['denies']=$detail->denies;
395 $vararray['gold_per_min']=$detail->gold_per_min;
396 $vararray['xp_per_min']=$detail->xp_per_min;
397 $vararray['level']=$detail->level;
398 $vararray['hero_damage']=$detail->hero_damage;
399 $vararray['tower_damage']=$detail->tower_damage;
400 $vararray['hero_healing']=$detail->hero_healing;
401 $vararray['gold']=$detail->gold;
402 $vararray['gold_spent']=$detail->gold_spent;
403 $vararray['scaled_hero_damage']=$detail->scaled_hero_damage;
404 $vararray['scaled_tower_damage']=$detail->scaled_tower_damage;
405 $vararray['scaled_hero_healing']=$detail->scaled_hero_healing;
406 $vararray['nett']=$detail->gold+$detail->gold_spent;
407 }
408 }
409
410 if($rowcontest->league_id!=0){
411 if(array_key_exists($history->league_id,$assign)){
412 if($rowcontest->rules->whitelist_hero!=''){
413 if(array_key_exists($history->hero_id,$assign)){
414
415 //points
416
417 if($rowcontest->rules->formula_id==2){
418 $tempoints=$vararray[''.$judge[0].'']-$vararray[''.$judge[1].''];
419 $points=$points+$tempoints;
420 }else{
421 $points=$vararray[''.$judge[0].''];
422 }
423
424 if($new_record_match_id==""){
425 $new_record_match_id=$history->match_id;
426 }else{
427 $new_record_match_id=$new_record_match_id.";".$history->match_id;
428 }
429
430 for($i=0;$i<count($vardata);$i++){
431 $datavar=$vardata[$i];
432 if(!isset($new_record_data[''.$datavar.''])){
433 $new_record_data[''.$datavar.'']=$vararray[''.$datavar.''];
434 }else{
435 $new_record_data[''.$datavar.'']=$new_record_data.";".$vararray[''.$datavar.''];
436 }
437 }
438
439 $lastkey++;
440 if($lastkey>=$rowcontest->match_count){
441 $datafinish=array();
442 $datafinish["status"]=1;
443 if($datahistory==0){
444 $datafinish["last_match_id"]=$history->match_id;
445 }
446
447 $finish=dota_contest_detail::where([['uid', $player->uid],["contest_id",$player->contest_id]])->update($datafinish);
448 break;
449 }
450 }
451 }elseif($rowcontest->rules->blacklist_hero!=''){
452 if(!array_key_exists($history->hero_id,$assign2)){
453
454 //points
455
456 if($rowcontest->rules->formula_id==2){
457 $tempoints=$vararray[''.$judge[0].'']-$vararray[''.$judge[1].''];
458 $points=$points+$tempoints;
459 }else{
460 $points=$vararray[''.$judge[0].''];
461 }
462
463
464 if($new_record_match_id==""){
465 $new_record_match_id=$history->match_id;
466 }else{
467 $new_record_match_id=$new_record_match_id.";".$history->match_id;
468 }
469
470
471 for($i=0;$i<count($vardata);$i++){
472 $datavar=$vardata[$i];
473 if(!isset($new_record_data[''.$datavar.''])){
474 $new_record_data[''.$datavar.'']=$vararray[''.$datavar.''];
475 }else{
476 $new_record_data[''.$datavar.'']=$new_record_data.";".$vararray[''.$datavar.''];
477 }
478 }
479
480 $lastkey++;
481 if($lastkey>=$rowcontest->match_count){
482 $datafinish=array();
483 $datafinish["status"]=1;
484 if($datahistory==0){
485 $datafinish["last_match_id"]=$history->match_id;
486 }
487 $finish=dota_contest_detail::where([['uid', $player->uid],["contest_id",$player->contest_id]])->update($datafinish);
488 break;
489 }
490 }
491 }else{
492
493 //points
494
495 if($rowcontest->rules->formula_id==2){
496 $tempoints=$vararray[''.$judge[0].'']-$vararray[''.$judge[1].''];
497 $points=$points+$tempoints;
498 }else{
499 $points=$vararray[''.$judge[0].''];
500 }
501
502
503 if($new_record_match_id==""){
504 $new_record_match_id=$history->match_id;
505 }else{
506 $new_record_match_id=$new_record_match_id.";".$history->match_id;
507 }
508
509 for($i=0;$i<count($vardata);$i++){
510 $datavar=$vardata[$i];
511 if(!isset($new_record_data[''.$datavar.''])){
512 $new_record_data[''.$datavar.'']=$vararray[''.$datavar.''];
513 }else{
514 $new_record_data[''.$datavar.'']=$new_record_data.";".$vararray[''.$datavar.''];
515 }
516 }
517
518 $lastkey++;
519 if($lastkey>=$rowcontest->match_count){
520 $datafinish=array();
521 $datafinish["status"]=1;
522 if($datahistory==0){
523 $datafinish["last_match_id"]=$history->match_id;
524 }
525 $finish=dota_contest_detail::where([['uid', $player->uid],["contest_id",$player->contest_id]])->update($datafinish);
526 break;
527 }
528 }
529 }
530
531 }else{
532
533 if($rowcontest->rules->whitelist_hero!=''){
534
535 if(array_key_exists($history->hero_id,$assign)){
536
537 //points
538
539 if($rowcontest->rules->formula_id==2){
540 $tempoints=$vararray[''.$judge[0].'']-$vararray[''.$judge[1].''];
541 $points=$points+$tempoints;
542 }else{
543 $points=$vararray[''.$judge[0].''];
544 }
545
546
547 if($new_record_match_id==""){
548 $new_record_match_id=$history->match_id;
549 }else{
550 $new_record_match_id=$new_record_match_id.";".$history->match_id;
551 }
552
553
554 for($i=0;$i<count($vardata);$i++){
555 $datavar=$vardata[$i];
556 if(!isset($new_record_data[''.$datavar.''])){
557 $new_record_data[''.$datavar.'']=$vararray[''.$datavar.''];
558 }else{
559 $new_record_data[''.$datavar.'']=$new_record_data.";".$vararray[''.$datavar.''];
560 }
561 }
562
563 $lastkey++;
564 if($lastkey>=$rowcontest->match_count){
565 $datafinish=array();
566 $datafinish["status"]=1;
567 if($datahistory==0){
568 $datafinish["last_match_id"]=$history->match_id;
569 }
570
571 $finish=dota_contest_detail::where([['uid', $player->uid],["contest_id",$player->contest_id]])->update($datafinish);
572 break;
573 }
574 }
575 }elseif($rowcontest->rules->blacklist_hero!=''){
576 if(!array_key_exists($history->hero_id,$assign2)){
577
578 //points
579
580 if($rowcontest->rules->formula_id==2){
581 $tempoints=$vararray[''.$judge[0].'']-$vararray[''.$judge[1].''];
582 $points=$points+$tempoints;
583 }else{
584 $points=$vararray[''.$judge[0].''];
585 }
586
587 if($new_record_match_id==""){
588 $new_record_match_id=$history->match_id;
589 }else{
590 $new_record_match_id=$new_record_match_id.";".$history->match_id;
591 }
592
593
594 for($i=0;$i<count($vardata);$i++){
595 $datavar=$vardata[$i];
596 if(!isset($new_record_data[''.$datavar.''])){
597 $new_record_data[''.$datavar.'']=$vararray[''.$datavar.''];
598 }else{
599 $new_record_data[''.$datavar.'']=$new_record_data.";".$vararray[''.$datavar.''];
600 }
601 }
602
603 $lastkey++;
604 if($lastkey>=$rowcontest->match_count){
605 $datafinish=array();
606 $datafinish["status"]=1;
607 if($datahistory==0){
608 $datafinish["last_match_id"]=$history->match_id;
609 }
610
611 $finish=dota_contest_detail::where([['uid', $player->uid],["contest_id",$player->contest_id]])->update($datafinish);
612 break;
613 }
614 }
615 }else{
616
617 //points
618
619 if($rowcontest->rules->formula_id==2){
620 $tempoints=$vararray[''.$judge[0].'']-$vararray[''.$judge[1].''];
621 $points=$points+$tempoints;
622 }else{
623 $points=$vararray[''.$judge[0].''];
624 }
625
626
627 if($new_record_match_id==""){
628 $new_record_match_id=$history->match_id;
629 }else{
630 $new_record_match_id=$new_record_match_id.";".$history->match_id;
631 }
632
633
634 for($i=0;$i<count($vardata);$i++){
635 $datavar=$vardata[$i];
636 if(!isset($new_record_data[''.$datavar.''])){
637 $new_record_data[''.$datavar.'']=$vararray[''.$datavar.''];
638 }else{
639 $new_record_data[''.$datavar.'']=$new_record_data.";".$vararray[''.$datavar.''];
640 }
641 }
642
643 $lastkey++;
644 if($lastkey>=$rowcontest->match_count){
645 $datafinish=array();
646 $datafinish["status"]=1;
647 if($datahistory==0){
648 $datafinish["last_match_id"]=$history->match_id;
649 }
650
651 $finish=dota_contest_detail::where([['uid', $player->uid],["contest_id",$player->contest_id]])->update($datafinish);
652 break;
653 }
654 }
655
656
657 }
658
659 }
660 }
661 }
662
663 }
664
665 }
666
667
668 $edit=array();
669
670 if($new_record_match_id!="" && $new_record_data!=""){
671 if($record_match_id==""){
672 $record_match_id=$new_record_match_id;
673 }else{
674 $record_match_id=$record_match_id.";".$new_record_match_id;
675 }
676
677 for($i=0;$i<count($vardata);$i++){
678 $variable=$vardata[$i];
679 if($record_data[''.$variable.'']==""){
680 $record_data[''.$variable.'']=$new_record_data[''.$variable.''];
681 }else{
682 $record_data[''.$variable.'']=$record_data[''.$variable.''].";".$new_record_data[''.$variable.''];
683 }
684 $edit[''.$variable.'']=$record_data[''.$variable.''];
685 }
686
687 if($datahistory==0){
688 $edit['last_match_id']=$last_match_id;
689 }
690
691 // if($optional_record_data!=""){
692 // $edit["optional_record_data"]=$optional_record_data;
693 // }
694
695 $edit['record_match_id']=$record_match_id;
696 $edit['points']=$points;
697
698 $edit=dota_contest_detail::where([['contest_id',$rowcontest->id],['steamid',$player->steamid],['uid',$player->uid]])->update($edit);
699 }
700 //untuk leaderboard
701 $raworder="";
702 for($i=0;$i<$countopt;$i++){
703 $tipe=explode("-", $opt[$i]);
704 if($raworder==""){
705 if($tipe[1]==0){
706 $temporder=" ".$tipe[0]. " ASC";
707 }else{
708 $temporder=" ".$tipe[0]. " DESC";
709 }
710 $raworder=$temporder;
711 }else{
712 if($tipe[1]==0){
713 $temporder=" ".$tipe[0]. " ASC";
714 }else{
715 $temporder=" ".$tipe[0]. " DESC";
716 }
717 $raworder=$raworder.",".$temporder;
718 }
719 }
720 $sort=dota_contest_detail::select('uid')->where('contest_id',$rowcontest->id)->orderBy('points','desc')->orderByRaw($raworder)->get();
721 if($sort->count()>0){
722 $sorting="";
723 foreach ($sort as $player) {
724 if($sorting==""){
725 $sorting=$player->uid;
726 }else{
727 $sorting=$sorting.";".$player->uid;
728 }
729 }
730 $lb=array();
731 $lb["leaderboard"]=$sorting;
732 $udatelb=dota_contest::where("id",$rowcontest->id)->update($lb);
733 }
734
735 }
736
737
738 }
739
740
741 }
742
743
744 }
745 });
746 }
747
748
749 public function list(){
750 $contest=dota_contest::with('rules')->where('status',0)->get();
751 return view("index.index",compact(['contest']));
752 }
753
754
755 public function register($id){
756 $result = substr('76561198423119717', 3) - 61197960265728;
757 $steamid=(string) $result;
758
759 $verify=file_get_contents('http://api.steampowered.com/IDOTA2Match_570/GetMatchHistory/v1?key=A73DEE88C6E2519CE09666F9CCABEAFC&account_id='.$steamid.'');
760 $data=json_decode($verify);
761 if($data->result->status==1){
762 if(!is_null($data->result->matches[0])){
763 $last_match_id=$data->result->matches[0]->match_id;
764 }else{
765 $last_match_id="";
766 }
767 $cek=dota_contest_detail::where([['uid',1],['status',0]])->orWhere([['uid',2],['status',1],['contest_id',$id]])->first();
768 if($cek){
769 Session::flash('register_fail', 'You already join in this or other contest, please finish first before register again. Trims');
770 }else{
771 $tambah = new dota_contest_detail();
772 $tambah->contest_id=$id;
773 $tambah->uid=2;
774 $tambah->steamid=$steamid;
775 if($last_match_id!=""){
776 $tambah->last_match_id=$last_match_id;
777 }
778 $tambah->status=0;
779 date_default_timezone_set("Asia/Bangkok");
780
781 $tambah->register_date=date('Y-m-d H:i:s');
782 $tambah->save();
783 $db=firestore();
784 if($last_match_id!=""){
785 $lmi=$last_match_id;
786 }else{
787 $lmi=null;
788 }
789 $register = $db->collection($id)->document('1');
790 $register->set([
791 'contest_id' =>$id ,
792 'uid' => 1,
793 'steamid' => $steamid,
794 'last_match_id' =>$lmi,
795 'record_match_id'=>null,
796 'kills'=>null,
797 'deaths'=>null,
798 'assists'=>null,
799 'last_hits'=>null,
800 'denies'=>null,
801 'gold_per_min'=>null,
802 'xp_per_min'=>null,
803 'level'=>null,
804 'hero_damage'=>null,
805 'tower_damage'=>null,
806 'hero_healing'=>null,
807 'gold'=>null,
808 'gold_spent'=>null,
809 'scaled_hero_damage'=>null,
810 'scaled_tower_damage'=>null,
811 'scaled_hero_healing'=>null,
812 'nett'=>null,
813 'duration'=>null,
814 'register_date'=>date('Y-m-d H:i:s'),
815 'status' => 0,
816 'points' => 0,
817 'match_count' => 0
818 ]);
819
820 Session::flash('register_success', 'Success for register,enjoy this contest :)');
821 }
822
823 }else{
824 Session::flash('register_fail', 'Please open public your match history for participate and during in contest');
825 }
826
827 return redirect()->back();
828 }
829
830 public function sorta(){
831 $optdata=array();
832 $vardata=array('kills','deaths','assists','last_hits','denies','gold_per_min','xp_per_min','level','hero_damage','tower_damage','hero_healing','gold','gold_spent','scaled_hero_damage','scaled_tower_damage','scaled_hero_healing','nett','duration');
833 $cek=dota_contest_detail::where([['contest_id',1]])->get();
834 $rules=dota_contest_type::select('other_factor')->where('id',1)->first();
835 if($rules){
836 $opt=explode(";", $rules->other_factor);
837 }
838 foreach($cek as $rowcek){
839 for ($i=0;$i<count($opt);$i++) {
840 $field=$opt[$i];
841 $explode=explode(";", $rowcek->$field);
842 $jum=0;
843 for($j=0;$j<count($explode);$j++){
844 $jum=$jum+(int)$explode[$j];
845 }
846 $col=$i+1;
847 $colname="column".$col;
848 $optdata[$rowcek->uid][''.$colname.'']=$jum;
849 }
850 }
851 $sorted = collect($optdata)->sortBy('column3')->sortByDesc('column2')->sortBy('column1');
852 dd($sorted);
853 }
854
855 public function update(){
856 DB::transaction(function(){
857 $date=date("Y-m-d H:i:s");
858 $contest=dota_contest::where([['status',0],['end_date','<',$date]])->get();
859 if($contest->count() > 0){
860 foreach ($contest as $rowcontest) {
861 //bagi2 exp dan cookies
862 $rank=explode(';', $rowcontest->leaderboard);
863 $jum=count($rank);
864 // $jsonexp=ExperienceDistribution::where('id',$rowcontest->exp_distrbution_id)->first();
865 // if($jsonexp){
866 // $rawexp=json_decode($jsonexp->formula);
867 // }else{
868 // $rawexp=null;
869 // }
870 $jsoncookies=CookiesDistribution::where('id',$rowcontest->cookies_distrbution_id)->first();
871 // dd($jsoncookies);
872 if($jsoncookies){
873 $rawcookies=json_decode($jsoncookies->value, false);
874 }else{
875 $rawcookies=null;
876 }
877 //$scaleexp=$jsonexp->scale;
878 $scalecookie=$jsoncookies->scale;
879
880 for($i=0;$i<$jum;$i++){
881 //exp
882 $pos=$i+1;
883 // if(!is_null($rawexp)){
884 // if($pos<=$scaleexp){
885 // $exp=$rawexp->experience[$pos];
886 // }else{
887 // $other=$scaleexp+1;
888 // $exp=$rawexp->experience[$other];
889 // }
890 // }
891
892 //cookies
893 if(!is_null($rawcookies)){
894 if($pos<=$scalecookie){
895 $cookies=$rawcookies->cookies->$pos;
896 }else{
897 $other=$scaleexp+1;
898 $cookies=$rawcookies->cookies->$other;
899 }
900 }
901
902
903 $update=players::find($rank[$i]);
904 //$update->exp=$update->exp+$exp;
905 $update->cookies=$update->cookies+$cookies;
906 $update->save();
907 }
908 //end bagi2 exp dan cookies
909 $edit = dota_contest::where('id', $rowcontest->id)->first();
910 $edit->status=1;
911 $edit->update();
912 $force=array();
913 $force['status']=1;
914 $edit_contest_detail = dota_contest_detail::where([['contest_id',$rowcontest->id]])->update($force);
915 }
916 }
917 });
918 }
919
920
921 public function converter($steamid){
922 $result = substr($steamid, 3) - 61197960265728 ;
923 echo (string) $result;
924 }
925
926
927
928
929 public function changeip(){
930
931 $cek=curl('https://www.forebet.com/en/football-tips-and-predictions-for-today');
932 $raw=scrape_between($cek,'<table class="schema" cellpadding="0" cellspacing="0" border="1" style="padding-left:1px;">',"<div id='div-gpt-ad-1462781688317-0' style='height:600px; width:300px;'>");
933 $raw=str_replace('<tr style="font-size:10px;">', '', $raw);
934 $raw=scrape_between($raw,"</tr><tr class='tr_0' onmouseover=\"this.className='tr_highlight';\" onmouseout=\"this.className='tr_0'\" >",'<div class="second_header">Computer generated football predictions <b>(forebets)</b><br/> for the next round matches.</div>');
935 //$raw=str_replace("<tr class='tr_0' onmouseover=\"this.className='tr_highlight';\" onmouseout=\"this.className='tr_0'\" >", "", $raw);
936 //$raw=str_replace("<tr class='tr_1' onmouseover=\"this.className='tr_highlight';\" onmouseout=\"this.className='tr_1'\" >", "", $raw);
937 $explode=explode("<tr class='tr_1' onmouseover=\"this.className='tr_highlight';\" onmouseout=\"this.className='tr_1'\" >", $raw);
938 $c=count($explode);
939
940 //$odds=strip_tags($odds);
941 // <tr>
942 // <td>$turney</td>
943 // <td>$match</td>
944 // <td>$disprob</td>
945 // <td>$forebet</td>
946 // <td>$cs</td>
947 // <td>$ag</td>
948 // <td>$odds</td>
949 // </tr>
950 echo"<table border=1>
951 <tr>
952 <th>Tournament</th>
953 <th>Match</th>
954 <th>Probability in %</th>
955 <th>Forebet</th>
956 <th>Correct score</th>
957 <th>Avg. Goals</th>
958 <th>Odds</th>
959 </tr>";
960 for($i=0;$i<$c;$i++){
961 $cek=explode("<tr class='tr_0' onmouseover=\"this.className='tr_highlight';\" onmouseout=\"this.className='tr_0'\" >", $explode[$i]);
962 if(count($cek)==2){
963 echo $cek[0]."<br />-------------------------------------------------------------------------------------------</br>";
964 echo $cek[1]."<br />-------------------------------------------------------------------------------------------</br>";
965 }else{
966 $data=str_replace("</tr>", "", $explode[$i]);
967 echo $data."<br />-------------------------------------------------------------------------------------------</br>";
968 }
969 }
970 echo"</table>";
971 //echo $data."<br />-------------------------------------------------------------------------------------------</br>";
972
973
974 }
975
976 public function ocr(){
977 $app = new Application([
978 'ocrs' => [
979 'baidu' => [
980 'app_key' => 'x9dmxXnOvEyZc4ToDi4hPnWq',
981 'secret_key' => 'oCMdVRw9f41lqGN6rSa0aqGDqMkbtW8a',
982 ],
983 ]
984 ]);
985 $link=public_path('img\screenshot\test8.jpg');
986 $convert =$app->baidu->webimage($link, []);
987 $data=$convert['words_result'];
988 //dd($data);
989 foreach($data as $row){
990 if(strlen($row['words'])>5){
991 $clean=preg_replace('/#\w+/', '', $row['words']);
992 echo trim($clean)."<br />";
993 }
994 }
995 // $jum=$convert['words_result_num'];
996 // $checklist=0;
997 // //dd($data);
998 // $result=array();
999 // echo "<img src='".asset("img/screenshot/test3.jpeg")."' /><br /><br />";
1000
1001 // //cek 1
1002 // if($data[0]['words']=='PUEG PLAY CUSTOMIZE STORE STATISTICS REPLAYS'){
1003 // $checklist++;
1004 // }
1005
1006 // //cek 2
1007 // if(strpos($data[1]["words"], 'BP')!==false){
1008 // $checklist++;
1009 // }
1010
1011
1012 // //cek 3
1013 // if($data[2]["words"]=='JusMangga'){
1014 // $checklist++;
1015 // }
1016
1017 // //cek 4
1018 // for($i=3;$i<$jum;$i++){
1019 // if($data[$i]["words"]=='FPP' || $data[$i]['words']=='TPP'){
1020 // $checklist++;
1021 // }
1022
1023 // $str = preg_replace("/[^A-Za-z?]/","",$data[$i]['words']);
1024 // if($str=='SEA' || $str=='NA' || $str=='EU'){
1025 // $checklist++;
1026 // }
1027 // }
1028
1029 // if($checklist > 3){
1030 // $result["valid"]=true;
1031 // }else{
1032 // $result['valid']=false;
1033 // }
1034 // $result['username']=$data[2]["words"];
1035 // return json_encode($result);
1036 }
1037
1038 public function ocr2(){
1039 $app = new Application([
1040 'ocrs' => [
1041 'baidu' => [
1042 'app_key' => 'x9dmxXnOvEyZc4ToDi4hPnWq',
1043 'secret_key' => 'oCMdVRw9f41lqGN6rSa0aqGDqMkbtW8a',
1044 ],
1045 ]
1046 ]);
1047 $link=public_path('img\screenshot\test4.png');
1048 $convert =$app->baidu->webimage($link, []);
1049 //dd($convert);
1050 $data=$convert['words_result'];
1051 $jum=$convert['words_result_num'];
1052 $checklist=0;
1053 //dd($data);
1054 echo "<img src='".asset("img/screenshot/test4.png")."' /><br /><br />";
1055 echo "cek Result : <br /><br />";
1056
1057 //cek 1
1058
1059 if($data[0]['words']=='START'){
1060 $checklist++;
1061
1062 }
1063
1064 //cek 2
1065 if($data[2]["words"]=='Halvaced'){
1066 $checklist++;
1067
1068 }
1069
1070 //cek 3
1071 if($data[9]["words"]=='SHO' || $data[9]["words"]=='SHOP'){
1072 $checklist++;
1073 }
1074
1075
1076
1077
1078
1079 for($i=9;$i<$jum;$i++){
1080 //cek 4
1081 if($data[$i]["words"]=='SEASON' || $data[$i]["words"]=='SEASIN'){
1082 $checklist++;
1083 }
1084
1085 //cek 5
1086 if($data[$i]["words"]=='ARMORY INVENTORY'){
1087 $checklist++;
1088 }
1089 }
1090
1091 if($checklist > 3){
1092 $result["valid"]=true;
1093 }else{
1094 $result['valid']=false;
1095 }
1096 $result['username']=$data[2]["words"];
1097 return json_encode($result);
1098
1099
1100 }
1101
1102 public function ocr3(){
1103 $gcv = new GoogleCloudVision();
1104
1105 // Follow instruction from Google Cloud Vision Document
1106 $gcv->setKey("AIzaSyBpEtvSLHVA4H8lumAU5xIwkEDqWG3nIXs");
1107 $gcv->setImage(asset("img/screenshot/test32.jpg"));
1108 $gcv->addFeatureOCR(1);
1109 $gcv->setImageContext(array("languageHints"=>array("en","kr")));
1110 $response = $gcv->request();
1111 $data=$response['responses'][0]['textAnnotations'];
1112 $jum=count($data);
1113 $mlid="";
1114 $flagid=0;
1115 $flagfull=0;
1116 $nickname="";
1117 $checklist=0;
1118 $flaggender=0;
1119 echo "<img src='".asset("img/screenshot/test32.jpg")."' /><br /><br />";
1120 echo "cek Result : <br /><br />";
1121 dd($data);
1122 $stats=0;
1123 for($i=0;$i<$jum;$i++){
1124 //cek and get nickname
1125
1126 if($nickname=="" && $i==0 && $mlid==""){
1127 // if(stripos($data[$i]['description'],"Lvl:") !== FALSE || stripos($data[$i]['description'],"Lv:") !== FALSE){
1128 // $stats=1;
1129 // }
1130 // if($data[$i]['description']!='Profil' && $data[$i]['description']!='Profile' && $data[$i]["description"]!='Cabinet' && $data[$i]['description']!= 'Trophy' && $data[$i]['description']!='CopySetings' && $data[$i]['description']!='Copy' && $data[$i]['description']!='Setings' && $data[$i]['description']!='OPROFILE' && $data[$i]['description']!='PROFILE' && $data[$i]['description']!='CopySettings' && $data[$i]['description']!='Live' && $data[$i]['description']!='LiveSteam' && $data[$i]['description']!='Stream' && $stats==0 && $data[$i]['description']!='Settings' && $data[$i]['description']!='SalinPengaturan' && $data[$i]['description']!='CopyS' ){
1131 // if(strlen($data[$i]['description'])==1){
1132 // if($flaggender==0){
1133 // $flaggender=1;
1134 // }else{
1135 // $nickname=$data[$i]['description'];
1136 // }
1137 // }else{
1138 // $nickname=$data[$i]['description'];
1139 // }
1140 // }
1141 $dataall=explode("\n", $data[$i]['description']);
1142 for($j=0;$j<count($dataall);$j++){
1143 if($dataall[$j]=='VP' || $dataall[$j]=="CopySettings Trophy Cabinet" || $dataall[$j]=='SalinPengaturan Trophy Cabinet'){
1144 $stats=1;
1145 }
1146 if($dataall[$j]!='PROFILE' && $dataall[$j]!='Profile' && $dataall[$j]!='PROFIL' && $dataall[$j]!='Profil' && $dataall[$j]!='Not in squad' && $dataall[$j]!='Tidak dalam skuad' && $stats==0 && $nickname=="" &&strlen($dataall[$j])>1 ){
1147 $cek=substr($dataall[$j], 0,1);
1148 $nickname=trim(str_replace("? ","",str_replace("?","",str_replace("d ", "",str_replace("o ", "",str_replace("Q ","",$dataall[$j]))))));
1149 }
1150 }
1151 }
1152
1153 //cek 1
1154 if($data[$i]['description']=='Profil' || $data[$i]['description']=='Profile'){
1155 $checklist++;
1156 }
1157
1158 //cek 2
1159 if($data[$i]["description"]=='Cabinet' || $data[$i]['description']== 'Trophy'){
1160 $checklist++;
1161 }
1162
1163 //cek 3
1164 // if($mlid==""){
1165 // $explode1=explode("ID:", $data[$i]["words"]);
1166 // if(count($explode1)>1){
1167 // $explode=explode(")", $explode1[1]);
1168 // if(count($explode)>1){
1169 // $mlid=$explode[0].")";
1170 // if($mlid=='103913203(2525)'){
1171 // $checklist++;
1172 // }
1173 // }
1174 // }else{
1175 // $explode1=explode(" ", $data[$i]["words"]);
1176 // //dd($explode1);
1177 // if(count($explode1)>1){
1178 // $explode=explode(":", $explode1[0]);
1179 // if(count($explode)>1){
1180 // $mlid=$explode[1];
1181 // if($explode[1]=='103913203(2525)'){
1182 // $checklist++;
1183 // }
1184 // }
1185 // }
1186 // }
1187 // }
1188 if($flagid!=2){
1189
1190 if($flagid==1){
1191 if($flagfull==0){
1192 $mlid=$data[$i]["description"];
1193 $flagfull=1;
1194 }else{
1195 $mlid=$mlid.$data[$i]["description"];
1196 $flagfull=2;
1197 $flagid=2;
1198 }
1199 }
1200
1201 if($data[$i]["description"]=="ID:" || $data[$i]["description"]=="ID"){
1202 $flagid=1;
1203 }else{
1204 if(strpos($data[$i]['description'],'ID:') && $i!=0){
1205
1206 $length=strlen($data[$i]["description"]);
1207 $lengthpot=strpos($data[$i]['description'],"ID:");
1208 $stop=($length-$lengthpot)*-1;
1209 $cek= substr($data[$i]["description"],$stop,$length);
1210
1211 $mlid=substr($cek,3);
1212 $flagid=1;
1213 $flagfull=1;
1214 }else{
1215 $length=strlen($data[$i]["description"]);
1216 $stop=($length-3)*-1;
1217 $cek= substr($data[$i]["description"],$length-($length*2),$stop);
1218 if($cek=="ID:" || $cek=="ID"){
1219 $mlid=substr($data[$i]["description"],3);
1220 $flagid=1;
1221 $flagfull=1;
1222 }
1223 }
1224
1225 }
1226 }
1227
1228 // if($mlid=="" && $flagid==2){
1229 // if($mlid=='103913203(2525)'){
1230 // $checklist++;
1231 // }
1232 // }
1233
1234
1235 //cek 4
1236 if($data[$i]["description"]=='Detail Mentor' || $data[$i]["description"]=='Mentor Details'){
1237 $checklist++;
1238 }
1239
1240 //cek 5
1241 if($data[$i]["description"]=='Info' || $data[$i]["description"]=='Stream Info' || $data[$i]["description"]=='Stream'){
1242 $checklist++;
1243 }
1244 }
1245
1246 if($checklist > 3 && $mlid!="" && $nickname!=""){
1247 $result["valid"]=true;
1248 }else{
1249 $result['valid']=false;
1250 }
1251 $result['username']=$mlid;
1252 $result["nickname"]=$nickname;
1253 return json_encode($result);
1254
1255
1256
1257 }
1258 public function fs(){
1259 $data=file_get_contents('http://api.iespl.yamisok.com/api/v1/game/11/get-standing');
1260 $raw=json_decode($data);
1261 $standing=$raw->data->tournament[0]->tournament_standing;
1262 dd($standing);
1263 uasort($arrstanding, $this->make_comparer('team_poin:1', 'team_name:0'));
1264 dd($arrstanding);
1265
1266 }
1267
1268 public function make_comparer() {
1269 $criteriaNames = func_get_args();
1270 $comparer = function($first, $second) use ($criteriaNames) {
1271 // Do we have anything to compare?
1272 while(!empty($criteriaNames)) {
1273 $first= (array) $first;
1274 $second = (array) $second;
1275 // What will we compare now?
1276 $criterionraw = array_shift($criteriaNames);
1277 $explodecriterion=explode(":", $string);
1278 $criterion=$explodecriterion[0];
1279
1280 if($explodecriterion[1]=="1"){
1281 // Do the actual comparison
1282 if ($first[$criterion] > $second[$criterion]) {
1283 return -1;
1284 }
1285 else if ($first[$criterion] < $second[$criterion]) {
1286 return 1;
1287 }
1288 }else{
1289 if ($first[$criterion] < $second[$criterion]) {
1290 return -1;
1291 }
1292 else if ($first[$criterion] > $second[$criterion]) {
1293 return 1;
1294 }
1295 }
1296
1297 }
1298
1299 // Nothing more to compare with, so $first == $second
1300 return 0;
1301 };
1302
1303 return $comparer;
1304 }
1305
1306 public function move_data(){
1307 $tournaments=Tournament::where('game_id',4)->get();
1308 if($tournaments->count()>0){
1309 foreach ($tournaments as $turney) {
1310 $matches=TournamentMatchDetailPlayer::join('tournament_match_details','tournament_match_details.tournament_match_id', '=', 'tournament_match_detail_players.match_id')->join('player_in_game_ids','tournament_match_detail_players.player_id','=','player_in_game_ids.player_id')->select('tournament_match_detail_players.player_id','tournament_match_details.dota_match_id','player_in_game_ids.in_game_id')->where([['tournament_match_details.tournament_id',$turney->id],['player_in_game_ids.game_id',4]])->get();
1311 if($matches->count()>0){
1312 $last_match_id="";
1313 $getdetail="";
1314 $rawdetail="";
1315 $date="";
1316 $time="";
1317 $win="";
1318 foreach ($matches as $match) {
1319 $status=0;
1320 $pos=0;
1321 $mid = substr($match->in_game_id, 3) - 61197960265728 ;
1322 $mid=(string) $mid;
1323 if($last_match_id==""|| $last_match_id!=$match->dota_match_id){
1324 $last_match_id=$match->dota_match_id;
1325 $getdetail=file_get_contents('https://api.steampowered.com/IDOTA2Match_570/GetMatchDetails/v0001/?match_id='.$last_match_id.'&key=A73DEE88C6E2519CE09666F9CCABEAFC');
1326 $rawdetail=json_decode($getdetail);
1327 $time=$rawdetail->result->duration/60;
1328 $date=date('Y-m-d H:i:s',$rawdetail->result->start_time);
1329 if($rawdetail->result->radiant_win==false){
1330 $win=2;
1331 }else{
1332 $win=1;
1333 }
1334 }
1335
1336 foreach($rawdetail->result->players as $detail){
1337 if($detail->account_id==$mid){
1338 $vararray=array();
1339 $vararray['kills']=$detail->kills;
1340 $vararray['deaths']=$detail->deaths;
1341 $vararray['assists']=$detail->assists;
1342 $vararray['last_hits']=$detail->last_hits;
1343 $vararray['denies']=$detail->denies;
1344 $vararray['gold_per_min']=$detail->gold_per_min;
1345 $vararray['xp_per_min']=$detail->xp_per_min;
1346 $vararray['level']=$detail->level;
1347 $vararray['hero_damage']=$detail->hero_damage;
1348 $vararray['tower_damage']=$detail->tower_damage;
1349 $vararray['hero_healing']=$detail->hero_healing;
1350 $vararray['gold']=$detail->gold;
1351 $vararray['gold_spent']=$detail->gold_spent;
1352 $vararray['scaled_hero_damage']=$detail->scaled_hero_damage;
1353 $vararray['scaled_tower_damage']=$detail->scaled_tower_damage;
1354 $vararray['scaled_hero_healing']=$detail->scaled_hero_healing;
1355 $vararray['nett']=$detail->gold+$detail->gold_spent;
1356 $vararray['hero_id']=$detail->hero_id;
1357 if($detail->player_slot > 4){
1358 $pos=2;
1359 }else{
1360 $pos=1;
1361 }
1362 $status=1;
1363 }
1364 }
1365 if($pos==$win){
1366 $winstat=1;
1367 }else{
1368 $winstat=0;
1369 }
1370 if($status!=0){
1371 //insert ke firestore
1372 $docRef = $db->collection(''.$match->player_id.'-history')->document($last_match_id);
1373 $docRef->set([
1374 'kills' => $vararray['kills'],
1375 'deaths' => $vararray['deaths'],
1376 'assists' => $vararray['assists'],
1377 'last_hits' => $vararray['last_hits'],
1378 'denies' => $vararray['denies'],
1379 'gold_per_min' => $vararray['gold_per_min'],
1380 'xp_per_min' => $vararray['xp_per_min'],
1381 'hero_damage' => $vararray['hero_damage'],
1382 'tower_damage' => $vararray['tower_damage'],
1383 'hero_healing' => $vararray['hero_healing'],
1384 'gold' => $vararray['gold'],
1385 'gold_spent' => $vararray['gold_spent'],
1386 'scaled_hero_damage' => $vararray['scaled_hero_damage'],
1387 'scaled_tower_damage' => $vararray['scaled_tower_damage'],
1388 'scaled_hero_healing' => $vararray['scaled_hero_healing'],
1389 'hero_id' => $vararray['hero_id'],
1390 'type' => 1,
1391 'date' => $date,
1392 'duration' => $time,
1393 'winloss' => $winstat,
1394 ]);
1395
1396 }
1397 }
1398 }
1399 }
1400 }
1401 }
1402
1403
1404 public function sharefb(){
1405 return view('index/index');
1406 }
1407
1408 public function connectserver(){
1409 return view('index/connect');
1410 }
1411
1412
1413 public function parser_csgo(){
1414 try{
1415 DB::beginTransaction();
1416 //asumsi file log name : YYYY-mm-dd-hhii-6991-nama map-rrorists-vs-counterterrorists.log
1417 $content = @file_get_contents('http://103.30.245.37/democs/udee1/2016-12-22-0037-6991-de_mirage-rrorists-vs-counterterrorists.log');
1418 if($content ===FALSE){
1419 echo "fail";
1420 }else{
1421 $data=file_get_contents('http://103.30.245.37/democs/udee2/2017-03-04-1410-6993-de_train-rrorists-vs-counterterrorists.log');
1422 $raw=explode("\n", $data);
1423 $statplayer=array();
1424 $rate=0;
1425 //dd($raw);
1426 $round=0;
1427 $fkflag=0;
1428 $fkatk="";
1429 $fkvic="";
1430 $jum_player=0;
1431 $avg_kpr = 0.679;
1432 $avg_spr = 0.317;
1433 $avg_rmk = 1.277;
1434 $players=array();
1435 for($i=0;$i<count($raw);$i++){
1436 $stat=json_decode($raw[$i]);
1437 //echo $stat->event;
1438
1439
1440 if(isset($stat->event)){
1441 if($stat->event=='player_death' && $fkflag==0){
1442 $fkflag=1;
1443 $fkatk=$stat->attacker->userId;
1444 $fkvic=$stat->victim->userId;
1445 }
1446 if($stat->event=='round_stats'){
1447 if(!isset($statplayer[$stat->player->userId]['steamid'])){
1448 $steamid=toCommunityID($stat->player->uniqueId);
1449 $steamid = '765'.($steamid + 61197960265728);
1450 $steamid=(string) $steamid;
1451 $statplayer[$stat->player->userId]['steamid']=$steamid;
1452 $statplayer[$stat->player->userId]['name']=$stat->player->name;
1453 $players[$jum_player]=$stat->player->userId;
1454 $jum_player=$jum_player+1;
1455 }
1456 if($round!=$stat->round){
1457 //echo "<br />Round ".$stat->round."<br /><br />";
1458 $round=$stat->round;
1459 }
1460 if(isset($statplayer[$stat->player->userId]['adp'])){
1461 $statplayer[$stat->player->userId]['adp']=$statplayer[$stat->player->userId]['adp']+$stat->damage;
1462 }else{
1463 $statplayer[$stat->player->userId]['adp']=$stat->damage;
1464 }
1465
1466 if($stat->kills > 0 || $stat->assists>0 || $stat->deaths==0){
1467 if(isset($statplayer[$stat->player->userId]['rating'])){
1468 $statplayer[$stat->player->userId]['rating']=$statplayer[$stat->player->userId]['rating']+1;
1469 }else{
1470 $statplayer[$stat->player->userId]['rating']=1;
1471 }
1472 }
1473
1474 if(isset($statplayer[$stat->player->userId]['kills'])){
1475 $statplayer[$stat->player->userId]['kills']=$statplayer[$stat->player->userId]['kills']+$stat->kills;
1476 }else{
1477 $statplayer[$stat->player->userId]['kills']=$stat->kills;
1478 }
1479
1480 //multikill
1481 if($stat->kills==1){
1482 if(isset($statplayer[$stat->player->userId]['1xkill'])){
1483 $statplayer[$stat->player->userId]['1xkill']=$statplayer[$stat->player->userId]['1xkill']+1;
1484 }else{
1485 $statplayer[$stat->player->userId]['1xkill']=1;
1486 }
1487 }elseif($stat->kills==2){
1488 if(isset($statplayer[$stat->player->userId]['2xkill'])){
1489 $statplayer[$stat->player->userId]['2xkill']=$statplayer[$stat->player->userId]['2xkill']+1;
1490 }else{
1491 $statplayer[$stat->player->userId]['2xkill']=1;
1492 }
1493 }elseif($stat->kills==3){
1494 if(isset($statplayer[$stat->player->userId]['3xkill'])){
1495 $statplayer[$stat->player->userId]['3xkill']=$statplayer[$stat->player->userId]['3xkill']+1;
1496 }else{
1497 $statplayer[$stat->player->userId]['3xkill']=1;
1498 }
1499 }elseif($stat->kills==4){
1500 if(isset($statplayer[$stat->player->userId]['4xkill'])){
1501 $statplayer[$stat->player->userId]['4xkill']=$statplayer[$stat->player->userId]['4xkill']+1;
1502 }else{
1503 $statplayer[$stat->player->userId]['4xkill']=1;
1504 }
1505 }elseif($stat->kills==5){
1506 if(isset($statplayer[$stat->player->userId]['5xkill'])){
1507 $statplayer[$stat->player->userId]['5xkill']=$statplayer[$stat->player->userId]['5xkill']+1;
1508 }else{
1509 $statplayer[$stat->player->userId]['5xkill']=1;
1510 }
1511 }
1512
1513 if(isset($statplayer[$stat->player->userId]['assists'])){
1514 $statplayer[$stat->player->userId]['assists']=$statplayer[$stat->player->userId]['assists']+$stat->assists;
1515 }else{
1516 $statplayer[$stat->player->userId]['assists']=$stat->assists;
1517 }
1518
1519 if(isset($statplayer[$stat->player->userId]['headshots'])){
1520 $statplayer[$stat->player->userId]['headshots']=$statplayer[$stat->player->userId]['headshots']+$stat->headshots;
1521 }else{
1522 $statplayer[$stat->player->userId]['headshots']=$stat->headshots;
1523 }
1524
1525 if(isset($statplayer[$stat->player->userId]['deaths'])){
1526 $statplayer[$stat->player->userId]['deaths']=$statplayer[$stat->player->userId]['deaths']+$stat->deaths;
1527 }else{
1528 $statplayer[$stat->player->userId]['deaths']=$stat->deaths;
1529 }
1530
1531 if($stat->player->userId==$fkatk){
1532 if(isset($statplayer[$stat->player->userId]['fkdiff'])){
1533 $statplayer[$stat->player->userId]['fkdiff']=$statplayer[$stat->player->userId]['fkdiff']+1;
1534 }else{
1535 $statplayer[$stat->player->userId]['fkdiff']=1;
1536 }
1537 $fkatk="";
1538 $fkflag=2;
1539 }elseif($stat->player->userId==$fkvic){
1540 if(isset($statplayer[$stat->player->userId]['fkdiff'])){
1541 $statplayer[$stat->player->userId]['fkdiff']=$statplayer[$stat->player->userId]['fkdiff']-1;
1542 }else{
1543 $statplayer[$stat->player->userId]['fkdiff']=-1;
1544 }
1545 $fkvic="";
1546 $fkflag=3;
1547 }else{
1548 if(!isset($statplayer[$stat->player->userId]['fkdiff'])){
1549 $statplayer[$stat->player->userId]['fkdiff']=0;
1550 }
1551 }
1552
1553 if($fkflag==3){
1554 $fkflag=0;
1555 }
1556
1557 if(isset($statplayer[$stat->player->userId]['rating'])){
1558 $rate=$statplayer[$stat->player->userId]['rating']/$stat->round;
1559 $rate=$rate*100;
1560 }
1561 //$kddiff=$stat->kills-$stat->deaths;
1562 // echo $stat->player->name." : <br />";
1563 // echo '  Damage/round : '.number_format($statplayer[$stat->player->userId]['adp']/$stat->round, 1, '.', '').'<br />';
1564 // echo ' Kill : '.$stat->kills."<br />";
1565 // echo '  Headshot : '.$stat->headshots."<br />";
1566 // echo '  Assist : '.$stat->assists."<br />";
1567 // echo ' Death : '.$stat->deaths."<br />";
1568 // if($stat->player->userId==$fkatk){
1569 // echo ' FK Diff : +1<br />';
1570 // $fkatk="";
1571 // $fkflag=2;
1572 // }elseif($stat->player->userId==$fkvic){
1573 // echo ' FK Diff : -1<br />';
1574 // $fkvic="";
1575 // $fkflag=3;
1576 // }else{
1577 // echo ' FK Diff : 0<br />';
1578 // }
1579 // if($fkflag==3){
1580 // $fkflag=0;
1581 // }
1582 // echo ' K/D Diff : '.$kddiff."<br />";
1583 // echo ' Rating : '.number_format($rate, 1, '.', '')."<br />";
1584 }elseif($stat->event=='score_update'){
1585 // $team1=$stat->teams[0];
1586 // $team2=$stat->teams[1];
1587 // if($team1->name==' '){
1588 // if($team2->name=='Counter-Terrorists'){
1589 // $team1name='Terrorists';
1590 // }else{
1591 // $team1name='Counter-Terrorists';
1592 // }
1593 // }else{
1594 // $team1name=$team1->name;
1595 // }
1596 // if($team2->name==' '){
1597 // if($team1->name=='Counter-Terrorists'){
1598 // $team2name='Terrorists';
1599 // }else{
1600 // $team2name='Counter-Terrorists';
1601 // }
1602 // }else{
1603 // $team2name=$team2->name;
1604 // }
1605
1606 // echo 'score : '.$team1name.' ['.$team1->score.'] vs ['.$team2->score.'] '.$team2name.'<br />';
1607 }
1608 }
1609 }
1610 for($i=0;$i<count($players);$i++){
1611
1612 $kast=($statplayer[$players[$i]]['rating']/$round)*100;
1613 $kddiff=$statplayer[$players[$i]]["kills"]-$statplayer[$players[$i]]["deaths"];
1614 $adr=number_format($statplayer[$players[$i]]['adp']/$round, 1, '.', '');
1615 $kast=number_format($kast, 1, '.', '');
1616 $killrating = $statplayer[$players[$i]]["kills"] / $round / $avg_kpr;
1617 $survivalrating = ($round - $statplayer[$players[$i]]["deaths"]) / $round / $avg_spr;
1618 $kill1x=(isset($statplayer[$players[$i]]['1xkill'])) ? $statplayer[$players[$i]]['1xkill'] : 0 ;
1619 $kill2x=(isset($statplayer[$players[$i]]['2xkill'])) ? $statplayer[$players[$i]]['2xkill'] : 0 ;
1620 $kill3x=(isset($statplayer[$players[$i]]['3xkill'])) ? $statplayer[$players[$i]]['3xkill'] : 0 ;
1621 $kill4x=(isset($statplayer[$players[$i]]['4xkill'])) ? $statplayer[$players[$i]]['4xkill'] : 0 ;
1622 $kill5x=(isset($statplayer[$players[$i]]['5xkill'])) ? $statplayer[$players[$i]]['5xkill'] : 0 ;
1623 $roundsWithMultipleKillsRating = ( $kill1x + 4 * $kill2x + 9 * $kill3x + 16 * $kill4x + 25 * $kill5x) / $round / $avg_rmk;
1624 $rating = ($killrating + 0.7 * $survivalrating + $roundsWithMultipleKillsRating) / 2.7;
1625 $tambah=new csgo();
1626 $tambah->tournament_id=1;
1627 $tambah->match_id=1;
1628 $tambah->player_id=$i;
1629 $tambah->steamid=$statplayer[$players[$i]]["steamid"];
1630 $tambah->kills=$statplayer[$players[$i]]["kills"];
1631 $tambah->headshot=$statplayer[$players[$i]]["headshots"];
1632 $tambah->assist=$statplayer[$players[$i]]["assists"];
1633 $tambah->death=$statplayer[$players[$i]]["deaths"];
1634 $tambah->kast=$kast;
1635 $tambah->adr=$adr;
1636 $tambah->fkdiff=$statplayer[$players[$i]]["fkdiff"];
1637 $tambah->round=$round;
1638 $tambah->rating=number_format($rating, 2 , '.', '');
1639 $tambah->save();
1640
1641 // echo "Name = ".$statplayer[$players[$i]]["name"]." <br />";
1642 // echo "SteamID = ".$statplayer[$players[$i]]["steamid"]." <br />";
1643 // echo "Kills = ".$statplayer[$players[$i]]["kills"]." <br />";
1644 // echo "Deaths = ".$statplayer[$players[$i]]["deaths"]." <br />";
1645 // echo "Assists = ".$statplayer[$players[$i]]["assists"]." <br />";
1646 // echo "headshots = ".$statplayer[$players[$i]]["headshots"]." <br />";
1647 // echo "ADR = ".number_format($statplayer[$players[$i]]['adp']/$round, 1, '.', '')." <br />";
1648 // echo "K/D Diff = ".$kddiff." <br />";
1649 // echo "KAST = ".number_format($kast, 1, '.', '')." <br />";
1650 // echo "Fk Diff = ".$statplayer[$players[$i]]["fkdiff"]." <br />";
1651
1652 // $kill1x=(isset($statplayer[$players[$i]]['1xkill'])) ? $statplayer[$players[$i]]['1xkill'] : 0 ;
1653 // $kill2x=(isset($statplayer[$players[$i]]['2xkill'])) ? $statplayer[$players[$i]]['2xkill'] : 0 ;
1654 // $kill3x=(isset($statplayer[$players[$i]]['3xkill'])) ? $statplayer[$players[$i]]['3xkill'] : 0 ;
1655 // $kill4x=(isset($statplayer[$players[$i]]['4xkill'])) ? $statplayer[$players[$i]]['4xkill'] : 0 ;
1656 // $kill5x=(isset($statplayer[$players[$i]]['5xkill'])) ? $statplayer[$players[$i]]['5xkill'] : 0 ;
1657 // echo "1X Kill = ".$kill1x."<br />";
1658 // echo "2X Kill = ".$kill2x."<br />";
1659 // echo "3X Kill = ".$kill3x."<br />";
1660 // echo "4X Kill = ".$kill4x."<br />";
1661 // echo "5X Kill = ".$kill5x."<br />";
1662 // $roundsWithMultipleKillsRating = ( $kill1x + 4 * $kill2x + 9 * $kill3x + 16 * $kill4x + 25 * $kill5x) / $round / $avg_rmk;
1663 // $rating = ($killrating + 0.7 * $survivalrating + $roundsWithMultipleKillsRating) / 2.7;
1664 // echo "Rating = ".number_format($rating, 2 , '.', '')."<br />";
1665 // echo "--------------------------------------------------------------- <br /><br />";
1666
1667 }
1668 DB::commit();
1669 echo "success";
1670 }
1671
1672 }catch (\PDOException $e){
1673 echo "fail";
1674 }
1675 // if(DB::commit()){
1676 // echo "success";
1677 // }else{
1678 // echo "fail";
1679 // }
1680 }
1681
1682 public function testconvert(){
1683 $steamid=toCommunityID('STEAM_1:0:73112185');
1684 $steamid = '765'.($steamid + 61197960265728);
1685 $steamid=(string) $steamid;
1686 echo $steamid;
1687 }
1688 public function pubg_data_player(){
1689 $opts = [
1690 "http" => [
1691 "method" => "GET",
1692 "header" => "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJiODYwOWUyMC00NjAwLTAxMzYtNTQxOC03NTk4NWY4YWMyYzUiLCJpc3MiOiJnYW1lbG9ja2VyIiwiaWF0IjoxNTI3NjYxNzY0LCJwdWIiOiJibHVlaG9sZSIsInRpdGxlIjoicHViZyIsImFwcCI6InlhbWlzb2stZWI3OTgyYWUtZTc4Ni00MTQ1LWIyMjctMWMzOTQxZWUyMmZlIn0.TdSR_0XbT2vljziEDJpBrF2VDk18MsqSJ1hOLE0q3xk \r\n" .
1693 "accept: application/vnd.api+json \r\n"
1694 ]
1695 ];
1696
1697 $context = stream_context_create($opts);
1698
1699 // Open the file using the HTTP headers set above
1700 $raw = file_get_contents('https://api.playbattlegrounds.com/shards/pc-sea/players?filter[playerNames]=KeCapManiS', false, $context);
1701 $raw=json_decode($raw);
1702 $data=$raw->data[0];
1703 $matches=$data->relationships->matches->data;
1704 echo "NickName = ".$data->attributes->name." <br />";
1705 echo "PUBG ID = ".$data->id." </br />";
1706 echo "List Match = <br />";
1707 foreach($matches as $match){
1708 echo "<a href='".url('/')."/pu/match/".$match->id."'>".$match->id."</a><br />";
1709 }
1710
1711 }
1712
1713 public function pubg_parser($matchid){
1714 $opts = [
1715 "http" => [
1716 "method" => "GET",
1717 "header" => "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJiODYwOWUyMC00NjAwLTAxMzYtNTQxOC03NTk4NWY4YWMyYzUiLCJpc3MiOiJnYW1lbG9ja2VyIiwiaWF0IjoxNTI3NjYxNzY0LCJwdWIiOiJibHVlaG9sZSIsInRpdGxlIjoicHViZyIsImFwcCI6InlhbWlzb2stZWI3OTgyYWUtZTc4Ni00MTQ1LWIyMjctMWMzOTQxZWUyMmZlIn0.TdSR_0XbT2vljziEDJpBrF2VDk18MsqSJ1hOLE0q3xk \r\n" .
1718 "accept: application/vnd.api+json \r\n"
1719 ]
1720 ];
1721
1722 $context = stream_context_create($opts);
1723
1724 // Open the file using the HTTP headers set above
1725 $raw = file_get_contents('https://api.playbattlegrounds.com/shards/pc-sea/matches/'.$matchid.'', false, $context);
1726 $raw=json_decode($raw);
1727 //dd($raw);
1728 header("Content-type: application/vnd.ms-excel");
1729 header("Content-Disposition: attachment; filename=$matchid.xls");
1730 echo "<table border='1'>";
1731 $general=$raw->data->attributes;
1732 echo "<tr style='font-weight:bold'><td>Map</td><td colspan='2'>".$general->mapName."</td></tr>";
1733 echo "<tr style='font-weight:bold'><td>Server</td><td colspan='2'>".$general->shardId."</td></tr>";
1734 echo "<tr style='font-weight:bold'><td>Game Mode</td><td colspan='2'>".$general->gameMode."</td></tr>";
1735 echo "<tr style='font-weight:bold'><td>Duration</td><td colspan='2'>".$general->duration."</td></tr>";
1736 $players=$raw->included;
1737 $log="";
1738
1739
1740 foreach($players as $player){
1741 if($player->type=="participant"){
1742 $stat=$player->attributes->stats;
1743 echo "<tr style='text-align:left'><td colspan='3' style='text-align:center;background:red;font-size:bold'>".$stat->name."</td></tr>";
1744 echo "<tr style='text-align:left'><td>DBNOs</td><td>".$stat->DBNOs."</td><td>Number of enemy players knocked</td></tr>";
1745 echo "<tr style='text-align:left'><td>assists</td><td>".$stat->assists."</td><td>Number of enemy players this player damaged that were killed by teammates</td></tr>";
1746 echo "<tr style='text-align:left'><td>boosts</td><td>".$stat->boosts."</td><td>Number of boost items used</td></tr>";
1747 echo "<tr style='text-align:left'><td>damageDealt</td><td>".$stat->damageDealt."</td><td>Total damage dealt. Note: Self inflicted damage is subtracted</td></tr>";
1748 echo "<tr style='text-align:left'><td>deathType</td><td>".$stat->deathType."</td><td>The way by which this player died, or alive if they didn't (type : alive, byplayer, suicide, logout)</td></tr>";
1749 echo "<tr style='text-align:left'><td>headshotKills</td><td>".$stat->headshotKills."</td><td>Number of enemy players killed with headshots</td></tr>";
1750 echo "<tr style='text-align:left'><td>heals</td><td>".$stat->heals."</td><td>Number of healing items used</td></tr>";
1751 echo "<tr style='text-align:left'><td>killPlace</td><td>".$stat->killPlace."</td><td>This player's rank in the match based on kills</td></tr>";
1752 echo "<tr style='text-align:left'><td>killPoints</td><td>".$stat->killPoints."</td><td>Points based on how many kills this player had</td></tr>";
1753 echo "<tr style='text-align:left'><td>killPointsDelta</td><td>".$stat->killPointsDelta."</td><td>Change in killPoints</td></tr>";
1754 echo "<tr style='text-align:left'><td>killStreaks</td><td>".$stat->killStreaks."</td><td>Total number of kill streaks</td></tr>";
1755 echo "<tr style='text-align:left'><td>kills</td><td>".$stat->kills."</td><td>Number of enemy players killed</td></tr>";
1756 echo "<tr style='text-align:left'><td>lastKillPoints</td><td>".$stat->lastKillPoints."</td><td>No Desc</td></tr>";
1757 echo "<tr style='text-align:left'><td>lastWinPoints</td><td>".$stat->lastWinPoints."</td><td>No Desc</td></tr>";
1758 echo "<tr style='text-align:left'><td>longestKill</td><td>".$stat->longestKill."</td><td>No Desc</td></tr>";
1759 echo "<tr style='text-align:left'><td>mostDamage</td><td>".$stat->mostDamage."</td><td>Highest amount of damage dealt with a single attack</td></tr>";
1760 echo "<tr style='text-align:left'><td>revives</td><td>".$stat->revives."</td><td>Number of times this player revived teammates</td></tr>";
1761 echo "<tr style='text-align:left'><td>rideDistance</td><td>".$stat->rideDistance."</td><td>Total distance traveled in vehicles measured in meters</td></tr>";
1762 echo "<tr style='text-align:left'><td>roadKills</td><td>".$stat->roadKills."</td><td>Number of kills while in a vehicle</td></tr>";
1763 echo "<tr style='text-align:left'><td>swimDistance</td><td>".$stat->swimDistance."</td><td>Total distance traveled while swimming measured in meters</td></tr>";
1764 echo "<tr style='text-align:left'><td>teamKills</td><td>".$stat->teamKills."</td><td>Number of times this player killed a teammate</td></tr>";
1765 echo "<tr style='text-align:left'><td>timeSurvived</td><td>".$stat->timeSurvived."</td><td>Amount of time survived measured in seconds</td></tr>";
1766 echo "<tr style='text-align:left'><td>vehicleDestroys</td><td>".$stat->vehicleDestroys."</td><td>Number of vehicles destroyed</td></tr>";
1767 echo "<tr style='text-align:left'><td>walkDistance</td><td>".$stat->walkDistance."</td><td>Total distance traveled on foot measured in meters</td></tr>";
1768 echo "<tr style='text-align:left'><td>weaponsAcquired</td><td>".$stat->weaponsAcquired."</td><td>Number of weapons picked up</td></tr>";
1769 echo "<tr style='text-align:left'><td>winPlace</td><td>".$stat->winPlace."</td><td>This player's placement in the match</td></tr>";
1770 echo "<tr style='text-align:left'><td>winPoints</td><td>".$stat->winPoints."</td><td>No Desc</td></tr>";
1771 echo "<tr style='text-align:left'><td>winPointsDelta</td><td>".$stat->winPointsDelta."</td><td>Change in winPoints</td></tr>";
1772 // }elseif($player->type=="asset"){
1773 // $log=$player->attributes->URL;
1774 }
1775 }
1776 echo "</table>";
1777 if($log!=""){
1778 echo "Telemetry =".$log." <br /><br />------------------------------------------------------------------<br /><br /> Log = <br /><br />";
1779 $rawdetail=file_get_contents($log);
1780 $rawdetail=json_decode($rawdetail);
1781 dd($rawdetail);
1782 }
1783
1784
1785 }
1786
1787 public function dota_parser(){
1788 // header("Content-type: application/vnd.ms-excel");
1789 // header("Content-Disposition: attachment; filename=3917561625.xls");
1790 $raw=file_get_contents('file:///C:/Users/HP/Desktop/4004805991.json');
1791 $data=json_decode($raw);
1792 $min=0;
1793 $radiant=array();
1794 $dire=array();
1795 $align="style='text-align:left'";
1796 echo "<table border='1' $align>";
1797 echo "<tr><td colspan='3'>General</td></tr>";
1798 echo "<tr><td>Match ID</td><td colspan='2'>$data->match_id</td></tr>";
1799 if(isset($data->radiant_team)){
1800 $rname=$data->radiant_team->name;
1801
1802 }else{
1803 $rname="Radiant";
1804 }
1805 if(isset($data->dire_team)){
1806 $dname=$data->dire_team->name;
1807 }else{
1808 $dname="Dire";
1809 }
1810 echo "<tr><td>Radiant Team</td><td>".$rname."</td><td>".$data->radiant_score."</td></tr>";
1811 echo "<tr><td>Dire Team</td><td>".$dname."</td><td>".$data->dire_score."</td></tr>";
1812 if($data->radiant_win==true){
1813 $winner = "Radiant";
1814 }else{
1815 $winner="Dire";
1816 }
1817 echo "<tr><td>Winner</td><td colspan='2'>".$winner."</td></tr>";
1818 echo "<tr><td>Duration</td><td colspan='2'>".$data->duration."</td></tr>";
1819 echo "</table><br />";
1820
1821 // echo "<table border='1' $align>";
1822 // echo "<tr><td>First Blood scenario</td></tr>";
1823 // foreach($data->objectives as $obj){
1824 // if($obj->type=="CHAT_MESSAGE_FIRSTBLOOD"){
1825 // $attacker=$data->players[$obj->slot]->name;
1826 // $victim=$data->players[$obj->key]->name;
1827 // $time=$obj->time/60;
1828 // }
1829 // }
1830 // echo "<tr><td>".$attacker." has been slain ".$victim." in minutes ".(int)$time." </td></tr>";
1831 // echo "</table><br />";
1832
1833 echo "<table border='1' $align>";
1834 echo "<tr><td colspan='3'>Pick Bans</td></tr>";
1835 foreach($data->picks_bans as $pb){
1836 $hero=DotaHero::where("hero_id",$pb->hero_id)->first();
1837 if($hero){
1838 $heroname=$hero->hero_name;
1839 }else{
1840 $heroname="Unknown Hero";
1841 }
1842 if($pb->team==1){
1843 if($pb->is_pick==false){
1844
1845 if($hero)
1846 if(!isset($dire["ban"])){
1847 $dire["ban"]=$heroname;
1848 }else{
1849 $dire["ban"]=$dire["ban"].";".$heroname;
1850 }
1851 }else{
1852 if(!isset($dire["pick"])){
1853 $dire["pick"]=$heroname;
1854 }else{
1855 $dire["pick"]=$dire["pick"].";".$heroname;
1856 }
1857 }
1858 }else{
1859 if($pb->is_pick==false){
1860 if(!isset($radiant["ban"])){
1861 $radiant["ban"]=$heroname;
1862 }else{
1863 $radiant["ban"]=$radiant["ban"].";".$heroname;
1864 }
1865 }else{
1866 if(!isset($radiant["pick"])){
1867 $radiant["pick"]=$heroname;
1868 }else{
1869 $radiant["pick"]=$radiant["pick"].";".$heroname;
1870 }
1871 }
1872 }
1873 }
1874 $radp=explode(";", $radiant["pick"]);
1875 $radb=explode(";", $radiant["ban"]);
1876 $dirp=explode(";", $dire["pick"]);
1877 $dirb=explode(";", $dire["ban"]);
1878 echo "<tr><td>Side</td><td>Picks</td><td>Bans</td></tr>";
1879 echo "<tr><td>Radiant</td><td>".$radiant["pick"]."</td><td>".$radiant["ban"]."</td></tr>";
1880 echo "<tr><td>Dire</td><td>".$dire["pick"]."</td><td>".$dire["ban"]."</td></tr>";
1881 echo "</table><br />";
1882
1883 // echo "<table border='1' $align>";
1884 // echo "<tr><td>Player</td><td>Hero</td></tr>";
1885 // foreach($data->players as $player){
1886 // if($player->isRadiant==true){
1887 // $style="style='background:green'";
1888 // }else{
1889 // $style="style='background:red'";
1890 // }
1891 // echo "<tr $style><td>".$player->name."</td><td>".DotaHero::where("hero_id",$player->hero_id)->first()->hero_name."</td></tr>";
1892 // }
1893 // echo "</table> <br />";
1894
1895 // $min=0;
1896 // echo "<table border='1' $align>";
1897 // echo "<tr><td colspan='2'>Gold Different / Min</td></tr>";
1898 // echo "<tr><td>Minute</td><td>ADV</td></tr>";
1899 // foreach($data->radiant_gold_adv as $goldadv){
1900 // if($goldadv==0){
1901 // $adv= "Equal";
1902 // }elseif($goldadv > 0){
1903 // $adv="ADV ".$goldadv." By RAD";
1904 // }else{
1905 // $adv="ADV ".str_replace("-", "", $goldadv)." By Dire";
1906 // }
1907 // echo "<tr><td>".$min."</td><td>".$adv."</td></tr>";
1908 // $min++;
1909 // }
1910 // echo "</table><br />";
1911 // $min=0;
1912 // echo "<table border='1' $align>";
1913 // echo "<tr><td colspan='2'>XP Different / Min</td></tr>";
1914 // echo "<tr><td>Minute</td><td>XPDiff</td></tr>";
1915 // foreach($data->radiant_xp_adv as $xpdiff){
1916 // if($xpdiff==0){
1917 // $adv= "Equal";
1918 // }elseif($xpdiff > 0){
1919 // $adv="XP Diff ".$xpdiff." By RAD";
1920 // }else{
1921 // $adv="XP Diff ".str_replace("-", "", $xpdiff)." By Dire";
1922 // }
1923 // echo "<tr><td>".$min."</td><td>".$adv."</td></tr>";
1924 // $min++;
1925 // }
1926 // echo "</table><br />";
1927
1928
1929 foreach($data->players as $player){
1930 $hero=DotaHero::where("hero_id",$player->hero_id)->first();
1931 if($hero){
1932 $heroname=$hero->hero_name;
1933 }else{
1934 $heroname="Unknown Hero";
1935 }
1936 echo "<table border='1' $align>";
1937 if($player->isRadiant==true){
1938 $style="style='background:green'";
1939 }else{
1940 $style="style='background:red'";
1941 }
1942
1943 echo "<tr><td colspan='2' ".$style.">".$player->personaname." (".$heroname.") Stat</td></tr>";
1944 echo "<tr><td>Kills</td><td>".$player->kills."</td></tr>";
1945 echo "<tr><td>Death</td><td>".$player->deaths."</td></tr>";
1946 echo "<tr><td>Assist</td><td>".$player->assists."</td></tr>";
1947 echo "<tr><td>Last Hits</td><td>".$player->last_hits."</td></tr>";
1948 echo "<tr><td>Denies</td><td>".$player->denies."</td></tr>";
1949 echo "<tr><td>Gold Per Min</td><td>".$player->gold_per_min."</td></tr>";
1950 echo "<tr><td>XP Per Min</td><td>".$player->xp_per_min."</td></tr>";
1951 echo "<tr><td>Hero Damage</td><td>".$player->hero_damage."</td></tr>";
1952 echo "<tr><td>Hero Healing</td><td>".$player->hero_healing."</td></tr>";
1953 echo "<tr><td>Tower Damage</td><td>".$player->tower_damage."</td></tr>";
1954 echo "<tr><td>Nett</td><td>".$player->total_gold."</td></tr>";
1955 echo "<tr><td>Nett</td><td>".$player->total_xp."</td></tr>";
1956 // echo "<tr><td>TFP</td><td>".$player->teamfight_participation."</td></tr>";
1957 // echo "<tr><td>Roshan Kills</td><td>".$player->roshan_kills."</td></tr>";
1958 echo "</table> <br />";
1959 echo "<table border='1' $align>";
1960 if($player->isRadiant==true){
1961 $style="style='background:green'";
1962 }else{
1963 $style="style='background:red'";
1964 }
1965 echo "<tr><td colspan='2' ".$style.">".$player->personaname." (".$heroname.") Benchmark</td></tr>";
1966 echo "<tr><td>GPM</td><td>".$player->benchmarks->gold_per_min->pct."</td></tr>";
1967 echo "<tr><td>XPM</td><td>".$player->benchmarks->xp_per_min->pct."</td></tr>";
1968 echo "<tr><td>Kills / Min</td><td>".$player->benchmarks->kills_per_min->pct."</td></tr>";
1969 echo "<tr><td>Hero Damage / Min</td><td>".$player->benchmarks->hero_damage_per_min->pct."</td></tr>";
1970 echo "<tr><td>Hero Healing / Min</td><td>".$player->benchmarks->hero_healing_per_min->pct."</td></tr>";
1971 echo "<tr><td>Tower Damage</td><td>".$player->benchmarks->tower_damage->pct."</td></tr>";
1972
1973
1974
1975 // echo "<table border='1' $align>";
1976 // $min=0;
1977 // echo "<tr><td colspan='2' ".$style.">".$player->name." Gold Per Min Log</td></tr>";
1978 // echo "<tr><td>Minute</td><td>Gold</td></tr>";
1979 // foreach($player->gold_t as $gold){
1980 // echo "<tr><td>".$min."</td><td>".$gold."</td></tr>";
1981 // $min++;
1982 // }
1983 // echo "</table> <br />";
1984
1985
1986 // echo "<table border='1' $align>";
1987 // $min=0;
1988 // echo "<tr><td colspan='2' ".$style.">".$player->name." XP Per Min Log</td></tr>";
1989 // echo "<tr><td>Minute</td><td>XP</td></tr>";
1990 // foreach($player->xp_t as $xp){
1991 // echo "<tr><td>".$min."</td><td>".$xp."</td></tr>";
1992 // $min++;
1993 // }
1994 // echo "</table> <br />";
1995
1996
1997 // echo "<table border='1' $align>";
1998 // $min=0;
1999 // echo "<tr><td colspan='2' ".$style.">".$player->name." last hits Log</td></tr>";
2000 // echo "<tr><td>Minute</td><td>last hits</td></tr>";
2001 // foreach($player->lh_t as $lh){
2002 // echo "<tr><td>".$min."</td><td>".$lh."</td></tr>";
2003 // $min++;
2004 // }
2005 // echo "</table> <br />";
2006
2007 // echo "<table border='1' $align>";
2008 // $min=0;
2009 // echo "<tr><td colspan='2' ".$style.">".$player->name." Denies Log</td></tr>";
2010 // echo "<tr><td>Minute</td><td>Denies</td></tr>";
2011 // foreach($player->dn_t as $dn){
2012 // echo "<tr><td>".$min."</td><td>".$dn."</td></tr>";
2013 // $min++;
2014 // }
2015 // echo "</table> <br />";
2016
2017 // echo "<table border='1' $align>";
2018 // echo "<tr><td colspan='2' ".$style.">".$player->name." Purchase Log</td></tr>";
2019 // echo "<tr><td>Minute</td><td>Items</td></tr>";
2020 // foreach($player->purchase_log as $pl){
2021 // if($pl->time <0){
2022 // $min ="preparation";
2023 // }else{
2024 // $min =$pl->time;
2025 // }
2026 // echo "<tr><td>".$min."</td><td>".$pl->key."</td></tr>";
2027 // }
2028 // echo "</table> <br />";
2029 }
2030 }
2031
2032 public function dota_benchmarks_getter(){
2033 DB::transaction(function(){
2034 $listhero=DotaHero::get();
2035 if($listhero->count() > 0){
2036 foreach ($listhero as $hero) {
2037 $data=file_get_contents("https://api.opendota.com/api/benchmarks?hero_id=".$hero->hero_id."");
2038 $cek=json_decode($data);
2039 if(!isset($data->error)){
2040 $update=DotaHero::find($hero->id);
2041 $update->benchmarks=$data;
2042 $update->save();
2043 }
2044 sleep(1);
2045 }
2046 }
2047 });
2048 }
2049
2050 public function csgo_result_api($matchid,$matchindex){
2051 $stats=CsgoMatchPlayerStats::where([['match_id'],$matchid],['match_index',$match_index])->orderBy('teams','desc')->get();
2052 $matchstat=array();
2053 if($stats->count()>0){
2054 $key=0;
2055 foreach($stats as $stat){
2056 if($stat->teams==2){
2057 $team="T";
2058 }elseif($stat->teams==3){
2059 $team="CT";
2060 }else{
2061 $team="Observer/Spectator";
2062 }
2063 $cek=Player::find($stat->player_id);
2064 if($cek){
2065 $matchstat[$key]['player']=$cek->username;
2066 $matchstat[$key]['side']=$teams;
2067 $matchstat[$key]['kills']=$stat->kills;
2068 $matchstat[$key]['deaths']=$stat->death;
2069 $matchstat[$key]['deaths']=$stat->assist;
2070 $matchstat[$key]['headshot']=$stat->headshot;
2071 $matchstat[$key]['kast']=$stat->kast;
2072 $matchstat[$key]['adr']=$stat->adr;
2073 $matchstat[$key]['fkdiff']=$stat->fkdiff;
2074 $matchstat[$key]['round']=$stat->round;
2075 $matchstat[$key]['kddiff']=$stat->kills-$stat->death;
2076 }
2077 }
2078 }else{
2079 $matchstat['status']=500;
2080 $matchstat['err']='Data not found';
2081 }
2082 return json_encode($matchstat);
2083 }
2084
2085
2086 function dota_calc_stat(){
2087 $gameid=1;
2088 $playerlist='18776';
2089
2090 $players=explode(';', $playerlist);
2091 $matchdata=file_get_contents('https://api.steampowered.com/IDOTA2Match_570/GetMatchDetails/v0001/?match_id=4089768504&key=A73DEE88C6E2519CE09666F9CCABEAFC');
2092 // echo $matchdata;
2093 $rawdetail=json_decode($matchdata);
2094 $db=firestore();
2095 $time=$rawdetail->result->duration/60;
2096 $date=date('Y-m-d H:i:s',$rawdetail->result->start_time);
2097 if($rawdetail->result->radiant_win==false){
2098 $win=2;
2099 }else{
2100 $win=1;
2101 }
2102 for($i=0;$i<count($players);$i++){
2103 $playersteam='76561198423119717';
2104 if($playersteam){
2105
2106 $mid = substr($playersteam, 3) - 61197960265728 ;
2107 $mid=(string) $mid;
2108
2109 foreach($rawdetail->result->players as $detail){
2110 if($detail->account_id==$mid){
2111 $vararray=array();
2112 $vararray['kills']=$detail->kills;
2113 $vararray['deaths']=$detail->deaths;
2114 $vararray['assists']=$detail->assists;
2115 $vararray['last_hits']=$detail->last_hits;
2116 $vararray['denies']=$detail->denies;
2117 $vararray['gold_per_min']=$detail->gold_per_min;
2118 $vararray['xp_per_min']=$detail->xp_per_min;
2119 $vararray['level']=$detail->level;
2120 $vararray['hero_damage']=$detail->hero_damage;
2121 $vararray['tower_damage']=$detail->tower_damage;
2122 $vararray['hero_healing']=$detail->hero_healing;
2123 $vararray['gold']=$detail->gold;
2124 $vararray['gold_spent']=$detail->gold_spent;
2125 $vararray['scaled_hero_damage']=$detail->scaled_hero_damage;
2126 $vararray['scaled_tower_damage']=$detail->scaled_tower_damage;
2127 $vararray['scaled_hero_healing']=$detail->scaled_hero_healing;
2128 $vararray['nett']=$detail->gold+$detail->gold_spent;
2129 $vararray['hero_id']=$detail->hero_id;
2130 if($detail->player_slot > 4){
2131 $pos=2;
2132 }else{
2133 $pos=1;
2134 }
2135 $status=1;
2136 }
2137 }
2138
2139 //penentuan menang kalah si user di match
2140 if($pos==$win){
2141 $winstat=1;
2142 }else{
2143 $winstat=0;
2144 }
2145
2146 //cek apakah match id sudah ada di firestore atau belum
2147 $cek=$db->collection($players[$i].'-history')->document(''.$rawdetail->result->match_id.'');
2148 $snapshot = $cek->snapshot();
2149
2150 if($status!=0 && !$snapshot->exists()){
2151 $docRef = $db->collection($players[$i].'-history')->document(''.$rawdetail->result->match_id.'');
2152 $docRef->set([
2153 'kills' => $vararray['kills'],
2154 'deaths' => $vararray['deaths'],
2155 'assists' => $vararray['assists'],
2156 'last_hits' => $vararray['last_hits'],
2157 'denies' => $vararray['denies'],
2158 'gold_per_min' => $vararray['gold_per_min'],
2159 'xp_per_min' => $vararray['xp_per_min'],
2160 'hero_damage' => $vararray['hero_damage'],
2161 'tower_damage' => $vararray['tower_damage'],
2162 'hero_healing' => $vararray['hero_healing'],
2163 'gold' => $vararray['gold'],
2164 'gold_spent' => $vararray['gold_spent'],
2165 'scaled_hero_damage' => $vararray['scaled_hero_damage'],
2166 'scaled_tower_damage' => $vararray['scaled_tower_damage'],
2167 'scaled_hero_healing' => $vararray['scaled_hero_healing'],
2168 'hero_id' => $vararray['hero_id'],
2169 'nett' => $vararray['nett'],
2170 'type' => 2,
2171 'date' => $date,
2172 'duration' => $time,
2173 'winloss' => $winstat,
2174 ]);
2175 }
2176 else if($status!=0 && $snapshot->exists()){
2177 echo "masuk sini";
2178 }
2179
2180 }
2181 }
2182
2183 }
2184
2185 public function iespl_generate_pass(){
2186 $data=Player::where('username','like','%IESPL_%')->get();
2187 if($data->count()>0){
2188 $update=array();
2189 $update['password']=bcrypt('yamisokiespl');
2190 $edit=Player::where('username','like','%IESPL_%')->update($update);
2191 }
2192 }
2193
2194 public function googlevision(){
2195 $gcv = new GoogleCloudVision();
2196 $gcv->setKey("AIzaSyB8gHUWlmEcUPIAuuz6HE_j4rfoMYfTXGY");
2197 $link=public_path('img\screenshot\test3.jpeg');
2198 $gcv->setImage($link);
2199 $gcv->addFeatureOCR(1);
2200 $response = $gcv->request();
2201 dd($response);
2202 }
2203
2204 public function testdecode(){
2205 $img = "legal-data:image/jpeg;base64,/9j/4AAQSkZJRgABAgEASABIAAD/4RPmRXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUAAAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAIAAAExAAIAAAAlAAAAcgEyAAIAAAAUAAAAl4dpAAQAAAABAAAArAAAANgACvzaAAAnEAAK/NoAACcQQWRvYmUgUGhvdG9zaG9wIEVsZW1lbnRzID";
2206 $explode=explode(',',$img);
2207 if(count($explode) > 1){
2208 $explode2=explode(';',$explode[0]);
2209 if(count($explode2) >1 ){
2210 $explode3=explode('/',$explode2[0]);
2211 $ext=$explode3[1];
2212 echo $ext;
2213 }
2214 }
2215
2216 }
2217
2218
2219 //------------------------------------------------------------------------
2220 public function ocr_qadri(Request $req){
2221
2222 $playerIds = array(3540, 294, 6798); //tester
2223 $gameId = 7;
2224
2225 $app = new Application([
2226 'ocrs' => [
2227 'tencentai' => [
2228 'app_id' => '1106584682',
2229 'app_key' => 'XGgkqVif73v8wH6W',
2230 ],
2231 ]
2232 ]);
2233
2234 $link = public_path('img\screenshot\mobile.jpg');
2235 $convert = $app->tencentai->general($link, []);
2236 $data = $convert['data']['item_list'];
2237
2238 $teamMembers = PlayerInGameIds::whereIn('player_id', $playerIds)->where('game_id', $gameId)->get();
2239
2240 $results = $this->ocr_qadri_check_team_members($teamMembers, $data);
2241
2242 echo json_encode($results);
2243
2244 }
2245 private function ocr_qadri_check_team_members($members, $words){
2246
2247 $resultData = array();
2248
2249 foreach ($members as $value) {
2250
2251 //echo '<hr>'.$value->in_game_id.'<br>';
2252
2253 foreach($words as $row){
2254 if(strlen($row['itemstring'])>5){
2255
2256 $clean = preg_replace('/#\w+/', '', $row['itemstring']);
2257 $str = trim($clean);
2258
2259 if (strpos($str, $value->in_game_id) !== false) {
2260 //echo ' <i>containt : '.$str.'</i><br>';
2261 array_push($resultData, $value);
2262 } else {
2263
2264 $thisInGameId = $value->in_game_id;
2265
2266 while(strlen($thisInGameId) > 5){
2267 $thisInGameId = substr($value->in_game_id, 0, strlen($thisInGameId)-1);
2268
2269 //echo $thisInGameId.'<br>';
2270 if (strpos($str, $thisInGameId) !== false) {
2271 //echo ' <i>containt : '.$thisInGameId.'</i><br>';
2272 array_push($resultData, $value);
2273 break;
2274 }
2275 }
2276
2277 }
2278
2279 }
2280 }
2281
2282 }
2283
2284 return $resultData;
2285 }
2286 //------------------------------------------------------------------------
2287
2288 public function checkresult($matchid){
2289
2290 $path = 'screenshot/sample-1.jpg';
2291 // $type = pathinfo($path, PATHINFO_EXTENSION);
2292 // $data2 = file_get_contents($path);
2293 // $base64 = 'data:image/' . $type . ';base64,' . base64_encode($data2);
2294 //echo $base64;
2295 $data='{
2296 "requests": [
2297 {
2298 "features": [
2299 {
2300 "type": "TEXT_DETECTION"
2301 }
2302 ],
2303 "image": {
2304 "source": {
2305 "imageUri": "https://res.cloudinary.com/capcaicah/image/upload/v1542335427/sample-2_s9tml6.jpg"
2306 }
2307 }
2308 }
2309 ]
2310 }';
2311 $body=json_encode($data);
2312
2313 $url = 'https://vision.googleapis.com/v1/images:annotate?fields=responses%2FtextAnnotations&key=AIzaSyBpEtvSLHVA4H8lumAU5xIwkEDqWG3nIXs';
2314
2315 // use key 'http' even if you send the request to https://...
2316 $options = array(
2317 'http' => array(
2318 'header' => "Content-type: application/json; charset=utf-8\r\n",
2319 'method' => 'POST',
2320 'content' => $data
2321 )
2322 );
2323 $context = stream_context_create($options);
2324 $result = file_get_contents($url, false, $context);
2325
2326
2327 $result=json_decode($result);
2328 $alldata=$result->responses[0]->textAnnotations[0]->description;
2329
2330
2331
2332
2333 $explode=explode("\n", $alldata);
2334 $record=0;
2335
2336 // echo "<pre>";
2337 // var_dump($alldata);
2338 // echo "</pre>";
2339
2340 $row=array();
2341 for($i=0;$i<count($explode);$i++){
2342
2343
2344 if(strpos($explode[$i],'BattlelD')!==FALSE){
2345 $record=0;
2346
2347 }
2348
2349 if($record==1){
2350 $temp=explode(" ", $explode[$i]);
2351 $row[$i]['jum']=count($temp);
2352 $row[$i]['words']=$explode[$i];
2353 }
2354
2355 if(strpos($explode[$i],'Time length')!==FALSE){
2356 $record=1;
2357
2358 }
2359
2360 }
2361 $flag=0;
2362 $red="";
2363 $winnerid="";
2364 $lobbycek=mllobby::where('match_id',$matchid)->first();
2365 $detail=TeamMember::where("team_id",$lobbycek->team_1)->get();
2366 $teammem=array();
2367 foreach($detail as $member){
2368 $teammem[$member->player_id]=$member->team_id;
2369 }
2370 $detail=TeamMember::where("team_id",$lobbycek->team_2)->get();
2371 foreach($detail as $member){
2372 $teammem[$member->player_id]=$member->team_id;
2373 }
2374 //dd($teammem);
2375 foreach($row as $desc){
2376 if(!strtotime($desc["words"])){
2377 if($desc["jum"]==6){
2378 $words=explode(" ", $desc['words']);
2379 if(!is_numeric($words[0])){
2380 if($lobbycek->winner=='blue' && $winnerid==""){
2381 $player=PlayerInGameId::where('nickname','like','%'.$words[1].'%')->first();
2382 if($player){
2383 if(isset($teammem[$player->player_id])){
2384 $winnerid=$teammem[$player->player_id];
2385 }
2386 }
2387 }
2388
2389 }else{
2390 if($lobbycek->winner=='red' && $winnerid==""){
2391 $player=PlayerInGameId::where('nickname','like','%'.$words[5].'%')->first();
2392 if($player){
2393 if(isset($teammem[$player->player_id])){
2394 $winnerid=$teammem[$player->player_id];
2395 }
2396 }
2397 }
2398 }
2399 }elseif($desc['jum']==5){
2400 $words=explode(" ", $desc['words']);
2401 if(!is_numeric($words[0])){
2402 if($lobbycek->winner=='blue' && $winnerid==""){
2403 $player=PlayerInGameId::where('nickname','like','%'.$words[0].'%')->first();
2404 if($player){
2405 if(isset($teammem[$player->player_id])){
2406 $winnerid=$teammem[$player->player_id];
2407 }
2408 }
2409 }
2410
2411 }else{
2412 if($lobbycek->winner=='red' && $winnerid==""){
2413 $player=PlayerInGameId::where('nickname','like','%'.$words[4].'%')->first();
2414 if($player){
2415 if(isset($teammem[$player->player_id])){
2416 $winnerid=$teammem[$player->player_id];
2417 }
2418 }
2419 }
2420 }
2421
2422 }else{
2423
2424 if(!is_numeric(str_replace(" ","",$desc['words']))){
2425 if($red==""){
2426 $red=$desc['words'];
2427 $cek=explode(" ", $desc['words']);
2428 if(count($cek)>1){
2429 $name=$cek[1];
2430 }else{
2431
2432 $name=substr($desc["words"], 0,-1);
2433 }
2434 if($lobbycek->winner=='red' && $winnerid==""){
2435 $player=PlayerInGameId::where('nickname','like','%'.$name.'%')->first();
2436 if($player){
2437 if(isset($teammem[$player->player_id])){
2438 $winnerid=$teammem[$player->player_id];
2439 }
2440 }
2441 }
2442 }else{
2443 $cek=explode(" ", $desc['words']);
2444 if(count($cek)>1){
2445 $name=$cek[1];
2446 }else{
2447
2448 $name=substr($desc["words"], 1);
2449 }
2450 if($lobbycek->winner=='blue' && $winnerid==""){
2451 $player=PlayerInGameId::where('nickname','like','%'.$name.'%')->first();
2452 if($player){
2453 if(isset($teammem[$player->player_id])){
2454 $winnerid=$teammem[$player->player_id];
2455 }
2456 }
2457 }
2458 $red="";
2459 }
2460 }
2461 }
2462 }
2463 }
2464 imp_return($winnerid);
2465
2466 }
2467
2468
2469 public function statusmlupdate($status){
2470 $update=array();
2471 $update['value']=$status;
2472 $edit=YamisokParam::where('id',1)->update($update);
2473 if($edit){
2474 imp_return(0);
2475 }else{
2476 imp_return(1);
2477 }
2478 }
2479
2480 public function cekwo($matchid){
2481 $path = 'screenshot/sample-1.jpg';
2482 // $type = pathinfo($path, PATHINFO_EXTENSION);
2483 // $data2 = file_get_contents($path);
2484 // $base64 = 'data:image/' . $type . ';base64,' . base64_encode($data2);
2485 //echo $base64;
2486 $data='{
2487 "requests": [
2488 {
2489 "features": [
2490 {
2491 "type": "TEXT_DETECTION"
2492 }
2493 ],
2494 "image": {
2495 "source": {
2496 "imageUri": "https://res.cloudinary.com/capcaicah/image/upload/v1542857711/ss-1-sisi-alay_wc9cwy.jpg"
2497 }
2498 }
2499 }
2500 ]
2501 }';
2502 $body=json_encode($data);
2503
2504 $url = 'https://vision.googleapis.com/v1/images:annotate?fields=responses%2FtextAnnotations&key=AIzaSyBpEtvSLHVA4H8lumAU5xIwkEDqWG3nIXs';
2505
2506 // use key 'http' even if you send the request to https://...
2507 $options = array(
2508 'http' => array(
2509 'header' => "Content-type: application/json; charset=utf-8\r\n",
2510 'method' => 'POST',
2511 'content' => $data
2512 )
2513 );
2514 $context = stream_context_create($options);
2515 $result = file_get_contents($url, false, $context);
2516
2517
2518 $result=json_decode($result);
2519 $alldata=$result->responses[0]->textAnnotations[0]->description;
2520
2521 //dd($alldata);
2522
2523
2524
2525 $explode=explode("\n", $alldata);
2526 $record=0;
2527
2528 $row=array();
2529 for($i=0;$i<count($explode);$i++){
2530
2531
2532 if(strpos($explode[$i],'Start Game')!==FALSE){
2533 $record=0;
2534
2535 }
2536
2537 if($record==1){
2538 $temp=explode(" ", $explode[$i]);
2539 $row[$i]['jum']=count($temp);
2540 $row[$i]['words']=$explode[$i];
2541 }
2542
2543 if(strpos($explode[$i],'Squad Invite')!==FALSE){
2544 $record=1;
2545
2546 }
2547
2548 }
2549
2550 $lobbycek=mllobby::where('match_id',$matchid)->first();
2551 $detail=TeamMember::where("team_id",$lobbycek->team_1)->get();
2552 $teammem=array();
2553 foreach($detail as $member){
2554 $teammem[$member->player_id]=$member->team_id;
2555 }
2556 $detail=TeamMember::where("team_id",$lobbycek->team_2)->get();
2557 foreach($detail as $member){
2558 $teammem[$member->player_id]=$member->team_id;
2559 }
2560
2561 $absensi=array();
2562 $absensi[$lobbycek->team_1]=0;
2563 $absensi[$lobbycek->team_2]=0;
2564
2565 foreach($row as $desc){
2566 $player=PlayerInGameId::where('nickname','like','%'.$desc['words'].'%')->first();
2567 if($player){
2568 if(isset($teammem[$player->player_id])){
2569 $absensi[$teammem[$player->player_id]]++;
2570 }
2571 }
2572 }
2573
2574 if($absensi[$lobbycek->team_1]==0){
2575 echo "team 1 WO";
2576 }else{
2577 echo "team 2 WO";
2578 }
2579
2580 }
2581
2582 function livestream(){
2583 // $stream=file_get_contents('https://www.googleapis.com/youtube/v3/search?part=snippet&type=video&key=AIzaSyBZrtuJkqUZ3IH7a0mof-yJKmNrfqYSkVU&eventType=live&safeSearch=moderate&videoEmbeddable=true&videoSyndicated=true&channelId=UCQIycDaLsBpMKjOCeaKUYVg');
2584 // $rawdata=json_decode($stream);
2585 // if($rawdata->pageInfo->totalResults!=0){
2586 // foreach($rawdata->items as $video){
2587 // if($video->snippet->liveBroadcastContent=="live"){
2588 // echo '<iframe class="d-none d-lg-block d-xl-block pb-3" src="https://www.youtube.com/embed/'.$video->id->videoId.'" frameborder="0" allowfullscreen="true" scrolling="no" gesture="media" allow="encrypted-media" style="width:99%;height:350px;"></iframe>';
2589 // $getdetail=file_get_contents('https://www.googleapis.com/youtube/v3/videos?part=snippet%2CliveStreamingDetails&id='.$video->id->videoId.'&key=AIzaSyBZrtuJkqUZ3IH7a0mof-yJKmNrfqYSkVU');
2590 // $detail=json_decode($getdetail);
2591 // dd($detail);
2592 // if($detail->pageInfo->totalResults!=0){
2593 // $totalview=$detail->items[0]->liveStreamingDetails->concurrentViewers;
2594 // $chatid=$detail->items[0]->liveStreamingDetails->activeLiveChatId;
2595 // $getchat=file_get_contents('https://www.googleapis.com/youtube/v3/liveChat/messages?liveChatId='.$chatid.'&part=snippet&key=AIzaSyBZrtuJkqUZ3IH7a0mof-yJKmNrfqYSkVU');
2596 // $chat=json_decode($getchat);
2597 // //dd($chat);
2598 // if($chat->pageInfo->totalResults!=0){
2599 // foreach($chat->items as $row){
2600 // echo "message : ".$row->snippet->displayMessage."<br />";
2601 // }
2602 // }
2603 // }
2604
2605 // }
2606 // }
2607 // }
2608 $raw=file_get_contents('https://www.googleapis.com/youtube/v3/search?key=AIzaSyBZrtuJkqUZ3IH7a0mof-yJKmNrfqYSkVU&channelId=UCQIycDaLsBpMKjOCeaKUYVg&part=snippet,id&order=viewCount&maxResults=20');
2609 $rawdata=json_decode($raw);
2610 dd($rawdata);
2611 }
2612
2613}