This commit is contained in:
lemuel 2022-08-17 07:07:22 -05:00
commit eae3bf8fdd
46 changed files with 193 additions and 77 deletions

View File

@ -2,12 +2,12 @@ import { ForbiddenException, Injectable } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
import { PassportStrategy } from '@nestjs/passport';
import { Strategy, ExtractJwt } from 'passport-jwt';
import { ModuloService } from 'src/modulo/modulo.service';
import { OperadorService } from 'src/operador/operador.service';
import { UsuarioService } from 'src/usuario/usuario.service';
import { ModuloService } from '../../modulo/modulo.service';
import { OperadorService } from '../../operador/operador.service';
import { UsuarioService } from '../../usuario/usuario.service';
import { Modulo } from '../../modulo/entity/modulo.entity';
import { Operador } from 'src/operador/entity/operador.entity';
import { Usuario } from 'src/usuario/entity/usuario.entity';
import { Operador } from '../../operador/entity/operador.entity';
import { Usuario } from '../../usuario/entity/usuario.entity';
import { JwtPayload } from '../dto/jwt-payload';
@Injectable()

View File

@ -19,12 +19,12 @@ import {
} from '@nestjs/swagger';
import { Serealize } from '../interceptors/serialize.interceptor';
import { CarreraProgramaService } from './carrera-programa.service';
import { Operador } from 'src/operador/entity/operador.entity';
import { Operador } from '../operador/entity/operador.entity';
import { IdInstitucionDto } from '../dto/id-institucion.dto';
import { CreateCarreraProgramaDto } from './dto/input/create.dto';
import { DeleteCarreraProgramaDto } from './dto/input/delete.dto';
import { CarreraProgramaOutputDto } from './dto/output/carrera-programa.dto';
import { Usuario } from 'src/usuario/entity/usuario.entity';
import { Usuario } from '../usuario/entity/usuario.entity';
@Controller('carrera-programa')
@ApiTags('carrera-programa')

View File

@ -7,8 +7,8 @@ import {
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { CarreraPrograma } from './entity/carrera-programa.entity';
import { Operador } from 'src/operador/entity/operador.entity';
import { Usuario } from 'src/usuario/entity/usuario.entity';
import { Operador } from '../operador/entity/operador.entity';
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';

View File

@ -2,7 +2,7 @@ import * as moment from 'moment';
import { forwardRef, Inject, Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { Carrito } from 'src/carrito/entity/carrito.entity';
import { Carrito } from '../carrito/entity/carrito.entity';
import { CarritoMotivo } from './entity/carrito-motivo.entity';
import { Operador } from '../operador/entity/operador.entity';
import { CarritoService } from '../carrito/carrito.service';

View File

@ -17,7 +17,7 @@ import {
ApiQuery,
ApiTags,
} from '@nestjs/swagger';
import { Operador } from 'src/operador/entity/operador.entity';
import { Operador } from '../operador/entity/operador.entity';
import { Serealize } from '../interceptors/serialize.interceptor';
import { CarritoService } from './carrito.service';
import { CarritoDto } from './dto/input/carrito.dto';
@ -188,6 +188,7 @@ export class CarritoController {
},
})
update(@Request() req, @Body() body: UpdateCarritoDto) {
const data = { ...body };
const operador: Operador = req.user.operador;
if (
@ -198,6 +199,7 @@ export class CarritoController {
throw new ForbiddenException(
'No tienes los permisos necesarios para realizar esta acción.',
);
return this.carritoService.update(operador, body);
delete data.motivo;
return this.carritoService.update(operador, data, body.motivo);
}
}

View File

@ -1,6 +1,8 @@
import {
ConflictException,
ForbiddenException,
forwardRef,
Inject,
Injectable,
NotFoundException,
} from '@nestjs/common';
@ -8,8 +10,9 @@ import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { Carrito } from './entity/carrito.entity';
import { Modulo } from '../modulo/entity/modulo.entity';
import { Operador } from 'src/operador/entity/operador.entity';
import { Operador } from '../operador/entity/operador.entity';
import { TipoCarrito } from '../institucion-tipo-carrito/entity/tipo-carrito.entity';
import { CaritoMotivoService } from '../carrito-motivo/carrito-motivo.service';
import { InstitucionService } from '../institucion/institucion.service';
import { InstitucionTipoCarritoService } from '../institucion-tipo-carrito/institucion-tipo-carrito.service';
import { MarcaService } from '../marca/marca.service';
@ -20,6 +23,8 @@ import { ModuloService } from '../modulo/modulo.service';
export class CarritoService {
constructor(
@InjectRepository(Carrito) private repository: Repository<Carrito>,
@Inject(forwardRef(() => CaritoMotivoService))
private caritoMotivoService: CaritoMotivoService,
private institucionService: InstitucionService,
private institucionTipoCarritoService: InstitucionTipoCarritoService,
private marcaService: MarcaService,
@ -178,7 +183,7 @@ export class CarritoService {
});
}
async update(operador: Operador, attrs: Partial<Carrito>) {
async update(operador: Operador, attrs: Partial<Carrito>, motivo: string) {
return this.findById(attrs.id_carrito)
.then(async (carrito) => {
if (
@ -191,6 +196,14 @@ export class CarritoService {
Object.assign(carrito, attrs);
return this.repository.save(carrito);
})
.then((carrito) =>
this.caritoMotivoService.create(
carrito,
operador,
attrs.activo,
motivo,
),
)
.then((_) => ({
message: 'Se guardaron los cambios correctamente.',
}));

View File

@ -1,10 +1,20 @@
import { IsBoolean, IsInt, IsOptional } from 'class-validator';
import {
IsBoolean,
IsInt,
IsNotEmpty,
IsString,
MaxLength,
} from 'class-validator';
export class UpdateCarritoDto {
@IsInt()
id_carrito: number;
@IsBoolean()
@IsOptional()
activo?: boolean;
activo: boolean;
@IsString()
@IsNotEmpty()
@MaxLength(250)
motivo;
}

View File

@ -15,7 +15,7 @@ import {
} from '@nestjs/swagger';
import { Serealize } from '../interceptors/serialize.interceptor';
import { EquipoMotivoService } from './equipo-motivo.service';
import { Operador } from 'src/operador/entity/operador.entity';
import { Operador } from '../operador/entity/operador.entity';
import { IdEquipoPaginaDto } from '../dto/id-equipo-pagina.dto';
import { EquipoMotivoOutputDto } from './dto/output/equipo-motivo.dto';

View File

@ -9,7 +9,7 @@ import {
} from '@nestjs/common';
import { AuthGuard } from '@nestjs/passport';
import { ApiBearerAuth, ApiBody, ApiOperation, ApiTags } from '@nestjs/swagger';
import { Operador } from 'src/operador/entity/operador.entity';
import { Operador } from '../operador/entity/operador.entity';
import { EquipoProgramaService } from './equipo-programa.service';
import { CreateEquipoProgramaDto } from './dto/input/create.dto';
import { DeleteEquipoProgramaDto } from './dto/input/delete.dto';

View File

@ -12,7 +12,7 @@ import { EquipoPrograma } from './entity/equipo-programa.entity';
import { Programa } from '../institucion-programa/entity/programa.entity';
import { EquipoService } from '../equipo/equipo.service';
import { InstitucionProgramaService } from '../institucion-programa/institucion-programa.service';
import { Operador } from 'src/operador/entity/operador.entity';
import { Operador } from '../operador/entity/operador.entity';
@Injectable()
export class EquipoProgramaService {

View File

@ -10,7 +10,7 @@ import {
import { AuthGuard } from '@nestjs/passport';
import { ApiBearerAuth, ApiBody, ApiOperation, ApiTags } from '@nestjs/swagger';
import { EquipoTipoEntradaService } from './equipo-tipo-entrada.service';
import { Operador } from 'src/operador/entity/operador.entity';
import { Operador } from '../operador/entity/operador.entity';
import { CreateEquipoTipoEntradaDto } from './dto/input/create.dto';
import { DeleteEquipoTipoEntradaDto } from './dto/input/delete.dto';

View File

@ -18,7 +18,7 @@ import {
} from '@nestjs/swagger';
import { Serealize } from '../interceptors/serialize.interceptor';
import { EquipoService } from './equipo.service';
import { Operador } from 'src/operador/entity/operador.entity';
import { Operador } from '../operador/entity/operador.entity';
import { NumeroInventarioDto } from '../dto/numero-inventario.dto';
import { EquiposDto } from './dto/input/equipos.dto';
import { UpdateEquipoDto } from './dto/input/update.dto';

View File

@ -19,7 +19,7 @@ import {
} from '@nestjs/swagger';
import { Serealize } from '../interceptors/serialize.interceptor';
import { HoraExcepcionService } from './hora-excepcion.service';
import { Operador } from 'src/operador/entity/operador.entity';
import { Operador } from '../operador/entity/operador.entity';
import { CreateHoraExcepcionDto } from './dto/input/create.dto';
import { DeleteHoraExcepcionDto } from './dto/input/delete.dto';
import { GetHoraExcepcionDto } from './dto/input/get.dto';

View File

@ -14,7 +14,7 @@ import {
} from 'typeorm';
import { HoraExcepcion } from './entity/hora-excepcion.entity';
import { InstitucionDia } from '../institucion-dia/entity/institucion-dia.entity';
import { Operador } from 'src/operador/entity/operador.entity';
import { Operador } from '../operador/entity/operador.entity';
import { InstitucionDiaService } from '../institucion-dia/institucion-dia.service';
@Injectable()

View File

@ -18,11 +18,11 @@ import {
} from '@nestjs/swagger';
import { Serealize } from '../interceptors/serialize.interceptor';
import { InstitucionDiaService } from './institucion-dia.service';
import { Operador } from 'src/operador/entity/operador.entity';
import { Operador } from '../operador/entity/operador.entity';
import { IdInstitucionDto } from '../dto/id-institucion.dto';
import { UpdateInstitucionDiaDto } from './dto/input/update.dto';
import { InstitucionCarreaOutputDto } from './dto/output/institucion-carrera.dto';
import { Usuario } from 'src/usuario/entity/usuario.entity';
import { Usuario } from '../usuario/entity/usuario.entity';
@Controller('institucion-dia')
@ApiTags('institucion-dia')

View File

@ -14,7 +14,7 @@ import {
} from 'typeorm';
import { Institucion } from '../institucion/entity/institucion.entity';
import { InstitucionDia } from './entity/institucion-dia.entity';
import { Operador } from 'src/operador/entity/operador.entity';
import { Operador } from '../operador/entity/operador.entity';
import { InstitucionService } from '../institucion/institucion.service';
@Injectable()

View File

@ -19,7 +19,7 @@ import {
} from '@nestjs/swagger';
import { Serealize } from '../interceptors/serialize.interceptor';
import { InstitucionInfraccionService } from './institucion-infraccion.service';
import { Operador } from 'src/operador/entity/operador.entity';
import { Operador } from '../operador/entity/operador.entity';
import { IdInstitucionDto } from '../dto/id-institucion.dto';
import { CreateInstitucionInfraccionDto } from './dto/input/create.dto';
import { UpdateInstitucionInfraccionDto } from './dto/input/update.dto';

View File

@ -7,7 +7,7 @@ import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { Infraccion } from './entity/infraccion.entity';
import { InstitucionInfraccion } from './entity/institucion-infraccion.entity';
import { Operador } from 'src/operador/entity/operador.entity';
import { Operador } from '../operador/entity/operador.entity';
import { InstitucionService } from '../institucion/institucion.service';
@Injectable()

View File

@ -19,8 +19,8 @@ import {
} from '@nestjs/swagger';
import { Serealize } from '../interceptors/serialize.interceptor';
import { InstitucionProgramaService } from './institucion-programa.service';
import { Operador } from 'src/operador/entity/operador.entity';
import { Usuario } from 'src/usuario/entity/usuario.entity';
import { Operador } from '../operador/entity/operador.entity';
import { Usuario } from '../usuario/entity/usuario.entity';
import { IdInstitucionDto } from '../dto/id-institucion.dto';
import { CreateProgramaDto } from './dto/input/create.dto';
import { UpdateProgramaDto } from './dto/input/update.dto';

View File

@ -6,7 +6,7 @@ import {
import { InjectRepository } from '@nestjs/typeorm';
import { Not, Repository } from 'typeorm';
import { InstitucionPrograma } from './entity/institucion-programa.entity';
import { Operador } from 'src/operador/entity/operador.entity';
import { Operador } from '../operador/entity/operador.entity';
import { Programa } from './entity/programa.entity';
import { InstitucionService } from '../institucion/institucion.service';

View File

@ -19,8 +19,8 @@ import {
} from '@nestjs/swagger';
import { Serealize } from '../interceptors/serialize.interceptor';
import { InstitucionTipoCarritoService } from './institucion-tipo-carrito.service';
import { Operador } from 'src/operador/entity/operador.entity';
import { Usuario } from 'src/usuario/entity/usuario.entity';
import { Operador } from '../operador/entity/operador.entity';
import { Usuario } from '../usuario/entity/usuario.entity';
import { IdInstitucionDto } from '../dto/id-institucion.dto';
import { CreateInstitucionTipoCarritoDto } from './dto/input/create.dto';
import { UpdateInstitucionTipoCarritoDto } from './dto/input/update.dto';

View File

@ -6,7 +6,7 @@ import {
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { InstitucionTipoCarrito } from './entity/institucion-tipo-carrito.entity';
import { Operador } from 'src/operador/entity/operador.entity';
import { Operador } from '../operador/entity/operador.entity';
import { TipoCarrito } from './entity/tipo-carrito.entity';
import { InstitucionService } from '../institucion/institucion.service';

View File

@ -19,8 +19,8 @@ import {
} from '@nestjs/swagger';
import { Serealize } from '../interceptors/serialize.interceptor';
import { InstitucionTipoEntradaService } from './institucion-tipo-entrada.service';
import { Operador } from 'src/operador/entity/operador.entity';
import { Usuario } from 'src/usuario/entity/usuario.entity';
import { Operador } from '../operador/entity/operador.entity';
import { Usuario } from '../usuario/entity/usuario.entity';
import { IdInstitucionDto } from '../dto/id-institucion.dto';
import { CreateInstitucionTipoEntradaDto } from './dto/input/create.dto';
import { UpdateInstitucionTipoEntradaDto } from './dto/input/update.dto';

View File

@ -6,7 +6,7 @@ import {
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { InstitucionTipoEntrada } from './entity/institucion-tipo-entrada.entity';
import { Operador } from 'src/operador/entity/operador.entity';
import { Operador } from '../operador/entity/operador.entity';
import { TipoEntrada } from './entity/tipo-entrada.entity';
import { InstitucionService } from '../institucion/institucion.service';

View File

@ -0,0 +1,14 @@
import { IsBoolean, IsInt, IsOptional } from 'class-validator';
export class UpdateInstitucionUsuarioInputDto {
@IsInt()
id_institucion_usuario: number;
@IsBoolean()
@IsOptional()
activo?: boolean;
@IsBoolean()
@IsOptional()
multa?: boolean;
}

View File

@ -0,0 +1,18 @@
import { Test, TestingModule } from '@nestjs/testing';
import { InstitucionUsuarioController } from './institucion-usuario.controller';
describe('InstitucionUsuarioController', () => {
let controller: InstitucionUsuarioController;
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
controllers: [InstitucionUsuarioController],
}).compile();
controller = module.get<InstitucionUsuarioController>(InstitucionUsuarioController);
});
it('should be defined', () => {
expect(controller).toBeDefined();
});
});

View File

@ -0,0 +1,51 @@
import {
Body,
Controller,
ForbiddenException,
Put,
Request,
UseGuards,
} from '@nestjs/common';
import { AuthGuard } from '@nestjs/passport';
import { ApiBearerAuth, ApiBody, ApiOperation, ApiTags } from '@nestjs/swagger';
import { InstitucionUsuarioService } from './institucion-usuario.service';
import { Operador } from '../operador/entity/operador.entity';
import { UpdateInstitucionUsuarioInputDto } from './dto/input/update.dto';
@Controller('institucion-usuario')
@ApiTags('institucion-usuario')
export class InstitucionUsuarioController {
constructor(private institucionUsuarioService: InstitucionUsuarioService) {}
@Put()
@UseGuards(AuthGuard('jwt'))
@ApiOperation({
description: 'Enpoint que actualiza la información de un usuario.',
})
@ApiBearerAuth('jwt')
@ApiBody({
description: 'Todas las variables a excepción de id_ son opcionales.',
examples: {
ejemplo: {
value: {
correo: '',
id_usuario: 1,
telefono: '',
},
},
},
})
update(@Request() req, @Body() body: UpdateInstitucionUsuarioInputDto) {
const admin: Operador = req.user.operador;
if (
!admin ||
(admin.tipoUsuario.id_tipo_usuario != 3 &&
admin.tipoUsuario.id_tipo_usuario != 4)
)
throw new ForbiddenException(
'No tienes los permisos necesarios para realizar esta acción.',
);
return this.institucionUsuarioService.update(body);
}
}

View File

@ -3,6 +3,7 @@ import { PassportModule } from '@nestjs/passport';
import { TypeOrmModule } from '@nestjs/typeorm';
import { InstitucionUsuarioService } from './institucion-usuario.service';
import { InstitucionUsuario } from './entity/institucion-usuario.entity';
import { InstitucionUsuarioController } from './institucion-usuario.controller';
@Module({
imports: [
@ -11,5 +12,6 @@ import { InstitucionUsuario } from './entity/institucion-usuario.entity';
],
providers: [InstitucionUsuarioService],
exports: [InstitucionUsuarioService],
controllers: [InstitucionUsuarioController],
})
export class InstitucionUsuarioModule {}

View File

@ -30,10 +30,6 @@ export class UpdateInstitucionDto {
@IsOptional()
dominio?: string;
@IsBoolean()
@IsOptional()
email_institucional?: boolean;
@IsString()
@IsNotEmpty()
@IsOptional()

View File

@ -19,9 +19,6 @@ export class InstitucionOutputDto {
@Expose()
dominio;
@Expose()
email_institucional;
@Expose()
institucion;

View File

@ -8,5 +8,5 @@ export class InstitucionesMinOutputDto {
institucion;
@Expose()
email_institucional;
dominio;
}

View File

@ -18,7 +18,7 @@ import {
} from '@nestjs/swagger';
import { Serealize } from '../interceptors/serialize.interceptor';
import { InstitucionService } from './institucion.service';
import { Operador } from 'src/operador/entity/operador.entity';
import { Operador } from '../operador/entity/operador.entity';
import { IdInstitucionDto } from '../dto/id-institucion.dto';
import { UpdateInstitucionDto } from './dto/input/update.dto';
import { InstitucionOutputDto } from './dto/output/institucion.dto';
@ -127,7 +127,6 @@ export class InstitucionController {
_activo: true,
_dias_multa_retraso: 7,
_dominio: '@pcpuma.acatlan.unam.mx',
_email_institucional: true,
_responsable: '',
_telefono: '',
_tiempo_entrega: 15,

View File

@ -6,7 +6,7 @@ import {
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { Institucion } from './entity/institucion.entity';
import { Operador } from 'src/operador/entity/operador.entity';
import { Operador } from '../operador/entity/operador.entity';
@Injectable()
export class InstitucionService {

View File

@ -18,7 +18,7 @@ import {
} from '@nestjs/swagger';
import { Serealize } from '../interceptors/serialize.interceptor';
import { MarcaService } from './marca.service';
import { Operador } from 'src/operador/entity/operador.entity';
import { Operador } from '../operador/entity/operador.entity';
import { CreateMarcaDto } from './dto/input/create.dto';
import { MarcaDto } from './dto/input/marca.dto';
import { MarcaOutputDto } from './dto/output/marca.dto';

View File

@ -18,7 +18,7 @@ import {
} from '@nestjs/swagger';
import { Serealize } from '../interceptors/serialize.interceptor';
import { ModeloService } from './modelo.service';
import { Operador } from 'src/operador/entity/operador.entity';
import { Operador } from '../operador/entity/operador.entity';
import { CreateModeloDto } from './dto/input/create.dto';
import { ModeloDto } from './dto/input/modelo.dto';
import { ModeloOutputDto } from './dto/output/modelo.dto';

View File

@ -19,8 +19,8 @@ import {
} from '@nestjs/swagger';
import { Serealize } from '../interceptors/serialize.interceptor';
import { ModuloService } from './modulo.service';
import { Operador } from 'src/operador/entity/operador.entity';
import { Usuario } from 'src/usuario/entity/usuario.entity';
import { Operador } from '../operador/entity/operador.entity';
import { Usuario } from '../usuario/entity/usuario.entity';
import { IdInstitucionDto } from '../dto/id-institucion.dto';
import { CreateModuloDto } from './dto/input/create.dto';
import { ModuloDto } from './dto/input/modulo.dto';

View File

@ -7,7 +7,7 @@ import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { Institucion } from '../institucion/entity/institucion.entity';
import { Modulo } from './entity/modulo.entity';
import { Operador } from 'src/operador/entity/operador.entity';
import { Operador } from '../operador/entity/operador.entity';
import { InstitucionService } from '../institucion/institucion.service';
@Injectable()

View File

@ -19,8 +19,8 @@ import {
} from '@nestjs/swagger';
import { Serealize } from '../interceptors/serialize.interceptor';
import { MultaService } from './multa.service';
import { Operador } from 'src/operador/entity/operador.entity';
import { Usuario } from 'src/usuario/entity/usuario.entity';
import { Operador } from '../operador/entity/operador.entity';
import { Usuario } from '../usuario/entity/usuario.entity';
import { IdUsuarioDto } from '../dto/id-usuario.dto';
import { IdEquipoPaginaDto } from '../dto/id-equipo-pagina.dto';
import { MultarDto } from './dto/input/multar.dto';

View File

@ -19,7 +19,7 @@ import {
} from '@nestjs/swagger';
import { Serealize } from '../interceptors/serialize.interceptor';
import { PrestamoService } from './prestamo.service';
import { Operador } from 'src/operador/entity/operador.entity';
import { Operador } from '../operador/entity/operador.entity';
import { IdEquipoPaginaDto } from '../dto/id-equipo-pagina.dto';
import { IdUsuarioDto } from '../dto/id-usuario.dto';
import { IdUsuarioPaginaDto } from '../dto/id-usuario-pagina.dto';
@ -40,7 +40,7 @@ import { PrestamoEquipoOutputDto } from './dto/output/prestamo-equipo.dto';
import { PrestamosOutputDto } from './dto/output/prestamos.dto';
import { PrestamosEquipoOutputDto } from './dto/output/prestamos-equipo.dto';
import { PrestamosUsuarioOutputDto } from './dto/output/prestamos-usuario.dto';
import { Usuario } from 'src/usuario/entity/usuario.entity';
import { Usuario } from '../usuario/entity/usuario.entity';
@Controller('prestamo')
@ApiTags('prestamo')

View File

@ -16,7 +16,7 @@ import { InstitucionUsuario } from '../institucion-usuario/entity/institucion-us
import { Modulo } from '../modulo/entity/modulo.entity';
import { Operador } from '../operador/entity/operador.entity';
import { Prestamo } from './entity/prestamo.entity';
import { Usuario } from 'src/usuario/entity/usuario.entity';
import { Usuario } from '../usuario/entity/usuario.entity';
import { EquipoService } from '../equipo/equipo.service';
import { InstitucionService } from '../institucion/institucion.service';
import { InstitucionDiaService } from '../institucion-dia/institucion-dia.service';

View File

@ -10,7 +10,7 @@ import { ApiBearerAuth, ApiOperation, ApiTags } from '@nestjs/swagger';
import { Serealize } from '../interceptors/serialize.interceptor';
import { StatusService } from './status.service';
import { StatusOutputDto } from './dto/output/status.dto';
import { Operador } from 'src/operador/entity/operador.entity';
import { Operador } from '../operador/entity/operador.entity';
@Controller('status')
@ApiTags('status')

View File

@ -11,7 +11,7 @@ import { AuthGuard } from '@nestjs/passport';
import { ApiBearerAuth, ApiBody, ApiOperation, ApiTags } from '@nestjs/swagger';
import { Serealize } from '../interceptors/serialize.interceptor';
import { TipoUsuarioService } from './tipo-usuario.service';
import { Operador } from 'src/operador/entity/operador.entity';
import { Operador } from '../operador/entity/operador.entity';
import { CreateTipoUsuarioDto } from './dto/input/create.dto';
import { TipoUsuarioOutputDto } from './dto/output/tipo-usuario.dto';

View File

@ -6,10 +6,12 @@ import {
Query,
Response,
UploadedFile,
UseGuards,
UseInterceptors,
} from '@nestjs/common';
import { AuthGuard } from '@nestjs/passport';
import { FileInterceptor } from '@nestjs/platform-express';
import { ApiTags } from '@nestjs/swagger';
import { ApiBearerAuth, ApiTags } from '@nestjs/swagger';
import { UploadFileService } from './upload-file.service';
import { IdInstitucionDto } from '../dto/id-institucion.dto';
@ -19,7 +21,9 @@ export class UploadFileController {
constructor(private uploadFileService: UploadFileService) {}
@Post('carga-masiva-equipos')
@UseGuards(AuthGuard('jwt'))
@UseInterceptors(FileInterceptor('csv'))
@ApiBearerAuth('jwt')
cargaMasivaEquipos(
@UploadedFile() file: Express.Multer.File,
@Query() query: IdInstitucionDto,
@ -34,7 +38,9 @@ export class UploadFileController {
}
@Post('carga-masiva-usuarios')
@UseGuards(AuthGuard('jwt'))
@UseInterceptors(FileInterceptor('csv'))
@ApiBearerAuth('jwt')
cargaMasivaUsuarios(
@UploadedFile() file: Express.Multer.File,
@Query() query: IdInstitucionDto,
@ -49,6 +55,8 @@ export class UploadFileController {
}
@Get('download-logo')
@UseGuards(AuthGuard('jwt'))
@ApiBearerAuth('jwt')
downloadLogo(@Response() res, @Query() query: IdInstitucionDto) {
return this.uploadFileService
.downloadLogo(parseInt(query.id_institucion))
@ -56,16 +64,22 @@ export class UploadFileController {
}
@Get('download-plantilla-equipos')
@UseGuards(AuthGuard('jwt'))
@ApiBearerAuth('jwt')
downloadPlantillaEquipos(@Response() res) {
return res.download('./upload/plantilla_equipos.csv');
}
@Get('download-plantilla-usuarios')
@UseGuards(AuthGuard('jwt'))
@ApiBearerAuth('jwt')
downloadPlantillaUsuarios(@Response() res) {
return res.download('./upload/plantilla_alumnos.csv');
}
@Post('upload-logo')
@UseGuards(AuthGuard('jwt'))
@ApiBearerAuth('jwt')
@UseInterceptors(FileInterceptor('logo'))
uploadLogo(
@UploadedFile() file: Express.Multer.File,

View File

@ -1,4 +1,4 @@
import { IsEmail, IsInt, IsOptional, IsPhoneNumber } from 'class-validator';
import { IsEmail, IsInt, IsPhoneNumber } from 'class-validator';
export class RegistrarUsuarioInputDto {
@IsInt()
@ -8,6 +8,5 @@ export class RegistrarUsuarioInputDto {
telefono: string;
@IsEmail()
@IsOptional()
correo?: string;
correo: string;
}

View File

@ -20,6 +20,7 @@ import {
import { Recaptcha } from '@nestlab/google-recaptcha';
import { Serealize } from '../interceptors/serialize.interceptor';
import { UsuarioService } from './usuario.service';
import { Operador } from '../operador/entity/operador.entity';
import { DgaeInputDto } from './dto/input/dgae.dto';
import { DgpInputDto } from './dto/input/dgp.dto';
import { RegistrarUsuarioInputDto } from './dto/input/registrar.dto';
@ -29,7 +30,6 @@ import { UsuariosInputDto } from './dto/input/usuarios.dto';
import { UsuarioInstitucionCarreraOutputDto } from '../institucion-usuario/dto/output/usuario-institucion-carrera.dto';
import { UsuarioOutputDto } from './dto/output/usuario.dto';
import { UsuariosOutputDto } from './dto/output/usuarios.dto';
import { Operador } from 'src/operador/entity/operador.entity';
@Controller('usuario')
@ApiTags('usuario')
@ -94,8 +94,8 @@ export class UsuarioController {
registrar(@Body() body: RegistrarUsuarioInputDto) {
return this.usuarioService.registrar(
body.id_institucion_usuario,
body.telefono,
body.correo,
body.telefono,
);
}

View File

@ -221,10 +221,9 @@ export class UsuarioService {
}));
}
registrar(id_institucion_usuario: number, telefono: string, correo?: string) {
registrar(id_institucion_usuario: number, correo: string, telefono: string) {
const password = this.bcryptService.generarPassword();
let message =
'Se creó correctamente tu cuenta, ingresa a tu correo institucional y consulta tu contraseña para acceder a este servicio.';
let message: string;
return this.institucionUsuarioService
.findById(id_institucion_usuario)
@ -236,15 +235,17 @@ export class UsuarioService {
throw new ConflictException(
'Ya fue registrado este número de cuenta.',
);
if (!institucion.email_institucional) {
if (!correo)
throw new ConflictException(
'No se envió un correo electrónico para el regístro.',
);
else usuario.correo = correo;
if (usuario.correo && correo != usuario.correo)
throw new ConflictException(
'El correo ingresado no concuerda con el ingresado a escolares.',
);
if (!institucion.dominio)
message =
'Se creó correctamente tu cuenta, ingresa a tu correo y consulta tu contraseña para acceder a este servicio.';
} else usuario.correo = `${usuario.usuario}${institucion.dominio}`;
else
message =
'Se creó correctamente tu cuenta, ingresa a tu correo institucional y consulta tu contraseña para acceder a este servicio.';
usuario.correo = correo;
usuario.telefono = telefono;
usuario.password = this.bcryptService.encriptar(password);
return this.repository.save(usuario);