Files
pcpuma_unam_api/src/prestamo/prestamo.controller.ts
T

379 lines
11 KiB
TypeScript
Raw Normal View History

2022-06-08 23:52:05 -05:00
import { Body, Controller, Get, Post, Put, Query } from '@nestjs/common';
2022-06-12 15:16:24 -05:00
import { ApiBody, ApiOperation, ApiQuery, ApiTags } from '@nestjs/swagger';
2022-06-14 15:39:13 -05:00
import { Serealize } from '../interceptors/serialize.interceptor';
2022-04-04 20:53:32 -05:00
import { PrestamoService } from './prestamo.service';
2022-06-14 20:57:28 -05:00
2022-06-14 12:11:10 -05:00
import { ActivosDto } from './dto/input/activos.dto';
2022-06-14 20:57:28 -05:00
import { CancelarUsuarioDto } from './dto/input/cancelar-usuario.dto';
import { CancelarOperadorDto } from './dto/input/cancelar-operador.dto';
2022-06-14 14:56:01 -05:00
import { HistorialDto } from './dto/input/historial.dto';
2022-06-14 12:11:10 -05:00
import { HistorialEquipoDto } from './dto/input/historial-equipo.dto';
import { HistorialUsuarioDto } from './dto/input/historial-usuario.dto';
2022-06-14 20:57:28 -05:00
import { IdPrestamoDto } from './dto/input/id-prestamo.dto';
import { IdUsuarioDto } from './dto/input/id-usuario.dto';
import { NumeroInventarioDto } from './dto/input/numero-inventario.dto';
import { PedirDto } from './dto/input/pedir.dto';
import { EntregarDto } from './dto/input/entregar.dto';
import { RegresarIdPrestamoDto } from './dto/input/regresar-id-prestamo.dto';
import { RegresarNumeroInventarioDto } from './dto/input/regresar-numero-inventario.dto';
2022-06-14 15:39:13 -05:00
import { PrestamoOutputDto } from './dto/output/prestamo.dto';
import { PrestamoActivoOutputDto } from './dto/output/prestamo-activo.dto';
import { PrestamoUsuarioOutputDto } from './dto/output/prestamo-usuario.dto';
import { PrestamoEquipoOutputDto } from './dto/output/prestamo-equipo.dto';
2022-03-29 22:03:19 -06:00
@Controller('prestamo')
2022-06-03 08:47:36 -05:00
@ApiTags('prestamo')
2022-04-04 20:53:32 -05:00
export class PrestamoController {
constructor(private prestamoService: PrestamoService) {}
2022-04-17 22:51:49 -05:00
2022-06-14 15:39:13 -05:00
@Serealize(PrestamoActivoOutputDto)
2022-04-17 22:51:49 -05:00
@Get('activos')
2022-06-12 13:35:47 -05:00
@ApiOperation({
description:
'Endpoint que retorna 25 prestamos activos dependiendo de la página en la que se encuentra el operador y sus filtros.',
})
@ApiQuery({
description: 'Página en la que se encuentra el usuario.',
name: 'pagina',
type: 'string',
})
@ApiQuery({
description: 'Carrito que se quiere usar como filtro.',
name: 'carrito',
type: 'string',
required: false,
})
@ApiQuery({
description: 'Equipo que se quiere usar como filtro.',
name: 'equipo',
type: 'string',
required: false,
})
@ApiQuery({
description: 'Id de la institución que se quiere usar como filtro.',
name: 'id_institucion',
type: 'string',
required: false,
})
@ApiQuery({
description: 'Id del modulo que se quiere usar como filtro.',
name: 'id_modulo',
type: 'string',
required: false,
})
@ApiQuery({
description: 'Id del préstamo que se quiere usar como filtro.',
name: 'id_prestamo',
type: 'string',
required: false,
})
@ApiQuery({
description: 'Id del tipo de carrito que se quiere usar como filtro.',
name: 'id_tipo_carrito',
type: 'string',
required: false,
})
@ApiQuery({
description: 'Id del tipo de usuario que se quiere usar como filtro.',
name: 'id_tipo_usuario',
type: 'string',
required: false,
})
@ApiQuery({
description: 'Usuario que se quiere usar como filtro.',
name: 'usuario',
type: 'string',
required: false,
})
2022-06-14 12:11:10 -05:00
activos(@Query() query: ActivosDto) {
2022-06-08 23:52:05 -05:00
return this.prestamoService.findAll(query);
}
2022-04-17 22:51:49 -05:00
2022-06-03 08:47:36 -05:00
@Put('cancelar-operador')
2022-06-12 13:35:47 -05:00
@ApiOperation({
description: 'Endpoint que cancela un prestamo por parte del operador.',
})
2022-06-12 15:16:24 -05:00
@ApiBody({
description: 'Ambas variables son obligatorias.',
examples: { ejemplo: { value: { id_prestamo: 1, id_operador: 1 } } },
})
2022-06-14 17:11:59 -05:00
cancelarOperador(@Body() body: CancelarOperadorDto) {
2022-06-12 15:16:24 -05:00
return this.prestamoService.cancelarOperador(
body.id_prestamo,
body.id_operador,
2022-06-14 17:11:59 -05:00
body.motivo,
2022-06-12 15:16:24 -05:00
);
}
2022-04-17 22:51:49 -05:00
2022-06-03 08:47:36 -05:00
@Put('cancelar-usuario')
2022-06-12 13:35:47 -05:00
@ApiOperation({
description: 'Endpoint que cancela el prestamo del usuario.',
})
2022-06-12 15:16:24 -05:00
@ApiBody({
description: 'La variable id_prestamo es obligatoria.',
examples: { ejemplo: { value: { id_prestamo: 1 } } },
})
2022-06-14 12:11:10 -05:00
cancelarUsuario(@Body() body: CancelarUsuarioDto) {
2022-06-12 15:16:24 -05:00
return this.prestamoService.cancelarUsuario(body.id_prestamo);
}
2022-04-17 22:51:49 -05:00
@Put('entregar')
2022-06-12 13:35:47 -05:00
@ApiOperation({
description: 'Endpoint que actualiza el status del equipo a "En uso".',
})
2022-06-12 15:39:29 -05:00
@ApiBody({
description: 'Ambas variables son obligatorias.',
examples: { ejemplo: { value: { id_prestamo: 1, id_operador: 4 } } },
})
2022-06-14 20:57:28 -05:00
entregar(@Body() body: EntregarDto) {
2022-06-12 15:39:29 -05:00
return this.prestamoService.entregar(body.id_prestamo, body.id_operador);
}
2022-04-17 22:51:49 -05:00
2022-06-14 15:39:13 -05:00
@Serealize(PrestamoOutputDto)
2022-04-17 22:51:49 -05:00
@Get('historial')
2022-06-12 13:35:47 -05:00
@ApiOperation({
description:
'Endpoint que retorna 25 prestamos dependiendo de la página en la que se encuentra el operador y sus filtros.',
})
@ApiQuery({
description: 'Página en la que se encuentra el usuario.',
name: 'pagina',
type: 'string',
})
@ApiQuery({
description: 'Carrito que se quiere usar como filtro.',
name: 'carrito',
type: 'string',
required: false,
})
@ApiQuery({
description: 'Equipo que se quiere usar como filtro.',
name: 'equipo',
type: 'string',
required: false,
})
@ApiQuery({
description: 'Fecha inicio que se quiere usar como filtro.',
name: 'fechaInicio',
type: 'string',
required: false,
})
@ApiQuery({
description: 'Fecha fin se quiere usar como filtro.',
name: 'fechaFin',
type: 'string',
required: false,
})
@ApiQuery({
description: 'Id de la institución que se quiere usar como filtro.',
name: 'id_institucion',
type: 'string',
required: false,
})
@ApiQuery({
description: 'Id del modulo que se quiere usar como filtro.',
name: 'id_modulo',
type: 'string',
required: false,
})
@ApiQuery({
description: 'Id del préstamo que se quiere usar como filtro.',
name: 'id_prestamo',
type: 'string',
required: false,
})
@ApiQuery({
description: 'Id del tipo de carrito que se quiere usar como filtro.',
name: 'id_tipo_carrito',
type: 'string',
required: false,
})
@ApiQuery({
description: 'Id del tipo de usuario que se quiere usar como filtro.',
name: 'id_tipo_usuario',
type: 'string',
required: false,
})
@ApiQuery({
description: 'Usuario que se quiere usar como filtro.',
name: 'usuario',
type: 'string',
required: false,
})
2022-06-14 12:11:10 -05:00
historial(@Query() query: HistorialDto) {
2022-06-12 13:35:47 -05:00
return this.prestamoService.findAll(query);
}
2022-04-17 22:51:49 -05:00
2022-06-14 15:39:13 -05:00
@Serealize(PrestamoEquipoOutputDto)
2022-06-03 08:47:36 -05:00
@Get('historial-equipo')
2022-06-12 13:35:47 -05:00
@ApiOperation({
description:
'Endpoint que retorna 25 prestamos de un usuario dependiendo de la página en la que se encuentra el operador y sus filtros.',
})
@ApiQuery({
description: 'Página en la que se encuentra el usuario.',
name: 'pagina',
type: 'string',
})
@ApiQuery({
description: 'Id del equipo.',
name: 'id_equipo',
type: 'string',
})
2022-06-14 12:11:10 -05:00
historialEquipo(@Query() query: HistorialEquipoDto) {
2022-06-12 13:35:47 -05:00
return this.prestamoService.findAllByIdEquipo(
parseInt(query.id_equipo),
parseInt(query.pagina),
);
}
2022-04-17 22:51:49 -05:00
2022-06-14 15:39:13 -05:00
@Serealize(PrestamoUsuarioOutputDto)
2022-06-03 08:47:36 -05:00
@Get('historial-usuario')
2022-06-12 13:35:47 -05:00
@ApiOperation({
description:
'Endpoint que retorna 25 prestamos de un equipo dependiendo de la página en la que se encuentra el operador y sus filtros.',
})
@ApiQuery({
description: 'Página en la que se encuentra el usuario.',
name: 'pagina',
type: 'string',
})
@ApiQuery({
description: 'Id del usuario.',
name: 'id_usuario',
type: 'string',
})
2022-06-14 12:11:10 -05:00
historialUsuario(@Query() query: HistorialUsuarioDto) {
2022-06-12 13:35:47 -05:00
return this.prestamoService.findAllByIdUsuario(
parseInt(query.id_usuario),
parseInt(query.pagina),
);
}
2022-04-17 22:51:49 -05:00
2022-06-14 15:39:13 -05:00
@Serealize(PrestamoUsuarioOutputDto)
2022-04-17 22:51:49 -05:00
@Post()
2022-06-12 15:16:24 -05:00
@ApiOperation({ description: 'Endpoint que crea un prestamo nuevo.' })
@ApiBody({
description:
'Todas las variables a excepción de id_programa y id_tipo_entrada son obligatorios.',
examples: {
ejemplo: {
value: {
id_usuario: 1,
id_modulo: 1,
id_tipo_carrito: 1,
id_programa: 1,
id_tipo_entrada: 1,
},
},
},
})
2022-06-14 12:11:10 -05:00
pedir(@Body() body: PedirDto) {
2022-06-08 23:37:29 -05:00
return this.prestamoService.create(
body.id_usuario,
body.id_modulo,
body.id_tipo_carrito,
body.id_programa,
body.id_tipo_entrada,
);
}
2022-04-17 22:51:49 -05:00
2022-06-14 15:39:13 -05:00
@Serealize(PrestamoOutputDto)
2022-06-03 08:47:36 -05:00
@Get('prestamo-id-prestamo')
@ApiOperation({ description: 'Endpoint que retorna un préstamo por su id.' })
@ApiQuery({ description: '', name: '', type: '' })
2022-06-14 12:11:10 -05:00
prestamoIdPrestamo(@Query() query: IdPrestamoDto) {
return this.prestamoService.findById(parseInt(query.id_prestamo));
}
2022-04-17 22:51:49 -05:00
2022-06-14 15:39:13 -05:00
@Serealize(PrestamoUsuarioOutputDto)
2022-06-03 08:47:36 -05:00
@Get('prestamo-id-usuario')
@ApiOperation({
description:
'Endpoint que retorna un préstamo activo por el id del usuario.',
})
@ApiQuery({
description: 'Id del usuario.',
name: 'id_usuario',
type: 'string',
})
2022-06-14 12:11:10 -05:00
prestamoIdUsuario(@Query() query: IdUsuarioDto) {
return this.prestamoService.findByIdUsuario(parseInt(query.id_usuario));
}
2022-04-17 22:51:49 -05:00
2022-06-14 15:39:13 -05:00
@Serealize(PrestamoEquipoOutputDto)
2022-06-03 08:47:36 -05:00
@Get('prestamo-numero-inventario')
@ApiOperation({
description:
'Endpoint que retorna un préstamo activo por el número de inventario de un equipo.',
})
@ApiQuery({
description: 'Id de la institución.',
name: 'id_institucion',
type: 'string',
})
@ApiQuery({
description: 'El número de inventario del equipo.',
name: 'numero_inventario',
type: 'string',
})
2022-06-14 12:11:10 -05:00
prestamoNumeroInventario(@Query() query: NumeroInventarioDto) {
return this.prestamoService.findByNumeroInventario(
parseInt(query.id_institucion),
query.numero_inventario,
);
}
2022-04-17 22:51:49 -05:00
2022-06-14 20:57:28 -05:00
@Put('regresar-id-prestamo')
2022-06-12 15:39:29 -05:00
@ApiOperation({ description: 'Endpoint que desactiva un préstamo.' })
@ApiBody({
description: 'Ambas variables son obligatorias.',
2022-06-14 20:57:28 -05:00
examples: {
ejemplo: {
value: {
id_operador: 4,
id_prestamo: 1,
_descripcion: '',
_id_institucion_infraccion: 603,
},
},
},
2022-06-12 15:39:29 -05:00
})
2022-06-14 20:57:28 -05:00
regresarIdPrestamo(@Body() body: RegresarIdPrestamoDto) {
return this.prestamoService.regresarIdPrestamo(
body.id_operador,
body.id_prestamo,
body.descripcion,
body.id_institucion_infraccion,
);
}
@Put('regresar-numero-inventario')
@ApiOperation({ description: 'Endpoint que desactiva un préstamo.' })
@ApiBody({
description: 'Ambas variables son obligatorias.',
examples: {
ejemplo: {
value: {
id_operador: 4,
numero_inventario: '',
_descripcion: '',
_id_institucion_infraccion: 603,
},
},
},
})
regresar(@Body() body: RegresarNumeroInventarioDto) {
return this.prestamoService.regresarNumeroInventario(
body.id_operador,
2022-06-14 21:43:07 -05:00
body.numero_inventario,
2022-06-14 20:57:28 -05:00
body.descripcion,
body.id_institucion_infraccion,
);
2022-06-12 15:39:29 -05:00
}
2022-04-17 22:51:49 -05:00
2022-06-03 08:47:36 -05:00
// @Get('reporte')
// reporte() {}
2022-04-04 20:53:32 -05:00
}