new ep equipo por equipo and equipo por dia
This commit is contained in:
@@ -75,6 +75,6 @@ export class AlumnoInscrito {
|
||||
@OneToMany(() => BitacoraMesa, (bitacoraMesa) => bitacoraMesa.alumno_inscrito)
|
||||
bitacoras_mesa: BitacoraMesa[];
|
||||
|
||||
@OneToMany(() => Bitacora, (bitacora) => bitacora.equipo)
|
||||
@OneToMany(() => Bitacora, (bitacora) => bitacora.alumno_inscrito)
|
||||
bitacoras: Bitacora[];
|
||||
}
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import { Controller, Get, Post, Body, Param, Patch } from '@nestjs/common';
|
||||
import { BitacoraService } from './bitacora.service';
|
||||
import { CreateBitacoraDto } from './dto/create-bitacora.dto';
|
||||
import { BitacoraAlumnoDto, CreateBitacoraDto, EquiposPorEquipoDto } from './dto/create-bitacora.dto';
|
||||
|
||||
@Controller('bitacora')
|
||||
export class BitacoraController {
|
||||
constructor(private readonly bitacoraService: BitacoraService) {}
|
||||
constructor(private readonly bitacoraService: BitacoraService) { }
|
||||
|
||||
@Post()
|
||||
assignment(@Body() createBitacoraDto: CreateBitacoraDto) {
|
||||
@@ -33,4 +33,23 @@ export class BitacoraController {
|
||||
findAll() {
|
||||
return this.bitacoraService.findAll();
|
||||
}
|
||||
|
||||
|
||||
@Post('equipos-por-dia')
|
||||
async obtenerEquipos(
|
||||
@Body() dto: BitacoraAlumnoDto
|
||||
) {
|
||||
return this.bitacoraService.obtenerEquiposPorAlumnoYFecha(
|
||||
dto.numero_cuenta,
|
||||
dto.fecha,
|
||||
);
|
||||
}
|
||||
|
||||
@Post('equipos-por-equipo')
|
||||
async equiposPorEquipo(
|
||||
@Body() dto: EquiposPorEquipoDto,
|
||||
) {
|
||||
return this.bitacoraService.equiposPorEquipo(dto);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { Injectable, NotFoundException } from '@nestjs/common';
|
||||
import { CreateBitacoraDto } from './dto/create-bitacora.dto';
|
||||
import { CreateBitacoraDto, EquiposPorEquipoDto } from './dto/create-bitacora.dto';
|
||||
import { InjectRepository } from '@nestjs/typeorm';
|
||||
import { Bitacora } from './entities/bitacora.entity';
|
||||
import { Repository } from 'typeorm';
|
||||
@@ -9,7 +9,7 @@ export class BitacoraService {
|
||||
constructor(
|
||||
@InjectRepository(Bitacora)
|
||||
private readonly bitacoraRepository: Repository<Bitacora>,
|
||||
) {}
|
||||
) { }
|
||||
|
||||
assignment(dto: CreateBitacoraDto) {
|
||||
const bitacora = this.bitacoraRepository.create({
|
||||
@@ -91,4 +91,63 @@ export class BitacoraService {
|
||||
|
||||
return { message: 'Tiempo cancelado' };
|
||||
}
|
||||
|
||||
async obtenerEquiposPorAlumnoYFecha(numeroCuenta: string, fecha: string) {
|
||||
|
||||
const fechaInicio = new Date(`${fecha}T00:00:00`);
|
||||
const fechaFin = new Date(`${fecha}T23:59:59`);
|
||||
|
||||
return await this.bitacoraRepository
|
||||
.createQueryBuilder('bitacora')
|
||||
.innerJoinAndSelect('bitacora.equipo', 'equipo')
|
||||
.innerJoin('bitacora.alumno_inscrito', 'alumnoInscrito')
|
||||
.innerJoin('alumnoInscrito.alumno', 'alumno')
|
||||
.where('alumno.id_cuenta = :numeroCuenta', { numeroCuenta })
|
||||
.andWhere('bitacora.tiempo_entrada BETWEEN :inicio AND :fin', {
|
||||
inicio: fechaInicio,
|
||||
fin: fechaFin,
|
||||
})
|
||||
.select([
|
||||
'bitacora.tiempo_entrada',
|
||||
'bitacora.tiempo_asignado',
|
||||
'equipo.ubicacion',
|
||||
'equipo.nombre_equipo'
|
||||
])
|
||||
.getMany();
|
||||
}
|
||||
async equiposPorEquipo(dto: EquiposPorEquipoDto) {
|
||||
const { id_equipo, fecha } = dto;
|
||||
|
||||
const inicio = new Date(`${fecha}T00:00:00`);
|
||||
const fin = new Date(`${fecha}T23:59:59`);
|
||||
|
||||
const registros = await this.bitacoraRepository
|
||||
.createQueryBuilder('bitacora')
|
||||
.innerJoinAndSelect('bitacora.equipo', 'equipo')
|
||||
.innerJoinAndSelect('bitacora.alumno_inscrito', 'alumnoInscrito')
|
||||
.innerJoinAndSelect('alumnoInscrito.alumno', 'alumno')
|
||||
.where('equipo.id_equipo = :id_equipo', { id_equipo })
|
||||
.andWhere('bitacora.tiempo_entrada BETWEEN :inicio AND :fin', {
|
||||
inicio,
|
||||
fin,
|
||||
})
|
||||
.select([
|
||||
'bitacora.tiempo_entrada',
|
||||
'bitacora.tiempo_asignado',
|
||||
'alumno.id_cuenta'
|
||||
])
|
||||
.orderBy('bitacora.tiempo_entrada', 'DESC')
|
||||
.getMany();
|
||||
|
||||
return registros.map(reg => ({
|
||||
hora_entrada: reg.tiempo_entrada,
|
||||
min_utilizados: reg.tiempo_asignado,
|
||||
hora_salida: new Date(
|
||||
new Date(reg.tiempo_entrada).getTime() +
|
||||
reg.tiempo_asignado * 60000
|
||||
),
|
||||
cuenta_asociada: reg.alumno_inscrito?.alumno?.id_cuenta
|
||||
}));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,16 +1,32 @@
|
||||
import { IsInt, IsOptional, IsString } from "class-validator";
|
||||
import { IsDateString, IsInt, IsNumber, IsNumberString, IsOptional, IsString } from "class-validator";
|
||||
|
||||
export class CreateBitacoraDto {
|
||||
@IsInt()
|
||||
tiempo_asignado: number;
|
||||
@IsInt()
|
||||
tiempo_asignado: number;
|
||||
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
ubicacion?: string;
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
ubicacion?: string;
|
||||
|
||||
@IsInt()
|
||||
id_equipo: number;
|
||||
@IsInt()
|
||||
id_equipo: number;
|
||||
|
||||
@IsInt()
|
||||
id_alumno_inscrito: number;
|
||||
}
|
||||
@IsInt()
|
||||
id_alumno_inscrito: number;
|
||||
}
|
||||
|
||||
export class BitacoraAlumnoDto {
|
||||
@IsNumberString()
|
||||
numero_cuenta: string;
|
||||
|
||||
@IsDateString()
|
||||
fecha: string;
|
||||
}
|
||||
|
||||
export class EquiposPorEquipoDto {
|
||||
@IsNumber()
|
||||
id_equipo: number;
|
||||
|
||||
@IsString()
|
||||
fecha: string;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user