diff --git a/.gitignore b/.gitignore index e7db1a743..50edd2db7 100644 --- a/.gitignore +++ b/.gitignore @@ -42,5 +42,5 @@ testem.log Thumbs.db # Config -appConfig.json -authConfig.json \ No newline at end of file +appConfig*.json +authConfig*.json \ No newline at end of file diff --git a/src/app/deposits/components/create-deposit-dialog/create-deposit-dialog.component.html b/src/app/deposits/components/create-deposit-dialog/create-deposit-dialog.component.html index 4fb09d6b4..2ef1debaf 100644 --- a/src/app/deposits/components/create-deposit-dialog/create-deposit-dialog.component.html +++ b/src/app/deposits/components/create-deposit-dialog/create-deposit-dialog.component.html @@ -4,7 +4,6 @@ [extensions]="extensions" [formControl]="control" namespace="deposit" - noToolbar type="DepositParams" > @@ -13,7 +12,3 @@ - - - - diff --git a/src/app/deposits/components/create-deposit-dialog/create-deposit-dialog.component.ts b/src/app/deposits/components/create-deposit-dialog/create-deposit-dialog.component.ts index 45a98c762..52016e922 100644 --- a/src/app/deposits/components/create-deposit-dialog/create-deposit-dialog.component.ts +++ b/src/app/deposits/components/create-deposit-dialog/create-deposit-dialog.component.ts @@ -1,17 +1,16 @@ -import { BehaviorSubject, of } from 'rxjs'; -import { first, map, switchMap } from 'rxjs/operators'; -import { Overwrite } from 'utility-types'; +import { BehaviorSubject, combineLatest, first, map, of, switchMap } from 'rxjs'; import { Component, DestroyRef, TemplateRef, ViewChild, inject } from '@angular/core'; import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; import { FormControl, Validators } from '@angular/forms'; import { DepositParams } from '@vality/fistful-proto/deposit'; -import { DialogSuperclass, NotifyLogService, progressTo } from '@vality/matez'; +import { DialogSuperclass, NotifyLogService, progressTo, tapLog } from '@vality/matez'; import { ThriftFormExtension, isTypeWithAliases } from '@vality/ng-thrift'; -import { ThriftDepositManagementService } from '~/api/services'; -import { SourceCash } from '~/components/source-cash-field'; +import { DomainObjectsStoreService } from '~/api/domain-config'; +import { ThriftDepositManagementService, ThriftRepositoryClientService } from '~/api/services'; +import { getDomainObjectOption } from '~/components/thrift-api-crud/domain/services/domain-metadata-form-extensions/utils/get-domain-object-option'; import { UserInfoBasedIdGeneratorService } from '~/services'; import { FetchSourcesService } from '../../../sources'; @@ -21,13 +20,15 @@ import { FetchSourcesService } from '../../../sources'; standalone: false, }) export class CreateDepositDialogComponent extends DialogSuperclass { - private destroyRef = inject(DestroyRef); + private dr = inject(DestroyRef); private depositManagementService = inject(ThriftDepositManagementService); private log = inject(NotifyLogService); private userInfoBasedIdGeneratorService = inject(UserInfoBasedIdGeneratorService); + private domainStoreService = inject(DomainObjectsStoreService); private fetchSourcesService = inject(FetchSourcesService); + private thriftRepositoryClientService = inject(ThriftRepositoryClientService); - @ViewChild('sourceCashTemplate') sourceCashTemplate: TemplateRef; + @ViewChild('currencyTemplate') currencyTemplate: TemplateRef; control = new FormControl(this.getDefaultValue(), [Validators.required]); progress$ = new BehaviorSubject(0); @@ -37,40 +38,59 @@ export class CreateDepositDialogComponent extends DialogSuperclass of({ hidden: true }), }, { - determinant: (data) => of(isTypeWithAliases(data, 'Cash', 'base')), - extension: () => of({ template: this.sourceCashTemplate }), + determinant: (data) => of(isTypeWithAliases(data, 'CurrencySymbolicCode', 'base')), + extension: () => + this.fetchSourcesService.sources$.pipe( + map((sources) => ({ + options: sources.map((source) => ({ + label: source.name, + value: source.id, + details: source, + })), + isIdentifier: true, + })), + ), + }, + { + determinant: (data) => of(isTypeWithAliases(data, 'WalletID', 'deposit')), + extension: () => + this.domainStoreService.getLimitedObjects('wallet_config').value$.pipe( + map((objects) => ({ + options: objects.map((obj) => getDomainObjectOption(obj)), + isIdentifier: true, + })), + ), }, ]; create() { - const { body: sourceCash, ...value } = this.control.value; - this.fetchSourcesService.sources$ + const value = this.control.value; + combineLatest([ + this.fetchSourcesService.sources$.pipe(first()), + this.thriftRepositoryClientService.CheckoutObject( + { head: {} }, + { wallet_config: { id: value.wallet_id } }, + ), + ]) .pipe( - first(), map( - (sources) => - sources.find((s) => s.id === sourceCash.sourceId).currency_symbolic_code, - ), - switchMap((symbolicCode) => - this.depositManagementService.Create( - { - ...value, - source_id: sourceCash.sourceId, - body: { - amount: sourceCash.amount, - currency: { symbolic_code: symbolicCode }, - }, - }, - new Map(), - ), + ([sources, wallet]): DepositParams => ({ + ...value, + party_id: wallet.object.wallet_config.data.party_ref.id, + source_id: sources.find((s) => s.id === value.body.currency.symbolic_code) + ?.id, + }), ), + tapLog(), + switchMap((params) => this.depositManagementService.Create(params, new Map())), progressTo(this.progress$), - takeUntilDestroyed(this.destroyRef), + takeUntilDestroyed(this.dr), ) .subscribe({ next: () => this.closeWithSuccess(), @@ -81,7 +101,8 @@ export class CreateDepositDialogComponent extends DialogSuperclass; + source_id: '___AUTO___', + party_id: '___AUTO___', + } as DepositParams; } } diff --git a/src/app/deposits/components/create-deposit-dialog/create-deposit-dialog.module.ts b/src/app/deposits/components/create-deposit-dialog/create-deposit-dialog.module.ts index c3cc97692..35c38c783 100644 --- a/src/app/deposits/components/create-deposit-dialog/create-deposit-dialog.module.ts +++ b/src/app/deposits/components/create-deposit-dialog/create-deposit-dialog.module.ts @@ -12,7 +12,6 @@ import { DialogModule } from '@vality/matez'; import { CurrencySourceFieldComponent } from '~/components/currency-source-field'; import { FistfulThriftFormComponent } from '~/components/fistful-thrift-form'; -import { SourceCashFieldComponent } from '~/components/source-cash-field'; import { UserInfoBasedIdGeneratorModule } from '~/services'; import { CreateDepositDialogComponent } from './create-deposit-dialog.component'; @@ -31,7 +30,6 @@ import { CreateDepositDialogComponent } from './create-deposit-dialog.component' DialogModule, CurrencySourceFieldComponent, FistfulThriftFormComponent, - SourceCashFieldComponent, ], declarations: [CreateDepositDialogComponent], }) diff --git a/src/app/payments/payments.component.html b/src/app/payments/payments.component.html index 82c4a5659..4867c7b2f 100644 --- a/src/app/payments/payments.component.html +++ b/src/app/payments/payments.component.html @@ -43,7 +43,6 @@ (selectedChange)="selected$.next($event)" (update)="reload($event ?? {})" > -