multa a espera de pruebas
This commit is contained in:
parent
fb5ebec04e
commit
af0e81cb62
@ -11,6 +11,12 @@ export class CronService {
|
||||
private usuarioService: UsuarioService,
|
||||
) {}
|
||||
|
||||
@Cron('0 6 * * * *', { name: 'multas' })
|
||||
revisarMultas() {}
|
||||
// @Cron('0 6 * * * *', { name: 'multas' })
|
||||
// revisarMultas() {}
|
||||
|
||||
// @Cron('0 6 * * * *', { name: '' })
|
||||
// desactivarPrestamos() {}
|
||||
|
||||
// @Cron('0 6 * * * *', { name: '' })
|
||||
// desactivarActualizarEquipos() {}
|
||||
}
|
||||
|
10
src/multa/dto/input/multas.dto.ts
Normal file
10
src/multa/dto/input/multas.dto.ts
Normal file
@ -0,0 +1,10 @@
|
||||
import { IsNumberString, IsOptional } from 'class-validator';
|
||||
|
||||
export class MultasDto {
|
||||
@IsNumberString()
|
||||
pagina: string;
|
||||
|
||||
@IsNumberString()
|
||||
@IsOptional()
|
||||
id_institucion?: string;
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
import { IsNumberString } from 'class-validator';
|
||||
|
||||
export class MultaInstitucionDto {
|
||||
@IsNumberString()
|
||||
id_institucion: string;
|
||||
|
||||
@IsNumberString()
|
||||
pagina: string;
|
||||
}
|
@ -8,6 +8,7 @@ import {
|
||||
} from 'typeorm';
|
||||
import { InstitucionInfraccion } from '../../institucion-infraccion/entity/institucion-infraccion.entity';
|
||||
import { Prestamo } from '../../prestamo/entity/prestamo.entity';
|
||||
import { Operador } from '../../operador/entity/operador.entity';
|
||||
|
||||
@Entity()
|
||||
export class Multa {
|
||||
@ -29,11 +30,15 @@ export class Multa {
|
||||
@ManyToOne(
|
||||
() => InstitucionInfraccion,
|
||||
(institucionInfraccion) => institucionInfraccion.multas,
|
||||
{ eager: true },
|
||||
)
|
||||
@JoinColumn({ name: 'id_institucion_infraccion' })
|
||||
institucionInfraccion: InstitucionInfraccion;
|
||||
|
||||
@ManyToOne(() => Operador, (operador) => operador.multas, { eager: true })
|
||||
@JoinColumn({ name: 'id_operador' })
|
||||
opeardorMulta: Operador;
|
||||
|
||||
@OneToOne(() => Prestamo)
|
||||
@JoinColumn({ name: 'id_prestamo' })
|
||||
prestamo: Prestamo;
|
||||
}
|
||||
|
@ -1,9 +1,10 @@
|
||||
import { Controller, Get, Query } from '@nestjs/common';
|
||||
import { ApiOperation, ApiQuery, ApiTags } from '@nestjs/swagger';
|
||||
import { Serealize } from '../interceptors/serialize.interceptor';
|
||||
import { MultaService } from './multa.service';
|
||||
import { IdEquipoPaginaDto } from '../dto/id-equipo-pagina.dto';
|
||||
import { MultaInstitucionDto } from './dto/multa-intitucion.dto';
|
||||
import { MultaUsuarioDto } from './dto/multa-usuario.dto';
|
||||
import { MultasDto } from './dto/input/multas.dto';
|
||||
import { MultaUsuarioDto } from './dto/input/usuario.dto';
|
||||
|
||||
@Controller('multa')
|
||||
@ApiTags('multa')
|
||||
@ -24,11 +25,8 @@ export class MultaController {
|
||||
name: 'pagina',
|
||||
type: 'string',
|
||||
})
|
||||
multas(@Query() query: MultaInstitucionDto) {
|
||||
return this.multaService.findAllByIdInstitucion(
|
||||
parseInt(query.id_institucion),
|
||||
parseInt(query.pagina),
|
||||
);
|
||||
multas(@Query() query: MultasDto) {
|
||||
return this.multaService.findAll(query);
|
||||
}
|
||||
|
||||
@Get('multas-equipo')
|
||||
|
@ -1,9 +1,11 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
import { InjectRepository } from '@nestjs/typeorm';
|
||||
import { Repository } from 'typeorm';
|
||||
import * as moment from 'moment';
|
||||
import { ConflictException, Injectable } from '@nestjs/common';
|
||||
import { InjectRepository } from '@nestjs/typeorm';
|
||||
import { FindOperator, Like, Repository } from 'typeorm';
|
||||
import { Institucion } from '../institucion/entity/institucion.entity';
|
||||
import { InstitucionInfraccion } from '../institucion-infraccion/entity/institucion-infraccion.entity';
|
||||
import { Multa } from './entity/multa.entity';
|
||||
import { Operador } from '../operador/entity/operador.entity';
|
||||
import { Prestamo } from '../prestamo/entity/prestamo.entity';
|
||||
import { EquipoService } from '../equipo/equipo.service';
|
||||
import { InstitucionService } from '../institucion/institucion.service';
|
||||
@ -25,50 +27,101 @@ export class MultaService {
|
||||
) {}
|
||||
|
||||
async create(
|
||||
id_institucion_infraccion: number,
|
||||
id_prestamo: number,
|
||||
id_operador: number,
|
||||
retraso: boolean,
|
||||
retraso?: boolean,
|
||||
id_institucion_infraccion?: number,
|
||||
) {
|
||||
const ahora = moment();
|
||||
const prestamo = await this.prestamoService.findById(id_prestamo);
|
||||
const operador = await this.operadorService.findById(id_operador);
|
||||
const data: {
|
||||
prestamo: Prestamo;
|
||||
operador: Operador;
|
||||
fecha_inicio: Date;
|
||||
institucionInfraccion?: InstitucionInfraccion;
|
||||
retraso?: boolean;
|
||||
fecha_fin?: Date;
|
||||
} = { fecha_inicio: ahora.toDate(), prestamo, operador };
|
||||
const institucionInfraccion = id_institucion_infraccion
|
||||
? await this.institucionInfraccionService.findById(
|
||||
id_institucion_infraccion,
|
||||
)
|
||||
: null;
|
||||
const data: {
|
||||
prestamo: Prestamo;
|
||||
institucionInfraccion?: InstitucionInfraccion;
|
||||
retraso?: boolean;
|
||||
} = { prestamo };
|
||||
|
||||
// const nuevo
|
||||
// this.repository.create({
|
||||
// institucionInfraccion,
|
||||
// prestamo,
|
||||
// fecha_inicio: new Date(),
|
||||
// });
|
||||
|
||||
if (retraso) data.retraso = retraso;
|
||||
if (institucionInfraccion) data.institucionInfraccion;
|
||||
if (!retraso && !institucionInfraccion)
|
||||
throw new ConflictException(
|
||||
'No se mandó ningún motivo para multar a este alumno.',
|
||||
);
|
||||
return this.repository.findOne({ prestamo }).then((existeMulta) => {
|
||||
if (existeMulta)
|
||||
throw new ConflictException(
|
||||
'Ya existe una multa asignada a este prestamo.',
|
||||
);
|
||||
if (retraso) {
|
||||
data.retraso = retraso;
|
||||
ahora.add(operador.institucion.dias_multa_retraso, 'd');
|
||||
}
|
||||
if (institucionInfraccion) {
|
||||
data.institucionInfraccion = institucionInfraccion;
|
||||
ahora.add(institucionInfraccion.dias_multa, 'd');
|
||||
}
|
||||
data.fecha_fin = ahora.toDate();
|
||||
return this.repository.save(this.repository.create(data));
|
||||
});
|
||||
}
|
||||
|
||||
findAllByIdInstitucion(id_institucion: number, pagina: number) {
|
||||
return this.institucionService
|
||||
.findById(id_institucion)
|
||||
.then((institucion) =>
|
||||
this.repository.findAndCount({
|
||||
where: {},
|
||||
skip: (pagina - 1) * 25,
|
||||
take: 25,
|
||||
}),
|
||||
);
|
||||
async findAll(filtros: {
|
||||
pagina: string;
|
||||
id_institucion?: string;
|
||||
usuario?: string;
|
||||
}) {
|
||||
const busqueda: {
|
||||
prestamo: {
|
||||
equipo: { carrito: { modulo: { institucion?: Institucion } } };
|
||||
usuario: { usuario?: FindOperator<string> };
|
||||
};
|
||||
} = {
|
||||
prestamo: { equipo: { carrito: { modulo: {} } }, usuario: {} },
|
||||
};
|
||||
const institucion = filtros.id_institucion
|
||||
? await this.institucionService.findById(parseInt(filtros.id_institucion))
|
||||
: null;
|
||||
|
||||
if (filtros.usuario)
|
||||
busqueda.prestamo.usuario.usuario = Like(filtros.usuario);
|
||||
if (institucion)
|
||||
busqueda.prestamo.equipo.carrito.modulo.institucion = institucion;
|
||||
return this.repository.findAndCount({
|
||||
join: {
|
||||
alias: 'mu',
|
||||
innerJoinAndSelect: {
|
||||
p: 'mu.prestamo',
|
||||
e: 'p.equipo',
|
||||
c: 'e.carrito',
|
||||
m: 'c.modulo',
|
||||
i: 'm.institucion',
|
||||
},
|
||||
},
|
||||
where: busqueda,
|
||||
skip: (parseInt(filtros.pagina) - 1) * 25,
|
||||
take: 25,
|
||||
});
|
||||
}
|
||||
|
||||
findAllByIdEquipo(id_equipo: number, pagina: number) {
|
||||
return this.equipoService.findById(id_equipo).then((equipo) =>
|
||||
this.repository.findAndCount({
|
||||
join: {
|
||||
alias: 'mu',
|
||||
innerJoinAndSelect: {
|
||||
p: 'mu.prestamo',
|
||||
e: 'p.equipo',
|
||||
c: 'e.carrito',
|
||||
m: 'c.modulo',
|
||||
i: 'm.institucion',
|
||||
},
|
||||
},
|
||||
where: { prestamo: { equipo } },
|
||||
skip: (pagina - 1) * 25,
|
||||
take: 25,
|
||||
@ -79,6 +132,16 @@ export class MultaService {
|
||||
findAllByIdUsuario(id_usuario: number, pagina: number) {
|
||||
return this.usuarioService.findById(id_usuario).then((usuario) =>
|
||||
this.repository.findAndCount({
|
||||
join: {
|
||||
alias: 'mu',
|
||||
innerJoinAndSelect: {
|
||||
p: 'mu.prestamo',
|
||||
e: 'p.equipo',
|
||||
c: 'e.carrito',
|
||||
m: 'c.modulo',
|
||||
i: 'm.institucion',
|
||||
},
|
||||
},
|
||||
where: { prestamo: { usuario } },
|
||||
skip: (pagina - 1) * 25,
|
||||
take: 25,
|
||||
|
@ -8,6 +8,7 @@ import {
|
||||
} from 'typeorm';
|
||||
import { Institucion } from '../../institucion/entity/institucion.entity';
|
||||
import { Motivo } from '../../motivo/entity/motivo.entity';
|
||||
import { Multa } from '../../multa/entity/multa.entity';
|
||||
import { Prestamo } from '../../prestamo/entity/prestamo.entity';
|
||||
import { TipoUsuario } from '../../tipo-usuario/entity/tipo-usuario.entity';
|
||||
|
||||
@ -37,12 +38,15 @@ export class Operador {
|
||||
@JoinColumn({ name: 'id_tipo_usuario' })
|
||||
tipoUsuario: TipoUsuario;
|
||||
|
||||
@OneToMany(() => Motivo, (motivo) => motivo.operador)
|
||||
motivos: Motivo[];
|
||||
|
||||
@OneToMany(() => Multa, (multa) => multa.opeardorMulta)
|
||||
multas: Multa[];
|
||||
|
||||
@OneToMany(() => Prestamo, (prestamo) => prestamo.operadorEntrega)
|
||||
prestamosOperadorEntrega: Prestamo[];
|
||||
|
||||
@OneToMany(() => Prestamo, (prestamo) => prestamo.operadorRegreso)
|
||||
prestamosOperadorRegreso: Prestamo[];
|
||||
|
||||
@OneToMany(() => Motivo, (motivo) => motivo.operador)
|
||||
motivos: Motivo[];
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user