diff --git a/CHANGELOG.md b/CHANGELOG.md index 21c582733..20ce81c40 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,16 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### Added + +- Support a note for activities + +### Todo + +- Apply data migration (`yarn database:migrate`) + ## 1.173.0 - 23.07.2022 ### Fixed diff --git a/apps/api/src/app/export/export.service.ts b/apps/api/src/app/export/export.service.ts index 74cdf14f1..c4655e7d8 100644 --- a/apps/api/src/app/export/export.service.ts +++ b/apps/api/src/app/export/export.service.ts @@ -18,6 +18,7 @@ export class ExportService { orderBy: { date: 'desc' }, select: { accountId: true, + comment: true, date: true, fee: true, id: true, @@ -40,6 +41,7 @@ export class ExportService { activities: activities.map( ({ accountId, + comment, date, fee, id, @@ -50,6 +52,7 @@ export class ExportService { }) => { return { accountId, + comment, fee, id, quantity, diff --git a/apps/api/src/app/import/import.service.ts b/apps/api/src/app/import/import.service.ts index 3eb424469..7617b8cb3 100644 --- a/apps/api/src/app/import/import.service.ts +++ b/apps/api/src/app/import/import.service.ts @@ -48,6 +48,7 @@ export class ImportService { for (const { accountId, + comment, currency, dataSource, date, @@ -58,6 +59,7 @@ export class ImportService { unitPrice } of activities) { await this.orderService.createOrder({ + comment, fee, quantity, type, diff --git a/apps/api/src/app/order/create-order.dto.ts b/apps/api/src/app/order/create-order.dto.ts index ab60248d5..33e6f9cc8 100644 --- a/apps/api/src/app/order/create-order.dto.ts +++ b/apps/api/src/app/order/create-order.dto.ts @@ -5,6 +5,7 @@ import { Tag, Type } from '@prisma/client'; +import { Transform, TransformFnParams } from 'class-transformer'; import { IsArray, IsEnum, @@ -13,25 +14,33 @@ import { IsOptional, IsString } from 'class-validator'; +import { isString } from 'lodash'; export class CreateOrderDto { - @IsString() @IsOptional() + @IsString() accountId?: string; - @IsEnum(AssetClass, { each: true }) @IsOptional() + @IsEnum(AssetClass, { each: true }) assetClass?: AssetClass; - @IsEnum(AssetSubClass, { each: true }) @IsOptional() + @IsEnum(AssetSubClass, { each: true }) assetSubClass?: AssetSubClass; + @IsOptional() + @IsString() + @Transform(({ value }: TransformFnParams) => + isString(value) ? value.trim() : value + ) + comment?: string; + @IsString() currency: string; - @IsEnum(DataSource, { each: true }) @IsOptional() + @IsEnum(DataSource, { each: true }) dataSource?: DataSource; @IsISO8601() diff --git a/apps/api/src/app/order/order.service.ts b/apps/api/src/app/order/order.service.ts index 5c85c9891..b66b40866 100644 --- a/apps/api/src/app/order/order.service.ts +++ b/apps/api/src/app/order/order.service.ts @@ -21,7 +21,7 @@ import { } from '@prisma/client'; import Big from 'big.js'; import { endOfToday, isAfter } from 'date-fns'; -import { groupBy } from 'lodash'; +import { groupBy, isString } from 'lodash'; import { v4 as uuidv4 } from 'uuid'; import { Activity } from './interfaces/activities.interface'; @@ -143,6 +143,11 @@ export class OrderService { delete data.accountId; delete data.assetClass; delete data.assetSubClass; + + if (!data.comment) { + delete data.comment; + } + delete data.currency; delete data.dataSource; delete data.symbol; @@ -316,6 +321,10 @@ export class OrderService { delete data.Account; } + if (!data.comment) { + data.comment = null; + } + const tags = data.tags ?? []; let isDraft = false; diff --git a/apps/api/src/app/order/update-order.dto.ts b/apps/api/src/app/order/update-order.dto.ts index 5f79c63ba..7c709ea7c 100644 --- a/apps/api/src/app/order/update-order.dto.ts +++ b/apps/api/src/app/order/update-order.dto.ts @@ -5,6 +5,7 @@ import { Tag, Type } from '@prisma/client'; +import { Transform, TransformFnParams } from 'class-transformer'; import { IsArray, IsEnum, @@ -13,6 +14,7 @@ import { IsOptional, IsString } from 'class-validator'; +import { isString } from 'lodash'; export class UpdateOrderDto { @IsOptional() @@ -27,6 +29,13 @@ export class UpdateOrderDto { @IsOptional() assetSubClass?: AssetSubClass; + @IsOptional() + @IsString() + @Transform(({ value }: TransformFnParams) => + isString(value) ? value.trim() : value + ) + comment?: string; + @IsString() currency: string; diff --git a/apps/client/src/app/pages/portfolio/transactions/create-or-update-transaction-dialog/create-or-update-transaction-dialog.component.ts b/apps/client/src/app/pages/portfolio/transactions/create-or-update-transaction-dialog/create-or-update-transaction-dialog.component.ts index f9b0b68cf..ce2c5856f 100644 --- a/apps/client/src/app/pages/portfolio/transactions/create-or-update-transaction-dialog/create-or-update-transaction-dialog.component.ts +++ b/apps/client/src/app/pages/portfolio/transactions/create-or-update-transaction-dialog/create-or-update-transaction-dialog.component.ts @@ -76,6 +76,7 @@ export class CreateOrUpdateTransactionDialog implements OnDestroy { accountId: [this.data.activity?.accountId, Validators.required], assetClass: [this.data.activity?.SymbolProfile?.assetClass], assetSubClass: [this.data.activity?.SymbolProfile?.assetSubClass], + comment: [this.data.activity?.comment], currency: [ this.data.activity?.SymbolProfile?.currency, Validators.required @@ -245,6 +246,7 @@ export class CreateOrUpdateTransactionDialog implements OnDestroy { accountId: this.activityForm.controls['accountId'].value, assetClass: this.activityForm.controls['assetClass'].value, assetSubClass: this.activityForm.controls['assetSubClass'].value, + comment: this.activityForm.controls['comment'].value, currency: this.activityForm.controls['currency'].value, date: this.activityForm.controls['date'].value, dataSource: this.activityForm.controls['dataSource'].value, diff --git a/apps/client/src/app/pages/portfolio/transactions/create-or-update-transaction-dialog/create-or-update-transaction-dialog.html b/apps/client/src/app/pages/portfolio/transactions/create-or-update-transaction-dialog/create-or-update-transaction-dialog.html index ff7409753..4e63fe511 100644 --- a/apps/client/src/app/pages/portfolio/transactions/create-or-update-transaction-dialog/create-or-update-transaction-dialog.html +++ b/apps/client/src/app/pages/portfolio/transactions/create-or-update-transaction-dialog/create-or-update-transaction-dialog.html @@ -135,6 +135,18 @@ > +
+ + Note + + +
diff --git a/libs/ui/src/lib/activities-table/activities-table.component.html b/libs/ui/src/lib/activities-table/activities-table.component.html index af0a810cc..14bcbf873 100644 --- a/libs/ui/src/lib/activities-table/activities-table.component.html +++ b/libs/ui/src/lib/activities-table/activities-table.component.html @@ -347,6 +347,15 @@ +