aparentemente todo funciona
This commit is contained in:
@@ -90,6 +90,7 @@ import { FullInformacionOperadorView } from './operador/entity/views/full-inform
|
||||
import { FullInformacionPrestamoView } from './prestamo/entity/views/full-informacion-prestamo.view';
|
||||
import { PrestamoInformacionView } from './prestamo/entity/views/prestamo-informacion.view';
|
||||
import { InformacionPrestamoView } from './prestamo/entity/views/informacion-prestamo.view';
|
||||
import { FullInformacionUsuarioView } from './usuario/entity/views/full-informacion-usuario.view';
|
||||
import { InformacionUsuarioView } from './usuario/entity/views/informacion-usuario.view';
|
||||
|
||||
@Module({
|
||||
@@ -169,6 +170,7 @@ import { InformacionUsuarioView } from './usuario/entity/views/informacion-usuar
|
||||
FullInformacionPrestamoView,
|
||||
PrestamoInformacionView,
|
||||
InformacionPrestamoView,
|
||||
FullInformacionUsuarioView,
|
||||
InformacionUsuarioView,
|
||||
],
|
||||
};
|
||||
|
||||
@@ -34,7 +34,7 @@ export class JwtStrategyService extends PassportStrategy(Strategy) {
|
||||
|
||||
if ('Usuario' in payload)
|
||||
await this.usuarioService
|
||||
.findById(payload.Usuario.id_usuario, true, true)
|
||||
.findInfoUsuarioById(payload.Usuario.id_usuario)
|
||||
.then((usuario) => (user.usuario = usuario));
|
||||
else if ('Operador' in payload)
|
||||
await this.operadorService
|
||||
|
||||
@@ -3,7 +3,6 @@ import { Carrera } from '../../../institucion-carrera/entity/carrera.entity';
|
||||
import { Institucion } from '../../../institucion/entity/institucion.entity';
|
||||
import { InstitucionCarrera } from '../../../institucion-carrera/entity/institucion-carrera.entity';
|
||||
import { InstitucionUsuario } from '../institucion-usuario.entity';
|
||||
import { Usuario } from '../../../usuario/entity/usuario.entity';
|
||||
|
||||
@ViewEntity({
|
||||
expression: (dataSource: DataSource) =>
|
||||
@@ -16,7 +15,6 @@ import { Usuario } from '../../../usuario/entity/usuario.entity';
|
||||
.addSelect('iu.id_usuario', 'id_usuario')
|
||||
.addSelect('ic.id_carrera', 'id_carrera')
|
||||
.addSelect('ic.id_institucion', 'id_institucion')
|
||||
.addSelect('u.correo', 'correo')
|
||||
.addSelect('c.carrera', 'carrera')
|
||||
.addSelect('i.institucion', 'institucion')
|
||||
.from(InstitucionUsuario, 'iu')
|
||||
@@ -25,7 +23,6 @@ import { Usuario } from '../../../usuario/entity/usuario.entity';
|
||||
'ic',
|
||||
'ic.id_institucion_carrera = iu.id_institucion_carrera',
|
||||
)
|
||||
.innerJoin(Usuario, 'u', 'u.id_usuario = iu.id_usuario')
|
||||
.innerJoin(Carrera, 'c', 'c.id_carrera = ic.id_carrera')
|
||||
.innerJoin(Institucion, 'i', 'i.id_institucion = ic.id_institucion'),
|
||||
})
|
||||
@@ -39,9 +36,6 @@ export class FullInformacionInstitucionUsuarioView {
|
||||
@ViewColumn()
|
||||
carrera: string;
|
||||
|
||||
@ViewColumn()
|
||||
correo: string;
|
||||
|
||||
@ViewColumn()
|
||||
institucion: string;
|
||||
|
||||
|
||||
@@ -45,62 +45,47 @@ export class InstitucionUsuarioService {
|
||||
});
|
||||
}
|
||||
|
||||
// findInfoInstitucionUsuarioAllByIdUsuario(id_usuario: number) {
|
||||
// return this.informacionInstitucionUsuarioView
|
||||
// .find({ where: { id_usuario } })
|
||||
// .then((infoInstitucionesUsuario) => {
|
||||
// const institucionUsuarios: InstitucionUsuario[] = [];
|
||||
findFullInfoInstitucionUsuarioAllByIdUsuarioIdInstitucion(
|
||||
id_usuario: number,
|
||||
id_institucion: number,
|
||||
) {
|
||||
return this.fullInformacionInstitucionUsuarioView
|
||||
.find({ where: { id_institucion, id_usuario } })
|
||||
.then((infoInstitucionesUsuario) => {
|
||||
const institucionesUsuario: InstitucionUsuario[] = [];
|
||||
|
||||
// for (let i = 0; i < infoInstitucionesUsuario.length; i++)
|
||||
// institucionUsuarios.push(
|
||||
// this.repository.create({
|
||||
// id_institucion_usuario:
|
||||
// infoInstitucionesUsuario[i].id_institucion_usuario,
|
||||
// activo: infoInstitucionesUsuario[i].activo === 1,
|
||||
// multa: infoInstitucionesUsuario[i].multa === 1,
|
||||
// institucionCarrera: {
|
||||
// id_institucion_carrera:
|
||||
// infoInstitucionesUsuario[i].id_institucion_carrera,
|
||||
// carrera: { id_carrera: infoInstitucionesUsuario[i].id_carrera },
|
||||
// institucion: {
|
||||
// id_institucion: infoInstitucionesUsuario[i].id_institucion,
|
||||
// },
|
||||
// },
|
||||
// }),
|
||||
// );
|
||||
// return institucionUsuarios;
|
||||
// });
|
||||
// }
|
||||
|
||||
findInfoInstitucionUsuarioById(id_institucion_usuario: number) {
|
||||
return this.informacionInstitucionUsuarioView
|
||||
.findOne({ where: { id_institucion_usuario } })
|
||||
.then((infoInstitucionUsuario) => {
|
||||
if (!infoInstitucionUsuario)
|
||||
throw new ConflictException('No existe este id institución usuario.');
|
||||
return this.repository.create({
|
||||
id_institucion_usuario: infoInstitucionUsuario.id_institucion_usuario,
|
||||
activo: infoInstitucionUsuario.activo === 1,
|
||||
multa: infoInstitucionUsuario.multa === 1,
|
||||
institucionCarrera: {
|
||||
id_institucion_carrera:
|
||||
infoInstitucionUsuario.id_institucion_carrera,
|
||||
carrera: { id_carrera: infoInstitucionUsuario.id_carrera },
|
||||
institucion: {
|
||||
id_institucion: infoInstitucionUsuario.id_institucion,
|
||||
},
|
||||
},
|
||||
});
|
||||
for (let i = 0; i < infoInstitucionesUsuario.length; i++)
|
||||
institucionesUsuario.push(
|
||||
this.repository.create({
|
||||
id_institucion_usuario:
|
||||
infoInstitucionesUsuario[i].id_institucion_usuario,
|
||||
activo: infoInstitucionesUsuario[i].activo === 1,
|
||||
multa: infoInstitucionesUsuario[i].multa === 1,
|
||||
institucionCarrera: {
|
||||
id_institucion_carrera:
|
||||
infoInstitucionesUsuario[i].id_institucion_carrera,
|
||||
carrera: {
|
||||
id_carrera: infoInstitucionesUsuario[i].id_carrera,
|
||||
carrera: infoInstitucionesUsuario[i].carrera,
|
||||
},
|
||||
institucion: {
|
||||
id_institucion: infoInstitucionesUsuario[i].id_institucion,
|
||||
institucion: infoInstitucionesUsuario[i].institucion,
|
||||
},
|
||||
},
|
||||
}),
|
||||
);
|
||||
return institucionesUsuario;
|
||||
});
|
||||
}
|
||||
|
||||
findFullInfoInstitucionUsuarioByUsuarioInstitucionCarrera(
|
||||
id_usuario: number,
|
||||
findFullInfoInstitucionUsuarioByIdUsuarioIdInstitucionCarrera(
|
||||
usuario: Usuario,
|
||||
id_institucion_carrera: number,
|
||||
) {
|
||||
return this.fullInformacionInstitucionUsuarioView
|
||||
.findOne({
|
||||
where: { id_institucion_carrera, id_usuario },
|
||||
where: { id_institucion_carrera, id_usuario: usuario.id_usuario },
|
||||
})
|
||||
.then((infoInstitucionUsuario) => {
|
||||
if (!infoInstitucionUsuario || infoInstitucionUsuario.activo === 0)
|
||||
@@ -119,14 +104,32 @@ export class InstitucionUsuarioService {
|
||||
id_institucion: infoInstitucionUsuario.id_institucion,
|
||||
},
|
||||
},
|
||||
usuario: {
|
||||
id_usuario: infoInstitucionUsuario.id_usuario,
|
||||
correo: infoInstitucionUsuario.correo,
|
||||
},
|
||||
usuario,
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
findInfoInstitucionUsuarioByIdUsuarioIdInstitucionCarrera(
|
||||
id_usuario: number,
|
||||
id_institucion_carrera: number,
|
||||
) {
|
||||
return this.informacionInstitucionUsuarioView
|
||||
.findOne({ where: { id_institucion_carrera, id_usuario } })
|
||||
.then((infoInstitucionUsuario) =>
|
||||
this.viewToInstitucionUsuario(infoInstitucionUsuario),
|
||||
);
|
||||
}
|
||||
|
||||
findInfoInstitucionUsuarioById(id_institucion_usuario: number) {
|
||||
return this.informacionInstitucionUsuarioView
|
||||
.findOne({ where: { id_institucion_usuario } })
|
||||
.then((infoInstitucionUsuario) => {
|
||||
if (!infoInstitucionUsuario)
|
||||
throw new ConflictException('No existe este id institución usuario.');
|
||||
return this.viewToInstitucionUsuario(infoInstitucionUsuario);
|
||||
});
|
||||
}
|
||||
|
||||
save(institucionUsuario: InstitucionUsuario) {
|
||||
return this.repository.save(institucionUsuario);
|
||||
}
|
||||
@@ -154,4 +157,19 @@ export class InstitucionUsuarioService {
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
viewToInstitucionUsuario(
|
||||
infoInstitucionUsuario: InformacionInstitucionUsuarioView,
|
||||
) {
|
||||
return this.repository.create({
|
||||
id_institucion_usuario: infoInstitucionUsuario.id_institucion_usuario,
|
||||
activo: infoInstitucionUsuario.activo === 1,
|
||||
multa: infoInstitucionUsuario.multa === 1,
|
||||
institucionCarrera: {
|
||||
id_institucion_carrera: infoInstitucionUsuario.id_institucion_carrera,
|
||||
carrera: { id_carrera: infoInstitucionUsuario.id_carrera },
|
||||
institucion: { id_institucion: infoInstitucionUsuario.id_institucion },
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -203,7 +203,7 @@ export class MultaService {
|
||||
}
|
||||
|
||||
findAllByIdUsuario(id_usuario: number, pagina: number) {
|
||||
return this.usuarioService.findById(id_usuario).then((usuario) =>
|
||||
return this.usuarioService.findInfoUsuarioById(id_usuario).then((usuario) =>
|
||||
this.fullInformacionMultaView
|
||||
.findAndCount({
|
||||
where: { id_usuario: usuario.id_usuario },
|
||||
@@ -223,7 +223,7 @@ export class MultaService {
|
||||
}
|
||||
|
||||
findMultasActivas(id_usuario: number) {
|
||||
return this.usuarioService.findById(id_usuario).then((usuario) =>
|
||||
return this.usuarioService.findInfoUsuarioById(id_usuario).then((usuario) =>
|
||||
this.repository
|
||||
.createQueryBuilder('mu')
|
||||
.innerJoin('mu.prestamo', 'p')
|
||||
|
||||
@@ -196,6 +196,7 @@ export class OperadorService {
|
||||
select: {
|
||||
id_operador: true,
|
||||
activo: true,
|
||||
correo : true,
|
||||
institucion: { id_institucion: true },
|
||||
tipoUsuario: { id_tipo_usuario: true },
|
||||
},
|
||||
|
||||
@@ -340,7 +340,7 @@ export class PrestamoService {
|
||||
|
||||
findAllByIdUsuario(id_usuario: number, pagina: number) {
|
||||
return this.usuarioService
|
||||
.findById(id_usuario)
|
||||
.findInfoUsuarioById(id_usuario)
|
||||
.then((usuario) =>
|
||||
this.fullInformacionPrestamoView.findAndCount({
|
||||
where: { id_usuario: usuario.id_usuario },
|
||||
|
||||
@@ -381,9 +381,8 @@ export class UploadFileService {
|
||||
dataUsuario.tipo_usuario,
|
||||
false,
|
||||
);
|
||||
const usuario = await this.usuarioService.findByUsuario(
|
||||
const usuario = await this.usuarioService.findInfoUsuarioByUsuario(
|
||||
dataUsuario.numero_cuenta,
|
||||
false,
|
||||
);
|
||||
const carrera =
|
||||
tipoUsuario && (tipoUsuario.id_tipo_usuario === 5 || dataUsuario.carrera)
|
||||
@@ -417,16 +416,12 @@ export class UploadFileService {
|
||||
return;
|
||||
}
|
||||
if (usuario) {
|
||||
let existeInstitucionUsuario: InstitucionUsuario = null;
|
||||
let existeInstitucionUsuario =
|
||||
await this.institucionUsuarioService.findInfoInstitucionUsuarioByIdUsuarioIdInstitucionCarrera(
|
||||
usuario.id_usuario,
|
||||
institucionCarrera.id_institucion_carrera,
|
||||
);
|
||||
|
||||
for (let i = 0; i < usuario.instituciones.length; i++)
|
||||
if (
|
||||
usuario.instituciones[i].institucionCarrera.id_institucion_carrera ===
|
||||
institucionCarrera.id_institucion_carrera
|
||||
) {
|
||||
existeInstitucionUsuario = usuario.instituciones[i];
|
||||
break;
|
||||
}
|
||||
if (existeInstitucionUsuario && !existeInstitucionUsuario.activo) {
|
||||
existeInstitucionUsuario.activo = true;
|
||||
await this.institucionUsuarioService.save(existeInstitucionUsuario);
|
||||
@@ -443,7 +438,7 @@ export class UploadFileService {
|
||||
if (dataUsuario.correo && usuario.correo != dataUsuario.correo)
|
||||
usuario.correo = dataUsuario.correo;
|
||||
await this.usuarioService
|
||||
.update(usuario, false)
|
||||
.save(usuario)
|
||||
.then(({ message }) => mensajes.push(message));
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
import { DataSource, ViewEntity, ViewColumn } from 'typeorm';
|
||||
import { TipoUsuario } from '../../../tipo-usuario/entity/tipo-usuario.entity';
|
||||
import { Usuario } from '../usuario.entity';
|
||||
|
||||
@ViewEntity({
|
||||
expression: (dataSource: DataSource) =>
|
||||
dataSource
|
||||
.createQueryBuilder()
|
||||
.select('u.id_usuario', 'id_usuario')
|
||||
.addSelect('u.correo', 'correo')
|
||||
.addSelect('u.id_tipo_usuario', 'id_tipo_usuario')
|
||||
.addSelect('u.nombre', 'nombre')
|
||||
.addSelect('u.rfc', 'rfc')
|
||||
.addSelect('u.telefono', 'telefono')
|
||||
.addSelect('u.usuario', 'usuario')
|
||||
.addSelect('tu.tipo_usuario', 'tipo_usuario')
|
||||
.from(Usuario, 'u')
|
||||
.innerJoin(TipoUsuario, 'tu', 'tu.id_tipo_usuario = u.id_tipo_usuario'),
|
||||
})
|
||||
export class FullInformacionUsuarioView {
|
||||
@ViewColumn()
|
||||
id_usuario: number;
|
||||
|
||||
@ViewColumn()
|
||||
correo: string;
|
||||
|
||||
@ViewColumn()
|
||||
id_tipo_usuario: number;
|
||||
|
||||
@ViewColumn()
|
||||
nombre: string;
|
||||
|
||||
@ViewColumn()
|
||||
rfc: string;
|
||||
|
||||
@ViewColumn()
|
||||
telefono: string;
|
||||
|
||||
@ViewColumn()
|
||||
tipo_usuario: string;
|
||||
|
||||
@ViewColumn()
|
||||
usuario: string;
|
||||
}
|
||||
@@ -77,10 +77,10 @@ export class UsuarioController {
|
||||
},
|
||||
})
|
||||
update(@Request() req, @Body() body: UpdateUsuarioInputDto) {
|
||||
const admin: Operador = req.user.operador;
|
||||
const operador: Operador = req.user.operador;
|
||||
|
||||
this.validarUsuarioService.validarAdminOperador(admin);
|
||||
return this.usuarioService.update(body);
|
||||
this.validarUsuarioService.validarAdminOperador(operador);
|
||||
return this.usuarioService.update(operador, body);
|
||||
}
|
||||
|
||||
@Put('update-password')
|
||||
@@ -113,10 +113,13 @@ export class UsuarioController {
|
||||
type: 'string',
|
||||
})
|
||||
usuario(@Request() req, @Query() query: UsuarioInputDto) {
|
||||
const admin: Operador = req.user.operador;
|
||||
const operador: Operador = req.user.operador;
|
||||
|
||||
this.validarUsuarioService.validarAdminOperador(admin);
|
||||
return this.usuarioService.findByUsuario(query.usuario, true, true);
|
||||
this.validarUsuarioService.validarAdminOperador(operador);
|
||||
return this.usuarioService.findFullInfoUsuarioByUsuario(
|
||||
operador,
|
||||
query.usuario,
|
||||
);
|
||||
}
|
||||
|
||||
@Serealize(UsuariosOutputDto)
|
||||
|
||||
@@ -4,6 +4,7 @@ import { TypeOrmModule } from '@nestjs/typeorm';
|
||||
import { UsuarioController } from './usuario.controller';
|
||||
import { UsuarioService } from './usuario.service';
|
||||
import { Usuario } from './entity/usuario.entity';
|
||||
import { FullInformacionUsuarioView } from './entity/views/full-informacion-usuario.view';
|
||||
import { InformacionUsuarioView } from './entity/views/informacion-usuario.view';
|
||||
import { BcryptModule } from '../bcrypt/bcrypt.module';
|
||||
import { InstitucionModule } from '../institucion/institucion.module';
|
||||
@@ -22,7 +23,11 @@ import { ValidarUsuarioModule } from '../validar-usuario/validar-usuario.module'
|
||||
NodemailerModule,
|
||||
PassportModule.register({ defaultStrategy: 'jwt' }),
|
||||
TipoUsuarioModule,
|
||||
TypeOrmModule.forFeature([Usuario, InformacionUsuarioView]),
|
||||
TypeOrmModule.forFeature([
|
||||
Usuario,
|
||||
FullInformacionUsuarioView,
|
||||
InformacionUsuarioView,
|
||||
]),
|
||||
ValidarUsuarioModule,
|
||||
],
|
||||
controllers: [UsuarioController],
|
||||
|
||||
@@ -4,10 +4,11 @@ import {
|
||||
NotFoundException,
|
||||
} from '@nestjs/common';
|
||||
import { InjectRepository } from '@nestjs/typeorm';
|
||||
import { Repository } from 'typeorm';
|
||||
import { FindOptionsWhere, Repository } from 'typeorm';
|
||||
import { InstitucionCarrera } from '../institucion-carrera/entity/institucion-carrera.entity';
|
||||
import { TipoUsuario } from '../tipo-usuario/entity/tipo-usuario.entity';
|
||||
import { Usuario } from './entity/usuario.entity';
|
||||
import { FullInformacionUsuarioView } from './entity/views/full-informacion-usuario.view';
|
||||
import { InformacionUsuarioView } from './entity/views/informacion-usuario.view';
|
||||
import { BcryptService } from '../bcrypt/bcrypt.service';
|
||||
import { InstitucionService } from '../institucion/institucion.service';
|
||||
@@ -15,6 +16,7 @@ import { InstitucionCarreraService } from '../institucion-carrera/institucion-ca
|
||||
import { InstitucionUsuarioService } from '../institucion-usuario/institucion-usuario.service';
|
||||
import { NodemailerService } from '../nodemailer/nodemailer.service';
|
||||
import { TipoUsuarioService } from '../tipo-usuario/tipo-usuario.service';
|
||||
import { Operador } from 'src/operador/entity/operador.entity';
|
||||
|
||||
@Injectable()
|
||||
export class UsuarioService {
|
||||
@@ -22,6 +24,8 @@ export class UsuarioService {
|
||||
@InjectRepository(Usuario) private repository: Repository<Usuario>,
|
||||
@InjectRepository(InformacionUsuarioView)
|
||||
private informacionUsuarioView: Repository<InformacionUsuarioView>,
|
||||
@InjectRepository(FullInformacionUsuarioView)
|
||||
private fullInformacionUsuarioView: Repository<FullInformacionUsuarioView>,
|
||||
private bcryptService: BcryptService,
|
||||
private institucionService: InstitucionService,
|
||||
private institucionCarreraService: InstitucionCarreraService,
|
||||
@@ -38,6 +42,7 @@ export class UsuarioService {
|
||||
correo: string,
|
||||
rfc?: string,
|
||||
) {
|
||||
// Crear y gurdar registro
|
||||
return this.repository
|
||||
.save(
|
||||
this.repository.create({
|
||||
@@ -49,6 +54,7 @@ export class UsuarioService {
|
||||
}),
|
||||
)
|
||||
.then((usuario) =>
|
||||
// Le asigno la carrera enviada
|
||||
this.institucionUsuarioService.create(institucionCarrera, usuario),
|
||||
);
|
||||
}
|
||||
@@ -120,51 +126,71 @@ export class UsuarioService {
|
||||
return query.getManyAndCount();
|
||||
}
|
||||
|
||||
findById(id_usuario: number, validarNoExiste = true, password = false) {
|
||||
findFullInfoUsuarioByUsuario(operador: Operador, usuario: string) {
|
||||
return this.fullInformacionUsuarioView
|
||||
.findOne({ where: { usuario } })
|
||||
.then(async (infoUsuario) => {
|
||||
if (!infoUsuario)
|
||||
throw new NotFoundException('No existe este usuario.');
|
||||
|
||||
const instituciones =
|
||||
await this.institucionUsuarioService.findFullInfoInstitucionUsuarioAllByIdUsuarioIdInstitucion(
|
||||
infoUsuario.id_usuario,
|
||||
operador.institucion.id_institucion,
|
||||
);
|
||||
|
||||
if (instituciones.length === 0)
|
||||
throw new ConflictException(
|
||||
'Este usuario no pertenece a tu institución',
|
||||
);
|
||||
return this.repository.create({
|
||||
id_usuario: infoUsuario.id_usuario,
|
||||
correo: infoUsuario.correo,
|
||||
telefono: infoUsuario.telefono,
|
||||
nombre: infoUsuario.nombre,
|
||||
rfc: infoUsuario.rfc,
|
||||
usuario: infoUsuario.usuario,
|
||||
tipoUsuario: {
|
||||
id_tipo_usuario: infoUsuario.id_tipo_usuario,
|
||||
tipo_usuario: infoUsuario.tipo_usuario,
|
||||
},
|
||||
instituciones,
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
findInfoUsuarioById(id_usuario: number) {
|
||||
return this.repository
|
||||
.findOne({
|
||||
join: {
|
||||
alias: 'u',
|
||||
innerJoinAndSelect: {
|
||||
is: 'u.instituciones',
|
||||
ic: 'is.institucionCarrera',
|
||||
c: 'ic.carrera',
|
||||
i: 'ic.institucion',
|
||||
n: 'c.nivel',
|
||||
},
|
||||
select: {
|
||||
id_usuario: true,
|
||||
correo: true,
|
||||
password: true,
|
||||
usuario: true,
|
||||
nombre: true,
|
||||
tipoUsuario: { id_tipo_usuario: true },
|
||||
},
|
||||
where: { id_usuario },
|
||||
})
|
||||
.then((usuario) => {
|
||||
if (validarNoExiste && (!usuario || (password && !usuario.password)))
|
||||
throw new NotFoundException('No existe este usuario.');
|
||||
if (!usuario) throw new NotFoundException('No existe este usuario.');
|
||||
return usuario;
|
||||
});
|
||||
}
|
||||
|
||||
async findByUsuario(
|
||||
usuario: string,
|
||||
validarNoExiste = true,
|
||||
password = false,
|
||||
institucionesActivas = false,
|
||||
rfc?: string,
|
||||
) {
|
||||
const query = this.repository
|
||||
.createQueryBuilder('u')
|
||||
.innerJoinAndSelect('u.instituciones', 'is')
|
||||
.innerJoinAndSelect('u.tipoUsuario', 'tu')
|
||||
.innerJoinAndSelect('is.institucionCarrera', 'ic')
|
||||
.innerJoinAndSelect('ic.carrera', 'c')
|
||||
.innerJoinAndSelect('ic.institucion', 'i')
|
||||
.innerJoinAndSelect('c.nivel', 'n')
|
||||
.where('usuario = :usuario', { usuario });
|
||||
findInfoUsuarioByUsuario(usuario: string, rfc?: string) {
|
||||
const busqueda: FindOptionsWhere<Usuario> = { usuario };
|
||||
|
||||
if (institucionesActivas) query.andWhere('is.activo = 1');
|
||||
if (rfc) query.andWhere('rfc = :rfc', { rfc });
|
||||
return query.getOne().then((usuario) => {
|
||||
if (validarNoExiste && (!usuario || (password && !usuario.password)))
|
||||
throw new NotFoundException('No existe este usuario.');
|
||||
return usuario;
|
||||
if (rfc) busqueda.rfc = rfc;
|
||||
return this.repository.findOne({
|
||||
select: {
|
||||
id_usuario: true,
|
||||
correo: true,
|
||||
password: true,
|
||||
usuario: true,
|
||||
tipoUsuario: { id_tipo_usuario: true },
|
||||
},
|
||||
where: busqueda,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -212,14 +238,23 @@ export class UsuarioService {
|
||||
}
|
||||
|
||||
passwordReset(id_usuario: number) {
|
||||
// Genero password
|
||||
const password = this.bcryptService.generarPassword();
|
||||
|
||||
return this.findById(id_usuario, true, true)
|
||||
return this.findInfoUsuarioById(id_usuario)
|
||||
.then((usuario) => {
|
||||
// Solo se puede actualizar password si no esta registrado, password = registro
|
||||
if (!usuario.password)
|
||||
throw new ConflictException(
|
||||
'No se puede enviar una contraseña a un usuario no registrado.',
|
||||
);
|
||||
// Asigno nueva password
|
||||
usuario.password = this.bcryptService.encriptar(password);
|
||||
// Guardo
|
||||
return this.repository.save(usuario);
|
||||
})
|
||||
.then((usuario) =>
|
||||
// Envio correo con credenciales
|
||||
this.nodemailerService.sendEmail({
|
||||
email: usuario.correo,
|
||||
subject: 'Credenciales Pc Puma',
|
||||
@@ -243,14 +278,14 @@ export class UsuarioService {
|
||||
const password = this.bcryptService.generarPassword();
|
||||
let message: string;
|
||||
|
||||
return this.findByUsuario(usuario, false, false, false, rfc)
|
||||
return this.findInfoUsuarioByUsuario(usuario, rfc)
|
||||
.then(async (existeUsuario) => {
|
||||
if (!existeUsuario || existeUsuario.password)
|
||||
throw new ConflictException(
|
||||
'Verificar sus datos, cualquier duda asistir al módulo PC PUMA.',
|
||||
);
|
||||
return this.institucionUsuarioService.findFullInfoInstitucionUsuarioByUsuarioInstitucionCarrera(
|
||||
existeUsuario.id_usuario,
|
||||
return this.institucionUsuarioService.findFullInfoInstitucionUsuarioByIdUsuarioIdInstitucionCarrera(
|
||||
existeUsuario,
|
||||
institucionCarrera.id_institucion_carrera,
|
||||
);
|
||||
})
|
||||
@@ -280,14 +315,18 @@ export class UsuarioService {
|
||||
.then((_) => ({ message }));
|
||||
}
|
||||
|
||||
update(attrs: Partial<Usuario>, validarPassword = true) {
|
||||
return this.findById(attrs.id_usuario, true, validarPassword)
|
||||
save(usuario: Usuario) {
|
||||
return this.repository
|
||||
.save(usuario)
|
||||
.then((_) => ({ message: 'Se guardaron los cambios correctamente.' }));
|
||||
}
|
||||
|
||||
update(operador: Operador, attrs: Partial<Usuario>) {
|
||||
return this.findInfoUsuarioById(attrs.id_usuario)
|
||||
.then((usuario) => {
|
||||
Object.assign(usuario, attrs);
|
||||
return this.repository.save(usuario);
|
||||
})
|
||||
.then((_) => ({
|
||||
message: 'Se guardaron los cambios correctamente.',
|
||||
}));
|
||||
.then((_) => ({ message: 'Se guardaron los cambios correctamente.' }));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user