Commit 81983d38 authored by Diego Iván's avatar Diego Iván
Browse files

agregando metodo de crear al placeService

parent c0ce3424
Loading
Loading
Loading
Loading
+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) {