Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 13 additions & 4 deletions src/main/java/org/festimate/team/api/admin/AdminController.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,7 @@

import lombok.RequiredArgsConstructor;
import org.festimate.team.api.admin.dto.*;
import org.festimate.team.api.facade.FestivalFacade;
import org.festimate.team.api.facade.MatchingFacade;
import org.festimate.team.api.facade.ParticipantFacade;
import org.festimate.team.api.facade.PointFacade;
import org.festimate.team.api.facade.*;
import org.festimate.team.api.point.dto.PointHistoryResponse;
import org.festimate.team.global.response.ApiResponse;
import org.festimate.team.global.response.ResponseBuilder;
Expand All @@ -21,6 +18,7 @@
public class AdminController {
private final JwtService jwtService;
private final FestivalFacade festivalFacade;
private final FestivalHostFacade festivalHostFacade;
private final ParticipantFacade participantFacade;
private final PointFacade pointFacade;
private final MatchingFacade matchingFacade;
Expand Down Expand Up @@ -77,6 +75,17 @@ public ResponseEntity<ApiResponse<Void>> rechargePoints(
return ResponseBuilder.ok(null);
}

@PostMapping("/{festivalId}/hosts")
public ResponseEntity<ApiResponse<Void>> addHost(
@RequestHeader("Authorization") String accessToken,
@PathVariable("festivalId") Long festivalId,
@RequestBody AddHostRequest request
) {
Long userId = jwtService.parseTokenAndGetUserId(accessToken);
festivalHostFacade.addHost(userId, festivalId, request);
return ResponseBuilder.created(null);
}

@GetMapping("/{festivalId}/participants/{participantId}/points")
public ResponseEntity<ApiResponse<PointHistoryResponse>> getParticipantPointHistory(
@RequestHeader("Authorization") String accessToken,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package org.festimate.team.api.admin.dto;

public record AddHostRequest(
long participantId
) {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package org.festimate.team.api.facade;

import lombok.RequiredArgsConstructor;
import org.festimate.team.api.admin.dto.AddHostRequest;
import org.festimate.team.domain.festival.entity.Festival;
import org.festimate.team.domain.festival.service.FestivalService;
import org.festimate.team.domain.festivalHost.service.FestivalHostService;
import org.festimate.team.domain.participant.entity.Participant;
import org.festimate.team.domain.participant.service.ParticipantService;
import org.festimate.team.domain.user.entity.User;
import org.festimate.team.domain.user.service.UserService;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

@Component
@RequiredArgsConstructor
public class FestivalHostFacade {
private final UserService userService;
private final FestivalService festivalService;
private final FestivalHostService festivalHostService;
private final ParticipantService participantService;

@Transactional
public void addHost(Long userId, Long festivalId, AddHostRequest request) {
User host = userService.getUserByIdOrThrow(userId);
Festival festival = festivalService.getFestivalByIdOrThrow(festivalId);
festivalService.isHost(host, festival);

Participant participant = participantService.getParticipantById(request.participantId());
User newHost = participant.getUser();
festivalHostService.addHost(newHost, festival);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.festimate.team.domain.festivalHost.entity.FestivalHost;
import org.festimate.team.domain.matching.entity.Matching;
import org.festimate.team.domain.participant.entity.Participant;
import org.festimate.team.domain.user.entity.User;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
package org.festimate.team.domain.festival.entity;
package org.festimate.team.domain.festivalHost.entity;

import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.festimate.team.domain.festival.entity.Festival;
import org.festimate.team.domain.user.entity.User;

import java.time.LocalDateTime;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package org.festimate.team.domain.festivalHost.repository;

import org.festimate.team.domain.festivalHost.entity.FestivalHost;
import org.springframework.data.jpa.repository.JpaRepository;

public interface FestivalHostRepository extends JpaRepository<FestivalHost, Long> {

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package org.festimate.team.domain.festivalHost.service;

import org.festimate.team.domain.festival.entity.Festival;
import org.festimate.team.domain.user.entity.User;
import org.springframework.transaction.annotation.Transactional;

public interface FestivalHostService {
@Transactional
void addHost(User newHost, Festival festival);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package org.festimate.team.domain.festivalHost.service.impl;

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.festimate.team.domain.festival.entity.Festival;
import org.festimate.team.domain.festivalHost.entity.FestivalHost;
import org.festimate.team.domain.festivalHost.repository.FestivalHostRepository;
import org.festimate.team.domain.festivalHost.service.FestivalHostService;
import org.festimate.team.domain.user.entity.User;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service
@RequiredArgsConstructor
@Slf4j
public class FestivalHostServiceImpl implements FestivalHostService {

private final FestivalHostRepository festivalHostRepository;

@Transactional
@Override
public void addHost(User newHost, Festival festival) {
FestivalHost newFestivalHost = FestivalHost.builder()
.festival(festival)
.host(newHost)
.build();

festivalHostRepository.save(newFestivalHost);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import org.festimate.team.domain.festival.entity.Category;
import org.festimate.team.domain.festival.entity.Festival;
import org.festimate.team.domain.festival.entity.FestivalHost;
import org.festimate.team.domain.festivalHost.entity.FestivalHost;
import org.festimate.team.domain.participant.entity.Participant;
import org.festimate.team.domain.participant.entity.TypeResult;
import org.festimate.team.domain.user.entity.*;
Expand Down