오늘은! 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로 에러 메세지를 남긴다.