Page MenuHomePhorge

D1702.1775483235.diff
No OneTemporary

Authored By
Unknown
Size
99 KB
Referenced Files
None
Subscribers
None

D1702.1775483235.diff

diff --git a/src/app/Console/Command.php b/src/app/Console/Command.php
new file mode 100644
--- /dev/null
+++ b/src/app/Console/Command.php
@@ -0,0 +1,62 @@
+<?php
+
+namespace App\Console;
+
+class Command extends \Illuminate\Console\Command
+{
+ /**
+ * Find the domain.
+ *
+ * @param string $domain Domain ID or namespace
+ *
+ * @return \App\Domain|null
+ */
+ public function getDomain($domain)
+ {
+ return $this->getObject(\App\Domain::class, $domain, 'namespace');
+ }
+
+ /**
+ * Find an object.
+ *
+ * @param string $objectClass The name of the class
+ * @param string $objectIdOrTitle The name of a database field to match.
+ * @param string|null $objectTitle An additional database field to match.
+ *
+ * @return mixed
+ */
+ public function getObject($objectClass, $objectIdOrTitle, $objectTitle)
+ {
+ $object = $objectClass::find($objectIdOrTitle);
+
+ if (!$object && !empty($objectTitle)) {
+ $object = $objectClass::where($objectTitle, $objectIdOrTitle)->first();
+ }
+
+ return $object;
+ }
+
+ /**
+ * Find the user.
+ *
+ * @param string $user User ID or email
+ *
+ * @return \App\User|null
+ */
+ public function getUser($user)
+ {
+ return $this->getObject(\App\User::class, $user, 'email');
+ }
+
+ /**
+ * Find the wallet.
+ *
+ * @param string $wallet Wallet ID
+ *
+ * @return \App\Wallet|null
+ */
+ public function getWallet($wallet)
+ {
+ return $this->getObject(\App\Wallet::class, $wallet, null);
+ }
+}
diff --git a/src/app/Console/Commands/DBPing.php b/src/app/Console/Commands/DB/PingCommand.php
rename from src/app/Console/Commands/DBPing.php
rename to src/app/Console/Commands/DB/PingCommand.php
--- a/src/app/Console/Commands/DBPing.php
+++ b/src/app/Console/Commands/DB/PingCommand.php
@@ -1,11 +1,11 @@
<?php
-namespace App\Console\Commands;
+namespace App\Console\Commands\DB;
-use Illuminate\Console\Command;
+use App\Console\Command;
use Illuminate\Support\Facades\DB;
-class DBPing extends Command
+class PingCommand extends Command
{
/**
* The name and signature of the console command.
@@ -21,16 +21,6 @@
*/
protected $description = 'Ping the database [and wait for it to respond]';
- /**
- * Create a new command instance.
- *
- * @return void
- */
- public function __construct()
- {
- parent::__construct();
- }
-
/**
* Execute the console command.
*
diff --git a/src/app/Console/Commands/DataCountries.php b/src/app/Console/Commands/Data/Import/CountriesCommand.php
rename from src/app/Console/Commands/DataCountries.php
rename to src/app/Console/Commands/Data/Import/CountriesCommand.php
--- a/src/app/Console/Commands/DataCountries.php
+++ b/src/app/Console/Commands/Data/Import/CountriesCommand.php
@@ -1,10 +1,11 @@
<?php
-namespace App\Console\Commands;
+namespace App\Console\Commands\Data\Import;
-use Illuminate\Console\Command;
+use App\Console\Command;
+use Carbon\Carbon;
-class DataCountries extends Command
+class CountriesCommand extends Command
{
private $currency_fixes = [
// Country code => currency
@@ -16,14 +17,14 @@
*
* @var string
*/
- protected $signature = 'data:countries';
+ protected $signature = 'data:import:countries';
/**
* The console command description.
*
* @var string
*/
- protected $description = 'Fetches countries map from wikipedia';
+ protected $description = 'Fetches countries map from country.io';
/**
* Execute the console command.
@@ -32,43 +33,63 @@
*/
public function handle()
{
+ $today = Carbon::now()->toDateString();
+
$countries = [];
$currencies = [];
- $currencies_url = 'http://country.io/currency.json';
- $countries_url = 'http://country.io/names.json';
-
- $this->info("Fetching currencies from $currencies_url...");
+ $currencySource = 'http://country.io/currency.json';
+ $countrySource = 'http://country.io/names.json';
- // fetch currency table and create an index by country page url
- $currencies_json = file_get_contents($currencies_url);
+ //
+ // countries
+ //
+ $file = storage_path("countries-{$today}.json");
- if (!$currencies_json) {
- $this->error("Failed to fetch currencies");
- return;
- }
+ $this->info("Retrieving {$countrySource}...");
- $this->info("Fetching countries from $countries_url...");
+ \App\Utils::downloadFile($countrySource, $file);
- $countries_json = file_get_contents($countries_url);
+ $countryJson = file_get_contents($file);
- if (!$countries_json) {
+ if (!$countryJson) {
$this->error("Failed to fetch countries");
- return;
+ return 1;
}
- $currencies = json_decode($currencies_json, true);
- $countries = json_decode($countries_json, true);
+ $countries = json_decode($countryJson, true);
if (!is_array($countries) || empty($countries)) {
$this->error("Invalid countries data");
+ return 1;
+ }
+
+ //
+ // currencies
+ //
+ $file = storage_path("currencies-{$today}.json");
+
+ $this->info("Retrieving {$currencySource}...");
+
+ \App\Utils::downloadFile($currencySource, $file);
+
+ // fetch currency table and create an index by country page url
+ $currencyJson = file_get_contents($file);
+
+ if (!$currencyJson) {
+ $this->error("Failed to fetch currencies");
return;
}
+ $currencies = json_decode($currencyJson, true);
+
if (!is_array($currencies) || empty($currencies)) {
$this->error("Invalid currencies data");
- return;
+ return 1;
}
+ //
+ // export
+ //
$file = resource_path('countries.php');
$this->info("Generating resource file $file...");
@@ -76,6 +97,7 @@
asort($countries);
$out = "<?php return [\n";
+
foreach ($countries as $code => $name) {
$currency = $currencies[$code] ?? null;
@@ -84,12 +106,13 @@
}
if (!$currency) {
- $this->error("Unknown currency for {$name} ({$code}). Skipped.");
+ $this->warn("Unknown currency for {$name} ({$code}). Skipped.");
continue;
}
$out .= sprintf(" '%s' => ['%s','%s'],\n", $code, $currency, addslashes($name));
}
+
$out .= "];\n";
file_put_contents($file, $out);
diff --git a/src/app/Console/Commands/Data/ImportCommand.php b/src/app/Console/Commands/Data/ImportCommand.php
new file mode 100644
--- /dev/null
+++ b/src/app/Console/Commands/Data/ImportCommand.php
@@ -0,0 +1,40 @@
+<?php
+
+namespace App\Console\Commands\Data;
+
+use Illuminate\Console\Command;
+
+class ImportCommand extends Command
+{
+ /**
+ * The name and signature of the console command.
+ *
+ * @var string
+ */
+ protected $signature = 'data:import';
+
+ /**
+ * The console command description.
+ *
+ * @var string
+ */
+ protected $description = 'Import data from external sources';
+
+ /**
+ * Execute the console command.
+ *
+ * @return int
+ */
+ public function handle()
+ {
+ $commands = [
+ Import\CountriesCommand::class
+ ];
+
+ foreach ($commands as $command) {
+ $execution = new $command();
+ $execution->output = $this->output;
+ $execution->handle();
+ }
+ }
+}
diff --git a/src/app/Console/Commands/Discount/ReadCommand.php b/src/app/Console/Commands/Discount/ReadCommand.php
new file mode 100644
--- /dev/null
+++ b/src/app/Console/Commands/Discount/ReadCommand.php
@@ -0,0 +1,12 @@
+<?php
+
+namespace App\Console\Commands\Discount;
+
+use App\Console\Commands\ObjectReadCommand;
+
+class ReadCommand extends ObjectReadCommand
+{
+ protected $objectClass = \App\Discount::class;
+ protected $objectName = 'discount';
+ protected $objectTitle = null;
+}
diff --git a/src/app/Console/Commands/DiscountList.php b/src/app/Console/Commands/DiscountList.php
deleted file mode 100644
--- a/src/app/Console/Commands/DiscountList.php
+++ /dev/null
@@ -1,61 +0,0 @@
-<?php
-
-namespace App\Console\Commands;
-
-use App\Discount;
-use Illuminate\Console\Command;
-use Illuminate\Support\Facades\DB;
-
-class DiscountList extends Command
-{
- /**
- * The name and signature of the console command.
- *
- * @var string
- */
- protected $signature = 'discount:list';
-
- /**
- * The console command description.
- *
- * @var string
- */
- protected $description = 'List available (active) discounts';
-
- /**
- * Create a new command instance.
- *
- * @return void
- */
- public function __construct()
- {
- parent::__construct();
- }
-
- /**
- * Execute the console command.
- *
- * @return mixed
- */
- public function handle()
- {
- Discount::where('active', true)->orderBy('discount')->get()->each(
- function ($discount) {
- $name = $discount->description;
-
- if ($discount->code) {
- $name .= " [{$discount->code}]";
- }
-
- $this->info(
- sprintf(
- "%s %3d%% %s",
- $discount->id,
- $discount->discount,
- $name
- )
- );
- }
- );
- }
-}
diff --git a/src/app/Console/Commands/DiscountsCommand.php b/src/app/Console/Commands/DiscountsCommand.php
new file mode 100644
--- /dev/null
+++ b/src/app/Console/Commands/DiscountsCommand.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace App\Console\Commands;
+
+use App\Console\Command;
+use App\Discount;
+use Illuminate\Support\Facades\DB;
+
+class DiscountsCommand extends ObjectListCommand
+{
+ protected $objectClass = \App\Discount::class;
+ protected $objectName = 'discount';
+ protected $objectTitle = null;
+}
diff --git a/src/app/Console/Commands/DomainAdd.php b/src/app/Console/Commands/Domain/Add.php
rename from src/app/Console/Commands/DomainAdd.php
rename to src/app/Console/Commands/Domain/Add.php
--- a/src/app/Console/Commands/DomainAdd.php
+++ b/src/app/Console/Commands/Domain/Add.php
@@ -1,13 +1,13 @@
<?php
-namespace App\Console\Commands;
+namespace App\Console\Commands\Domain;
use App\Domain;
use App\Entitlement;
-use Illuminate\Console\Command;
+use App\Console\Command;
use Illuminate\Support\Facades\Queue;
-class DomainAdd extends Command
+class Add extends Command
{
/**
* The name and signature of the console command.
diff --git a/src/app/Console/Commands/DomainDelete.php b/src/app/Console/Commands/Domain/Delete.php
rename from src/app/Console/Commands/DomainDelete.php
rename to src/app/Console/Commands/Domain/Delete.php
--- a/src/app/Console/Commands/DomainDelete.php
+++ b/src/app/Console/Commands/Domain/Delete.php
@@ -1,10 +1,10 @@
<?php
-namespace App\Console\Commands;
+namespace App\Console\Commands\Domain;
-use Illuminate\Console\Command;
+use App\Console\Command;
-class DomainDelete extends Command
+class Delete extends Command
{
/**
* The name and signature of the console command.
@@ -20,16 +20,6 @@
*/
protected $description = 'Delete a domain';
- /**
- * Create a new command instance.
- *
- * @return void
- */
- public function __construct()
- {
- parent::__construct();
- }
-
/**
* Execute the console command.
*
@@ -37,9 +27,10 @@
*/
public function handle()
{
- $domain = \App\Domain::where('id', $this->argument('domain'))->first();
+ $domain = $this->getDomain($this->argument('domain'));
if (!$domain) {
+ $this->error("Domain not found.");
return 1;
}
diff --git a/src/app/Console/Commands/DomainList.php b/src/app/Console/Commands/Domain/ListDomains.php
rename from src/app/Console/Commands/DomainList.php
rename to src/app/Console/Commands/Domain/ListDomains.php
--- a/src/app/Console/Commands/DomainList.php
+++ b/src/app/Console/Commands/Domain/ListDomains.php
@@ -1,11 +1,11 @@
<?php
-namespace App\Console\Commands;
+namespace App\Console\Commands\Domain;
+use App\Console\Command;
use App\Domain;
-use Illuminate\Console\Command;
-class DomainList extends Command
+class ListDomains extends Command
{
/**
* The name and signature of the console command.
@@ -21,16 +21,6 @@
*/
protected $description = 'List domains';
- /**
- * Create a new command instance.
- *
- * @return void
- */
- public function __construct()
- {
- parent::__construct();
- }
-
/**
* Execute the console command.
*
diff --git a/src/app/Console/Commands/DomainListUsers.php b/src/app/Console/Commands/Domain/ListUsers.php
rename from src/app/Console/Commands/DomainListUsers.php
rename to src/app/Console/Commands/Domain/ListUsers.php
--- a/src/app/Console/Commands/DomainListUsers.php
+++ b/src/app/Console/Commands/Domain/ListUsers.php
@@ -1,10 +1,10 @@
<?php
-namespace App\Console\Commands;
+namespace App\Console\Commands\Domain;
-use Illuminate\Console\Command;
+use App\Console\Command;
-class DomainListUsers extends Command
+class ListUsers extends Command
{
/**
* The name and signature of the console command.
@@ -20,16 +20,6 @@
*/
protected $description = 'List the user accounts of a domain';
- /**
- * Create a new command instance.
- *
- * @return void
- */
- public function __construct()
- {
- parent::__construct();
- }
-
/**
* Execute the console command.
*
@@ -37,9 +27,10 @@
*/
public function handle()
{
- $domain = \App\Domain::where('namespace', $this->argument('domain'))->first();
+ $domain = $this->getDomain($this->argument('domain'));
if (!$domain) {
+ $this->error("Domain not found.");
return 1;
}
diff --git a/src/app/Console/Commands/Domain/ReadCommand.php b/src/app/Console/Commands/Domain/ReadCommand.php
new file mode 100644
--- /dev/null
+++ b/src/app/Console/Commands/Domain/ReadCommand.php
@@ -0,0 +1,12 @@
+<?php
+
+namespace App\Console\Commands\Domain;
+
+use App\Console\Commands\ObjectReadCommand;
+
+class ReadCommand extends ObjectReadCommand
+{
+ protected $objectClass = \App\Domain::class;
+ protected $objectName = 'domain';
+ protected $objectTitle = 'namespace';
+}
diff --git a/src/app/Console/Commands/DomainSetStatus.php b/src/app/Console/Commands/Domain/SetStatus.php
rename from src/app/Console/Commands/DomainSetStatus.php
rename to src/app/Console/Commands/Domain/SetStatus.php
--- a/src/app/Console/Commands/DomainSetStatus.php
+++ b/src/app/Console/Commands/Domain/SetStatus.php
@@ -1,12 +1,12 @@
<?php
-namespace App\Console\Commands;
+namespace App\Console\Commands\Domain;
+use App\Console\Command;
use App\Domain;
-use Illuminate\Console\Command;
use Illuminate\Support\Facades\Queue;
-class DomainSetStatus extends Command
+class SetStatus extends Command
{
/**
* The name and signature of the console command.
@@ -29,9 +29,10 @@
*/
public function handle()
{
- $domain = Domain::where('namespace', $this->argument('domain'))->first();
+ $domain = $this->getDomain($this->argument('domain'));
if (!$domain) {
+ $this->error("Domain not found.");
return 1;
}
diff --git a/src/app/Console/Commands/DomainSetWallet.php b/src/app/Console/Commands/Domain/SetWallet.php
rename from src/app/Console/Commands/DomainSetWallet.php
rename to src/app/Console/Commands/Domain/SetWallet.php
--- a/src/app/Console/Commands/DomainSetWallet.php
+++ b/src/app/Console/Commands/Domain/SetWallet.php
@@ -1,15 +1,15 @@
<?php
-namespace App\Console\Commands;
+namespace App\Console\Commands\Domain;
+use App\Console\Command;
use App\Entitlement;
use App\Domain;
use App\Sku;
use App\Wallet;
-use Illuminate\Console\Command;
use Illuminate\Support\Facades\Queue;
-class DomainSetWallet extends Command
+class SetWallet extends Command
{
/**
* The name and signature of the console command.
@@ -32,7 +32,7 @@
*/
public function handle()
{
- $domain = Domain::where('namespace', $this->argument('domain'))->first();
+ $domain = $this->getDomain($this->argument('domain'));
if (!$domain) {
$this->error("Domain not found.");
diff --git a/src/app/Console/Commands/DomainStatus.php b/src/app/Console/Commands/Domain/Status.php
rename from src/app/Console/Commands/DomainStatus.php
rename to src/app/Console/Commands/Domain/Status.php
--- a/src/app/Console/Commands/DomainStatus.php
+++ b/src/app/Console/Commands/Domain/Status.php
@@ -1,11 +1,11 @@
<?php
-namespace App\Console\Commands;
+namespace App\Console\Commands\Domain;
+use App\Console\Command;
use App\Domain;
-use Illuminate\Console\Command;
-class DomainStatus extends Command
+class Status extends Command
{
/**
* The name and signature of the console command.
@@ -21,16 +21,6 @@
*/
protected $description = 'Display the status of a domain';
- /**
- * Create a new command instance.
- *
- * @return void
- */
- public function __construct()
- {
- parent::__construct();
- }
-
/**
* Execute the console command.
*
@@ -38,9 +28,10 @@
*/
public function handle()
{
- $domain = Domain::where('namespace', $this->argument('domain'))->first();
+ $domain = $this->getDomain($this->argument('domain'));
if (!$domain) {
+ $this->error("Domain not found.");
return 1;
}
@@ -48,15 +39,15 @@
'active' => Domain::STATUS_ACTIVE,
'suspended' => Domain::STATUS_SUSPENDED,
'deleted' => Domain::STATUS_DELETED,
- 'ldapReady' => Domain::STATUS_LDAP_READY,
- 'verified' => Domain::STATUS_VERIFIED,
'confirmed' => Domain::STATUS_CONFIRMED,
+ 'verified' => Domain::STATUS_VERIFIED,
+ 'ldapReady' => Domain::STATUS_LDAP_READY,
];
foreach ($statuses as $text => $bit) {
$func = 'is' . \ucfirst($text);
- $this->info(sprintf("%d %s: %s", $bit, $text, $domain->$func()));
+ $this->info(sprintf("%d %s: %s", $bit, $text, $domain->$func() ? "yes" : "no"));
}
$this->info("In total: {$domain->status}");
diff --git a/src/app/Console/Commands/DomainSuspend.php b/src/app/Console/Commands/Domain/Suspend.php
rename from src/app/Console/Commands/DomainSuspend.php
rename to src/app/Console/Commands/Domain/Suspend.php
--- a/src/app/Console/Commands/DomainSuspend.php
+++ b/src/app/Console/Commands/Domain/Suspend.php
@@ -1,11 +1,11 @@
<?php
-namespace App\Console\Commands;
+namespace App\Console\Commands\Domain;
+use App\Console\Command;
use App\Domain;
-use Illuminate\Console\Command;
-class DomainSuspend extends Command
+class Suspend extends Command
{
/**
* The name and signature of the console command.
@@ -21,16 +21,6 @@
*/
protected $description = 'Suspend a domain';
- /**
- * Create a new command instance.
- *
- * @return void
- */
- public function __construct()
- {
- parent::__construct();
- }
-
/**
* Execute the console command.
*
@@ -38,14 +28,13 @@
*/
public function handle()
{
- $domain = Domain::where('namespace', $this->argument('domain'))->first();
+ $domain = $this->getDomain($this->argument('domain'));
if (!$domain) {
+ $this->error("Domain not found.");
return 1;
}
- $this->info("Found domain: {$domain->id}");
-
$domain->suspend();
}
}
diff --git a/src/app/Console/Commands/DomainUnsuspend.php b/src/app/Console/Commands/Domain/Unsuspend.php
rename from src/app/Console/Commands/DomainUnsuspend.php
rename to src/app/Console/Commands/Domain/Unsuspend.php
--- a/src/app/Console/Commands/DomainUnsuspend.php
+++ b/src/app/Console/Commands/Domain/Unsuspend.php
@@ -1,11 +1,11 @@
<?php
-namespace App\Console\Commands;
+namespace App\Console\Commands\Domain;
+use App\Console\Command;
use App\Domain;
-use Illuminate\Console\Command;
-class DomainUnsuspend extends Command
+class Unsuspend extends Command
{
/**
* The name and signature of the console command.
@@ -21,16 +21,6 @@
*/
protected $description = 'Remove a domain suspension';
- /**
- * Create a new command instance.
- *
- * @return void
- */
- public function __construct()
- {
- parent::__construct();
- }
-
/**
* Execute the console command.
*
@@ -38,14 +28,13 @@
*/
public function handle()
{
- $domain = Domain::where('namespace', $this->argument('domain'))->first();
+ $domain = $this->getDomain($this->argument('domain'));
if (!$domain) {
+ $this->error("Domain not found.");
return 1;
}
- $this->info("Found domain {$domain->id}");
-
$domain->unsuspend();
}
}
diff --git a/src/app/Console/Commands/DomainsCommand.php b/src/app/Console/Commands/DomainsCommand.php
new file mode 100644
--- /dev/null
+++ b/src/app/Console/Commands/DomainsCommand.php
@@ -0,0 +1,12 @@
+<?php
+
+namespace App\Console\Commands;
+
+use App\Console\Command;
+
+class DomainsCommand extends ObjectListCommand
+{
+ protected $objectClass = \App\Domain::class;
+ protected $objectName = 'domain';
+ protected $objectTitle = 'namespace';
+}
diff --git a/src/app/Console/Commands/Entitlement/ReadCommand.php b/src/app/Console/Commands/Entitlement/ReadCommand.php
new file mode 100644
--- /dev/null
+++ b/src/app/Console/Commands/Entitlement/ReadCommand.php
@@ -0,0 +1,12 @@
+<?php
+
+namespace App\Console\Commands\Wallet;
+
+use App\Console\Commands\ObjectReadCommand;
+
+class ReadCommand extends ObjectReadCommand
+{
+ protected $objectClass = \App\Wallet::class;
+ protected $objectName = 'wallet';
+ protected $objectTitle = null;
+}
diff --git a/src/app/Console/Commands/Job/DomainCreate.php b/src/app/Console/Commands/Job/DomainCreate.php
--- a/src/app/Console/Commands/Job/DomainCreate.php
+++ b/src/app/Console/Commands/Job/DomainCreate.php
@@ -2,8 +2,7 @@
namespace App\Console\Commands\Job;
-use App\Domain;
-use Illuminate\Console\Command;
+use App\Console\Command;
class DomainCreate extends Command
{
@@ -28,9 +27,10 @@
*/
public function handle()
{
- $domain = Domain::where('namespace', $this->argument('domain'))->first();
+ $domain = $this->getDomain($this->argument('domain'));
if (!$domain) {
+ $this->error("Domain not found");
return 1;
}
diff --git a/src/app/Console/Commands/Job/DomainUpdate.php b/src/app/Console/Commands/Job/DomainUpdate.php
--- a/src/app/Console/Commands/Job/DomainUpdate.php
+++ b/src/app/Console/Commands/Job/DomainUpdate.php
@@ -2,8 +2,7 @@
namespace App\Console\Commands\Job;
-use App\Domain;
-use Illuminate\Console\Command;
+use App\Console\Command;
class DomainUpdate extends Command
{
@@ -28,9 +27,10 @@
*/
public function handle()
{
- $domain = Domain::where('namespace', $this->argument('domain'))->first();
+ $domain = $this->getDomain($this->argument('domain'));
if (!$domain) {
+ $this->error("Domain not found");
return 1;
}
diff --git a/src/app/Console/Commands/Job/UserCreate.php b/src/app/Console/Commands/Job/UserCreate.php
--- a/src/app/Console/Commands/Job/UserCreate.php
+++ b/src/app/Console/Commands/Job/UserCreate.php
@@ -2,8 +2,7 @@
namespace App\Console\Commands\Job;
-use App\User;
-use Illuminate\Console\Command;
+use App\Console\Command;
class UserCreate extends Command
{
@@ -28,9 +27,10 @@
*/
public function handle()
{
- $user = User::where('email', $this->argument('user'))->first();
+ $user = $this->getUser($this->argument('user'));
if (!$user) {
+ $this->error("User not found");
return 1;
}
diff --git a/src/app/Console/Commands/Job/UserUpdate.php b/src/app/Console/Commands/Job/UserUpdate.php
--- a/src/app/Console/Commands/Job/UserUpdate.php
+++ b/src/app/Console/Commands/Job/UserUpdate.php
@@ -2,8 +2,7 @@
namespace App\Console\Commands\Job;
-use App\User;
-use Illuminate\Console\Command;
+use App\Console\Command;
class UserUpdate extends Command
{
@@ -28,9 +27,10 @@
*/
public function handle()
{
- $user = User::where('email', $this->argument('user'))->first();
+ $user = $this->getUser($this->argument('user'));
if (!$user) {
+ $this->error("User not found");
return 1;
}
diff --git a/src/app/Console/Commands/Job/WalletCheck.php b/src/app/Console/Commands/Job/WalletCheck.php
--- a/src/app/Console/Commands/Job/WalletCheck.php
+++ b/src/app/Console/Commands/Job/WalletCheck.php
@@ -2,8 +2,8 @@
namespace App\Console\Commands\Job;
+use App\Console\Command;
use App\Wallet;
-use Illuminate\Console\Command;
class WalletCheck extends Command
{
@@ -31,6 +31,7 @@
$wallet = Wallet::find($this->argument('wallet'));
if (!$wallet) {
+ $this->error("Wallet not found");
return 1;
}
diff --git a/src/app/Console/Commands/MollieInfo.php b/src/app/Console/Commands/MollieInfo.php
--- a/src/app/Console/Commands/MollieInfo.php
+++ b/src/app/Console/Commands/MollieInfo.php
@@ -2,8 +2,7 @@
namespace App\Console\Commands;
-use App\User;
-use Illuminate\Console\Command;
+use App\Console\Command;
class MollieInfo extends Command
{
@@ -29,14 +28,13 @@
public function handle()
{
if ($this->argument('user')) {
- $user = User::where('email', $this->argument('user'))->first();
+ $user = $this->getUser($this->argument('user'));
if (!$user) {
+ $this->error("Wallet not found");
return 1;
}
- $this->info("Found user: {$user->id}");
-
$wallet = $user->wallets->first();
$provider = new \App\Providers\Payment\Mollie();
diff --git a/src/app/Console/Commands/ObjectListCommand.php b/src/app/Console/Commands/ObjectListCommand.php
new file mode 100644
--- /dev/null
+++ b/src/app/Console/Commands/ObjectListCommand.php
@@ -0,0 +1,78 @@
+<?php
+
+namespace App\Console\Commands;
+
+use App\Console\Command;
+use Illuminate\Database\Eloquent\SoftDeletes;
+
+abstract class ObjectListCommand extends Command
+{
+ /**
+ * The name and signature of the console command.
+ *
+ * @var string
+ */
+ protected $signature;
+
+ /**
+ * The console command description.
+ *
+ * @var string
+ */
+ protected $description;
+
+ protected $objectClass;
+ protected $objectName;
+ protected $objectTitle;
+
+ public function __construct()
+ {
+ $this->description = "List {$this->objectName}s";
+
+ $classes = class_uses_recursive($this->objectClass);
+
+ if (in_array(SoftDeletes::class, $classes)) {
+ $this->signature = sprintf(
+ "%ss {--with-deleted : Include deleted %ss}",
+ $this->objectName,
+ $this->objectName
+ );
+ } else {
+ $this->signature = "{$this->objectName}s";
+ }
+
+ parent::__construct();
+ }
+
+ /**
+ * Execute the console command.
+ *
+ * @return mixed
+ */
+ public function handle()
+ {
+ $classes = class_uses_recursive($this->objectClass);
+
+ if (in_array(SoftDeletes::class, $classes) && $this->option('with-deleted')) {
+ $objects = $this->objectClass::withTrashed();
+ } else {
+ $objects = new $this->objectClass();
+ }
+
+ $objects->each(
+ function ($object) {
+ if (!empty($this->objectTitle)) {
+ $title = $object->{$this->objectTitle};
+ } else {
+ $title = $object->{$object->getKeyName()};
+ }
+
+ if ($object->deleted_at) {
+ $this->info("{$title} (deleted at {$object->deleted_at}");
+ } else {
+ $this->info("{$title}");
+ }
+ }
+ );
+ }
+}
diff --git a/src/app/Console/Commands/ObjectReadCommand.php b/src/app/Console/Commands/ObjectReadCommand.php
new file mode 100644
--- /dev/null
+++ b/src/app/Console/Commands/ObjectReadCommand.php
@@ -0,0 +1,56 @@
+<?php
+
+namespace App\Console\Commands;
+
+use App\Console\Command;
+
+abstract class ObjectReadCommand extends Command
+{
+ /**
+ * The name and signature of the console command.
+ *
+ * @var string
+ */
+ protected $signature;
+
+ /**
+ * The console command description.
+ *
+ * @var string
+ */
+ protected $description;
+
+ protected $objectClass;
+ protected $objectName;
+ protected $objectTitle;
+
+ public function __construct()
+ {
+ $this->description = "Read a {$this->objectName}";
+ $this->signature = sprintf(
+ "%s:read {%s}",
+ $this->objectName,
+ $this->objectName
+ );
+
+ parent::__construct();
+ }
+
+ /**
+ * Execute the console command.
+ *
+ * @return mixed
+ */
+ public function handle()
+ {
+ $argument = $this->argument($this->objectName);
+
+ $object = $this->getObject($this->objectClass, $argument, $this->objectTitle);
+
+ if (!$object) {
+ return 1;
+ }
+
+ $this->info(var_export($object->toArray(), true));
+ }
+}
diff --git a/src/app/Console/Commands/ObjectRelationListCommand.php b/src/app/Console/Commands/ObjectRelationListCommand.php
new file mode 100644
--- /dev/null
+++ b/src/app/Console/Commands/ObjectRelationListCommand.php
@@ -0,0 +1,87 @@
+<?php
+
+namespace App\Console\Commands;
+
+use App\Console\Command;
+use Illuminate\Database\Eloquent\SoftDeletes;
+
+abstract class ObjectRelationListCommand extends Command
+{
+ /**
+ * The name and signature of the console command.
+ *
+ * @var string
+ */
+ protected $signature;
+
+ /**
+ * The console command description.
+ *
+ * @var string
+ */
+ protected $description;
+
+ protected $objectClass;
+ protected $objectName;
+ protected $objectRelation;
+ protected $objectTitle;
+
+ public function __construct()
+ {
+ $this->description = "List {$this->objectRelation} for a {$this->objectName}";
+ $this->signature = sprintf(
+ "%s:%s {%s}",
+ $this->objectName,
+ $this->objectRelation,
+ $this->objectName
+ );
+
+ parent::__construct();
+ }
+
+ /**
+ * Execute the console command.
+ *
+ * @return mixed
+ */
+ public function handle()
+ {
+ $argument = $this->argument($this->objectName);
+
+ $object = $this->getObject(
+ $this->objectClass,
+ $argument,
+ $this->objectTitle
+ );
+
+ if (!$object) {
+ $this->error("No such {$this->objectName} {$argument}");
+ return 1;
+ }
+
+ if (method_exists($object, $this->objectRelation)) {
+ $result = call_user_func([$object, $this->objectRelation]);
+ } elseif (property_exists($object, $this->objectRelation)) {
+ $result = $object->{"{$this->objectRelation}"};
+ } else {
+ $this->error("No such relation {$this->objectRelation}");
+ return 1;
+ }
+
+ if ($result instanceof \Illuminate\Database\Eloquent\Collection) {
+ $result->each(
+ function ($entry) {
+ $this->info($entry->{$entry->getKeyName()});
+ }
+ );
+ } elseif ($result instanceof \Illuminate\Database\Eloquent\Relations\Relation) {
+ $result->each(
+ function ($entry) {
+ $this->info($entry->{$entry->getKeyName()});
+ }
+ );
+ } else {
+ $this->info($result->{$result->getKeyName()});
+ }
+ }
+}
diff --git a/src/app/Console/Commands/Package/ReadCommand.php b/src/app/Console/Commands/Package/ReadCommand.php
new file mode 100644
--- /dev/null
+++ b/src/app/Console/Commands/Package/ReadCommand.php
@@ -0,0 +1,12 @@
+<?php
+
+namespace App\Console\Commands\Package;
+
+use App\Console\Commands\ObjectReadCommand;
+
+class ReadCommand extends ObjectReadCommand
+{
+ protected $objectClass = \App\Package::class;
+ protected $objectName = 'package';
+ protected $objectTitle = 'title';
+}
diff --git a/src/app/Console/Commands/Package/SkusCommand.php b/src/app/Console/Commands/Package/SkusCommand.php
new file mode 100644
--- /dev/null
+++ b/src/app/Console/Commands/Package/SkusCommand.php
@@ -0,0 +1,45 @@
+<?php
+
+namespace App\Console\Commands\Package;
+
+use App\Console\Command;
+use App\Package;
+
+class SkusCommand extends Command
+{
+ /**
+ * The name and signature of the console command.
+ *
+ * @var string
+ */
+ protected $signature = 'package:skus {--package=}';
+
+ /**
+ * The console command description.
+ *
+ * @var string
+ */
+ protected $description = "List SKUs for package(s).";
+
+ /**
+ * Execute the console command.
+ *
+ * @return mixed
+ */
+ public function handle()
+ {
+ if ($this->option('package')) {
+ $packages = Package::where('title', $this->option('package'))->get();
+ } else {
+ $packages = Package::all();
+ }
+
+ foreach ($packages as $package) {
+ $this->info("{$package->title}");
+
+ foreach ($package->skus as $sku) {
+ $this->info(sprintf(" %s (%d)", $sku->title, $sku->pivot->qty));
+ }
+ }
+ }
+}
diff --git a/src/app/Console/Commands/PackageSkus.php b/src/app/Console/Commands/PackageSkus.php
deleted file mode 100644
--- a/src/app/Console/Commands/PackageSkus.php
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php
-
-namespace App\Console\Commands;
-
-use App\Package;
-use Illuminate\Console\Command;
-
-class PackageSkus extends Command
-{
- /**
- * The name and signature of the console command.
- *
- * @var string
- */
- protected $signature = 'package:skus';
-
- /**
- * The console command description.
- *
- * @var string
- */
- protected $description = "List SKUs for packages.";
-
- /**
- * Create a new command instance.
- *
- * @return void
- */
- public function __construct()
- {
- parent::__construct();
- }
-
- /**
- * Execute the console command.
- *
- * @return mixed
- */
- public function handle()
- {
- $packages = Package::all();
-
- foreach ($packages as $package) {
- $this->info(sprintf("Package: %s", $package->title));
-
- foreach ($package->skus as $sku) {
- $this->info(sprintf(" SKU: %s (%d)", $sku->title, $sku->pivot->qty));
- }
- }
- }
-}
diff --git a/src/app/Console/Commands/PackagesCommand.php b/src/app/Console/Commands/PackagesCommand.php
new file mode 100644
--- /dev/null
+++ b/src/app/Console/Commands/PackagesCommand.php
@@ -0,0 +1,12 @@
+<?php
+
+namespace App\Console\Commands;
+
+use App\Console\Command;
+
+class PackagesCommand extends ObjectListCommand
+{
+ protected $objectClass = \App\Package::class;
+ protected $objectName = 'package';
+ protected $objectTitle = 'title';
+}
diff --git a/src/app/Console/Commands/Plan/ReadCommand.php b/src/app/Console/Commands/Plan/ReadCommand.php
new file mode 100644
--- /dev/null
+++ b/src/app/Console/Commands/Plan/ReadCommand.php
@@ -0,0 +1,12 @@
+<?php
+
+namespace App\Console\Commands\Plan;
+
+use App\Console\Commands\ObjectReadCommand;
+
+class ReadCommand extends ObjectReadCommand
+{
+ protected $objectClass = \App\Plan::class;
+ protected $objectName = 'plan';
+ protected $objectTitle = 'title';
+}
diff --git a/src/app/Console/Commands/PlanPackages.php b/src/app/Console/Commands/PlanPackages.php
--- a/src/app/Console/Commands/PlanPackages.php
+++ b/src/app/Console/Commands/PlanPackages.php
@@ -2,8 +2,8 @@
namespace App\Console\Commands;
+use App\Console\Command;
use App\Plan;
-use Illuminate\Console\Command;
class PlanPackages extends Command
{
@@ -21,16 +21,6 @@
*/
protected $description = "List packages for plans.";
- /**
- * Create a new command instance.
- *
- * @return void
- */
- public function __construct()
- {
- parent::__construct();
- }
-
/**
* Execute the console command.
*
diff --git a/src/app/Console/Commands/PlansCommand.php b/src/app/Console/Commands/PlansCommand.php
new file mode 100644
--- /dev/null
+++ b/src/app/Console/Commands/PlansCommand.php
@@ -0,0 +1,12 @@
+<?php
+
+namespace App\Console\Commands;
+
+use App\Console\Command;
+
+class PlansCommand extends ObjectListCommand
+{
+ protected $objectClass = \App\Plan::class;
+ protected $objectName = 'plan';
+ protected $objectTitle = 'title';
+}
diff --git a/src/app/Console/Commands/Sku/ReadCommand.php b/src/app/Console/Commands/Sku/ReadCommand.php
new file mode 100644
--- /dev/null
+++ b/src/app/Console/Commands/Sku/ReadCommand.php
@@ -0,0 +1,12 @@
+<?php
+
+namespace App\Console\Commands\Sku;
+
+use App\Console\Commands\ObjectReadCommand;
+
+class ReadCommand extends ObjectReadCommand
+{
+ protected $objectClass = \App\Sku::class;
+ protected $objectName = 'sku';
+ protected $objectTitle = 'title';
+}
diff --git a/src/app/Console/Commands/StripeInfo.php b/src/app/Console/Commands/StripeInfo.php
--- a/src/app/Console/Commands/StripeInfo.php
+++ b/src/app/Console/Commands/StripeInfo.php
@@ -2,9 +2,9 @@
namespace App\Console\Commands;
+use App\Console\Command;
use App\Providers\PaymentProvider;
use App\User;
-use Illuminate\Console\Command;
use Stripe as StripeAPI;
class StripeInfo extends Command
@@ -31,14 +31,13 @@
public function handle()
{
if ($this->argument('user')) {
- $user = User::where('email', $this->argument('user'))->first();
+ $user = $this->getUser($this->argument('user'));
if (!$user) {
+ $this->error("User not found");
return 1;
}
- $this->info("Found user: {$user->id}");
-
$wallet = $user->wallets->first();
$provider = PaymentProvider::factory('stripe');
diff --git a/src/app/Console/Commands/Transaction/ReadCommand.php b/src/app/Console/Commands/Transaction/ReadCommand.php
new file mode 100644
--- /dev/null
+++ b/src/app/Console/Commands/Transaction/ReadCommand.php
@@ -0,0 +1,12 @@
+<?php
+
+namespace App\Console\Commands\Transaction;
+
+use App\Console\Commands\ObjectReadCommand;
+
+class ReadCommand extends ObjectReadCommand
+{
+ protected $objectClass = \App\Transaction::class;
+ protected $objectName = 'transaction';
+ protected $objectTitle = null;
+}
diff --git a/src/app/Console/Commands/TransactionsCommand.php b/src/app/Console/Commands/TransactionsCommand.php
new file mode 100644
--- /dev/null
+++ b/src/app/Console/Commands/TransactionsCommand.php
@@ -0,0 +1,12 @@
+<?php
+
+namespace App\Console\Commands;
+
+use App\Console\Command;
+
+class TransactionsCommand extends ObjectListCommand
+{
+ protected $objectClass = \App\Transaction::class;
+ protected $objectName = 'transaction';
+ protected $objectTitle = null;
+}
diff --git a/src/app/Console/Commands/UserAddAlias.php b/src/app/Console/Commands/User/AddAlias.php
rename from src/app/Console/Commands/UserAddAlias.php
rename to src/app/Console/Commands/User/AddAlias.php
--- a/src/app/Console/Commands/UserAddAlias.php
+++ b/src/app/Console/Commands/User/AddAlias.php
@@ -1,11 +1,11 @@
<?php
-namespace App\Console\Commands;
+namespace App\Console\Commands\User;
+use App\Console\Command;
use App\Http\Controllers\API\V4\UsersController;
-use Illuminate\Console\Command;
-class UserAddAlias extends Command
+class AddAlias extends Command
{
/**
* The name and signature of the console command.
@@ -21,16 +21,6 @@
*/
protected $description = 'Add an email alias to a user (forcefully)';
- /**
- * Create a new command instance.
- *
- * @return void
- */
- public function __construct()
- {
- parent::__construct();
- }
-
/**
* Execute the console command.
*
@@ -38,9 +28,10 @@
*/
public function handle()
{
- $user = \App\User::where('email', $this->argument('user'))->first();
+ $user = $this->getUser($this->argument('user'));
if (!$user) {
+ $this->error("User not found.");
return 1;
}
diff --git a/src/app/Console/Commands/UserDelete.php b/src/app/Console/Commands/User/Delete.php
rename from src/app/Console/Commands/UserDelete.php
rename to src/app/Console/Commands/User/Delete.php
--- a/src/app/Console/Commands/UserDelete.php
+++ b/src/app/Console/Commands/User/Delete.php
@@ -1,10 +1,10 @@
<?php
-namespace App\Console\Commands;
+namespace App\Console\Commands\User;
-use Illuminate\Console\Command;
+use App\Console\Command;
-class UserDelete extends Command
+class Delete extends Command
{
/**
* The name and signature of the console command.
@@ -20,16 +20,6 @@
*/
protected $description = 'Delete a user';
- /**
- * Create a new command instance.
- *
- * @return void
- */
- public function __construct()
- {
- parent::__construct();
- }
-
/**
* Execute the console command.
*
@@ -37,9 +27,10 @@
*/
public function handle()
{
- $user = \App\User::where('email', $this->argument('user'))->first();
+ $user = $this->getUser($this->argument('user'));
if (!$user) {
+ $this->error("User not found.");
return 1;
}
diff --git a/src/app/Console/Commands/UserDiscount.php b/src/app/Console/Commands/User/Discount.php
rename from src/app/Console/Commands/UserDiscount.php
rename to src/app/Console/Commands/User/Discount.php
--- a/src/app/Console/Commands/UserDiscount.php
+++ b/src/app/Console/Commands/User/Discount.php
@@ -1,10 +1,10 @@
<?php
-namespace App\Console\Commands;
+namespace App\Console\Commands\User;
-use Illuminate\Console\Command;
+use App\Console\Command;
-class UserDiscount extends Command
+class Discount extends Command
{
/**
* The name and signature of the console command.
@@ -20,16 +20,6 @@
*/
protected $description = "Apply a discount to all of the user's wallets";
- /**
- * Create a new command instance.
- *
- * @return void
- */
- public function __construct()
- {
- parent::__construct();
- }
-
/**
* Execute the console command.
*
@@ -37,20 +27,20 @@
*/
public function handle()
{
- $user = \App\User::where('email', $this->argument('user'))->first();
+ $user = $this->getUser($this->argument('user'));
if (!$user) {
+ $this->error("User not found.");
return 1;
}
- $this->info("Found user {$user->id}");
-
if ($this->argument('discount') === '0') {
$discount = null;
} else {
$discount = \App\Discount::find($this->argument('discount'));
if (!$discount) {
+ $this->error("Discount not found.");
return 1;
}
}
diff --git a/src/app/Console/Commands/UserDomains.php b/src/app/Console/Commands/User/Domains.php
rename from src/app/Console/Commands/UserDomains.php
rename to src/app/Console/Commands/User/Domains.php
--- a/src/app/Console/Commands/UserDomains.php
+++ b/src/app/Console/Commands/User/Domains.php
@@ -1,20 +1,20 @@
<?php
-namespace App\Console\Commands;
+namespace App\Console\Commands\User;
+use App\Console\Command;
use App\Domain;
use App\User;
-use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;
-class UserDomains extends Command
+class Domains extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
- protected $signature = 'user:domains {userid}';
+ protected $signature = 'user:domains {user}';
/**
* The console command description.
@@ -23,16 +23,6 @@
*/
protected $description = 'Command description';
- /**
- * Create a new command instance.
- *
- * @return void
- */
- public function __construct()
- {
- parent::__construct();
- }
-
/**
* Execute the console command.
*
@@ -40,9 +30,10 @@
*/
public function handle()
{
- $user = User::where('email', $this->argument('userid'))->first();
+ $user = $this->getUser($this->argument('user'));
if (!$user) {
+ $this->error("User not found.");
return 1;
}
diff --git a/src/app/Console/Commands/UserEntitlements.php b/src/app/Console/Commands/User/Entitlements.php
rename from src/app/Console/Commands/UserEntitlements.php
rename to src/app/Console/Commands/User/Entitlements.php
--- a/src/app/Console/Commands/UserEntitlements.php
+++ b/src/app/Console/Commands/User/Entitlements.php
@@ -1,12 +1,12 @@
<?php
-namespace App\Console\Commands;
+namespace App\Console\Commands\User;
+use App\Console\Command;
use App\Sku;
use App\User;
-use Illuminate\Console\Command;
-class UserEntitlements extends Command
+class Entitlements extends Command
{
/**
* The name and signature of the console command.
@@ -22,16 +22,6 @@
*/
protected $description = "List a user's entitlements.";
- /**
- * Create a new command instance.
- *
- * @return void
- */
- public function __construct()
- {
- parent::__construct();
- }
-
/**
* Execute the console command.
*
@@ -39,14 +29,13 @@
*/
public function handle()
{
- $user = User::where('email', $this->argument('userid'))->first();
+ $user = $this->getUser($this->argument('userid'));
if (!$user) {
+ $this->error("User not found.");
return 1;
}
- $this->info("Found user: {$user->id}");
-
$skus_counted = [];
foreach ($user->entitlements as $entitlement) {
diff --git a/src/app/Console/Commands/UserForceDelete.php b/src/app/Console/Commands/User/ForceDelete.php
rename from src/app/Console/Commands/UserForceDelete.php
rename to src/app/Console/Commands/User/ForceDelete.php
--- a/src/app/Console/Commands/UserForceDelete.php
+++ b/src/app/Console/Commands/User/ForceDelete.php
@@ -1,11 +1,11 @@
<?php
-namespace App\Console\Commands;
+namespace App\Console\Commands\User;
-use Illuminate\Console\Command;
+use App\Console\Command;
use Illuminate\Support\Facades\DB;
-class UserForceDelete extends Command
+class ForceDelete extends Command
{
/**
* The name and signature of the console command.
@@ -28,14 +28,21 @@
*/
public function handle()
{
- $user = \App\User::withTrashed()->where('email', $this->argument('user'))->first();
+ $id = $this->argument('user');
+
+ if (is_numeric($id)) {
+ $user = \App\User::find($id);
+ } else {
+ $user = \App\User::withTrashed()->where('email', $id)->first();
+ }
if (!$user) {
+ $this->error("User not found.");
return 1;
}
if (!$user->trashed()) {
- $this->error('The user is not yet deleted');
+ $this->error("The user is not yet deleted");
return 1;
}
diff --git a/src/app/Console/Commands/User/ReadCommand.php b/src/app/Console/Commands/User/ReadCommand.php
new file mode 100644
--- /dev/null
+++ b/src/app/Console/Commands/User/ReadCommand.php
@@ -0,0 +1,12 @@
+<?php
+
+namespace App\Console\Commands\User;
+
+use App\Console\Commands\ObjectReadCommand;
+
+class ReadCommand extends ObjectReadCommand
+{
+ protected $objectClass = \App\User::class;
+ protected $objectName = 'user';
+ protected $objectTitle = 'email';
+}
diff --git a/src/app/Console/Commands/UserStatus.php b/src/app/Console/Commands/User/Status.php
rename from src/app/Console/Commands/UserStatus.php
rename to src/app/Console/Commands/User/Status.php
--- a/src/app/Console/Commands/UserStatus.php
+++ b/src/app/Console/Commands/User/Status.php
@@ -1,11 +1,11 @@
<?php
-namespace App\Console\Commands;
+namespace App\Console\Commands\User;
+use App\Console\Command;
use App\User;
-use Illuminate\Console\Command;
-class UserStatus extends Command
+class Status extends Command
{
/**
* The name and signature of the console command.
@@ -21,16 +21,6 @@
*/
protected $description = 'Display the status of a user';
- /**
- * Create a new command instance.
- *
- * @return void
- */
- public function __construct()
- {
- parent::__construct();
- }
-
/**
* Execute the console command.
*
@@ -38,9 +28,10 @@
*/
public function handle()
{
- $user = User::where('email', $this->argument('user'))->first();
+ $user = $this->getUser($this->argument('user'));
if (!$user) {
+ $this->error("User not found.");
return 1;
}
@@ -55,7 +46,7 @@
foreach ($statuses as $text => $bit) {
$func = 'is' . \ucfirst($text);
- $this->info(sprintf("%d %s: %s", $bit, $text, $user->$func()));
+ $this->info(sprintf("%d %s: %s", $bit, $text, $user->$func() ? "yes" : "no"));
}
$this->info("In total: {$user->status}");
diff --git a/src/app/Console/Commands/UserSuspend.php b/src/app/Console/Commands/User/Suspend.php
rename from src/app/Console/Commands/UserSuspend.php
rename to src/app/Console/Commands/User/Suspend.php
--- a/src/app/Console/Commands/UserSuspend.php
+++ b/src/app/Console/Commands/User/Suspend.php
@@ -1,11 +1,11 @@
<?php
-namespace App\Console\Commands;
+namespace App\Console\Commands\User;
+use App\Console\Command;
use App\User;
-use Illuminate\Console\Command;
-class UserSuspend extends Command
+class Suspend extends Command
{
/**
* The name and signature of the console command.
@@ -21,16 +21,6 @@
*/
protected $description = 'Suspend a user';
- /**
- * Create a new command instance.
- *
- * @return void
- */
- public function __construct()
- {
- parent::__construct();
- }
-
/**
* Execute the console command.
*
@@ -38,14 +28,13 @@
*/
public function handle()
{
- $user = User::where('email', $this->argument('user'))->first();
+ $user = $this->getUser($this->argument('user'));
if (!$user) {
+ $this->error("User not found.");
return 1;
}
- $this->info("Found user: {$user->id}");
-
$user->suspend();
}
}
diff --git a/src/app/Console/Commands/UserUnsuspend.php b/src/app/Console/Commands/User/Unsuspend.php
rename from src/app/Console/Commands/UserUnsuspend.php
rename to src/app/Console/Commands/User/Unsuspend.php
--- a/src/app/Console/Commands/UserUnsuspend.php
+++ b/src/app/Console/Commands/User/Unsuspend.php
@@ -1,11 +1,11 @@
<?php
-namespace App\Console\Commands;
+namespace App\Console\Commands\User;
+use App\Console\Command;
use App\User;
-use Illuminate\Console\Command;
-class UserUnsuspend extends Command
+class Unsuspend extends Command
{
/**
* The name and signature of the console command.
@@ -21,16 +21,6 @@
*/
protected $description = 'Remove a user suspension';
- /**
- * Create a new command instance.
- *
- * @return void
- */
- public function __construct()
- {
- parent::__construct();
- }
-
/**
* Execute the console command.
*
@@ -38,14 +28,13 @@
*/
public function handle()
{
- $user = User::where('email', $this->argument('user'))->first();
+ $user = $this->getUser($this->argument('user'));
if (!$user) {
+ $this->error("User not found.");
return 1;
}
- $this->info("Found user {$user->id}");
-
$user->unsuspend();
}
}
diff --git a/src/app/Console/Commands/UserVerify.php b/src/app/Console/Commands/User/Verify.php
rename from src/app/Console/Commands/UserVerify.php
rename to src/app/Console/Commands/User/Verify.php
--- a/src/app/Console/Commands/UserVerify.php
+++ b/src/app/Console/Commands/User/Verify.php
@@ -1,10 +1,10 @@
<?php
-namespace App\Console\Commands;
+namespace App\Console\Commands\User;
-use Illuminate\Console\Command;
+use App\Console\Command;
-class UserVerify extends Command
+class Verify extends Command
{
/**
* The name and signature of the console command.
@@ -20,16 +20,6 @@
*/
protected $description = 'Verify the state of a user account';
- /**
- * Create a new command instance.
- *
- * @return void
- */
- public function __construct()
- {
- parent::__construct();
- }
-
/**
* Execute the console command.
*
@@ -37,14 +27,13 @@
*/
public function handle()
{
- $user = \App\User::where('email', $this->argument('user'))->first();
+ $user = $this->getUser($this->argument('user'));
if (!$user) {
+ $this->error("User not found.");
return 1;
}
- $this->info("Found user: {$user->id}");
-
$job = new \App\Jobs\UserVerify($user);
$job->handle();
}
diff --git a/src/app/Console/Commands/User/WalletCommand.php b/src/app/Console/Commands/User/WalletCommand.php
new file mode 100644
--- /dev/null
+++ b/src/app/Console/Commands/User/WalletCommand.php
@@ -0,0 +1,13 @@
+<?php
+
+namespace App\Console\Commands\User;
+
+use App\Console\Commands\ObjectRelationListCommand;
+
+class WalletCommand extends ObjectRelationListCommand
+{
+ protected $objectClass = \App\User::class;
+ protected $objectName = 'user';
+ protected $objectRelation = 'wallet';
+ protected $objectTitle = 'email';
+}
diff --git a/src/app/Console/Commands/UserWallets.php b/src/app/Console/Commands/User/Wallets.php
rename from src/app/Console/Commands/UserWallets.php
rename to src/app/Console/Commands/User/Wallets.php
--- a/src/app/Console/Commands/UserWallets.php
+++ b/src/app/Console/Commands/User/Wallets.php
@@ -1,10 +1,10 @@
<?php
-namespace App\Console\Commands;
+namespace App\Console\Commands\User;
-use Illuminate\Console\Command;
+use App\Console\Command;
-class UserWallets extends Command
+class Wallets extends Command
{
/**
* The name and signature of the console command.
@@ -20,16 +20,6 @@
*/
protected $description = 'List wallets for a user';
- /**
- * Create a new command instance.
- *
- * @return void
- */
- public function __construct()
- {
- parent::__construct();
- }
-
/**
* Execute the console command.
*
@@ -37,9 +27,10 @@
*/
public function handle()
{
- $user = \App\User::where('email', $this->argument('user'))->first();
+ $user = $this->getUser($this->argument('user'));
if (!$user) {
+ $this->error("User not found.");
return 1;
}
diff --git a/src/app/Console/Commands/UserSetting/ReadCommand.php b/src/app/Console/Commands/UserSetting/ReadCommand.php
new file mode 100644
--- /dev/null
+++ b/src/app/Console/Commands/UserSetting/ReadCommand.php
@@ -0,0 +1,12 @@
+<?php
+
+namespace App\Console\Commands\UserSetting;
+
+use App\Console\Commands\ObjectReadCommand;
+
+class ReadCommand extends ObjectReadCommand
+{
+ protected $objectClass = \App\UserSetting::class;
+ protected $objectName = 'user-setting';
+ protected $objectTitle = null;
+}
diff --git a/src/app/Console/Commands/UsersCommand.php b/src/app/Console/Commands/UsersCommand.php
new file mode 100644
--- /dev/null
+++ b/src/app/Console/Commands/UsersCommand.php
@@ -0,0 +1,12 @@
+<?php
+
+namespace App\Console\Commands;
+
+use App\Console\Command;
+
+class UsersCommand extends ObjectListCommand
+{
+ protected $objectClass = \App\User::class;
+ protected $objectName = 'user';
+ protected $objectTitle = 'email';
+}
diff --git a/src/app/Console/Commands/WalletAddTransaction.php b/src/app/Console/Commands/Wallet/AddTransaction.php
rename from src/app/Console/Commands/WalletAddTransaction.php
rename to src/app/Console/Commands/Wallet/AddTransaction.php
--- a/src/app/Console/Commands/WalletAddTransaction.php
+++ b/src/app/Console/Commands/Wallet/AddTransaction.php
@@ -1,10 +1,10 @@
<?php
-namespace App\Console\Commands;
+namespace App\Console\Commands\Wallet;
-use Illuminate\Console\Command;
+use App\Console\Command;
-class WalletAddTransaction extends Command
+class AddTransaction extends Command
{
/**
* The name and signature of the console command.
@@ -20,16 +20,6 @@
*/
protected $description = 'Add a transaction to a wallet';
- /**
- * Create a new command instance.
- *
- * @return void
- */
- public function __construct()
- {
- parent::__construct();
- }
-
/**
* Execute the console command.
*
@@ -40,6 +30,7 @@
$wallet = \App\Wallet::find($this->argument('wallet'));
if (!$wallet) {
+ $this->error("Wallet not found");
return 1;
}
diff --git a/src/app/Console/Commands/WalletBalances.php b/src/app/Console/Commands/Wallet/Balances.php
rename from src/app/Console/Commands/WalletBalances.php
rename to src/app/Console/Commands/Wallet/Balances.php
--- a/src/app/Console/Commands/WalletBalances.php
+++ b/src/app/Console/Commands/Wallet/Balances.php
@@ -1,10 +1,10 @@
<?php
-namespace App\Console\Commands;
+namespace App\Console\Commands\Wallet;
-use Illuminate\Console\Command;
+use App\Console\Command;
-class WalletBalances extends Command
+class Balances extends Command
{
/**
* The name and signature of the console command.
@@ -20,16 +20,6 @@
*/
protected $description = 'Show the balance on wallets';
- /**
- * Create a new command instance.
- *
- * @return void
- */
- public function __construct()
- {
- parent::__construct();
- }
-
/**
* Execute the console command.
*
diff --git a/src/app/Console/Commands/WalletCharge.php b/src/app/Console/Commands/Wallet/Charge.php
rename from src/app/Console/Commands/WalletCharge.php
rename to src/app/Console/Commands/Wallet/Charge.php
--- a/src/app/Console/Commands/WalletCharge.php
+++ b/src/app/Console/Commands/Wallet/Charge.php
@@ -1,11 +1,11 @@
<?php
-namespace App\Console\Commands;
+namespace App\Console\Commands\Wallet;
+use App\Console\Command;
use App\Wallet;
-use Illuminate\Console\Command;
-class WalletCharge extends Command
+class Charge extends Command
{
/**
* The name and signature of the console command.
@@ -21,16 +21,6 @@
*/
protected $description = 'Charge wallets';
- /**
- * Create a new command instance.
- *
- * @return void
- */
- public function __construct()
- {
- parent::__construct();
- }
-
/**
* Execute the console command.
*
@@ -43,6 +33,7 @@
$wallet = Wallet::find($wallet);
if (!$wallet || !$wallet->owner) {
+ $this->error("Wallet not found (or account deleted).");
return 1;
}
diff --git a/src/app/Console/Commands/Wallet/ControllersCommand.php b/src/app/Console/Commands/Wallet/ControllersCommand.php
new file mode 100644
--- /dev/null
+++ b/src/app/Console/Commands/Wallet/ControllersCommand.php
@@ -0,0 +1,13 @@
+<?php
+
+namespace App\Console\Commands\Wallet;
+
+use App\Console\Commands\ObjectRelationListCommand;
+
+class ControllersCommand extends ObjectRelationListCommand
+{
+ protected $objectClass = \App\Wallet::class;
+ protected $objectName = 'wallet';
+ protected $objectRelation = 'controllers';
+ protected $objectTitle = null;
+}
diff --git a/src/app/Console/Commands/Wallet/EntitlementsCommand.php b/src/app/Console/Commands/Wallet/EntitlementsCommand.php
new file mode 100644
--- /dev/null
+++ b/src/app/Console/Commands/Wallet/EntitlementsCommand.php
@@ -0,0 +1,13 @@
+<?php
+
+namespace App\Console\Commands\Wallet;
+
+use App\Console\Commands\ObjectRelationListCommand;
+
+class EntitlementsCommand extends ObjectRelationListCommand
+{
+ protected $objectClass = \App\Wallet::class;
+ protected $objectName = 'wallet';
+ protected $objectRelation = 'entitlements';
+ protected $objectTitle = null;
+}
diff --git a/src/app/Console/Commands/WalletExpected.php b/src/app/Console/Commands/Wallet/Expected.php
rename from src/app/Console/Commands/WalletExpected.php
rename to src/app/Console/Commands/Wallet/Expected.php
--- a/src/app/Console/Commands/WalletExpected.php
+++ b/src/app/Console/Commands/Wallet/Expected.php
@@ -1,10 +1,10 @@
<?php
-namespace App\Console\Commands;
+namespace App\Console\Commands\Wallet;
-use Illuminate\Console\Command;
+use App\Console\Command;
-class WalletExpected extends Command
+class Expected extends Command
{
/**
* The name and signature of the console command.
@@ -20,16 +20,6 @@
*/
protected $description = 'Show expected charges to wallets (for user)';
- /**
- * Create a new command instance.
- *
- * @return void
- */
- public function __construct()
- {
- parent::__construct();
- }
-
/**
* Execute the console command.
*
@@ -38,10 +28,10 @@
public function handle()
{
if ($this->option('user')) {
- $user = \App\User::where('email', $this->option('user'))
- ->orWhere('id', $this->option('user'))->first();
+ $user = $this->getUser($this->option('user'));
if (!$user) {
+ $this->error("User not found");
return 1;
}
diff --git a/src/app/Console/Commands/WalletGetBalance.php b/src/app/Console/Commands/Wallet/GetBalance.php
rename from src/app/Console/Commands/WalletGetBalance.php
rename to src/app/Console/Commands/Wallet/GetBalance.php
--- a/src/app/Console/Commands/WalletGetBalance.php
+++ b/src/app/Console/Commands/Wallet/GetBalance.php
@@ -1,10 +1,10 @@
<?php
-namespace App\Console\Commands;
+namespace App\Console\Commands\Wallet;
-use Illuminate\Console\Command;
+use App\Console\Command;
-class WalletGetBalance extends Command
+class GetBalance extends Command
{
/**
* The name and signature of the console command.
@@ -20,16 +20,6 @@
*/
protected $description = 'Display the balance of a wallet';
- /**
- * Create a new command instance.
- *
- * @return void
- */
- public function __construct()
- {
- parent::__construct();
- }
-
/**
* Execute the console command.
*
@@ -40,6 +30,7 @@
$wallet = \App\Wallet::find($this->argument('wallet'));
if (!$wallet) {
+ $this->error("Wallet not found");
return 1;
}
diff --git a/src/app/Console/Commands/WalletGetDiscount.php b/src/app/Console/Commands/Wallet/GetDiscount.php
rename from src/app/Console/Commands/WalletGetDiscount.php
rename to src/app/Console/Commands/Wallet/GetDiscount.php
--- a/src/app/Console/Commands/WalletGetDiscount.php
+++ b/src/app/Console/Commands/Wallet/GetDiscount.php
@@ -1,10 +1,10 @@
<?php
-namespace App\Console\Commands;
+namespace App\Console\Commands\Wallet;
-use Illuminate\Console\Command;
+use App\Console\Command;
-class WalletGetDiscount extends Command
+class GetDiscount extends Command
{
/**
* The name and signature of the console command.
@@ -20,16 +20,6 @@
*/
protected $description = 'Display the existing discount to a wallet, if any.';
- /**
- * Create a new command instance.
- *
- * @return void
- */
- public function __construct()
- {
- parent::__construct();
- }
-
/**
* Execute the console command.
*
@@ -40,6 +30,7 @@
$wallet = \App\Wallet::find($this->argument('wallet'));
if (!$wallet) {
+ $this->error("Wallet not found");
return 1;
}
diff --git a/src/app/Console/Commands/WalletMandate.php b/src/app/Console/Commands/Wallet/Mandate.php
rename from src/app/Console/Commands/WalletMandate.php
rename to src/app/Console/Commands/Wallet/Mandate.php
--- a/src/app/Console/Commands/WalletMandate.php
+++ b/src/app/Console/Commands/Wallet/Mandate.php
@@ -1,11 +1,11 @@
<?php
-namespace App\Console\Commands;
+namespace App\Console\Commands\Wallet;
+use App\Console\Command;
use App\Http\Controllers\API\V4\PaymentsController;
-use Illuminate\Console\Command;
-class WalletMandate extends Command
+class Mandate extends Command
{
/**
* The name and signature of the console command.
@@ -21,16 +21,6 @@
*/
protected $description = 'Show expected charges to wallets';
- /**
- * Create a new command instance.
- *
- * @return void
- */
- public function __construct()
- {
- parent::__construct();
- }
-
/**
* Execute the console command.
*
@@ -41,6 +31,7 @@
$wallet = \App\Wallet::find($this->argument('wallet'));
if (!$wallet) {
+ $this->error("Wallet not found");
return 1;
}
diff --git a/src/app/Console/Commands/Wallet/OwnerCommand.php b/src/app/Console/Commands/Wallet/OwnerCommand.php
new file mode 100644
--- /dev/null
+++ b/src/app/Console/Commands/Wallet/OwnerCommand.php
@@ -0,0 +1,13 @@
+<?php
+
+namespace App\Console\Commands\Wallet;
+
+use App\Console\Commands\ObjectRelationListCommand;
+
+class OwnerCommand extends ObjectRelationListCommand
+{
+ protected $objectClass = \App\Wallet::class;
+ protected $objectName = 'wallet';
+ protected $objectRelation = 'owner';
+ protected $objectTitle = null;
+}
diff --git a/src/app/Console/Commands/Wallet/ReadCommand.php b/src/app/Console/Commands/Wallet/ReadCommand.php
new file mode 100644
--- /dev/null
+++ b/src/app/Console/Commands/Wallet/ReadCommand.php
@@ -0,0 +1,12 @@
+<?php
+
+namespace App\Console\Commands\Wallet;
+
+use App\Console\Commands\ObjectReadCommand;
+
+class ReadCommand extends ObjectReadCommand
+{
+ protected $objectClass = \App\Wallet::class;
+ protected $objectName = 'wallet';
+ protected $objectTitle = null;
+}
diff --git a/src/app/Console/Commands/WalletSetBalance.php b/src/app/Console/Commands/Wallet/SetBalance.php
rename from src/app/Console/Commands/WalletSetBalance.php
rename to src/app/Console/Commands/Wallet/SetBalance.php
--- a/src/app/Console/Commands/WalletSetBalance.php
+++ b/src/app/Console/Commands/Wallet/SetBalance.php
@@ -1,10 +1,10 @@
<?php
-namespace App\Console\Commands;
+namespace App\Console\Commands\Wallet;
-use Illuminate\Console\Command;
+use App\Console\Command;
-class WalletSetBalance extends Command
+class SetBalance extends Command
{
/**
* The name and signature of the console command.
@@ -20,16 +20,6 @@
*/
protected $description = 'Set the balance of a wallet';
- /**
- * Create a new command instance.
- *
- * @return void
- */
- public function __construct()
- {
- parent::__construct();
- }
-
/**
* Execute the console command.
*
@@ -40,6 +30,7 @@
$wallet = \App\Wallet::find($this->argument('wallet'));
if (!$wallet) {
+ $this->error("Wallet not found");
return 1;
}
diff --git a/src/app/Console/Commands/WalletSetDiscount.php b/src/app/Console/Commands/Wallet/SetDiscount.php
rename from src/app/Console/Commands/WalletSetDiscount.php
rename to src/app/Console/Commands/Wallet/SetDiscount.php
--- a/src/app/Console/Commands/WalletSetDiscount.php
+++ b/src/app/Console/Commands/Wallet/SetDiscount.php
@@ -1,10 +1,10 @@
<?php
-namespace App\Console\Commands;
+namespace App\Console\Commands\Wallet;
-use Illuminate\Console\Command;
+use App\Console\Command;
-class WalletSetDiscount extends Command
+class SetDiscount extends Command
{
/**
* The name and signature of the console command.
@@ -20,16 +20,6 @@
*/
protected $description = 'Apply a discount to a wallet';
- /**
- * Create a new command instance.
- *
- * @return void
- */
- public function __construct()
- {
- parent::__construct();
- }
-
/**
* Execute the console command.
*
@@ -37,9 +27,10 @@
*/
public function handle()
{
- $wallet = \App\Wallet::where('id', $this->argument('wallet'))->first();
+ $wallet = \App\Wallet::find($this->argument('wallet'));
if (!$wallet) {
+ $this->error("Wallet not found");
return 1;
}
@@ -51,6 +42,7 @@
$discount = \App\Discount::find($this->argument('discount'));
if (!$discount) {
+ $this->error("Discount not found");
return 1;
}
diff --git a/src/app/Console/Commands/WalletTransactions.php b/src/app/Console/Commands/Wallet/Transactions.php
rename from src/app/Console/Commands/WalletTransactions.php
rename to src/app/Console/Commands/Wallet/Transactions.php
--- a/src/app/Console/Commands/WalletTransactions.php
+++ b/src/app/Console/Commands/Wallet/Transactions.php
@@ -1,10 +1,10 @@
<?php
-namespace App\Console\Commands;
+namespace App\Console\Commands\Wallet;
-use Illuminate\Console\Command;
+use App\Console\Command;
-class WalletTransactions extends Command
+class Transactions extends Command
{
/**
* The name and signature of the console command.
@@ -20,16 +20,6 @@
*/
protected $description = 'List the transactions against a wallet.';
- /**
- * Create a new command instance.
- *
- * @return void
- */
- public function __construct()
- {
- parent::__construct();
- }
-
/**
* Execute the console command.
*
@@ -37,9 +27,10 @@
*/
public function handle()
{
- $wallet = \App\Wallet::where('id', $this->argument('wallet'))->first();
+ $wallet = \App\Wallet::find($this->argument('wallet'));
if (!$wallet) {
+ $this->error("Wallet not found");
return 1;
}
diff --git a/src/app/Console/Commands/WalletUntil.php b/src/app/Console/Commands/Wallet/Until.php
rename from src/app/Console/Commands/WalletUntil.php
rename to src/app/Console/Commands/Wallet/Until.php
--- a/src/app/Console/Commands/WalletUntil.php
+++ b/src/app/Console/Commands/Wallet/Until.php
@@ -1,10 +1,10 @@
<?php
-namespace App\Console\Commands;
+namespace App\Console\Commands\Wallet;
-use Illuminate\Console\Command;
+use App\Console\Command;
-class WalletUntil extends Command
+class Until extends Command
{
/**
* The name and signature of the console command.
@@ -20,16 +20,6 @@
*/
protected $description = 'Show until when the balance on a wallet lasts.';
- /**
- * Create a new command instance.
- *
- * @return void
- */
- public function __construct()
- {
- parent::__construct();
- }
-
/**
* Execute the console command.
*
@@ -40,6 +30,7 @@
$wallet = \App\Wallet::find($this->argument('wallet'));
if (!$wallet) {
+ $this->error("Wallet not found");
return 1;
}
diff --git a/src/app/Console/Commands/WalletDiscount.php b/src/app/Console/Commands/WalletDiscount.php
deleted file mode 100644
--- a/src/app/Console/Commands/WalletDiscount.php
+++ /dev/null
@@ -1,62 +0,0 @@
-<?php
-
-namespace App\Console\Commands;
-
-use Illuminate\Console\Command;
-
-class WalletDiscount extends Command
-{
- /**
- * The name and signature of the console command.
- *
- * @var string
- */
- protected $signature = 'wallet:discount {wallet} {discount}';
-
- /**
- * The console command description.
- *
- * @var string
- */
- protected $description = 'Apply a discount to a wallet';
-
- /**
- * Create a new command instance.
- *
- * @return void
- */
- public function __construct()
- {
- parent::__construct();
- }
-
- /**
- * Execute the console command.
- *
- * @return mixed
- */
- public function handle()
- {
- $wallet = \App\Wallet::where('id', $this->argument('wallet'))->first();
-
- if (!$wallet) {
- return 1;
- }
-
- // FIXME: Using '0' for delete might be not that obvious
-
- if ($this->argument('discount') === '0') {
- $wallet->discount()->dissociate();
- } else {
- $discount = \App\Discount::find($this->argument('discount'));
-
- if (!$discount) {
- return 1;
- }
-
- $wallet->discount()->associate($discount);
- }
-
- $wallet->save();
- }
-}
diff --git a/src/app/Console/Commands/WalletSetting/ReadCommand.php b/src/app/Console/Commands/WalletSetting/ReadCommand.php
new file mode 100644
--- /dev/null
+++ b/src/app/Console/Commands/WalletSetting/ReadCommand.php
@@ -0,0 +1,12 @@
+<?php
+
+namespace App\Console\Commands\WalletSetting;
+
+use App\Console\Commands\ObjectReadCommand;
+
+class ReadCommand extends ObjectReadCommand
+{
+ protected $objectClass = \App\WalletSetting::class;
+ protected $objectName = 'wallet-setting';
+ protected $objectTitle = null;
+}
diff --git a/src/app/Console/Development/DomainStatus.php b/src/app/Console/Development/DomainStatus.php
deleted file mode 100644
--- a/src/app/Console/Development/DomainStatus.php
+++ /dev/null
@@ -1,87 +0,0 @@
-<?php
-
-namespace App\Console\Development;
-
-use App\Domain;
-use Illuminate\Console\Command;
-
-class DomainStatus extends Command
-{
- /**
- * The name and signature of the console command.
- *
- * @var string
- */
- protected $signature = 'domain:status {domain} {--add=} {--del=}';
-
- /**
- * The console command description.
- *
- * @var string
- */
- protected $description = "Set/get a domain's status.";
-
- /**
- * Create a new command instance.
- *
- * @return void
- */
- public function __construct()
- {
- parent::__construct();
- }
-
- /**
- * Execute the console command.
- *
- * @return mixed
- */
- public function handle()
- {
- $domain = Domain::where('namespace', $this->argument('domain'))->firstOrFail();
-
- $this->info("Found domain: {$domain->id}");
-
- $statuses = [
- 'active' => Domain::STATUS_ACTIVE,
- 'suspended' => Domain::STATUS_SUSPENDED,
- 'deleted' => Domain::STATUS_DELETED,
- 'ldapReady' => Domain::STATUS_LDAP_READY,
- 'verified' => Domain::STATUS_VERIFIED,
- 'confirmed' => Domain::STATUS_CONFIRMED,
- ];
-
- // I'd prefer "-state" and "+state" syntax, but it's not possible
- $delete = false;
- if ($update = $this->option('del')) {
- $delete = true;
- } elseif ($update = $this->option('add')) {
- // do nothing
- }
-
- if (!empty($update)) {
- $map = \array_change_key_case($statuses);
- $update = \strtolower($update);
-
- if (isset($map[$update])) {
- if ($delete && $domain->status & $map[$update]) {
- $domain->status ^= $map[$update];
- $domain->save();
- } elseif (!$delete && !($domain->status & $map[$update])) {
- $domain->status |= $map[$update];
- $domain->save();
- }
- }
- }
-
- $domain_state = [];
- foreach (\array_keys($statuses) as $state) {
- $func = 'is' . \ucfirst($state);
- if ($domain->$func()) {
- $domain_state[] = $state;
- }
- }
-
- $this->info("Status: " . \implode(',', $domain_state));
- }
-}
diff --git a/src/app/Console/Development/UserStatus.php b/src/app/Console/Development/UserStatus.php
deleted file mode 100644
--- a/src/app/Console/Development/UserStatus.php
+++ /dev/null
@@ -1,86 +0,0 @@
-<?php
-
-namespace App\Console\Development;
-
-use App\User;
-use Illuminate\Console\Command;
-
-class UserStatus extends Command
-{
- /**
- * The name and signature of the console command.
- *
- * @var string
- */
- protected $signature = 'user:status {userid} {--add=} {--del=}';
-
- /**
- * The console command description.
- *
- * @var string
- */
- protected $description = "Set/get a user's status.";
-
- /**
- * Create a new command instance.
- *
- * @return void
- */
- public function __construct()
- {
- parent::__construct();
- }
-
- /**
- * Execute the console command.
- *
- * @return mixed
- */
- public function handle()
- {
- $user = User::where('email', $this->argument('userid'))->firstOrFail();
-
- $this->info("Found user: {$user->id}");
-
- $statuses = [
- 'active' => User::STATUS_ACTIVE,
- 'suspended' => User::STATUS_SUSPENDED,
- 'deleted' => User::STATUS_DELETED,
- 'ldapReady' => User::STATUS_LDAP_READY,
- 'imapReady' => User::STATUS_IMAP_READY,
- ];
-
- // I'd prefer "-state" and "+state" syntax, but it's not possible
- $delete = false;
- if ($update = $this->option('del')) {
- $delete = true;
- } elseif ($update = $this->option('add')) {
- // do nothing
- }
-
- if (!empty($update)) {
- $map = \array_change_key_case($statuses);
- $update = \strtolower($update);
-
- if (isset($map[$update])) {
- if ($delete && $user->status & $map[$update]) {
- $user->status ^= $map[$update];
- $user->save();
- } elseif (!$delete && !($user->status & $map[$update])) {
- $user->status |= $map[$update];
- $user->save();
- }
- }
- }
-
- $user_state = [];
- foreach (\array_keys($statuses) as $state) {
- $func = 'is' . \ucfirst($state);
- if ($user->$func()) {
- $user_state[] = $state;
- }
- }
-
- $this->info("Status: " . \implode(',', $user_state));
- }
-}
diff --git a/src/app/Utils.php b/src/app/Utils.php
--- a/src/app/Utils.php
+++ b/src/app/Utils.php
@@ -24,6 +24,45 @@
return $start->diffInDays($end) + 1;
}
+ /**
+ * Download a file from the interwebz and store it locally.
+ *
+ * @param string $source The source location
+ * @param string $target The target location
+ * @param bool $force Force the download (and overwrite target)
+ *
+ * @return void
+ */
+ public static function downloadFile($source, $target, $force = false)
+ {
+ if (is_file($target) && !$force) {
+ return;
+ }
+
+ \Log::info("Retrieving {$source}");
+
+ $fp = fopen($target, 'w');
+
+ $curl = curl_init();
+ curl_setopt($curl, CURLOPT_URL, $source);
+ curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
+ curl_setopt($curl, CURLOPT_FILE, $fp);
+ curl_exec($curl);
+
+ if (curl_errno($curl)) {
+ \Log::error("Request error on {$source}: " . curl_error($curl));
+
+ curl_close($curl);
+ fclose($fp);
+
+ unlink($target);
+ return;
+ }
+
+ curl_close($curl);
+ fclose($fp);
+ }
+
/**
* Provide all unique combinations of elements in $input, with order and duplicates irrelevant.
*
diff --git a/src/database/seeds/local/UserSeeder.php b/src/database/seeds/local/UserSeeder.php
--- a/src/database/seeds/local/UserSeeder.php
+++ b/src/database/seeds/local/UserSeeder.php
@@ -108,7 +108,7 @@
$ned->assignSku(\App\Sku::where('title', 'activesync')->first(), 1);
- // Ned is a controller on Jack's wallet
+ // Ned is a controller on John's wallet
$john->wallets()->first()->addController($ned);
// Ned is also our 2FA test user
diff --git a/src/tests/Feature/Console/UserDiscountTest.php b/src/tests/Feature/Console/Domain/AddTest.php
rename from src/tests/Feature/Console/UserDiscountTest.php
rename to src/tests/Feature/Console/Domain/AddTest.php
--- a/src/tests/Feature/Console/UserDiscountTest.php
+++ b/src/tests/Feature/Console/Domain/AddTest.php
@@ -1,11 +1,14 @@
<?php
-namespace Tests\Feature\Console;
+namespace Tests\Feature\Console\Domain;
use Tests\TestCase;
-class UserDiscountTest extends TestCase
+class AddTest extends TestCase
{
+ /**
+ * Test the command run
+ */
public function testHandle(): void
{
$this->markTestIncomplete();
diff --git a/src/tests/Feature/Console/UserDiscountTest.php b/src/tests/Feature/Console/Domain/DeleteTest.php
copy from src/tests/Feature/Console/UserDiscountTest.php
copy to src/tests/Feature/Console/Domain/DeleteTest.php
--- a/src/tests/Feature/Console/UserDiscountTest.php
+++ b/src/tests/Feature/Console/Domain/DeleteTest.php
@@ -1,11 +1,14 @@
<?php
-namespace Tests\Feature\Console;
+namespace Tests\Feature\Console\Domain;
use Tests\TestCase;
-class UserDiscountTest extends TestCase
+class DeleteTest extends TestCase
{
+ /**
+ * Test the command run
+ */
public function testHandle(): void
{
$this->markTestIncomplete();
diff --git a/src/tests/Feature/Console/Domain/ListDomainsTest.php b/src/tests/Feature/Console/Domain/ListDomainsTest.php
new file mode 100644
--- /dev/null
+++ b/src/tests/Feature/Console/Domain/ListDomainsTest.php
@@ -0,0 +1,19 @@
+<?php
+
+namespace Tests\Feature\Console\Domain;
+
+use Tests\TestCase;
+
+class ListDomainsTest extends TestCase
+{
+ /**
+ * Test the command run
+ */
+ public function testHandle(): void
+ {
+ $this->artisan('domain:list')
+ ->assertExitCode(0);
+
+ $this->markTestIncomplete();
+ }
+}
diff --git a/src/tests/Feature/Console/UserDiscountTest.php b/src/tests/Feature/Console/Domain/ListUsersTest.php
copy from src/tests/Feature/Console/UserDiscountTest.php
copy to src/tests/Feature/Console/Domain/ListUsersTest.php
--- a/src/tests/Feature/Console/UserDiscountTest.php
+++ b/src/tests/Feature/Console/Domain/ListUsersTest.php
@@ -1,11 +1,14 @@
<?php
-namespace Tests\Feature\Console;
+namespace Tests\Feature\Console\Domain;
use Tests\TestCase;
-class UserDiscountTest extends TestCase
+class ListUsersTest extends TestCase
{
+ /**
+ * Test the command run
+ */
public function testHandle(): void
{
$this->markTestIncomplete();
diff --git a/src/tests/Feature/Console/UserDiscountTest.php b/src/tests/Feature/Console/Domain/SetStatusTest.php
copy from src/tests/Feature/Console/UserDiscountTest.php
copy to src/tests/Feature/Console/Domain/SetStatusTest.php
--- a/src/tests/Feature/Console/UserDiscountTest.php
+++ b/src/tests/Feature/Console/Domain/SetStatusTest.php
@@ -1,11 +1,14 @@
<?php
-namespace Tests\Feature\Console;
+namespace Tests\Feature\Console\Domain;
use Tests\TestCase;
-class UserDiscountTest extends TestCase
+class SetStatusTest extends TestCase
{
+ /**
+ * Test the command run
+ */
public function testHandle(): void
{
$this->markTestIncomplete();
diff --git a/src/tests/Feature/Console/UserDiscountTest.php b/src/tests/Feature/Console/Domain/SetWalletTest.php
copy from src/tests/Feature/Console/UserDiscountTest.php
copy to src/tests/Feature/Console/Domain/SetWalletTest.php
--- a/src/tests/Feature/Console/UserDiscountTest.php
+++ b/src/tests/Feature/Console/Domain/SetWalletTest.php
@@ -1,11 +1,14 @@
<?php
-namespace Tests\Feature\Console;
+namespace Tests\Feature\Console\Domain;
use Tests\TestCase;
-class UserDiscountTest extends TestCase
+class SetWalletTest extends TestCase
{
+ /**
+ * Test the command run
+ */
public function testHandle(): void
{
$this->markTestIncomplete();
diff --git a/src/tests/Feature/Console/Domain/StatusTest.php b/src/tests/Feature/Console/Domain/StatusTest.php
new file mode 100644
--- /dev/null
+++ b/src/tests/Feature/Console/Domain/StatusTest.php
@@ -0,0 +1,19 @@
+<?php
+
+namespace Tests\Feature\Console\Domain;
+
+use Tests\TestCase;
+
+class StatusTest extends TestCase
+{
+ /**
+ * Test the command run
+ */
+ public function testHandle(): void
+ {
+ $this->artisan('domain:status kolab.org')
+ ->assertExitCode(0);
+
+ $this->markTestIncomplete();
+ }
+}
diff --git a/src/tests/Feature/Console/UserDiscountTest.php b/src/tests/Feature/Console/Domain/SuspendTest.php
copy from src/tests/Feature/Console/UserDiscountTest.php
copy to src/tests/Feature/Console/Domain/SuspendTest.php
--- a/src/tests/Feature/Console/UserDiscountTest.php
+++ b/src/tests/Feature/Console/Domain/SuspendTest.php
@@ -1,11 +1,14 @@
<?php
-namespace Tests\Feature\Console;
+namespace Tests\Feature\Console\Domain;
use Tests\TestCase;
-class UserDiscountTest extends TestCase
+class SuspendTest extends TestCase
{
+ /**
+ * Test the command run
+ */
public function testHandle(): void
{
$this->markTestIncomplete();
diff --git a/src/tests/Feature/Console/UserDiscountTest.php b/src/tests/Feature/Console/Domain/UnsuspendTest.php
copy from src/tests/Feature/Console/UserDiscountTest.php
copy to src/tests/Feature/Console/Domain/UnsuspendTest.php
--- a/src/tests/Feature/Console/UserDiscountTest.php
+++ b/src/tests/Feature/Console/Domain/UnsuspendTest.php
@@ -1,11 +1,14 @@
<?php
-namespace Tests\Feature\Console;
+namespace Tests\Feature\Console\Domain;
use Tests\TestCase;
-class UserDiscountTest extends TestCase
+class UnsuspendTest extends TestCase
{
+ /**
+ * Test the command run
+ */
public function testHandle(): void
{
$this->markTestIncomplete();
diff --git a/src/tests/Feature/Console/UserDiscountTest.php b/src/tests/Feature/Console/User/AddAliasTest.php
copy from src/tests/Feature/Console/UserDiscountTest.php
copy to src/tests/Feature/Console/User/AddAliasTest.php
--- a/src/tests/Feature/Console/UserDiscountTest.php
+++ b/src/tests/Feature/Console/User/AddAliasTest.php
@@ -1,11 +1,14 @@
<?php
-namespace Tests\Feature\Console;
+namespace Tests\Feature\Console\User;
use Tests\TestCase;
-class UserDiscountTest extends TestCase
+class AddAliasTest extends TestCase
{
+ /**
+ * Test the command run
+ */
public function testHandle(): void
{
$this->markTestIncomplete();
diff --git a/src/tests/Feature/Console/WalletDiscountTest.php b/src/tests/Feature/Console/User/DeleteTest.php
rename from src/tests/Feature/Console/WalletDiscountTest.php
rename to src/tests/Feature/Console/User/DeleteTest.php
--- a/src/tests/Feature/Console/WalletDiscountTest.php
+++ b/src/tests/Feature/Console/User/DeleteTest.php
@@ -1,11 +1,14 @@
<?php
-namespace Tests\Feature\Console;
+namespace Tests\Feature\Console\User;
use Tests\TestCase;
-class WalletDiscountTest extends TestCase
+class DeleteTest extends TestCase
{
+ /**
+ * Test the command run
+ */
public function testHandle(): void
{
$this->markTestIncomplete();
diff --git a/src/tests/Feature/Console/UserDiscountTest.php b/src/tests/Feature/Console/User/DiscountTest.php
copy from src/tests/Feature/Console/UserDiscountTest.php
copy to src/tests/Feature/Console/User/DiscountTest.php
--- a/src/tests/Feature/Console/UserDiscountTest.php
+++ b/src/tests/Feature/Console/User/DiscountTest.php
@@ -1,11 +1,14 @@
<?php
-namespace Tests\Feature\Console;
+namespace Tests\Feature\Console\User;
use Tests\TestCase;
-class UserDiscountTest extends TestCase
+class DiscountTest extends TestCase
{
+ /**
+ * Test the command run
+ */
public function testHandle(): void
{
$this->markTestIncomplete();
diff --git a/src/tests/Feature/Console/UserDomainsTest.php b/src/tests/Feature/Console/User/DomainsTest.php
rename from src/tests/Feature/Console/UserDomainsTest.php
rename to src/tests/Feature/Console/User/DomainsTest.php
--- a/src/tests/Feature/Console/UserDomainsTest.php
+++ b/src/tests/Feature/Console/User/DomainsTest.php
@@ -1,11 +1,14 @@
<?php
-namespace Tests\Feature\Console;
+namespace Tests\Feature\Console\User;
use Tests\TestCase;
-class UserDomainsTest extends TestCase
+class DomainsTest extends TestCase
{
+ /**
+ * Test the command run
+ */
public function testHandle(): void
{
$this->artisan('user:domains john@kolab.org')
diff --git a/src/tests/Feature/Console/UserEntitlementsTest.php b/src/tests/Feature/Console/User/EntitlementsTest.php
rename from src/tests/Feature/Console/UserEntitlementsTest.php
rename to src/tests/Feature/Console/User/EntitlementsTest.php
--- a/src/tests/Feature/Console/UserEntitlementsTest.php
+++ b/src/tests/Feature/Console/User/EntitlementsTest.php
@@ -1,11 +1,14 @@
<?php
-namespace Tests\Feature\Console;
+namespace Tests\Feature\Console\User;
use Tests\TestCase;
-class UserEntitlementsTest extends TestCase
+class EntitlementsTest extends TestCase
{
+ /**
+ * Test the command run
+ */
public function testHandle(): void
{
$this->artisan('user:entitlements john@kolab.org')
diff --git a/src/tests/Feature/Console/UserForceDeleteTest.php b/src/tests/Feature/Console/User/ForceDeleteTest.php
rename from src/tests/Feature/Console/UserForceDeleteTest.php
rename to src/tests/Feature/Console/User/ForceDeleteTest.php
--- a/src/tests/Feature/Console/UserForceDeleteTest.php
+++ b/src/tests/Feature/Console/User/ForceDeleteTest.php
@@ -1,11 +1,11 @@
<?php
-namespace Tests\Feature\Console;
+namespace Tests\Feature\Console\User;
use Illuminate\Support\Facades\Queue;
use Tests\TestCase;
-class UserForceDeleteTest extends TestCase
+class ForceDeleteTest extends TestCase
{
/**
* {@inheritDoc}
diff --git a/src/tests/Feature/Console/User/StatusTest.php b/src/tests/Feature/Console/User/StatusTest.php
new file mode 100644
--- /dev/null
+++ b/src/tests/Feature/Console/User/StatusTest.php
@@ -0,0 +1,19 @@
+<?php
+
+namespace Tests\Feature\Console\User;
+
+use Tests\TestCase;
+
+class StatusTest extends TestCase
+{
+ /**
+ * Test the command run
+ */
+ public function testHandle(): void
+ {
+ $this->artisan('user:status john@kolab.org')
+ ->assertExitCode(0);
+
+ $this->markTestIncomplete();
+ }
+}
diff --git a/src/tests/Feature/Console/UserDiscountTest.php b/src/tests/Feature/Console/User/SuspendTest.php
copy from src/tests/Feature/Console/UserDiscountTest.php
copy to src/tests/Feature/Console/User/SuspendTest.php
--- a/src/tests/Feature/Console/UserDiscountTest.php
+++ b/src/tests/Feature/Console/User/SuspendTest.php
@@ -1,11 +1,14 @@
<?php
-namespace Tests\Feature\Console;
+namespace Tests\Feature\Console\User;
use Tests\TestCase;
-class UserDiscountTest extends TestCase
+class SuspendTest extends TestCase
{
+ /**
+ * Test the command run
+ */
public function testHandle(): void
{
$this->markTestIncomplete();
diff --git a/src/tests/Feature/Console/UserDiscountTest.php b/src/tests/Feature/Console/User/UnsuspendTest.php
copy from src/tests/Feature/Console/UserDiscountTest.php
copy to src/tests/Feature/Console/User/UnsuspendTest.php
--- a/src/tests/Feature/Console/UserDiscountTest.php
+++ b/src/tests/Feature/Console/User/UnsuspendTest.php
@@ -1,11 +1,14 @@
<?php
-namespace Tests\Feature\Console;
+namespace Tests\Feature\Console\User;
use Tests\TestCase;
-class UserDiscountTest extends TestCase
+class UnsuspendTest extends TestCase
{
+ /**
+ * Test the command run
+ */
public function testHandle(): void
{
$this->markTestIncomplete();
diff --git a/src/tests/Feature/Console/UserDiscountTest.php b/src/tests/Feature/Console/User/VerifyTest.php
copy from src/tests/Feature/Console/UserDiscountTest.php
copy to src/tests/Feature/Console/User/VerifyTest.php
--- a/src/tests/Feature/Console/UserDiscountTest.php
+++ b/src/tests/Feature/Console/User/VerifyTest.php
@@ -1,11 +1,14 @@
<?php
-namespace Tests\Feature\Console;
+namespace Tests\Feature\Console\User;
use Tests\TestCase;
-class UserDiscountTest extends TestCase
+class VerifyTest extends TestCase
{
+ /**
+ * Test the command run
+ */
public function testHandle(): void
{
$this->markTestIncomplete();
diff --git a/src/tests/Feature/Console/UserWalletsTest.php b/src/tests/Feature/Console/User/WalletsTest.php
rename from src/tests/Feature/Console/UserWalletsTest.php
rename to src/tests/Feature/Console/User/WalletsTest.php
--- a/src/tests/Feature/Console/UserWalletsTest.php
+++ b/src/tests/Feature/Console/User/WalletsTest.php
@@ -1,11 +1,14 @@
<?php
-namespace Tests\Feature\Console;
+namespace Tests\Feature\Console\User;
use Tests\TestCase;
-class UserWalletsTest extends TestCase
+class WalletsTest extends TestCase
{
+ /**
+ * Test the command run
+ */
public function testHandle(): void
{
$this->artisan('user:wallets john@kolab.org')
diff --git a/src/tests/Feature/Console/Wallet/AddTransactionTest.php b/src/tests/Feature/Console/Wallet/AddTransactionTest.php
new file mode 100644
--- /dev/null
+++ b/src/tests/Feature/Console/Wallet/AddTransactionTest.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace Tests\Feature\Console\Wallet;
+
+use Tests\TestCase;
+
+class AddTransactionTest extends TestCase
+{
+ /**
+ * Test the command run
+ */
+ public function testHandle(): void
+ {
+ $this->markTestIncomplete();
+ }
+}
diff --git a/src/tests/Feature/Console/Wallet/BalancesTest.php b/src/tests/Feature/Console/Wallet/BalancesTest.php
new file mode 100644
--- /dev/null
+++ b/src/tests/Feature/Console/Wallet/BalancesTest.php
@@ -0,0 +1,19 @@
+<?php
+
+namespace Tests\Feature\Console\Wallet;
+
+use Tests\TestCase;
+
+class BalancesTest extends TestCase
+{
+ /**
+ * Test the command run
+ */
+ public function testHandle(): void
+ {
+ $this->artisan('wallet:balances')
+ ->assertExitCode(0);
+
+ $this->markTestIncomplete();
+ }
+}
diff --git a/src/tests/Feature/Console/WalletChargeTest.php b/src/tests/Feature/Console/Wallet/ChargeTest.php
rename from src/tests/Feature/Console/WalletChargeTest.php
rename to src/tests/Feature/Console/Wallet/ChargeTest.php
--- a/src/tests/Feature/Console/WalletChargeTest.php
+++ b/src/tests/Feature/Console/Wallet/ChargeTest.php
@@ -1,11 +1,11 @@
<?php
-namespace Tests\Feature\Console;
+namespace Tests\Feature\Console\Wallet;
use Illuminate\Support\Facades\Queue;
use Tests\TestCase;
-class WalletChargeTest extends TestCase
+class ChargeTest extends TestCase
{
/**
* {@inheritDoc}
diff --git a/src/tests/Feature/Console/Wallet/ExpectedTest.php b/src/tests/Feature/Console/Wallet/ExpectedTest.php
new file mode 100644
--- /dev/null
+++ b/src/tests/Feature/Console/Wallet/ExpectedTest.php
@@ -0,0 +1,19 @@
+<?php
+
+namespace Tests\Feature\Console\Wallet;
+
+use Tests\TestCase;
+
+class ExpectedTest extends TestCase
+{
+ /**
+ * Test the command run
+ */
+ public function testHandle(): void
+ {
+ $this->artisan('wallet:expected')
+ ->assertExitCode(0);
+
+ $this->markTestIncomplete();
+ }
+}
diff --git a/src/tests/Feature/Console/Wallet/GetBalanceTest.php b/src/tests/Feature/Console/Wallet/GetBalanceTest.php
new file mode 100644
--- /dev/null
+++ b/src/tests/Feature/Console/Wallet/GetBalanceTest.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace Tests\Feature\Console\Wallet;
+
+use Tests\TestCase;
+
+class GetBalanceTest extends TestCase
+{
+ /**
+ * Test the command run
+ */
+ public function testHandle(): void
+ {
+ $this->markTestIncomplete();
+ }
+}
diff --git a/src/tests/Feature/Console/Wallet/GetDiscountTest.php b/src/tests/Feature/Console/Wallet/GetDiscountTest.php
new file mode 100644
--- /dev/null
+++ b/src/tests/Feature/Console/Wallet/GetDiscountTest.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace Tests\Feature\Console\Wallet;
+
+use Tests\TestCase;
+
+class GetDiscountTest extends TestCase
+{
+ /**
+ * Test the command run
+ */
+ public function testHandle(): void
+ {
+ $this->markTestIncomplete();
+ }
+}
diff --git a/src/tests/Feature/Console/UserDiscountTest.php b/src/tests/Feature/Console/Wallet/MandateTest.php
rename from src/tests/Feature/Console/UserDiscountTest.php
rename to src/tests/Feature/Console/Wallet/MandateTest.php
--- a/src/tests/Feature/Console/UserDiscountTest.php
+++ b/src/tests/Feature/Console/Wallet/MandateTest.php
@@ -1,11 +1,14 @@
<?php
-namespace Tests\Feature\Console;
+namespace Tests\Feature\Console\Wallet;
use Tests\TestCase;
-class UserDiscountTest extends TestCase
+class MandateTest extends TestCase
{
+ /**
+ * Test the command run
+ */
public function testHandle(): void
{
$this->markTestIncomplete();
diff --git a/src/tests/Feature/Console/Wallet/SetBalanceTest.php b/src/tests/Feature/Console/Wallet/SetBalanceTest.php
new file mode 100644
--- /dev/null
+++ b/src/tests/Feature/Console/Wallet/SetBalanceTest.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace Tests\Feature\Console\Wallet;
+
+use Tests\TestCase;
+
+class SetBalanceTest extends TestCase
+{
+ /**
+ * Test the command run
+ */
+ public function testHandle(): void
+ {
+ $this->markTestIncomplete();
+ }
+}
diff --git a/src/tests/Feature/Console/Wallet/SetDiscountTest.php b/src/tests/Feature/Console/Wallet/SetDiscountTest.php
new file mode 100644
--- /dev/null
+++ b/src/tests/Feature/Console/Wallet/SetDiscountTest.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace Tests\Feature\Console\Wallet;
+
+use Tests\TestCase;
+
+class SetDiscountTest extends TestCase
+{
+ /**
+ * Test the command run
+ */
+ public function testHandle(): void
+ {
+ $this->markTestIncomplete();
+ }
+}
diff --git a/src/tests/Feature/Console/Wallet/TransactionsTest.php b/src/tests/Feature/Console/Wallet/TransactionsTest.php
new file mode 100644
--- /dev/null
+++ b/src/tests/Feature/Console/Wallet/TransactionsTest.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace Tests\Feature\Console\Wallet;
+
+use Tests\TestCase;
+
+class TransactionsTest extends TestCase
+{
+ /**
+ * Test the command run
+ */
+ public function testHandle(): void
+ {
+ $this->markTestIncomplete();
+ }
+}
diff --git a/src/tests/Feature/Console/Wallet/UntilTest.php b/src/tests/Feature/Console/Wallet/UntilTest.php
new file mode 100644
--- /dev/null
+++ b/src/tests/Feature/Console/Wallet/UntilTest.php
@@ -0,0 +1,48 @@
+<?php
+
+namespace Tests\Feature\Console\Wallet;
+
+use Tests\TestCase;
+
+class UntilTest extends TestCase
+{
+ /**
+ * {@inheritDoc}
+ */
+ public function setUp(): void
+ {
+ parent::setUp();
+
+ $this->deleteTestUser('wallet-charge@kolabnow.com');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function tearDown(): void
+ {
+ $this->deleteTestUser('wallet-charge@kolabnow.com');
+
+ parent::tearDown();
+ }
+
+ /**
+ * Test command run for a specified wallet
+ */
+ public function testHandleSingle(): void
+ {
+ $user = $this->getTestUser('wallet-charge@kolabnow.com');
+ $wallet = $user->wallets()->first();
+
+ // Non-existing wallet
+ $this->artisan('wallet:until unknown')
+ ->expectsOutput("Wallet not found")
+ ->assertExitCode(1);
+
+ // TODO
+ $this->artisan('wallet:until ' . $wallet->id)
+ ->assertExitCode(0);
+
+ $this->markTestIncomplete();
+ }
+}

File Metadata

Mime Type
text/plain
Expires
Mon, Apr 6, 1:47 PM (8 h, 23 m ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
18837694
Default Alt Text
D1702.1775483235.diff (99 KB)

Event Timeline