option('type')); switch ($type) { case 'referral': $this->referralPayouts(); break; case 'reseller': $this->resellerPayouts(); break; } } private function referralPayouts() { $servers = DbServer::orderBy('id')->get(['name']); $userMap = []; foreach ($servers as $server) { config(['database.default' => $server->name]); $users = User::where('referral_code', '!=', '') ->get(['email', 'referral_code']); foreach ($users as $user) { $userMap[$user->referral_code] = $user->email; } } foreach ($servers as $server) { config(['database.default' => $server->name]); $companies = Company::where('referral_code', '!=', '') ->with('payment.client.payments') ->whereNotNull('payment_id') ->get(); $this->info('User,Client,Date,Amount,Reference'); foreach ($companies as $company) { if (!isset($userMap[$company->referral_code])) { continue; } $user = $userMap[$company->referral_code]; $payment = $company->payment; if ($payment) { $client = $payment->client; foreach ($client->payments as $payment) { $amount = $payment->getCompletedAmount(); $this->info('"' . $user . '",' . '"' . $client->getDisplayName() . '",' . $payment->payment_date . ',' . $amount . ',' . $payment->transaction_reference ); } } } } } private function resellerPayouts() { $response = CurlUtils::post($this->option('url') . '/reseller_stats', [ 'password' => $this->option('password') ]); $this->info('Response:'); $this->info($response); } protected function getOptions() { return [ ['type', null, InputOption::VALUE_OPTIONAL, 'Type', null], ['url', null, InputOption::VALUE_OPTIONAL, 'Url', null], ['password', null, InputOption::VALUE_OPTIONAL, 'Password', null], ]; } }