Skip to content

Commit

Permalink
feat: event group-info
Browse files Browse the repository at this point in the history
  • Loading branch information
kyeahxx19 committed Mar 20, 2024
1 parent f00b80b commit 021d948
Show file tree
Hide file tree
Showing 3 changed files with 63 additions and 0 deletions.
19 changes: 19 additions & 0 deletions src/event/event.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,12 @@ import {
ApiBody,
ApiCreatedResponse,
ApiHeader,
ApiOkResponse,
ApiOperation,
ApiParam,
ApiResponse,
ApiTags,
ApiUnauthorizedResponse,
} from '@nestjs/swagger';
import { JwtPayload } from 'src/interfaces/auth';
import { Request, Response } from 'express';
Expand All @@ -31,6 +33,7 @@ import {
} from 'src/dtos/blurtingPage.dto';
import { BlurtingService } from 'src/blurting/blurting.service';
import { UserProfileDto } from 'src/dtos/user.dto';
import { OtherPeopleInfoDto } from 'src/blurting/dtos/otherPeopleInfo.dto';

@Controller('event')
@ApiTags('event')
Expand Down Expand Up @@ -144,6 +147,22 @@ export class EventController {
return matchedUser;
}

@UseGuards(AuthGuard('access'))
@Get('/group-info')
@ApiOperation({
summary: '이벤트 그룹 정보',
description: '그룹 정보',
})
@ApiUnauthorizedResponse({ description: '토큰 만료' })
@ApiOkResponse({
description: '그룹 정보',
type: [OtherPeopleInfoDto],
})
async getGroupInfo(@Req() req: Request): Promise<OtherPeopleInfoDto[]> {
const { id } = req.user as JwtPayload;
return await this.eventService.getGroupInfo(id);
}

@UseGuards(AuthGuard('access'))
@Get('/:no')
@ApiHeader({
Expand Down
2 changes: 2 additions & 0 deletions src/event/event.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import {
BlurtingEventEntity,
BlurtingGroupEntity,
BlurtingQuestionEntity,
UserEntity,
} from 'src/entities';
import { FcmModule } from 'src/firebase/fcm.module';
import { UserModule } from 'src/user/user.module';
Expand All @@ -24,6 +25,7 @@ import { BlurtingModule } from 'src/blurting/blurting.module';
BlurtingQuestionEntity,
BlurtingAnswerEntity,
BLurtingArrowEntity,
UserEntity,
]),
CacheModule.register({
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
Expand Down
42 changes: 42 additions & 0 deletions src/event/event.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import { Repository } from 'typeorm';
import { Sex } from 'src/common/enums';
import { BlurtingService } from 'src/blurting/blurting.service';
import { ArrowInfoResponseDto } from 'src/blurting/dtos/arrowInfoResponse.dto';
import { OtherPeopleInfoDto } from 'src/blurting/dtos/otherPeopleInfo.dto';

@Injectable()
export class EventService {
Expand All @@ -33,6 +34,8 @@ export class EventService {
private readonly answerRepository: Repository<BlurtingAnswerEntity>,
@InjectRepository(BLurtingArrowEntity)
private readonly arrowRepository: Repository<BLurtingArrowEntity>,
@InjectRepository(UserEntity)
private readonly userRepository: Repository<UserEntity>,
@Inject(CACHE_MANAGER) private cacheManager: Cache,
@InjectQueue('blurtingQuestions') private readonly queue: Queue,
private readonly fcmService: FcmService,
Expand Down Expand Up @@ -279,4 +282,43 @@ export class EventService {
blur: 2,
};
}

async getGroupInfo(userId: number): Promise<OtherPeopleInfoDto[]> {
const eventUser = await this.eventRepository.findOne({
where: { id: userId },
relations: ['group'],
});
if (!eventUser?.group) return [];

const users = await this.eventRepository.find({
where: { group: eventUser.group },
relations: ['user'],
});

const groupUsers = await Promise.all(
users.map((user) => {
return this.userService.findUserByVal('id', user.userId);
}),
);

const userSex = groupUsers.filter((user) => user.id === userId)[0].userInfo
.sex;

const filteredSex = [];

const sex = userSex === Sex.Female ? Sex.Male : Sex.Female;
filteredSex.push(sex);

const result = groupUsers
.filter((user) => filteredSex.includes(user.userInfo.sex))
.map((user) => {
return {
userId: user.id,
userNickname: user.userNickname,
userSex: user.userInfo.sex,
reported: false,
};
});
return result;
}
}

0 comments on commit 021d948

Please sign in to comment.