From 6519c71a6fc68ac851812ec1b9757adfca7d92cb Mon Sep 17 00:00:00 2001 From: lemuel Date: Tue, 19 Apr 2022 15:26:52 -0500 Subject: [PATCH] institucion infraccion listo --- catalogos.sql | 22 ++++++ .../dto/institucion-infraccion-create.dto.ts | 6 ++ .../dto/institucion-infraccion-update.dto.ts | 9 +++ .../entity/institucion-infraccion.entity.ts | 1 + .../institucion-infraccion.controller.ts | 25 ++++++- .../institucion-infraccion.module.ts | 6 +- .../institucion-infraccion.service.ts | 70 ++++++++++++++++++- .../institucion-tipo-carrito.service.ts | 3 +- 8 files changed, 134 insertions(+), 8 deletions(-) create mode 100644 catalogos.sql create mode 100644 src/institucion-infraccion/dto/institucion-infraccion-create.dto.ts create mode 100644 src/institucion-infraccion/dto/institucion-infraccion-update.dto.ts diff --git a/catalogos.sql b/catalogos.sql new file mode 100644 index 0000000..74899ee --- /dev/null +++ b/catalogos.sql @@ -0,0 +1,22 @@ +INSERT INTO institucion (institucion, logo) VALUES ("Facultad de Arquitectura", "url"); +INSERT INTO institucion (institucion, logo) VALUES ("FES Acatlán", "url"); + +INSERT INTO carrera (carrera, id_institucion) VALUES ("Matemáticas Aplicadas y Computación", 2); +INSERT INTO carrera (carrera, id_institucion) VALUES ("Arquitectura", 1); + +INSERT INTO status (status) VALUES ("Activo"); +INSERT INTO status (status) VALUES ("Apartado"); +INSERT INTO status (status) VALUES ("En uso"); +INSERT INTO status (status) VALUES ("Desactivado"); +INSERT INTO status (status) VALUES ("Cargando"); +INSERT INTO status (status) VALUES ("Revisar"); +INSERT INTO status (status) VALUES ("Reparación"); +INSERT INTO status (status) VALUES ("Mantenimiento"); + +INSERT INTO tipo_usuario (tipo_usuario) VALUES ("Sistema"); +INSERT INTO tipo_usuario (tipo_usuario) VALUES ("Super Admin"); +INSERT INTO tipo_usuario (tipo_usuario) VALUES ("Admin"); +INSERT INTO tipo_usuario (tipo_usuario) VALUES ("Operador"); +INSERT INTO tipo_usuario (tipo_usuario) VALUES ("Profesor"); +INSERT INTO tipo_usuario (tipo_usuario) VALUES ("Alumno"); +INSERT INTO tipo_usuario (tipo_usuario) VALUES ("Posgrado"); diff --git a/src/institucion-infraccion/dto/institucion-infraccion-create.dto.ts b/src/institucion-infraccion/dto/institucion-infraccion-create.dto.ts new file mode 100644 index 0000000..83ee19b --- /dev/null +++ b/src/institucion-infraccion/dto/institucion-infraccion-create.dto.ts @@ -0,0 +1,6 @@ +import { IsString } from 'class-validator'; + +export class InstitucionInfraccionCreateDto { + @IsString() + infraccion: string; +} diff --git a/src/institucion-infraccion/dto/institucion-infraccion-update.dto.ts b/src/institucion-infraccion/dto/institucion-infraccion-update.dto.ts new file mode 100644 index 0000000..49c43a0 --- /dev/null +++ b/src/institucion-infraccion/dto/institucion-infraccion-update.dto.ts @@ -0,0 +1,9 @@ +import { IsNumber } from 'class-validator'; + +export class InstitucionInfraccionUpdateDto { + @IsNumber() + id_institucion_infraccion: number; + + @IsNumber() + dias_multa: number; +} diff --git a/src/institucion-infraccion/entity/institucion-infraccion.entity.ts b/src/institucion-infraccion/entity/institucion-infraccion.entity.ts index ee57371..82efa0d 100644 --- a/src/institucion-infraccion/entity/institucion-infraccion.entity.ts +++ b/src/institucion-infraccion/entity/institucion-infraccion.entity.ts @@ -21,6 +21,7 @@ export class InstitucionInfraccion { @ManyToOne( () => Infraccion, (infraccion) => infraccion.institucionInfracciones, + { eager: true }, ) @JoinColumn({ name: 'id_infraccion' }) infraccion: Infraccion; diff --git a/src/institucion-infraccion/institucion-infraccion.controller.ts b/src/institucion-infraccion/institucion-infraccion.controller.ts index 47fb12f..eea12b3 100644 --- a/src/institucion-infraccion/institucion-infraccion.controller.ts +++ b/src/institucion-infraccion/institucion-infraccion.controller.ts @@ -1,5 +1,8 @@ -import { Controller, Get, Put } from '@nestjs/common'; +import { Body, Controller, Get, Post, Put, Query } from '@nestjs/common'; import { InstitucionInfraccionService } from './institucion-infraccion.service'; +import { IdInstitucionDto } from '../dto/id-institucion.dto'; +import { InstitucionInfraccionCreateDto } from './dto/institucion-infraccion-create.dto'; +import { InstitucionInfraccionUpdateDto } from './dto/institucion-infraccion-update.dto'; @Controller('institucion-infraccion') export class InstitucionInfraccionController { @@ -7,9 +10,25 @@ export class InstitucionInfraccionController { private institucionInfraccionService: InstitucionInfraccionService, ) {} + @Post() + create(@Body() body: InstitucionInfraccionCreateDto) { + return this.institucionInfraccionService.create(body.infraccion); + } + @Get() - get() {} + get() { + return this.institucionInfraccionService.findAll(); + } + + @Get('institucion_infracciones') + institucionInfracciones(@Query() query: IdInstitucionDto) { + return this.institucionInfraccionService.findAllByIdInstitucion( + Number(query.id_institucion), + ); + } @Put() - update() {} + update(@Body() body: InstitucionInfraccionUpdateDto) { + return this.institucionInfraccionService.update(body); + } } diff --git a/src/institucion-infraccion/institucion-infraccion.module.ts b/src/institucion-infraccion/institucion-infraccion.module.ts index 2061321..bbf7d6a 100644 --- a/src/institucion-infraccion/institucion-infraccion.module.ts +++ b/src/institucion-infraccion/institucion-infraccion.module.ts @@ -4,9 +4,13 @@ import { InstitucionInfraccionController } from './institucion-infraccion.contro import { InstitucionInfraccionService } from './institucion-infraccion.service'; import { Infraccion } from './entity/infraccion.entity'; import { InstitucionInfraccion } from './entity/institucion-infraccion.entity'; +import { InstitucionModule } from '../institucion/institucion.module'; @Module({ - imports: [TypeOrmModule.forFeature([Infraccion, InstitucionInfraccion])], + imports: [ + TypeOrmModule.forFeature([Infraccion, InstitucionInfraccion]), + InstitucionModule, + ], controllers: [InstitucionInfraccionController], providers: [InstitucionInfraccionService], }) diff --git a/src/institucion-infraccion/institucion-infraccion.service.ts b/src/institucion-infraccion/institucion-infraccion.service.ts index 6b8e097..36e4455 100644 --- a/src/institucion-infraccion/institucion-infraccion.service.ts +++ b/src/institucion-infraccion/institucion-infraccion.service.ts @@ -1,12 +1,78 @@ -import { Injectable } from '@nestjs/common'; +import { + ConflictException, + Injectable, + NotFoundException, +} from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { InstitucionInfraccion } from './entity/institucion-infraccion.entity'; +import { Infraccion } from './entity/infraccion.entity'; +import { InstitucionService } from 'src/institucion/institucion.service'; @Injectable() export class InstitucionInfraccionService { constructor( @InjectRepository(InstitucionInfraccion) - private repository: Repository, + private repositoryInstitucionInfraccion: Repository, + @InjectRepository(Infraccion) + private repositoryInfraccion: Repository, + private institucionService: InstitucionService, ) {} + + create(infraccion: string) { + return this.repositoryInfraccion + .findOne({ infraccion }) + .then((existeInfraccion) => { + if (existeInfraccion) + throw new ConflictException('Ya existe esta infracción.'); + return this.repositoryInfraccion.save( + this.repositoryInfraccion.create({ infraccion }), + ); + }) + .then(async (infraccion) => { + const instituciones = await this.institucionService.findAll(); + + for (let i = 0; i < instituciones.length; i++) + await this.repositoryInstitucionInfraccion.save( + this.repositoryInstitucionInfraccion.create({ + infraccion, + institucion: instituciones[i], + }), + ); + return { message: 'Se creo creo correctamente la infracción.' }; + }); + } + + findAll() { + return this.repositoryInfraccion.find(); + } + + findAllByIdInstitucion(id_institucion: number) { + return this.institucionService + .findById(id_institucion) + .then((institucion) => + this.repositoryInstitucionInfraccion.find({ institucion }), + ); + } + + findById(id_institucion_infraccion: number) { + return this.repositoryInstitucionInfraccion + .findOne({ id_institucion_infraccion }) + .then((institucionInfraccion) => { + if (!institucionInfraccion) + throw new NotFoundException('No existe esta institucion infracción.'); + return institucionInfraccion; + }); + } + + update(attrs: Partial) { + return this.findById(attrs.id_institucion_infraccion) + .then((institucionInfraccion) => { + Object.assign(institucionInfraccion, attrs); + return this.repositoryInstitucionInfraccion.save(institucionInfraccion); + }) + .then((_) => ({ + message: 'Se actualió correctamente la institucion infracción.', + })); + } } diff --git a/src/institucion-tipo-carrito/institucion-tipo-carrito.service.ts b/src/institucion-tipo-carrito/institucion-tipo-carrito.service.ts index 573097b..2297062 100644 --- a/src/institucion-tipo-carrito/institucion-tipo-carrito.service.ts +++ b/src/institucion-tipo-carrito/institucion-tipo-carrito.service.ts @@ -41,14 +41,13 @@ export class InstitucionTipoCarritoService { .then(async (tipoCarrito) => { const instituciones = await this.institucionService.findAll(); - for (let i = 0; i < instituciones.length; i++) { + 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.' }; }); }