/**
  * A function to update a faucet's status (active or paused)
  * according to their low-balance status and if the
  * faucet's URL is error-free and valid.
  */
 public static function checkUpdateStatuses()
 {
     //Retrieve faucets to be updated.
     $faucets = Faucet::all();
     $pausedFaucets = [];
     $activatedFaucets = [];
     foreach ($faucets as $f) {
         if (UrlValidation::urlExists($f->url) != true && $f->is_paused == false && $f->has_low_balance == false) {
             $f->is_paused = true;
             $f->save();
             array_push($pausedFaucets, $f->name);
         } elseif (UrlValidation::urlExists($f->url) != false && $f->is_paused == true && $f->has_low_balance == false) {
             $f->is_paused = false;
             $f->save();
             array_push($activatedFaucets, $f->name);
         }
     }
     if (count($pausedFaucets) == 0 && count($activatedFaucets) == 0) {
         Session::flash('success_message_update_faucet_statuses_none', 'No faucets have been updated.');
     }
     if (count($pausedFaucets) > 0) {
         Session::flash('success_message_update_faucet_statuses_paused', 'The following faucets have been paused: ' . implode(",", $pausedFaucets));
     }
     if (count($activatedFaucets) > 0) {
         Session::flash('success_message_update_faucet_statuses_activated', 'The following faucets have been activated: ' . implode(",", $activatedFaucets));
     }
 }
 public function run()
 {
     DB::statement('SET FOREIGN_KEY_CHECKS = 0');
     DB::table('referral_info')->truncate();
     $user_id = User::where('user_name', env('ADMIN_USERNAME'))->first()->id;
     $faucets = Faucet::all();
     foreach ($faucets as $faucet) {
         DB::table('referral_info')->insert(array(['faucet_id' => $faucet->id, 'user_id' => $user_id]));
     }
     DB::statement('SET FOREIGN_KEY_CHECKS = 1');
 }
 /**
  * Create and download faucets/payment processors linking data as CSV file.
  */
 public function getFaucetsPaymentProcessorsLinkingData()
 {
     $faucets = Faucet::all();
     $csv = Writer::createFromFileObject(new SplTempFileObject());
     $csv->insertOne(Schema::getColumnListing('faucet_payment_processor'));
     foreach ($faucets as $f) {
         $paymentProcessors = $f->paymentProcessors()->get();
         foreach ($paymentProcessors as $p) {
             $data = ['faucet_id' => $f->id, 'payment_processor_id' => $p->id];
             $csv->insertOne($data);
         }
     }
     $csv->output('faucets_payment_processors.csv');
 }
 /**
  * A function used to tweet the details of a Random faucet.
  */
 public function sendRandomFaucetTweet()
 {
     $faucetCount = count(Faucet::all());
     if ($faucetCount > 0) {
         //Obtain a random integer used to
         //get a random faucet to tweet.
         $numbers = range(0, $faucetCount - 1);
         shuffle($numbers);
         $randomNumber = array_slice($numbers, 0, 1);
         //Obtain a faucet using the random integer.
         $faucet = Faucet::find($randomNumber[0]);
         //Construct a message template based on the random faucet's details.
         $message = "Earn between " . $faucet->min_payout . " and " . $faucet->max_payout . " satoshis every " . $faucet->interval_minutes . " minute/s from " . url('/faucets/' . $faucet->slug) . " for free :).";
         // Send the tweet of the random faucet.
         $this->sendTweet($message);
     }
 }
 /**
  * A function to retrieve all active faucets.
  *
  * @param bool|false $hasLowBalance
  * @return array|null
  */
 public function activeFaucets($hasLowBalance = false)
 {
     try {
         //Get all faucets, regardless of low-balance or active/paused status.
         $faucets = Faucet::all()->sortBy('interval_minutes')->values()->all();
         $activeFaucets = [];
         //Iterate over all faucets, check their low-balance and active/pause status,
         //then put desired faucets in separate faucets array.
         foreach ($faucets as $f) {
             if ($f->is_paused == false && $f->has_low_balance == $hasLowBalance) {
                 array_push($activeFaucets, $f);
             }
         }
         //Return active faucets.
         return $activeFaucets;
     } catch (Exception $e) {
         return null;
     }
 }