|
|
@ -3,6 +3,7 @@ import { |
|
|
|
hasNotDefinedValuesInObject, |
|
|
|
nullifyValuesInObject |
|
|
|
} from '@ghostfolio/api/helper/object.helper'; |
|
|
|
import { ConfigurationService } from '@ghostfolio/api/services/configuration.service'; |
|
|
|
import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data.service'; |
|
|
|
import { |
|
|
|
PortfolioDetails, |
|
|
@ -38,6 +39,7 @@ import { PortfolioService } from './portfolio.service'; |
|
|
|
@Controller('portfolio') |
|
|
|
export class PortfolioController { |
|
|
|
public constructor( |
|
|
|
private readonly configurationService: ConfigurationService, |
|
|
|
private readonly exchangeRateDataService: ExchangeRateDataService, |
|
|
|
private readonly portfolioService: PortfolioService, |
|
|
|
@Inject(REQUEST) private readonly request: RequestWithUser, |
|
|
@ -47,8 +49,17 @@ export class PortfolioController { |
|
|
|
@Get('investments') |
|
|
|
@UseGuards(AuthGuard('jwt')) |
|
|
|
public async findAll( |
|
|
|
@Headers('impersonation-id') impersonationId |
|
|
|
@Headers('impersonation-id') impersonationId, |
|
|
|
@Res() res: Response |
|
|
|
): Promise<InvestmentItem[]> { |
|
|
|
if ( |
|
|
|
this.configurationService.get('ENABLE_FEATURE_SUBSCRIPTION') && |
|
|
|
this.request.user.subscription.type === 'Basic' |
|
|
|
) { |
|
|
|
res.status(StatusCodes.FORBIDDEN); |
|
|
|
return <any>res.json([]); |
|
|
|
} |
|
|
|
|
|
|
|
let investments = await this.portfolioService.getInvestments( |
|
|
|
impersonationId |
|
|
|
); |
|
|
@ -68,7 +79,7 @@ export class PortfolioController { |
|
|
|
})); |
|
|
|
} |
|
|
|
|
|
|
|
return investments; |
|
|
|
return <any>res.json(investments); |
|
|
|
} |
|
|
|
|
|
|
|
@Get('chart') |
|
|
@ -125,6 +136,14 @@ export class PortfolioController { |
|
|
|
@Query('range') range, |
|
|
|
@Res() res: Response |
|
|
|
): Promise<PortfolioDetails> { |
|
|
|
if ( |
|
|
|
this.configurationService.get('ENABLE_FEATURE_SUBSCRIPTION') && |
|
|
|
this.request.user.subscription.type === 'Basic' |
|
|
|
) { |
|
|
|
res.status(StatusCodes.FORBIDDEN); |
|
|
|
return <any>res.json({ accounts: {}, holdings: {} }); |
|
|
|
} |
|
|
|
|
|
|
|
const { accounts, holdings, hasErrors } = |
|
|
|
await this.portfolioService.getDetails(impersonationId, range); |
|
|
|
|
|
|
@ -295,8 +314,19 @@ export class PortfolioController { |
|
|
|
@Get('report') |
|
|
|
@UseGuards(AuthGuard('jwt')) |
|
|
|
public async getReport( |
|
|
|
@Headers('impersonation-id') impersonationId |
|
|
|
@Headers('impersonation-id') impersonationId, |
|
|
|
@Res() res: Response |
|
|
|
): Promise<PortfolioReport> { |
|
|
|
return await this.portfolioService.getReport(impersonationId); |
|
|
|
if ( |
|
|
|
this.configurationService.get('ENABLE_FEATURE_SUBSCRIPTION') && |
|
|
|
this.request.user.subscription.type === 'Basic' |
|
|
|
) { |
|
|
|
res.status(StatusCodes.FORBIDDEN); |
|
|
|
return <any>res.json({ rules: [] }); |
|
|
|
} |
|
|
|
|
|
|
|
return <any>( |
|
|
|
res.json(await this.portfolioService.getReport(impersonationId)) |
|
|
|
); |
|
|
|
} |
|
|
|
} |
|
|
|