fix delete transaction flow

This commit is contained in:
hackerESQ
2024-08-30 20:58:00 -05:00
parent b13bb198d3
commit 2a42ce9d12
7 changed files with 109 additions and 66 deletions
+1 -1
View File
@@ -55,7 +55,7 @@ class Holding extends Model
*/
public function transactions()
{
return $this->hasManyThrough(Transaction::class, Portfolio::class, 'id', 'portfolio_id', 'portfolio_id', 'id');
return $this->hasManyThrough(Transaction::class, Portfolio::class, 'id', 'portfolio_id', 'portfolio_id', 'id')->orderBy('date', 'DESC');
}
/**
+4 -4
View File
@@ -57,7 +57,7 @@ class MarketData extends Model
// check if new or stale
if (
!$market_data->exists
!$market_data->exists
|| is_null($market_data->updated_at)
|| $market_data->updated_at->diffInMinutes(now()) >= config('market_data.refresh')
) {
@@ -67,10 +67,10 @@ class MarketData extends Model
// fill data
$market_data->fill($quote->toArray());
}
// save with timestamps updated
$market_data->touch();
// save with timestamps updated
$market_data->touch();
}
return $market_data;
}
+2 -58
View File
@@ -39,44 +39,7 @@
<span class="text-sm"> {{ $holding->market_data->name }} </span>
</x-slot:title>
<div class="font-bold text-2xl py-1 flex items-center">
{{ Number::currency($holding->market_data->market_value ?? 0) }}
<x-gain-loss-arrow-badge
:cost-basis="$holding->average_cost_basis"
:market-value="$holding->market_data->market_value"
/>
</div>
<p>
<span class="font-bold">{{ __('Quantity Owned') }}: </span>
{{ $holding->quantity }}
</p>
<p>
<span class="font-bold">{{ __('Average Cost Basis') }}: </span>
{{ Number::currency($holding->average_cost_basis ?? 0) }}
</p>
<p>
<span class="font-bold">{{ __('Total Cost Basis') }}: </span>
{{ Number::currency($holding->total_cost_basis ?? 0) }}
</p>
<p>
<span class="font-bold">{{ __('Realized Gain/Loss') }}: </span>
{{ Number::currency($holding->realized_gain_dollars ?? 0) }}
</p>
<p>
<span class="font-bold">{{ __('Dividends Earned') }}: </span>
{{ Number::currency($holding->dividends_earned ?? 0) }}
</p>
<p class="pt-2 text-sm">
{{ __('Market Data Age') }}:
{{ \Carbon\Carbon::parse($holding->market_data->updated_at)->diffForHumans() }}
</p>
@livewire('holding-market-data', ['holding' => $holding])
</x-ib-card>
@@ -122,26 +85,7 @@
<x-ib-card title="{{ __('Dividends') }}" class="md:col-span-3">
@foreach ($holding->dividends->take(5) as $dividend)
<x-list-item :item="$dividend">
<x-slot:value>
@php
$owned = ($dividend->purchased - $dividend->sold);
@endphp
{{ Number::currency($dividend->dividend_amount) }}
x {{ $owned }}
= {{ Number::currency($owned * $dividend->dividend_amount) }}
</x-slot:value>
<x-slot:sub-value>
{{ $dividend->date->format('F d, Y') }}
</x-slot:sub-value>
</x-list-item>
@endforeach
@livewire('holding-dividends-list', ['holding' => $holding])
</x-ib-card>
@@ -0,0 +1,41 @@
<?php
use App\Models\Holding;
use Livewire\Volt\Component;
new class extends Component {
// props
public Holding $holding;
protected $listeners = [
'transaction-updated' => '$refresh',
'transaction-saved' => '$refresh'
];
// methods
}; ?>
<div>
@foreach ($holding->dividends->take(5) as $dividend)
<x-list-item :item="$dividend">
<x-slot:value>
@php
$owned = ($dividend->purchased - $dividend->sold);
@endphp
{{ Number::currency($dividend->dividend_amount) }}
x {{ $owned }}
= {{ Number::currency($owned * $dividend->dividend_amount) }}
</x-slot:value>
<x-slot:sub-value>
{{ $dividend->date->format('F d, Y') }}
</x-slot:sub-value>
</x-list-item>
@endforeach
</div>
@@ -0,0 +1,59 @@
<?php
use App\Models\Holding;
use Livewire\Volt\Component;
new class extends Component {
// props
public Holding $holding;
protected $listeners = [
'transaction-updated' => '$refresh',
'transaction-saved' => '$refresh'
];
// methods
}; ?>
<div>
<div class="font-bold text-2xl py-1 flex items-center">
{{ Number::currency($holding->market_data->market_value ?? 0) }}
<x-gain-loss-arrow-badge
:cost-basis="$holding->average_cost_basis"
:market-value="$holding->market_data->market_value"
/>
</div>
<p>
<span class="font-bold">{{ __('Quantity Owned') }}: </span>
{{ $holding->quantity }}
</p>
<p>
<span class="font-bold">{{ __('Average Cost Basis') }}: </span>
{{ Number::currency($holding->average_cost_basis ?? 0) }}
</p>
<p>
<span class="font-bold">{{ __('Total Cost Basis') }}: </span>
{{ Number::currency($holding->total_cost_basis ?? 0) }}
</p>
<p>
<span class="font-bold">{{ __('Realized Gain/Loss') }}: </span>
{{ Number::currency($holding->realized_gain_dollars ?? 0) }}
</p>
<p>
<span class="font-bold">{{ __('Dividends Earned') }}: </span>
{{ Number::currency($holding->dividends_earned ?? 0) }}
</p>
<p class="pt-2 text-sm">
{{ __('Market Data Age') }}:
{{ \Carbon\Carbon::parse($holding->market_data->updated_at)->diffForHumans() }}
</p>
</div>
@@ -17,7 +17,6 @@ new class extends Component {
public function mount()
{
$this->headers = [
['key' => 'symbol', 'label' => __('Symbol'), 'class' => ''],
['key' => 'market_data_name', 'label' => __('Name'), 'sortable' => true],
@@ -85,7 +85,7 @@ new class extends Component {
$this->dispatch('transaction-saved');
$this->success(__('Transaction created'), redirectTo: route('portfolio.show', ['portfolio' => $this->portfolio->id]));
$this->success(__('Transaction created'), redirectTo: route('holding.show', ['portfolio' => $this->portfolio->id, 'symbol' => $this->symbol]));
}
public function delete()
@@ -93,7 +93,7 @@ new class extends Component {
$this->transaction->delete();
$this->success(__('Transaction deleted'), redirectTo: route('portfolio.show', ['portfolio' => $this->portfolio->id]));
$this->success(__('Transaction deleted'), redirectTo: route('holding.show', ['portfolio' => $this->portfolio->id, 'symbol' => $this->symbol]));
}
}; ?>