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