import { Controller, Get, Param, Query } from '@nestjs/common'; import { ApiTags, ApiOperation, ApiOkResponse, ApiExtraModels } from '@nestjs/swagger'; import { ApiResponseMeta } from '../../common/dto/api-response.dto'; import { SharesService } from './shares.service'; import { ShareEnvelopeDto, ShareMarketDataEnvelopeDto, DividendsEnvelopeDto, ShareHistoryEnvelopeDto, } from './dto/shares-envelope.dto'; @ApiTags('Shares') @ApiExtraModels(ApiResponseMeta) @Controller('securities/shares') export class SharesController { constructor(private readonly sharesService: SharesService) {} @Get(':secid') @ApiOperation({ summary: 'Получить спецификацию акции' }) @ApiOkResponse({ type: ShareEnvelopeDto }) async getShare(@Param('secid') secid: string) { return this.sharesService.getShare(secid); } @Get(':secid/marketdata') @ApiOperation({ summary: 'Получить рыночные данные акции' }) @ApiOkResponse({ type: ShareMarketDataEnvelopeDto }) async getMarketData(@Param('secid') secid: string) { return this.sharesService.getMarketData(secid); } @Get(':secid/dividends') @ApiOperation({ summary: 'Получить дивиденды' }) @ApiOkResponse({ type: DividendsEnvelopeDto }) async getDividends(@Param('secid') secid: string) { return this.sharesService.getDividends(secid); } @Get(':secid/history') @ApiOperation({ summary: 'Получить дневную историю торгов акции' }) @ApiOkResponse({ type: ShareHistoryEnvelopeDto }) async getHistory( @Param('secid') secid: string, @Query('from') from: string, @Query('till') till: string, ) { return this.sharesService.getHistory(secid, from, till); } }