listo logins
This commit is contained in:
@@ -21,9 +21,10 @@ import { CarreraProgramaService } from './carrera-programa.service';
|
||||
import { ValidarUsuarioService } from '../validar-usuario/validar-usuario.service';
|
||||
import { Operador } from '../operador/entity/operador.entity';
|
||||
import { Usuario } from '../usuario/entity/usuario.entity';
|
||||
import { IdInstitucionDto } from '../dto/id-institucion.dto';
|
||||
import { IdInstitucionDto } from '../dto/input/id-institucion.dto';
|
||||
import { CreateCarreraProgramaDto } from './dto/input/create.dto';
|
||||
import { DeleteCarreraProgramaDto } from './dto/input/delete.dto';
|
||||
import { MessageOutputDto } from '../dto/output/message.dto';
|
||||
import { CarreraProgramaOutputDto } from './dto/output/carrera-programa.dto';
|
||||
|
||||
@Controller('carrera-programa')
|
||||
@@ -34,6 +35,7 @@ export class CarreraProgramaController {
|
||||
private validarUsuarioService: ValidarUsuarioService,
|
||||
) {}
|
||||
|
||||
@Serealize(MessageOutputDto)
|
||||
@Post()
|
||||
@UseGuards(AuthGuard('jwt'))
|
||||
@ApiOperation({
|
||||
@@ -58,6 +60,7 @@ export class CarreraProgramaController {
|
||||
);
|
||||
}
|
||||
|
||||
@Serealize(MessageOutputDto)
|
||||
@Delete()
|
||||
@UseGuards(AuthGuard('jwt'))
|
||||
@ApiOperation({
|
||||
@@ -93,7 +96,7 @@ export class CarreraProgramaController {
|
||||
const usuarioOperador: Operador | Usuario =
|
||||
req.user.operador || req.user.usuario;
|
||||
|
||||
if ('id_usuario' in usuarioOperador)
|
||||
if (usuarioOperador instanceof Usuario)
|
||||
this.validarUsuarioService.validarUsuario(usuarioOperador);
|
||||
else this.validarUsuarioService.validarAdmin(usuarioOperador);
|
||||
return this.carreraProgramaService.findByIdInstitucion(
|
||||
|
||||
@@ -7,6 +7,7 @@ import { CarreraPrograma } from './entity/carrera-programa.entity';
|
||||
import { InstitucionModule } from '../institucion/institucion.module';
|
||||
import { InstitucionCarreraModule } from '../institucion-carrera/institucion-carrera.module';
|
||||
import { InstitucionProgramaModule } from '../institucion-programa/institucion-programa.module';
|
||||
import { InstitucionUsuarioModule } from '../institucion-usuario/institucion-usuario.module';
|
||||
import { ValidarUsuarioModule } from '../validar-usuario/validar-usuario.module';
|
||||
|
||||
@Module({
|
||||
@@ -14,6 +15,7 @@ import { ValidarUsuarioModule } from '../validar-usuario/validar-usuario.module'
|
||||
InstitucionModule,
|
||||
InstitucionCarreraModule,
|
||||
InstitucionProgramaModule,
|
||||
InstitucionUsuarioModule,
|
||||
PassportModule.register({ defaultStrategy: 'jwt' }),
|
||||
TypeOrmModule.forFeature([CarreraPrograma]),
|
||||
ValidarUsuarioModule,
|
||||
|
||||
@@ -12,6 +12,7 @@ import { Usuario } from '../usuario/entity/usuario.entity';
|
||||
import { InstitucionService } from '../institucion/institucion.service';
|
||||
import { InstitucionCarreraService } from '../institucion-carrera/institucion-carrera.service';
|
||||
import { InstitucionProgramaService } from '../institucion-programa/institucion-programa.service';
|
||||
import { InstitucionUsuarioService } from '../institucion-usuario/institucion-usuario.service';
|
||||
|
||||
@Injectable()
|
||||
export class CarreraProgramaService {
|
||||
@@ -21,6 +22,7 @@ export class CarreraProgramaService {
|
||||
private institucionService: InstitucionService,
|
||||
private institucionCarreraService: InstitucionCarreraService,
|
||||
private institucionProgramaService: InstitucionProgramaService,
|
||||
private institucionUsuarioService: InstitucionUsuarioService,
|
||||
) {}
|
||||
|
||||
async create(
|
||||
@@ -35,6 +37,7 @@ export class CarreraProgramaService {
|
||||
id_programa,
|
||||
);
|
||||
|
||||
// Valido que el admin que esta realizando esta acción le pertenezca la carrera
|
||||
if (
|
||||
admin.institucion.id_institucion !=
|
||||
institucionCarrera.institucion.id_institucion
|
||||
@@ -42,13 +45,16 @@ export class CarreraProgramaService {
|
||||
throw new ForbiddenException(
|
||||
'Esta carrera no pertenece a tu institución.',
|
||||
);
|
||||
// Busco un registro que ya contenga la info mandada
|
||||
return this.repository
|
||||
.findOne({ where: { institucionCarrera, programa } })
|
||||
.then((existeCarretaPrograma) => {
|
||||
// Si lo encuentro saco error
|
||||
if (existeCarretaPrograma)
|
||||
throw new ConflictException(
|
||||
'Ya se asignó este programa a esta carrera.',
|
||||
);
|
||||
// Guardar registro
|
||||
return this.repository.save(
|
||||
this.repository.create({
|
||||
institucionCarrera,
|
||||
@@ -64,6 +70,8 @@ export class CarreraProgramaService {
|
||||
delete(admin: Operador, id_carrera_programa: number) {
|
||||
return this.findById(id_carrera_programa)
|
||||
.then((carreraPrograma) => {
|
||||
// Valido que la asociación entre una carrera y un programa le
|
||||
// pertenezcan al admin que realiza esta acción
|
||||
if (
|
||||
admin.institucion.id_institucion !=
|
||||
carreraPrograma.institucionCarrera.institucion.id_institucion
|
||||
@@ -71,6 +79,7 @@ export class CarreraProgramaService {
|
||||
throw new ForbiddenException(
|
||||
'No puedes eliminar esta asociación porque no pertenece a tu institución.',
|
||||
);
|
||||
// Elimino
|
||||
return this.repository.delete(carreraPrograma);
|
||||
})
|
||||
.then((_) => ({
|
||||
@@ -94,31 +103,26 @@ export class CarreraProgramaService {
|
||||
) {
|
||||
return this.institucionService
|
||||
.findInfoInstitucionById(id_institucion)
|
||||
.then((institucion) => {
|
||||
.then(async (institucion) => {
|
||||
// Si es un Operador
|
||||
if (usuarioOperador instanceof Operador) {
|
||||
// Valido que la info le pertenezca al operador que la solicita
|
||||
if (
|
||||
usuarioOperador.institucion.id_institucion !=
|
||||
institucion.id_institucion
|
||||
)
|
||||
throw new ForbiddenException(
|
||||
'No puedes acceder a esta información porque no perteneces a esta institución.',
|
||||
'No puedes acceder a esta información porque no le pertenece a tu institución.',
|
||||
);
|
||||
} else {
|
||||
let lePertenece = false;
|
||||
|
||||
for (let i = 0; i < usuarioOperador.instituciones.length; i++)
|
||||
if (
|
||||
usuarioOperador.instituciones[i].institucionCarrera.institucion
|
||||
.id_institucion === institucion.id_institucion
|
||||
) {
|
||||
lePertenece = true;
|
||||
break;
|
||||
}
|
||||
if (!lePertenece)
|
||||
throw new ForbiddenException(
|
||||
'No puedes acceder a esta información porque no perteneces a esta institución.',
|
||||
);
|
||||
}
|
||||
} else
|
||||
await this.institucionUsuarioService
|
||||
.findByIdUsuarioIdInstitucion(usuarioOperador, institucion)
|
||||
.then((institucionUsuario) => {
|
||||
if (!institucionUsuario)
|
||||
throw new ForbiddenException(
|
||||
'No puedes acceder a esta información porque no perteneces a esta institución.',
|
||||
);
|
||||
});
|
||||
return this.repository.find({
|
||||
join: {
|
||||
alias: 'cp',
|
||||
|
||||
Reference in New Issue
Block a user