diff --git a/src/motivo/motivo.module.ts b/src/motivo/motivo.module.ts index 7348e35..8930f0e 100644 --- a/src/motivo/motivo.module.ts +++ b/src/motivo/motivo.module.ts @@ -16,5 +16,6 @@ import { StatusModule } from '../status/status.module'; ], controllers: [MotivoController], providers: [MotivoService], + exports: [MotivoService], }) export class MotivoModule {} diff --git a/src/motivo/motivo.service.ts b/src/motivo/motivo.service.ts index 3a5c94e..342620b 100644 --- a/src/motivo/motivo.service.ts +++ b/src/motivo/motivo.service.ts @@ -1,3 +1,4 @@ +import * as moment from 'moment'; import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; @@ -5,6 +6,9 @@ import { Motivo } from './entity/motivo.entity'; import { EquipoService } from '../equipo/equipo.service'; import { OperadorService } from '../operador/operador.service'; import { StatusService } from '../status/status.service'; +import { Equipo } from 'src/equipo/entity/equipo.entity'; +import { Operador } from 'src/operador/entity/operador.entity'; +import { Status } from 'src/status/entity/status.entity'; @Injectable() export class MotivoService { @@ -16,19 +20,24 @@ export class MotivoService { ) {} async create( - id_equipo: number, - id_operador: number, - id_status: number, + equipo: Equipo, + id_operador: number | Operador, + id_status: number | Status, motivo: string, ) { - const equipo = await this.equipoService.findById(id_equipo); - const operador = await this.operadorService.findById(id_operador); - const status = await this.statusService.findById(id_status); + const operador = + typeof id_operador === 'number' + ? await this.operadorService.findById(id_operador) + : id_operador; + const status = + typeof id_status === 'number' + ? await this.statusService.findById(id_status) + : id_status; return this.repository.save( this.repository.create({ equipo, - fecha_creacion: new Date(), + fecha_creacion: moment().toDate(), motivo, operador, status, diff --git a/src/multa/entity/multa.entity.ts b/src/multa/entity/multa.entity.ts index ecd2ac7..26bcc63 100644 --- a/src/multa/entity/multa.entity.ts +++ b/src/multa/entity/multa.entity.ts @@ -18,6 +18,9 @@ export class Multa { @Column({ type: Boolean, nullable: false, default: true }) activo: boolean; + @Column({ type: String, nullable: false }) + descripcion: string; + @Column({ type: Date, nullable: false }) fecha_fin: Date; diff --git a/src/prestamo/dto/input/cancelar-operador.dto.ts b/src/prestamo/dto/input/cancelar-operador.dto.ts new file mode 100644 index 0000000..07d1214 --- /dev/null +++ b/src/prestamo/dto/input/cancelar-operador.dto.ts @@ -0,0 +1,12 @@ +import { IsInt, IsString } from 'class-validator'; + +export class CancelarOperadorDto { + @IsInt() + id_operador: number; + + @IsInt() + id_prestamo: number; + + @IsString() + motivo: string; +} diff --git a/src/prestamo/prestamo.controller.ts b/src/prestamo/prestamo.controller.ts index 303d72f..9ed0625 100644 --- a/src/prestamo/prestamo.controller.ts +++ b/src/prestamo/prestamo.controller.ts @@ -12,6 +12,7 @@ import { HistorialEquipoDto } from './dto/input/historial-equipo.dto'; import { HistorialUsuarioDto } from './dto/input/historial-usuario.dto'; import { UpdateOperadorDto } from './dto/input/update-operador.dto'; import { CancelarUsuarioDto } from './dto/input/cancelar-usuario.dto'; +import { CancelarOperadorDto } from './dto/input/cancelar-operador.dto'; import { PrestamoOutputDto } from './dto/output/prestamo.dto'; import { PrestamoActivoOutputDto } from './dto/output/prestamo-activo.dto'; import { PrestamoUsuarioOutputDto } from './dto/output/prestamo-usuario.dto'; @@ -93,10 +94,11 @@ export class PrestamoController { description: 'Ambas variables son obligatorias.', examples: { ejemplo: { value: { id_prestamo: 1, id_operador: 1 } } }, }) - cancelarOperador(@Body() body: UpdateOperadorDto) { + cancelarOperador(@Body() body: CancelarOperadorDto) { return this.prestamoService.cancelarOperador( body.id_prestamo, body.id_operador, + body.motivo, ); } diff --git a/src/prestamo/prestamo.module.ts b/src/prestamo/prestamo.module.ts index 9ff0d6a..e7e6775 100644 --- a/src/prestamo/prestamo.module.ts +++ b/src/prestamo/prestamo.module.ts @@ -11,6 +11,7 @@ import { InstitucionTipoCarritoModule } from '../institucion-tipo-carrito/instit import { InstitucionTipoEntradaModule } from '../institucion-tipo-entrada/institucion-tipo-entrada.module'; import { OperadorModule } from '../operador/operador.module'; import { ModuloModule } from '../modulo/modulo.module'; +import { MotivoModule } from '../motivo/motivo.module'; import { StatusModule } from '../status/status.module'; import { TipoUsuarioModule } from '../tipo-usuario/tipo-usuario.module'; import { UsuarioModule } from '../usuario/usuario.module'; @@ -23,6 +24,7 @@ import { UsuarioModule } from '../usuario/usuario.module'; InstitucionTipoCarritoModule, InstitucionTipoEntradaModule, ModuloModule, + MotivoModule, OperadorModule, StatusModule, TypeOrmModule.forFeature([Prestamo]), diff --git a/src/prestamo/prestamo.service.ts b/src/prestamo/prestamo.service.ts index 304a3c4..23f3401 100644 --- a/src/prestamo/prestamo.service.ts +++ b/src/prestamo/prestamo.service.ts @@ -19,6 +19,7 @@ import { InstitucionProgramaService } from '../institucion-programa/institucion- import { InstitucionTipoCarritoService } from '../institucion-tipo-carrito/institucion-tipo-carrito.service'; import { InstitucionTipoEntradaService } from '../institucion-tipo-entrada/institucion-tipo-entrada.service'; import { ModuloService } from '../modulo/modulo.service'; +import { MotivoService } from '../motivo/motivo.service'; import { OperadorService } from '../operador/operador.service'; import { StatusService } from '../status/status.service'; import { TipoUsuarioService } from '../tipo-usuario/tipo-usuario.service'; @@ -35,14 +36,20 @@ export class PrestamoService { private institucionTipoCarritoService: InstitucionTipoCarritoService, private institucionTipoEntradaService: InstitucionTipoEntradaService, private moduloService: ModuloService, + private motivoService: MotivoService, private operadorService: OperadorService, private statusService: StatusService, private tipoUsuarioService: TipoUsuarioService, private usuarioService: UsuarioService, ) {} - async cancelarOperador(id_prestamo: number, id_operador: number) { + async cancelarOperador( + id_prestamo: number, + id_operador: number, + motivo: string, + ) { const ahora = moment(); + const revisar = await this.statusService.findById(6); const operadorRegreso = await this.operadorService.findById(id_operador); const prestamo = await this.findById(id_prestamo); @@ -60,9 +67,17 @@ export class PrestamoService { prestamo.fecha_entrega = ahora.toDate(); prestamo.cancelado_operador = true; prestamo.operadorRegreso = operadorRegreso; - prestamo.equipo.status = await this.statusService.findById(6); + prestamo.equipo.status = revisar; return this.equipoService .update(prestamo.equipo) + .then((_) => + this.motivoService.create( + prestamo.equipo, + operadorRegreso, + revisar, + motivo, + ), + ) .then((_) => this.repository.save(prestamo)) .then((_) => ({ message: 'Se canceló correctamente este préstamo.' })); } @@ -351,10 +366,13 @@ export class PrestamoService { } async findByNumeroInventario( - id_institucion: number, + id_institucion: number | Institucion, numero_inventario: string, ) { - const institucion = await this.institucionService.findById(id_institucion); + const institucion = + typeof id_institucion === 'number' + ? await this.institucionService.findById(id_institucion) + : id_institucion; return this.equipoService .findByNumeroInventario(institucion, numero_inventario)