Loading backend/src/place/place.service.ts +56 −6 Original line number Diff line number Diff line import { Injectable } from '@nestjs/common'; import { CreatePlaceDto } from './dto/create-place.dto'; import { BadRequestException, Injectable } from '@nestjs/common'; import { CreatePlaceDateTradDto } from './dto/create-place-date.dto'; import { UpdatePlaceDto } from './dto/update-place.dto'; import { InjectRepository } from '@nestjs/typeorm'; import { Place } from './entities/place.entity'; import { Repository } from 'typeorm'; import { AvailableDate } from './entities/available-date.entity'; import { CreatePlaceDto } from './dto/create-place.dto'; import { CreateDateDto } from './dto/create-date.dto'; import { PlaceTraduction } from './entities/place-traduction.entity'; import { LANGUAGES } from 'src/shared/enum/languages.enum'; import { Town } from 'src/town/entities/town.entity'; @Injectable() export class PlaceService { create(createPlaceDto: CreatePlaceDto) { return 'This action adds a new place'; constructor( @InjectRepository(Place) private placeRepository: Repository<Place>, @InjectRepository(AvailableDate) private availableDateRepository: Repository<AvailableDate>, @InjectRepository(PlaceTraduction) private placeTraductionRepository: Repository<PlaceTraduction>, @InjectRepository(Town) private townRepository: Repository<Town>, ) {} async create(createPlaceDto: CreatePlaceDateTradDto) { const town: Town = await this.townRepository.findOneBy({ townId: createPlaceDto.idTown }); const createPlace: CreatePlaceDto = { available: createPlaceDto.available, closeAt: createPlaceDto.closeAt, coords: createPlaceDto.coords, idTown: town, name: createPlaceDto.name, openAt: createPlaceDto.openAt, imageName: createPlaceDto.image.filename, }; if (!town) { throw new BadRequestException('Town not found'); } const insertedId = (await this.placeRepository.insert({ ...createPlace })).raw.insertId; const createDate: CreateDateDto = { endDate: createPlaceDto.endDate, startDate: createPlaceDto.startDate, idPlace: insertedId, }; const createTradEn: PlaceTraduction = { language: LANGUAGES.EN, idPlace: insertedId, description: createPlaceDto.descriptionEN, }; const createTradEs: PlaceTraduction = { language: LANGUAGES.ES, idPlace: insertedId, description: createPlaceDto.descriptionES, }; // TODO: add transaction to rollback if one of the inserts fails await this.placeTraductionRepository.insert(createTradEs); await this.placeTraductionRepository.insert(createTradEn); await this.availableDateRepository.insert(createDate); } findAll() { return `This action returns all place`; async findAll() { return await this.placeRepository.find(); } findOne(id: number) { Loading Loading
backend/src/place/place.service.ts +56 −6 Original line number Diff line number Diff line import { Injectable } from '@nestjs/common'; import { CreatePlaceDto } from './dto/create-place.dto'; import { BadRequestException, Injectable } from '@nestjs/common'; import { CreatePlaceDateTradDto } from './dto/create-place-date.dto'; import { UpdatePlaceDto } from './dto/update-place.dto'; import { InjectRepository } from '@nestjs/typeorm'; import { Place } from './entities/place.entity'; import { Repository } from 'typeorm'; import { AvailableDate } from './entities/available-date.entity'; import { CreatePlaceDto } from './dto/create-place.dto'; import { CreateDateDto } from './dto/create-date.dto'; import { PlaceTraduction } from './entities/place-traduction.entity'; import { LANGUAGES } from 'src/shared/enum/languages.enum'; import { Town } from 'src/town/entities/town.entity'; @Injectable() export class PlaceService { create(createPlaceDto: CreatePlaceDto) { return 'This action adds a new place'; constructor( @InjectRepository(Place) private placeRepository: Repository<Place>, @InjectRepository(AvailableDate) private availableDateRepository: Repository<AvailableDate>, @InjectRepository(PlaceTraduction) private placeTraductionRepository: Repository<PlaceTraduction>, @InjectRepository(Town) private townRepository: Repository<Town>, ) {} async create(createPlaceDto: CreatePlaceDateTradDto) { const town: Town = await this.townRepository.findOneBy({ townId: createPlaceDto.idTown }); const createPlace: CreatePlaceDto = { available: createPlaceDto.available, closeAt: createPlaceDto.closeAt, coords: createPlaceDto.coords, idTown: town, name: createPlaceDto.name, openAt: createPlaceDto.openAt, imageName: createPlaceDto.image.filename, }; if (!town) { throw new BadRequestException('Town not found'); } const insertedId = (await this.placeRepository.insert({ ...createPlace })).raw.insertId; const createDate: CreateDateDto = { endDate: createPlaceDto.endDate, startDate: createPlaceDto.startDate, idPlace: insertedId, }; const createTradEn: PlaceTraduction = { language: LANGUAGES.EN, idPlace: insertedId, description: createPlaceDto.descriptionEN, }; const createTradEs: PlaceTraduction = { language: LANGUAGES.ES, idPlace: insertedId, description: createPlaceDto.descriptionES, }; // TODO: add transaction to rollback if one of the inserts fails await this.placeTraductionRepository.insert(createTradEs); await this.placeTraductionRepository.insert(createTradEn); await this.availableDateRepository.insert(createDate); } findAll() { return `This action returns all place`; async findAll() { return await this.placeRepository.find(); } findOne(id: number) { Loading