feat:adds user option to sync and refresh commands

This commit is contained in:
hackerESQ
2024-10-23 16:57:55 -05:00
parent ab24b528d1
commit ff725e0119
4 changed files with 25 additions and 11 deletions
+6 -1
View File
@@ -14,7 +14,8 @@ class RefreshDividendData extends Command
* @var string * @var string
*/ */
protected $signature = 'refresh:dividend-data protected $signature = 'refresh:dividend-data
{--force : Refresh all holdings}'; {--force : Refresh all holdings}
{--user= : Limit refresh to user\'s holdings}';
/** /**
* The console command description. * The console command description.
@@ -46,6 +47,10 @@ class RefreshDividendData extends Command
$holdings->where('quantity', '>', 0); $holdings->where('quantity', '>', 0);
} }
if ($this->option('user')) {
$holdings->myHoldings($this->option('user'));
}
foreach ($holdings->get(['symbol']) as $holding) { foreach ($holdings->get(['symbol']) as $holding) {
$this->line('Refreshing ' . $holding->symbol); $this->line('Refreshing ' . $holding->symbol);
+8 -4
View File
@@ -14,7 +14,8 @@ class RefreshMarketData extends Command
* @var string * @var string
*/ */
protected $signature = 'refresh:market-data protected $signature = 'refresh:market-data
{--force : Ignore refresh delay}'; {--force : Ignore refresh delay}
{--user= : Limit refresh to user\'s holdings}';
/** /**
* The console command description. * The console command description.
@@ -45,10 +46,13 @@ class RefreshMarketData extends Command
// get all symbols from market data // get all symbols from market data
$holdings = Holding::where('quantity', '>', 0) $holdings = Holding::where('quantity', '>', 0)
->select(['symbol']) ->select(['symbol'])
->distinct() ->distinct();
->get();
if ($this->option('user')) {
$holdings->myHoldings($this->option('user'));
}
foreach ($holdings as $holding) { foreach ($holdings->get() as $holding) {
$this->line('Refreshing ' . $holding->symbol); $this->line('Refreshing ' . $holding->symbol);
MarketData::getMarketData($holding->symbol, $force); MarketData::getMarketData($holding->symbol, $force);
+8 -3
View File
@@ -12,7 +12,8 @@ class SyncHoldingData extends Command
* *
* @var string * @var string
*/ */
protected $signature = 'sync:holdings'; protected $signature = 'sync:holdings
{--user= : Limit refresh to user\'s holdings}';
/** /**
* The console command description. * The console command description.
@@ -39,9 +40,13 @@ class SyncHoldingData extends Command
public function handle() public function handle()
{ {
// get all holdings // get all holdings
$holdings = Holding::get(); $holdings = Holding::query();
foreach ($holdings as $holding) { if ($this->option('user')) {
$holdings->myHoldings($this->option('user'));
}
foreach ($holdings->get() as $holding) {
$this->line('Refreshing ' . $holding->symbol); $this->line('Refreshing ' . $holding->symbol);
$holding->syncTransactionsAndDividends(); $holding->syncTransactionsAndDividends();
+3 -3
View File
@@ -159,10 +159,10 @@ class Holding extends Model
->where('portfolios.wishlist', 0); ->where('portfolios.wishlist', 0);
} }
public function scopeMyHoldings($query) public function scopeMyHoldings($query, $userId = null)
{ {
return $query->whereHas('portfolio', function($query) { return $query->whereHas('portfolio', function($query) use ($userId) {
$query->whereRelation('users', 'id', auth()->user()->id); $query->whereRelation('users', 'id', $userId ?? auth()->user()->id);
}); });
} }