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
*/
protected $signature = 'refresh:dividend-data
{--force : Refresh all holdings}';
{--force : Refresh all holdings}
{--user= : Limit refresh to user\'s holdings}';
/**
* The console command description.
@@ -46,6 +47,10 @@ class RefreshDividendData extends Command
$holdings->where('quantity', '>', 0);
}
if ($this->option('user')) {
$holdings->myHoldings($this->option('user'));
}
foreach ($holdings->get(['symbol']) as $holding) {
$this->line('Refreshing ' . $holding->symbol);
+8 -4
View File
@@ -14,7 +14,8 @@ class RefreshMarketData extends Command
* @var string
*/
protected $signature = 'refresh:market-data
{--force : Ignore refresh delay}';
{--force : Ignore refresh delay}
{--user= : Limit refresh to user\'s holdings}';
/**
* The console command description.
@@ -45,10 +46,13 @@ class RefreshMarketData extends Command
// get all symbols from market data
$holdings = Holding::where('quantity', '>', 0)
->select(['symbol'])
->distinct()
->get();
->distinct();
if ($this->option('user')) {
$holdings->myHoldings($this->option('user'));
}
foreach ($holdings as $holding) {
foreach ($holdings->get() as $holding) {
$this->line('Refreshing ' . $holding->symbol);
MarketData::getMarketData($holding->symbol, $force);
+8 -3
View File
@@ -12,7 +12,8 @@ class SyncHoldingData extends Command
*
* @var string
*/
protected $signature = 'sync:holdings';
protected $signature = 'sync:holdings
{--user= : Limit refresh to user\'s holdings}';
/**
* The console command description.
@@ -39,9 +40,13 @@ class SyncHoldingData extends Command
public function handle()
{
// 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);
$holding->syncTransactionsAndDividends();
+3 -3
View File
@@ -159,10 +159,10 @@ class Holding extends Model
->where('portfolios.wishlist', 0);
}
public function scopeMyHoldings($query)
public function scopeMyHoldings($query, $userId = null)
{
return $query->whereHas('portfolio', function($query) {
$query->whereRelation('users', 'id', auth()->user()->id);
return $query->whereHas('portfolio', function($query) use ($userId) {
$query->whereRelation('users', 'id', $userId ?? auth()->user()->id);
});
}