Example #1
0
 public function alist()
 {
     $accounts = Account::alist();
     $uns = array();
     $interval = array();
     $last = array();
     $aset = array();
     $aliving = array();
     $account_time = array();
     $account_time_count = array();
     foreach ($accounts as $account) {
         $username = $account['username'];
         $code = $account['code'];
         $time = $account['time'];
         if (isset($uns[$username][$code])) {
             $uns[$username][$code] += 1;
         } else {
             $uns[$username][$code] = 1;
         }
         if ($code == -1) {
             if (isset($last[$username])) {
                 $interval[$username] += $last[$username] - $time;
                 $last[$username] = $time;
             } else {
                 $last[$username] = $time;
                 $interval[$username] = 0;
             }
         }
         if (isset($aset[$username])) {
             if ($code == -1) {
                 unset($aset[$username]);
             } elseif ($code == 0) {
                 if (isset($account_time[$username])) {
                     $account_time[$username] += $aset[$username] - $time;
                     $account_time_count[$username] += 1;
                 } else {
                     $account_time[$username] = $aset[$username] - $time;
                     $account_time_count[$username] = 1;
                 }
             } else {
                 return redirect('/');
             }
         } else {
             if ($code == -1) {
                 continue;
             } elseif ($code == 0) {
                 $aliving[$username] = True;
             } else {
                 $aset[$username] = $time;
             }
         }
     }
     $res = array();
     foreach ($uns as $username => $codes) {
         $tmp = array();
         $tmp[0] = $username;
         $tmp[1] = 0;
         $tmp[2] = 0;
         $tmp[3] = 0;
         $tmp[4] = 0;
         if ($codes['-1'] < 2) {
             $tmp[5] = 0;
         } else {
             $tmp[5] = Variables::secordtoHMSF($interval[$username] / ($codes['-1'] - 1));
         }
         if (isset($account_time_count[$username])) {
             $tmp[6] = Variables::secordtoHMSF($account_time[$username] / $account_time_count[$username]);
         } else {
             $tmp[6] = 0;
         }
         foreach ($codes as $code => $count) {
             if ($code == 0) {
                 $tmp[1] = $count;
             } elseif ($code == 9302) {
                 $tmp[2] = $count;
             } elseif ($code == 9400) {
                 $tmp[3] = $count;
             } elseif ($code != -1) {
                 $tmp[4] += $count;
             }
         }
         $res[] = $tmp;
     }
     return view('account.alist', compact('res', 'aliving'));
 }