getListAccountMomos(true, [STATUS_ACTIVE, STATUS_MAINTENANCE]); $levelAccounts = AccountLevelMoney::where('status', STATUS_ACTIVE)->get()->map(function($account) use ( $listAccountMomos ) { $accountMomo = collect($listAccountMomos)->where('sdt', $account->sdt)->first(); $account->game = $account->getGameAttribute(); if (!is_null($accountMomo)) { if ($accountMomo['status'] == STATUS_MAINTENANCE) { $account->text_status = "Bảo trì"; $account->class_status = "warning"; } else { $account->text_status = "Hoạt động"; $account->class_status = "success"; } } else { $account->notExist = "true"; } return $account; })->filter(function($account) { return !isset($account->notExist); })->toArray(); Cache::put('cache_list_account_momos_active', $levelAccounts, Carbon::now()->addMinutes(60)); return $levelAccounts; } public function getListAccountMomos($forCreate = false, $status = [STATUS_ACTIVE]) { $phones = []; if (!$forCreate) { $accountListMomoLevel = $this->getListAccountMomosLevels(); $phones = collect($accountListMomoLevel)->pluck('sdt')->toArray(); } $query = AccountMomo::whereIn('status', $status); $query = !$forCreate ? $query->whereIn('sdt', $phones)->limit(5) : $query; return $query->get()->unique('sdt')->toArray(); } public function getListAccountMomosWithAccountLevel($groupByType = true) { $accounts = collect($this->getListAccountMomosLevels()); $phones = $accounts->pluck('sdt')->unique()->toArray(); $LichSuBank = new LichSuBank; $LichSuBanks = $LichSuBank->whereDate('created_at', \Illuminate\Support\Carbon::today())->get(); $sumTienCuocPhones = []; foreach ($phones as $index => $phone) { $sumTienCuocPhones[] = [ 'phone' => $phone, 'sum' => DB::table('lich_su_choi_momos') ->whereDate('created_at', Carbon::today()) ->where('ketqua', 1) ->where('sdt_get', $phone) ->sum('tiennhan'), ]; } $getDay = Carbon::now(); $accountMomos = AccountMomo::whereIn('sdt', $phones) ->where('status', STATUS_ACTIVE)->orderBy('id', $getDay->day % 2 == 0 ? 'desc' : 'asc' ) ->limit(LITMIT_SHOW_SDT_ON_WEB); $phonesAccountMomo = $accountMomos->pluck('sdt')->toArray(); $accounts = $accounts->map(function($account) use ($sumTienCuocPhones, $LichSuBanks, $accountMomos) { $sumTienCuocPhone = collect($sumTienCuocPhones)->where('phone', $account['sdt'])->first(); $accountMomo = $accountMomos->where('sdt', $account['sdt'])->first(); $account['sumTienCuoc'] = is_null($sumTienCuocPhone) ? 0 : $sumTienCuocPhone['sum']; $account['gioihan'] = is_null($accountMomo) ? 0 : $accountMomo['gioihan']; $getLichSuBank = $LichSuBanks->where('sdtbank', $account['sdt']); $countbank = 0; $responseLichSuBank = $getLichSuBank->pluck('response')->toArray(); foreach ($responseLichSuBank as $response) { $j = json_decode($response, true); if (isset($j['status']) && $j['status'] == 200) { $countbank++; } } $account['countbank'] = $countbank; $account['color_min'] = $account['min'] > CONFIG_COMPARE_TIEN_CUOC_MIN ? "blue" : ""; $account['color_max'] = $account['max'] > CONFIG_COMPARE_TIEN_CUOC_MIN ? "blue" : ""; $account['color_tiencuoc'] = $account['sumTienCuoc'] > CONFIG_MAX_SUM_TIEN_CUOC ? "red" : "green"; $account['color_countbank'] = $countbank > CONFIG_MAX_COUNT_BANK ? "red" : "green"; return $account; })->filter(function($account) use ($phonesAccountMomo) { return in_array($account['sdt'], $phonesAccountMomo); })->take(LITMIT_SHOW_SDT_ON_WEB)->sortBy('min'); return $groupByType ? $accounts->groupBy('type')->map(function($accountList) { return $accountList->unique('sdt'); }) : $accounts; } }