diff --git a/src/app.module.ts b/src/app.module.ts index 963cc19..1817c0e 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -1,8 +1,6 @@ import { Module } from '@nestjs/common'; import { ConfigModule, ConfigService } from '@nestjs/config'; -import { AppController } from './app.controller'; import { TypeOrmModule } from '@nestjs/typeorm'; -import { AppService } from './app.service'; import { CarritoModule } from './carrito/carrito.module'; import { EquipoModule } from './equipo/equipo.module'; @@ -18,7 +16,6 @@ import { OperadorModule } from './operador/operador.module'; import { PrestamoModule } from './prestamo/prestamo.module'; import { ProgramaModule } from './programa/programa.module'; import { StatusModule } from './status/status.module'; -import { TipoCarritoModule } from './tipo-carrito/tipo-carrito.module'; import { TipoUsuarioModule } from './tipo-usuario/tipo-usuario.module'; import { UsuarioModule } from './usuario/usuario.module'; import { CarreraModule } from './carrera/carrera.module'; @@ -44,7 +41,7 @@ import { Operador } from './operador/entity/operador.entity'; import { Prestamo } from './prestamo/entity/prestamo.entity'; import { Programa } from './programa/entity/programa.entity'; import { Status } from './status/entity/status.entity'; -import { TipoCarrito } from './tipo-carrito/entity/tipo-carrito.entity'; +import { TipoCarrito } from './institucion-tipo-carrito/entity/tipo-carrito.entity'; import { TipoEntrada } from './tipo-entrada/entity/tipo-entrada.entity'; import { TipoUsuario } from './tipo-usuario/entity/tipo-usuario.entity'; import { Usuario } from './usuario/entity/usuario.entity'; @@ -106,13 +103,10 @@ import { Usuario } from './usuario/entity/usuario.entity'; PrestamoModule, ProgramaModule, StatusModule, - TipoCarritoModule, TipoEntradaModule, TipoUsuarioModule, UsuarioModule, InstitucionTipoCarritoModule, ], - controllers: [AppController], - providers: [AppService], }) export class AppModule {} diff --git a/src/carrito/entity/carrito.entity.ts b/src/carrito/entity/carrito.entity.ts index 30adc84..f4a4ae6 100644 --- a/src/carrito/entity/carrito.entity.ts +++ b/src/carrito/entity/carrito.entity.ts @@ -8,7 +8,7 @@ import { } from 'typeorm'; import { Equipo } from '../../equipo/entity/equipo.entity'; import { Modulo } from '../../modulo/entity/modulo.entity'; -import { TipoCarrito } from '../../tipo-carrito/entity/tipo-carrito.entity'; +import { TipoCarrito } from '../../institucion-tipo-carrito/entity/tipo-carrito.entity'; @Entity() export class Carrito { diff --git a/src/institucion-tipo-carrito/dto/institucion-tipo-carrito-create.dto.ts b/src/institucion-tipo-carrito/dto/institucion-tipo-carrito-create.dto.ts new file mode 100644 index 0000000..57d0f20 --- /dev/null +++ b/src/institucion-tipo-carrito/dto/institucion-tipo-carrito-create.dto.ts @@ -0,0 +1,9 @@ +import { IsString } from 'class-validator'; + +export class InstitucionTipoCarritoCreateDto { + @IsString() + letra: string; + + @IsString() + tipo_carrito: string; +} diff --git a/src/institucion-tipo-carrito/dto/institucion-tipo-carrito-update.dto.ts b/src/institucion-tipo-carrito/dto/institucion-tipo-carrito-update.dto.ts new file mode 100644 index 0000000..a0b0b43 --- /dev/null +++ b/src/institucion-tipo-carrito/dto/institucion-tipo-carrito-update.dto.ts @@ -0,0 +1,9 @@ +import { IsBoolean, IsNumber } from 'class-validator'; + +export class InstitucionTipoCarritoUpdateDto { + @IsNumber() + id_institucion_tipo_carrito: number; + + @IsBoolean() + mostar: boolean; +} diff --git a/src/institucion-tipo-carrito/entity/institucion-tipo-carrito.entity.ts b/src/institucion-tipo-carrito/entity/institucion-tipo-carrito.entity.ts index edbb387..2b9f35a 100644 --- a/src/institucion-tipo-carrito/entity/institucion-tipo-carrito.entity.ts +++ b/src/institucion-tipo-carrito/entity/institucion-tipo-carrito.entity.ts @@ -6,7 +6,7 @@ import { PrimaryGeneratedColumn, } from 'typeorm'; import { Institucion } from '../../institucion/entity/institucion.entity'; -import { TipoCarrito } from '../../tipo-carrito/entity/tipo-carrito.entity'; +import { TipoCarrito } from './tipo-carrito.entity'; @Entity() export class InstitucionTipoCarrito { @@ -26,6 +26,7 @@ export class InstitucionTipoCarrito { @ManyToOne( () => TipoCarrito, (tipoCarrito) => tipoCarrito.institucionesTipoCarrito, + { eager: true }, ) @JoinColumn({ name: 'id_tipo_carrito' }) tipoCarrito: TipoCarrito; diff --git a/src/tipo-carrito/entity/tipo-carrito.entity.ts b/src/institucion-tipo-carrito/entity/tipo-carrito.entity.ts similarity index 85% rename from src/tipo-carrito/entity/tipo-carrito.entity.ts rename to src/institucion-tipo-carrito/entity/tipo-carrito.entity.ts index f33a63a..2f28aa9 100644 --- a/src/tipo-carrito/entity/tipo-carrito.entity.ts +++ b/src/institucion-tipo-carrito/entity/tipo-carrito.entity.ts @@ -1,6 +1,6 @@ import { Column, Entity, OneToMany, PrimaryGeneratedColumn } from 'typeorm'; import { Carrito } from '../../carrito/entity/carrito.entity'; -import { InstitucionTipoCarrito } from '../../institucion-tipo-carrito/entity/institucion-tipo-carrito.entity'; +import { InstitucionTipoCarrito } from './institucion-tipo-carrito.entity'; @Entity() export class TipoCarrito { diff --git a/src/institucion-tipo-carrito/institucion-tipo-carrito.controller.spec.ts b/src/institucion-tipo-carrito/institucion-tipo-carrito.controller.spec.ts index 9706841..3998d49 100644 --- a/src/institucion-tipo-carrito/institucion-tipo-carrito.controller.spec.ts +++ b/src/institucion-tipo-carrito/institucion-tipo-carrito.controller.spec.ts @@ -9,7 +9,9 @@ describe('InstitucionTipoCarritoController', () => { controllers: [InstitucionTipoCarritoController], }).compile(); - controller = module.get(InstitucionTipoCarritoController); + controller = module.get( + InstitucionTipoCarritoController, + ); }); it('should be defined', () => { diff --git a/src/institucion-tipo-carrito/institucion-tipo-carrito.controller.ts b/src/institucion-tipo-carrito/institucion-tipo-carrito.controller.ts index bff098a..ef94f03 100644 --- a/src/institucion-tipo-carrito/institucion-tipo-carrito.controller.ts +++ b/src/institucion-tipo-carrito/institucion-tipo-carrito.controller.ts @@ -1,5 +1,8 @@ -import { Controller, Get, Put } from '@nestjs/common'; +import { Body, Controller, Get, Post, Put, Query } from '@nestjs/common'; import { InstitucionTipoCarritoService } from './institucion-tipo-carrito.service'; +import { IdInstitucionDto } from '../dto/id-institucion.dto'; +import { InstitucionTipoCarritoCreateDto } from './dto/institucion-tipo-carrito-create.dto'; +import { InstitucionTipoCarritoUpdateDto } from './dto/institucion-tipo-carrito-update.dto'; @Controller('institucion-tipo-carrito') export class InstitucionTipoCarritoController { @@ -7,9 +10,28 @@ export class InstitucionTipoCarritoController { private institucionTipoCarritoService: InstitucionTipoCarritoService, ) {} + @Post() + create(@Body() body: InstitucionTipoCarritoCreateDto) { + return this.institucionTipoCarritoService.create( + body.letra, + body.tipo_carrito, + ); + } + @Get() - get() {} + get() { + return this.institucionTipoCarritoService.findAll(); + } + + @Get('tipos_carritos_institucion') + tiposCarritosInstitucion(@Query() query: IdInstitucionDto) { + return this.institucionTipoCarritoService.findAllByIdInstitucion( + Number(query.id_institucion), + ); + } @Put() - update() {} + update(@Body() body: InstitucionTipoCarritoUpdateDto) { + this.institucionTipoCarritoService.update(body); + } } diff --git a/src/institucion-tipo-carrito/institucion-tipo-carrito.module.ts b/src/institucion-tipo-carrito/institucion-tipo-carrito.module.ts index 0ff3a59..19a1b6a 100644 --- a/src/institucion-tipo-carrito/institucion-tipo-carrito.module.ts +++ b/src/institucion-tipo-carrito/institucion-tipo-carrito.module.ts @@ -3,9 +3,14 @@ import { TypeOrmModule } from '@nestjs/typeorm'; import { InstitucionTipoCarritoController } from './institucion-tipo-carrito.controller'; import { InstitucionTipoCarritoService } from './institucion-tipo-carrito.service'; import { InstitucionTipoCarrito } from './entity/institucion-tipo-carrito.entity'; +import { TipoCarrito } from './entity/tipo-carrito.entity'; +import { InstitucionModule } from 'src/institucion/institucion.module'; @Module({ - imports: [TypeOrmModule.forFeature([InstitucionTipoCarrito])], + imports: [ + TypeOrmModule.forFeature([InstitucionTipoCarrito, TipoCarrito]), + InstitucionModule, + ], controllers: [InstitucionTipoCarritoController], providers: [InstitucionTipoCarritoService], }) diff --git a/src/institucion-tipo-carrito/institucion-tipo-carrito.service.ts b/src/institucion-tipo-carrito/institucion-tipo-carrito.service.ts index 2da34e0..573097b 100644 --- a/src/institucion-tipo-carrito/institucion-tipo-carrito.service.ts +++ b/src/institucion-tipo-carrito/institucion-tipo-carrito.service.ts @@ -1,4 +1,105 @@ -import { Injectable } from '@nestjs/common'; +import { + ConflictException, + Injectable, + NotFoundException, +} from '@nestjs/common'; +import { InjectRepository } from '@nestjs/typeorm'; +import { Repository } from 'typeorm'; +import { InstitucionTipoCarrito } from './entity/institucion-tipo-carrito.entity'; +import { TipoCarrito } from './entity/tipo-carrito.entity'; +import { InstitucionService } from 'src/institucion/institucion.service'; @Injectable() -export class InstitucionTipoCarritoService {} +export class InstitucionTipoCarritoService { + constructor( + @InjectRepository(TipoCarrito) + private repositoryTipoCarrito: Repository, + @InjectRepository(InstitucionTipoCarrito) + private repositoryInstitucionTipoCarrito: Repository, + private institucionService: InstitucionService, + ) {} + + create(letra: string, tipo_carrito: string) { + /** Checar que no este usando la letra ni el nombre */ + return this.repositoryTipoCarrito + .findOne({ letra, tipo_carrito }) + .then((existeTipoCarrito) => { + if (existeTipoCarrito) { + if (letra === existeTipoCarrito.letra) + throw new ConflictException( + 'Ya existe un tipo carrito con esta letra, intente con otra letra.', + ); + else + throw new ConflictException( + 'Ya existe un tipo carrito con este nombre, intente con otro nombre.', + ); + } + return this.repositoryTipoCarrito.save( + this.repositoryTipoCarrito.create({ letra, tipo_carrito }), + ); + }) + .then(async (tipoCarrito) => { + const instituciones = await this.institucionService.findAll(); + + for (let i = 0; i < instituciones.length; i++) { + await this.repositoryInstitucionTipoCarrito.save( + this.repositoryInstitucionTipoCarrito.create({ + tipoCarrito, + institucion: instituciones[i], + }), + ); + } + return { message: 'Se creo correctamente el tipo carrito.' }; + }); + } + + findAll() { + return this.repositoryTipoCarrito.find(); + } + + findAllByIdInstitucion(id_institucion: number) { + return this.institucionService + .findById(id_institucion) + .then((institucion) => + this.repositoryInstitucionTipoCarrito.find({ institucion }), + ); + } + + findAllByIdInstitucionMostar(id_institucion: number) { + return this.institucionService + .findById(id_institucion) + .then((institucion) => + this.repositoryInstitucionTipoCarrito.find({ + institucion, + mostrar: true, + }), + ); + } + + findById(id_institucion_tipo_carrito) { + return this.repositoryInstitucionTipoCarrito + .findOne({ + id_institucion_tipo_carrito, + }) + .then((institucionTipoCarrito) => { + if (!institucionTipoCarrito) + throw new NotFoundException( + 'No existe esta institucion tipo carrito.', + ); + return institucionTipoCarrito; + }); + } + + update(attrs: Partial) { + return this.findById(attrs.id_institucion_tipo_carrito) + .then((institucionTipoCarrito) => { + Object.assign(institucionTipoCarrito, attrs); + return this.repositoryInstitucionTipoCarrito.save( + institucionTipoCarrito, + ); + }) + .then((_) => ({ + message: 'Se actualió correctamente la institucion tipo carrtio.', + })); + } +} diff --git a/src/modulo/dto/modulo-crear.dto.ts b/src/modulo/dto/modulo-create.dto.ts similarity index 80% rename from src/modulo/dto/modulo-crear.dto.ts rename to src/modulo/dto/modulo-create.dto.ts index 732a578..5d047b4 100644 --- a/src/modulo/dto/modulo-crear.dto.ts +++ b/src/modulo/dto/modulo-create.dto.ts @@ -1,6 +1,6 @@ import { IsNumber, IsString } from 'class-validator'; -export class ModuloCrearDto { +export class ModuloCreateDto { @IsNumber() id_institucion: number; diff --git a/src/modulo/modulo.controller.ts b/src/modulo/modulo.controller.ts index fbba4a0..246c3dc 100644 --- a/src/modulo/modulo.controller.ts +++ b/src/modulo/modulo.controller.ts @@ -1,7 +1,7 @@ import { Body, Controller, Get, Post, Put, Query } from '@nestjs/common'; import { ModuloService } from './modulo.service'; import { IdInstitucionDto } from '../dto/id-institucion.dto'; -import { ModuloCrearDto } from './dto/modulo-crear.dto'; +import { ModuloCreateDto } from './dto/modulo-create.dto'; import { ModuloUpdateDto } from './dto/modulo-update.dto'; // import { Serealize } from '../interceptors/serialize.interceptor'; @Controller('modulo') @@ -9,7 +9,7 @@ export class ModuloController { constructor(private moduloService: ModuloService) {} @Post() - create(@Body() body: ModuloCrearDto) { + create(@Body() body: ModuloCreateDto) { return this.moduloService.create(body.id_institucion, body.modulo); } diff --git a/src/modulo/modulo.service.ts b/src/modulo/modulo.service.ts index 28eaa46..1071813 100644 --- a/src/modulo/modulo.service.ts +++ b/src/modulo/modulo.service.ts @@ -11,41 +11,41 @@ import { InstitucionService } from '../institucion/institucion.service'; @Injectable() export class ModuloService { constructor( - @InjectRepository(Modulo) private moduloRepository: Repository, + @InjectRepository(Modulo) private repository: Repository, private institucionService: InstitucionService, ) {} async create(id_institucion: number, modulo: string) { const institucion = await this.institucionService.findById(id_institucion); - const nuevoModulo = this.moduloRepository.create({ + const nuevoModulo = this.repository.create({ institucion, modulo, }); - return this.moduloRepository + return this.repository .findOne({ modulo, institucion }) .then((existeModulo) => { if (existeModulo) throw new ConflictException( 'Ya existe un módulo con este nombre, intente con otro nombre.', ); - return this.moduloRepository.save(nuevoModulo); + return this.repository.save(nuevoModulo); }) - .then(() => ({ message: 'Se creo correctamente el módulo.' })); + .then((_) => ({ message: 'Se creo correctamente el módulo.' })); } findAll() { - return this.moduloRepository.find(); + return this.repository.find(); } findAllByIdInstitucion(id_institucion: number) { return this.institucionService .findById(id_institucion) - .then((institucion) => this.moduloRepository.find({ institucion })); + .then((institucion) => this.repository.find({ institucion })); } findById(id_modulo: number) { - return this.moduloRepository.findOne({ id_modulo }).then((modulo) => { + return this.repository.findOne({ id_modulo }).then((modulo) => { if (!modulo) throw new NotFoundException('No existe este módulo.'); return modulo; }); @@ -54,7 +54,7 @@ export class ModuloService { async update(attrs: Partial) { const modulo = await this.findById(attrs.id_modulo); - return this.moduloRepository + return this.repository .findOne({ modulo: attrs.modulo, institucion: modulo.institucion }) .then((existeModulo) => { if (existeModulo) @@ -62,9 +62,9 @@ export class ModuloService { 'Ya existe un módulo con este nombre, intente con otro nombre.', ); Object.assign(modulo, attrs); - return this.moduloRepository.save(modulo); + return this.repository.save(modulo); }) - .then(() => ({ + .then((_) => ({ message: 'Se actualizo correctamente la información del módulo.', })); } diff --git a/src/tipo-carrito/tipo-carrito.controller.spec.ts b/src/tipo-carrito/tipo-carrito.controller.spec.ts deleted file mode 100644 index b7abc3a..0000000 --- a/src/tipo-carrito/tipo-carrito.controller.spec.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { TipoCarritoController } from './tipo-carrito.controller'; - -describe('TipoCarritoController', () => { - let controller: TipoCarritoController; - - beforeEach(async () => { - const module: TestingModule = await Test.createTestingModule({ - controllers: [TipoCarritoController], - }).compile(); - - controller = module.get(TipoCarritoController); - }); - - it('should be defined', () => { - expect(controller).toBeDefined(); - }); -}); diff --git a/src/tipo-carrito/tipo-carrito.controller.ts b/src/tipo-carrito/tipo-carrito.controller.ts deleted file mode 100644 index 72522cd..0000000 --- a/src/tipo-carrito/tipo-carrito.controller.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Controller, Get } from '@nestjs/common'; -import { TipoCarritoService } from './tipo-carrito.service'; - -@Controller('tipo-carrito') -export class TipoCarritoController { - constructor(private tipoCarritoService: TipoCarritoService) {} - - @Get() - get() {} -} diff --git a/src/tipo-carrito/tipo-carrito.module.ts b/src/tipo-carrito/tipo-carrito.module.ts deleted file mode 100644 index d87957d..0000000 --- a/src/tipo-carrito/tipo-carrito.module.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Module } from '@nestjs/common'; -import { TypeOrmModule } from '@nestjs/typeorm'; -import { TipoCarritoController } from './tipo-carrito.controller'; -import { TipoCarritoService } from './tipo-carrito.service'; -import { TipoCarrito } from './entity/tipo-carrito.entity'; - -@Module({ - imports: [TypeOrmModule.forFeature([TipoCarrito])], - controllers: [TipoCarritoController], - providers: [TipoCarritoService], -}) -export class TipoCarritoModule {} diff --git a/src/tipo-carrito/tipo-carrito.service.spec.ts b/src/tipo-carrito/tipo-carrito.service.spec.ts deleted file mode 100644 index c0a49f5..0000000 --- a/src/tipo-carrito/tipo-carrito.service.spec.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { TipoCarritoService } from './tipo-carrito.service'; - -describe('TipoCarritoService', () => { - let service: TipoCarritoService; - - beforeEach(async () => { - const module: TestingModule = await Test.createTestingModule({ - providers: [TipoCarritoService], - }).compile(); - - service = module.get(TipoCarritoService); - }); - - it('should be defined', () => { - expect(service).toBeDefined(); - }); -}); diff --git a/src/tipo-carrito/tipo-carrito.service.ts b/src/tipo-carrito/tipo-carrito.service.ts deleted file mode 100644 index 3b67a61..0000000 --- a/src/tipo-carrito/tipo-carrito.service.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Injectable } from '@nestjs/common'; -import { InjectRepository } from '@nestjs/typeorm'; -import { Repository } from 'typeorm'; -import { TipoCarrito } from './entity/tipo-carrito.entity'; - -@Injectable() -export class TipoCarritoService { - constructor( - @InjectRepository(TipoCarrito) private repository: Repository, - ) {} -}