casi listo
This commit is contained in:
+19
-10
@@ -1,7 +1,7 @@
|
||||
import * as moment from 'moment';
|
||||
import { ConflictException, Injectable } from '@nestjs/common';
|
||||
import { InjectRepository } from '@nestjs/typeorm';
|
||||
import { DeepPartial, FindOptionsWhere, Like, Repository } from 'typeorm';
|
||||
import { FindOptionsWhere, Like, Repository } from 'typeorm';
|
||||
import { Multa } from './entity/multa.entity';
|
||||
import { FullInformacionMultaView } from './entity/views/full-informacion-multa.view';
|
||||
import { InformacionMultaView } from './entity/views/informacion-multa.view';
|
||||
@@ -39,6 +39,7 @@ export class MultaService {
|
||||
retraso?: number,
|
||||
id_institucion_infraccion?: number,
|
||||
) {
|
||||
console.log('hola1');
|
||||
const ahora = moment();
|
||||
const prestamo =
|
||||
typeof id_prestamo === 'number'
|
||||
@@ -48,51 +49,59 @@ export class MultaService {
|
||||
typeof id_operador === 'number'
|
||||
? await this.operadorService.findById(id_operador)
|
||||
: id_operador;
|
||||
const data: DeepPartial<Multa> = {
|
||||
// Creo registro de multa
|
||||
const nuevaMulta = this.repository.create({
|
||||
descripcion,
|
||||
fecha_inicio: ahora.toDate(),
|
||||
operadorMulta: operador,
|
||||
prestamo,
|
||||
};
|
||||
});
|
||||
let institucionInfraccion = id_institucion_infraccion
|
||||
? await this.institucionInfraccionService.findById(
|
||||
id_institucion_infraccion,
|
||||
)
|
||||
: null;
|
||||
|
||||
// Valido que este prestamo no haya sido cancelado poer el usuario u operador
|
||||
if (prestamo.cancelado_operador || prestamo.cancelado_usuario)
|
||||
throw new ConflictException(
|
||||
'No se puede multar a un usuario con un préstamo que fue cancelado.',
|
||||
);
|
||||
// Si no se mando un id_institucion_infraccion
|
||||
if (!institucionInfraccion) {
|
||||
// Si tampoco se mando retraso saco error
|
||||
if (!retraso)
|
||||
throw new ConflictException(
|
||||
'No se mandó ningún motivo para multar a este alumno.',
|
||||
);
|
||||
// Asigno institucionInfraccion "Sin multa" por default
|
||||
institucionInfraccion =
|
||||
await this.institucionInfraccionService.findSinInfraccion(
|
||||
operador.institucion,
|
||||
);
|
||||
}
|
||||
// Busco una multa con este préstamo
|
||||
return this.repository
|
||||
.findOne({ where: { prestamo } })
|
||||
.then((existeMulta) => {
|
||||
// Si existe saco error
|
||||
if (existeMulta)
|
||||
throw new ConflictException(
|
||||
'Ya existe una multa asignada a este préstamo.',
|
||||
);
|
||||
// Si hay retraso lo agrego a la multa
|
||||
if (retraso) {
|
||||
data.retraso = true;
|
||||
nuevaMulta.retraso = true;
|
||||
ahora.add(retraso * 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));
|
||||
nuevaMulta.institucionInfraccion = institucionInfraccion;
|
||||
ahora.add(institucionInfraccion.dias_multa, 'd');
|
||||
nuevaMulta.fecha_fin = ahora.toDate();
|
||||
// Guardo la información
|
||||
return this.repository.save(nuevaMulta);
|
||||
})
|
||||
.then((_) =>
|
||||
// Actualizo multas del usuario
|
||||
this.institucionUsuarioService.updateMulta(
|
||||
operador.institucion.id_institucion,
|
||||
prestamo.usuario.id_usuario,
|
||||
|
||||
Reference in New Issue
Block a user