diff --git a/TODOS.md b/TODOS.md index 565ac3c..3f42dc1 100644 --- a/TODOS.md +++ b/TODOS.md @@ -7,6 +7,7 @@ * Check what is happening after changing user settings currency. * Styles improvements for mobile. * Totally reorganize reports. +* After first synchronization with bank, new personal account should be created. * Currently, saldo on home page is showing value of first account of user. It should show saldo of user selected 'default' account. * Check if API calls & websockets are properly authorized. * Add synchronizing bank accounts saldo. diff --git a/app/Http/Controllers/Web/Transaction/PersonalAccountController.php b/app/Http/Controllers/Web/Transaction/PersonalAccountController.php index 0c23414..1b39c9e 100644 --- a/app/Http/Controllers/Web/Transaction/PersonalAccountController.php +++ b/app/Http/Controllers/Web/Transaction/PersonalAccountController.php @@ -6,9 +6,22 @@ use Illuminate\Http\Request; use App\Http\Controllers\Controller; use Illuminate\Http\RedirectResponse; +use App\Models\Transaction\PersonalAccount; class PersonalAccountController extends Controller { + public function index(Request $request): View + { + $personalAccounts = PersonalAccount::whereUser($request->user()) + ->latest() + ->withCount('transactions') + ->get(); + + return view('personal_account.index', [ + 'personalAccounts' => $personalAccounts + ]); + } + public function edit(Request $request): View { // @todo - handle editing multiplte personal account saldos diff --git a/app/Models/Transaction/PersonalAccount.php b/app/Models/Transaction/PersonalAccount.php index 667e390..d0c557f 100644 --- a/app/Models/Transaction/PersonalAccount.php +++ b/app/Models/Transaction/PersonalAccount.php @@ -2,19 +2,27 @@ namespace App\Models\Transaction; +use App\Models\Traits\BelongsToUser; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Factories\HasFactory; +use Illuminate\Database\Eloquent\Relations\HasMany; /** * @property mixed $value + * @method static whereUser(mixed $user) */ class PersonalAccount extends Model { - use HasFactory; + use HasFactory, BelongsToUser; protected $fillable = [ 'user_id', 'value', 'name' ]; + + public function transactions(): HasMany + { + return $this->hasMany(Transaction::class); + } } diff --git a/app/Models/Transaction/Transaction.php b/app/Models/Transaction/Transaction.php index 915fc51..0f74484 100644 --- a/app/Models/Transaction/Transaction.php +++ b/app/Models/Transaction/Transaction.php @@ -63,6 +63,7 @@ class Transaction extends Model 'receiver_account_number', 'sender_account_number', 'receiver_persona_id', + 'personal_account_id', 'calculation_volume', 'sender_persona_id', 'transaction_date', diff --git a/resources/views/icons/sm/accounts.blade.php b/resources/views/icons/sm/accounts.blade.php new file mode 100644 index 0000000..3e5f790 --- /dev/null +++ b/resources/views/icons/sm/accounts.blade.php @@ -0,0 +1,3 @@ + diff --git a/resources/views/layouts/navbar.blade.php b/resources/views/layouts/navbar.blade.php index 7d3b929..bc9df75 100644 --- a/resources/views/layouts/navbar.blade.php +++ b/resources/views/layouts/navbar.blade.php @@ -35,6 +35,12 @@ class="inline-flex items-center px-3 py-2 border border-transparent text-sm lead {{ __('All transactions') }} + +
+ @include('icons.sm.accounts') +
+ {{ __('Personal accounts') }} +
@if(config('personas.enabled')) diff --git a/resources/views/personal_account/index.blade.php b/resources/views/personal_account/index.blade.php new file mode 100644 index 0000000..3b67d39 --- /dev/null +++ b/resources/views/personal_account/index.blade.php @@ -0,0 +1,9 @@ + +
+
+ + @include('personal_account.partials.personal-accounts-list', ['personalAccounts' => $personalAccounts]) + +
+
+
diff --git a/resources/views/personal_account/partials/personal-accounts-list.blade.php b/resources/views/personal_account/partials/personal-accounts-list.blade.php new file mode 100644 index 0000000..501b07d --- /dev/null +++ b/resources/views/personal_account/partials/personal-accounts-list.blade.php @@ -0,0 +1,35 @@ +@if(count($personalAccounts) > 0) +
+

{{ __('Personal accounts') }}

+ + + + + + + + + + @foreach ($personalAccounts as $personalAccount) + + + + + + @endforeach + +
+ {{ __('Name') }} + + {{ __('Transactions count') }} + + {{ __('Created at') }} +
+ {{ $personalAccount->name }} + + {{ $personalAccount->transactions_count }} + {{ $personalAccount->created_at->format('d.m.Y H:i') }}
+
+@else +

{{ __('No personal accounts') }}

+@endif diff --git a/routes/web/personal_accounts.php b/routes/web/personal_accounts.php index 2d8ab73..087a41b 100644 --- a/routes/web/personal_accounts.php +++ b/routes/web/personal_accounts.php @@ -4,6 +4,7 @@ use Illuminate\Support\Facades\Route; Route::prefix('personal-accounts')->as('personal-account.')->group(function () { + Route::get('/', [PersonalAccountController::class, 'index'])->name('index'); Route::get('/edit', [PersonalAccountController::class, 'edit'])->name('edit'); Route::put('/update', [PersonalAccountController::class, 'update'])->name('update'); });