2024.03.22 TIL - 프로젝트 협업 도구 만들기(5)

김민석·2024년 3월 24일
0

TIL

목록 보기
57/78

오늘은! trello 프로젝트에 카드 내에서 카드 수정을 할 때 작업자 할당과 작업자 변경에 대한 코드를 작성해 보았다!

async updateCard(
    columnId: number,
    cardId: number,
    updateCardDto: UpdateCardDto,
  ): Promise<Cards> {
    const card = await this.cardsRepository.findOne({
      where: { cardId: cardId, columnId: columnId },
      relations: ['column'],
    });

    if (!card) {
      throw new NotFoundException(`컬럼에 해당하는 카드가 없습니다`);
    }

    const createCardDate = new Date();
    createCardDate.setHours(0, 0, 0, 0);
    const endDate = new Date(updateCardDto.endDate);
    endDate.setHours(0, 0, 0, 0);

    if (endDate < createCardDate) {
      throw new BadRequestException(
        '마감일은 카드생성일보다 이전으로 선택할 수 없습니다.',
      );
    }

    // 보드에 초대된 사용자 목록 조회
    const boardId = card.column.boardId; // 카드가 속한 컬럼에서 보드 Id 가져오기
    const invitedUsers = await this.boardService.getInviteUsers(boardId); // 의존성주입

    if (
      updateCardDto.workerId &&
      !invitedUsers.some((user) => user.userId === updateCardDto.workerId)
    ) {
      throw new BadRequestException('이 유저는 이 보드에 초대된 멤버 아닙니다');
    }

    // worker Id 유효하면 할당하기
    const updatedCard = this.cardsRepository.merge(card, updateCardDto);
    await this.cardsRepository.save(updatedCard);

    return updatedCard;
  }

먼저 위에는 카드 수정에 대한 전체 코드이다.


// 보드에 초대된 사용자 목록 조회
    const boardId = card.column.boardId; // 카드가 속한 컬럼에서 보드 Id 가져오기
    const invitedUsers = await this.boardService.getInviteUsers(boardId); // 의존성주입

    if (
      updateCardDto.workerId &&
      !invitedUsers.some((user) => user.userId === updateCardDto.workerId)
    ) {
      throw new BadRequestException('이 유저는 이 보드에 초대된 멤버 아닙니다');
    }

    // worker Id 유효하면 할당하기
    const updatedCard = this.cardsRepository.merge(card, updateCardDto);
    await this.cardsRepository.save(updatedCard);

전체 코드에서 이부분!! 이부분이 바로 회원가입 된 유저를 카드 작업자에 할당 하는 부분이다.

먼저 보드에 초대된 사용자 목록을 조회 한 뒤

조회된 사용자 목록에 있는 UserId와 작업자인 worker가 일치하면 정상적으로 변경과 할당이 되고

일치하지 않으면 BadRequestException로 에러 메세지를 남긴다.

profile
화이팅 화이팅

0개의 댓글