institucion tipo carrito casi terminado

This commit is contained in:
xXpuma99Xx 2022-04-18 16:55:19 -05:00
parent 104ba5c816
commit e60e04a197
18 changed files with 174 additions and 100 deletions

View File

@ -1,8 +1,6 @@
import { Module } from '@nestjs/common';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { AppController } from './app.controller';
import { TypeOrmModule } from '@nestjs/typeorm';
import { AppService } from './app.service';
import { CarritoModule } from './carrito/carrito.module';
import { EquipoModule } from './equipo/equipo.module';
@ -18,7 +16,6 @@ import { OperadorModule } from './operador/operador.module';
import { PrestamoModule } from './prestamo/prestamo.module';
import { ProgramaModule } from './programa/programa.module';
import { StatusModule } from './status/status.module';
import { TipoCarritoModule } from './tipo-carrito/tipo-carrito.module';
import { TipoUsuarioModule } from './tipo-usuario/tipo-usuario.module';
import { UsuarioModule } from './usuario/usuario.module';
import { CarreraModule } from './carrera/carrera.module';
@ -44,7 +41,7 @@ import { Operador } from './operador/entity/operador.entity';
import { Prestamo } from './prestamo/entity/prestamo.entity';
import { Programa } from './programa/entity/programa.entity';
import { Status } from './status/entity/status.entity';
import { TipoCarrito } from './tipo-carrito/entity/tipo-carrito.entity';
import { TipoCarrito } from './institucion-tipo-carrito/entity/tipo-carrito.entity';
import { TipoEntrada } from './tipo-entrada/entity/tipo-entrada.entity';
import { TipoUsuario } from './tipo-usuario/entity/tipo-usuario.entity';
import { Usuario } from './usuario/entity/usuario.entity';
@ -106,13 +103,10 @@ import { Usuario } from './usuario/entity/usuario.entity';
PrestamoModule,
ProgramaModule,
StatusModule,
TipoCarritoModule,
TipoEntradaModule,
TipoUsuarioModule,
UsuarioModule,
InstitucionTipoCarritoModule,
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}

View File

@ -8,7 +8,7 @@ import {
} from 'typeorm';
import { Equipo } from '../../equipo/entity/equipo.entity';
import { Modulo } from '../../modulo/entity/modulo.entity';
import { TipoCarrito } from '../../tipo-carrito/entity/tipo-carrito.entity';
import { TipoCarrito } from '../../institucion-tipo-carrito/entity/tipo-carrito.entity';
@Entity()
export class Carrito {

View File

@ -0,0 +1,9 @@
import { IsString } from 'class-validator';
export class InstitucionTipoCarritoCreateDto {
@IsString()
letra: string;
@IsString()
tipo_carrito: string;
}

View File

@ -0,0 +1,9 @@
import { IsBoolean, IsNumber } from 'class-validator';
export class InstitucionTipoCarritoUpdateDto {
@IsNumber()
id_institucion_tipo_carrito: number;
@IsBoolean()
mostar: boolean;
}

View File

@ -6,7 +6,7 @@ import {
PrimaryGeneratedColumn,
} from 'typeorm';
import { Institucion } from '../../institucion/entity/institucion.entity';
import { TipoCarrito } from '../../tipo-carrito/entity/tipo-carrito.entity';
import { TipoCarrito } from './tipo-carrito.entity';
@Entity()
export class InstitucionTipoCarrito {
@ -26,6 +26,7 @@ export class InstitucionTipoCarrito {
@ManyToOne(
() => TipoCarrito,
(tipoCarrito) => tipoCarrito.institucionesTipoCarrito,
{ eager: true },
)
@JoinColumn({ name: 'id_tipo_carrito' })
tipoCarrito: TipoCarrito;

View File

@ -1,6 +1,6 @@
import { Column, Entity, OneToMany, PrimaryGeneratedColumn } from 'typeorm';
import { Carrito } from '../../carrito/entity/carrito.entity';
import { InstitucionTipoCarrito } from '../../institucion-tipo-carrito/entity/institucion-tipo-carrito.entity';
import { InstitucionTipoCarrito } from './institucion-tipo-carrito.entity';
@Entity()
export class TipoCarrito {

View File

@ -9,7 +9,9 @@ describe('InstitucionTipoCarritoController', () => {
controllers: [InstitucionTipoCarritoController],
}).compile();
controller = module.get<InstitucionTipoCarritoController>(InstitucionTipoCarritoController);
controller = module.get<InstitucionTipoCarritoController>(
InstitucionTipoCarritoController,
);
});
it('should be defined', () => {

View File

@ -1,5 +1,8 @@
import { Controller, Get, Put } from '@nestjs/common';
import { Body, Controller, Get, Post, Put, Query } from '@nestjs/common';
import { InstitucionTipoCarritoService } from './institucion-tipo-carrito.service';
import { IdInstitucionDto } from '../dto/id-institucion.dto';
import { InstitucionTipoCarritoCreateDto } from './dto/institucion-tipo-carrito-create.dto';
import { InstitucionTipoCarritoUpdateDto } from './dto/institucion-tipo-carrito-update.dto';
@Controller('institucion-tipo-carrito')
export class InstitucionTipoCarritoController {
@ -7,9 +10,28 @@ export class InstitucionTipoCarritoController {
private institucionTipoCarritoService: InstitucionTipoCarritoService,
) {}
@Post()
create(@Body() body: InstitucionTipoCarritoCreateDto) {
return this.institucionTipoCarritoService.create(
body.letra,
body.tipo_carrito,
);
}
@Get()
get() {}
get() {
return this.institucionTipoCarritoService.findAll();
}
@Get('tipos_carritos_institucion')
tiposCarritosInstitucion(@Query() query: IdInstitucionDto) {
return this.institucionTipoCarritoService.findAllByIdInstitucion(
Number(query.id_institucion),
);
}
@Put()
update() {}
update(@Body() body: InstitucionTipoCarritoUpdateDto) {
this.institucionTipoCarritoService.update(body);
}
}

View File

@ -3,9 +3,14 @@ import { TypeOrmModule } from '@nestjs/typeorm';
import { InstitucionTipoCarritoController } from './institucion-tipo-carrito.controller';
import { InstitucionTipoCarritoService } from './institucion-tipo-carrito.service';
import { InstitucionTipoCarrito } from './entity/institucion-tipo-carrito.entity';
import { TipoCarrito } from './entity/tipo-carrito.entity';
import { InstitucionModule } from 'src/institucion/institucion.module';
@Module({
imports: [TypeOrmModule.forFeature([InstitucionTipoCarrito])],
imports: [
TypeOrmModule.forFeature([InstitucionTipoCarrito, TipoCarrito]),
InstitucionModule,
],
controllers: [InstitucionTipoCarritoController],
providers: [InstitucionTipoCarritoService],
})

View File

@ -1,4 +1,105 @@
import { Injectable } from '@nestjs/common';
import {
ConflictException,
Injectable,
NotFoundException,
} from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { InstitucionTipoCarrito } from './entity/institucion-tipo-carrito.entity';
import { TipoCarrito } from './entity/tipo-carrito.entity';
import { InstitucionService } from 'src/institucion/institucion.service';
@Injectable()
export class InstitucionTipoCarritoService {}
export class InstitucionTipoCarritoService {
constructor(
@InjectRepository(TipoCarrito)
private repositoryTipoCarrito: Repository<TipoCarrito>,
@InjectRepository(InstitucionTipoCarrito)
private repositoryInstitucionTipoCarrito: Repository<InstitucionTipoCarrito>,
private institucionService: InstitucionService,
) {}
create(letra: string, tipo_carrito: string) {
/** Checar que no este usando la letra ni el nombre */
return this.repositoryTipoCarrito
.findOne({ letra, tipo_carrito })
.then((existeTipoCarrito) => {
if (existeTipoCarrito) {
if (letra === existeTipoCarrito.letra)
throw new ConflictException(
'Ya existe un tipo carrito con esta letra, intente con otra letra.',
);
else
throw new ConflictException(
'Ya existe un tipo carrito con este nombre, intente con otro nombre.',
);
}
return this.repositoryTipoCarrito.save(
this.repositoryTipoCarrito.create({ letra, tipo_carrito }),
);
})
.then(async (tipoCarrito) => {
const instituciones = await this.institucionService.findAll();
for (let i = 0; i < instituciones.length; i++) {
await this.repositoryInstitucionTipoCarrito.save(
this.repositoryInstitucionTipoCarrito.create({
tipoCarrito,
institucion: instituciones[i],
}),
);
}
return { message: 'Se creo correctamente el tipo carrito.' };
});
}
findAll() {
return this.repositoryTipoCarrito.find();
}
findAllByIdInstitucion(id_institucion: number) {
return this.institucionService
.findById(id_institucion)
.then((institucion) =>
this.repositoryInstitucionTipoCarrito.find({ institucion }),
);
}
findAllByIdInstitucionMostar(id_institucion: number) {
return this.institucionService
.findById(id_institucion)
.then((institucion) =>
this.repositoryInstitucionTipoCarrito.find({
institucion,
mostrar: true,
}),
);
}
findById(id_institucion_tipo_carrito) {
return this.repositoryInstitucionTipoCarrito
.findOne({
id_institucion_tipo_carrito,
})
.then((institucionTipoCarrito) => {
if (!institucionTipoCarrito)
throw new NotFoundException(
'No existe esta institucion tipo carrito.',
);
return institucionTipoCarrito;
});
}
update(attrs: Partial<InstitucionTipoCarrito>) {
return this.findById(attrs.id_institucion_tipo_carrito)
.then((institucionTipoCarrito) => {
Object.assign(institucionTipoCarrito, attrs);
return this.repositoryInstitucionTipoCarrito.save(
institucionTipoCarrito,
);
})
.then((_) => ({
message: 'Se actualió correctamente la institucion tipo carrtio.',
}));
}
}

View File

@ -1,6 +1,6 @@
import { IsNumber, IsString } from 'class-validator';
export class ModuloCrearDto {
export class ModuloCreateDto {
@IsNumber()
id_institucion: number;

View File

@ -1,7 +1,7 @@
import { Body, Controller, Get, Post, Put, Query } from '@nestjs/common';
import { ModuloService } from './modulo.service';
import { IdInstitucionDto } from '../dto/id-institucion.dto';
import { ModuloCrearDto } from './dto/modulo-crear.dto';
import { ModuloCreateDto } from './dto/modulo-create.dto';
import { ModuloUpdateDto } from './dto/modulo-update.dto';
// import { Serealize } from '../interceptors/serialize.interceptor';
@Controller('modulo')
@ -9,7 +9,7 @@ export class ModuloController {
constructor(private moduloService: ModuloService) {}
@Post()
create(@Body() body: ModuloCrearDto) {
create(@Body() body: ModuloCreateDto) {
return this.moduloService.create(body.id_institucion, body.modulo);
}

View File

@ -11,41 +11,41 @@ import { InstitucionService } from '../institucion/institucion.service';
@Injectable()
export class ModuloService {
constructor(
@InjectRepository(Modulo) private moduloRepository: Repository<Modulo>,
@InjectRepository(Modulo) private repository: Repository<Modulo>,
private institucionService: InstitucionService,
) {}
async create(id_institucion: number, modulo: string) {
const institucion = await this.institucionService.findById(id_institucion);
const nuevoModulo = this.moduloRepository.create({
const nuevoModulo = this.repository.create({
institucion,
modulo,
});
return this.moduloRepository
return this.repository
.findOne({ modulo, institucion })
.then((existeModulo) => {
if (existeModulo)
throw new ConflictException(
'Ya existe un módulo con este nombre, intente con otro nombre.',
);
return this.moduloRepository.save(nuevoModulo);
return this.repository.save(nuevoModulo);
})
.then(() => ({ message: 'Se creo correctamente el módulo.' }));
.then((_) => ({ message: 'Se creo correctamente el módulo.' }));
}
findAll() {
return this.moduloRepository.find();
return this.repository.find();
}
findAllByIdInstitucion(id_institucion: number) {
return this.institucionService
.findById(id_institucion)
.then((institucion) => this.moduloRepository.find({ institucion }));
.then((institucion) => this.repository.find({ institucion }));
}
findById(id_modulo: number) {
return this.moduloRepository.findOne({ id_modulo }).then((modulo) => {
return this.repository.findOne({ id_modulo }).then((modulo) => {
if (!modulo) throw new NotFoundException('No existe este módulo.');
return modulo;
});
@ -54,7 +54,7 @@ export class ModuloService {
async update(attrs: Partial<Modulo>) {
const modulo = await this.findById(attrs.id_modulo);
return this.moduloRepository
return this.repository
.findOne({ modulo: attrs.modulo, institucion: modulo.institucion })
.then((existeModulo) => {
if (existeModulo)
@ -62,9 +62,9 @@ export class ModuloService {
'Ya existe un módulo con este nombre, intente con otro nombre.',
);
Object.assign(modulo, attrs);
return this.moduloRepository.save(modulo);
return this.repository.save(modulo);
})
.then(() => ({
.then((_) => ({
message: 'Se actualizo correctamente la información del módulo.',
}));
}

View File

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

View File

@ -1,10 +0,0 @@
import { Controller, Get } from '@nestjs/common';
import { TipoCarritoService } from './tipo-carrito.service';
@Controller('tipo-carrito')
export class TipoCarritoController {
constructor(private tipoCarritoService: TipoCarritoService) {}
@Get()
get() {}
}

View File

@ -1,12 +0,0 @@
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { TipoCarritoController } from './tipo-carrito.controller';
import { TipoCarritoService } from './tipo-carrito.service';
import { TipoCarrito } from './entity/tipo-carrito.entity';
@Module({
imports: [TypeOrmModule.forFeature([TipoCarrito])],
controllers: [TipoCarritoController],
providers: [TipoCarritoService],
})
export class TipoCarritoModule {}

View File

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

View File

@ -1,11 +0,0 @@
import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { TipoCarrito } from './entity/tipo-carrito.entity';
@Injectable()
export class TipoCarritoService {
constructor(
@InjectRepository(TipoCarrito) private repository: Repository<TipoCarrito>,
) {}
}