diff --git a/src/detalle_servicio/detalle_servicio.controller.ts b/src/detalle_servicio/detalle_servicio.controller.ts index b804907..6c268c4 100644 --- a/src/detalle_servicio/detalle_servicio.controller.ts +++ b/src/detalle_servicio/detalle_servicio.controller.ts @@ -1,9 +1,20 @@ -import { Controller } from '@nestjs/common'; +import { Body, Controller, Get, Post } from '@nestjs/common'; import { DetalleServicioService } from './detalle_servicio.service'; +import { FindReciboByRangeDto } from 'src/recibo/dto/create-recibo.dto'; @Controller('detalle-servicio') export class DetalleServicioController { constructor(private readonly detalleServicioService: DetalleServicioService) {} + @Get() + findAll(){ + return this.detalleServicioService.findAll() + } + + @Post('rango') + async findByDateRange(@Body() data: FindReciboByRangeDto) { + return this.detalleServicioService.findByDateRange(data.desde, data.hasta); + } + } diff --git a/src/detalle_servicio/detalle_servicio.module.ts b/src/detalle_servicio/detalle_servicio.module.ts index ac60f9e..b04cb4a 100644 --- a/src/detalle_servicio/detalle_servicio.module.ts +++ b/src/detalle_servicio/detalle_servicio.module.ts @@ -1,8 +1,11 @@ import { Module } from '@nestjs/common'; import { DetalleServicioService } from './detalle_servicio.service'; import { DetalleServicioController } from './detalle_servicio.controller'; +import { TypeOrmModule } from '@nestjs/typeorm'; +import { DetalleServicio } from './entities/detalle_servicio.entity'; @Module({ + imports:[TypeOrmModule.forFeature([DetalleServicio])], controllers: [DetalleServicioController], providers: [DetalleServicioService], exports:[DetalleServicioService] diff --git a/src/detalle_servicio/detalle_servicio.service.ts b/src/detalle_servicio/detalle_servicio.service.ts index b074e17..9f228ac 100644 --- a/src/detalle_servicio/detalle_servicio.service.ts +++ b/src/detalle_servicio/detalle_servicio.service.ts @@ -1,13 +1,38 @@ import { Injectable } from '@nestjs/common'; import { DetalleServicio } from './entities/detalle_servicio.entity'; -import { EntityManager } from 'typeorm'; -import { CreateDetalleServicioDto } from './dto/create-detalle_servicio.dto'; +import { EntityManager, Repository } from 'typeorm'; +import { InjectRepository } from '@nestjs/typeorm'; @Injectable() export class DetalleServicioService { + constructor( + @InjectRepository(DetalleServicio) + private readonly detalleServicioRepository: Repository, + ) {} + async Create(data, manager: EntityManager) { const repo = manager.getRepository(DetalleServicio); const details = repo.create(data); return await repo.save(details); } + + findAll(){ + return this.detalleServicioRepository.find({take:100}) + } + + async findByDateRange(fechaInicio: string, fechaFin: string) { + return this.detalleServicioRepository + .createQueryBuilder('detalle') + .innerJoin('detalle.servicio', 'servicio') + .select('servicio.id_servicio', 'id_servicio') + .addSelect('servicio.servicio', 'servicio') + .addSelect('COUNT(detalle.monto)', 'total') + .where('detalle.fecha_operacion >= :inicio', { inicio: fechaInicio }) + .andWhere('detalle.fecha_operacion < DATE_ADD(:fin, INTERVAL 1 DAY)', { + fin: fechaFin, + }) + .groupBy('servicio.id_servicio') + .addGroupBy('servicio.servicio') + .getRawMany(); + } }