motivo en cancelacion operador

This commit is contained in:
xXpuma99Xx 2022-06-14 17:11:59 -05:00
parent af0e81cb62
commit 2ddd98be37
7 changed files with 59 additions and 12 deletions

View File

@ -16,5 +16,6 @@ import { StatusModule } from '../status/status.module';
],
controllers: [MotivoController],
providers: [MotivoService],
exports: [MotivoService],
})
export class MotivoModule {}

View File

@ -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,

View File

@ -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;

View File

@ -0,0 +1,12 @@
import { IsInt, IsString } from 'class-validator';
export class CancelarOperadorDto {
@IsInt()
id_operador: number;
@IsInt()
id_prestamo: number;
@IsString()
motivo: string;
}

View File

@ -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,
);
}

View File

@ -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]),

View File

@ -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)