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
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,8 @@ public record MissionTodayResponse(
LocalDateTime deadlineAt,
Boolean popupRequired
) {
public static MissionTodayResponse from(UserMissionLog log) {
java.time.LocalDateTime now = java.time.LocalDateTime.now(java.time.ZoneId.of("Asia/Seoul"));
boolean popupRequired = !now.isBefore(log.getAssignedAt())
&& now.isBefore(log.getDeadlineAt())
&& (log.getStatus() == com.example.hackathon.domain.mission.entity.MissionStatus.ASSIGNED
|| log.getStatus() == com.example.hackathon.domain.mission.entity.MissionStatus.CONFIRMED);
public static MissionTodayResponse from(UserMissionLog log, java.time.LocalDateTime now) {
boolean popupRequired = log.isPopupRequired(now);

return new MissionTodayResponse(
log.getId(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -141,4 +141,10 @@ private void validateStatusTransition(MissionStatus current, MissionStatus targe
com.example.hackathon.global.exception.ErrorCode.MISSION_ERROR_400_INVALID_TRANSITION
);
}

public boolean isPopupRequired(LocalDateTime now) {
return !now.isBefore(this.assignedAt)
&& now.isBefore(this.deadlineAt)
&& (this.status == MissionStatus.ASSIGNED || this.status == MissionStatus.CONFIRMED);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,8 @@ public class MissionService {

@Transactional
public MissionTodayResponse getOrCreateTodayMission(String deviceId) {
return MissionTodayResponse.from(getOrCreateTodayMissionLog(deviceId, LocalDateTime.now(clock)));
LocalDateTime now = LocalDateTime.now(clock);
return MissionTodayResponse.from(getOrCreateTodayMissionLog(deviceId, now), now);
}

private UserMissionLog getOrCreateTodayMissionLog(String deviceId, LocalDateTime nowTime) {
Expand Down Expand Up @@ -108,7 +109,7 @@ public MissionTodayStatusResponse getTodayMissionStatus(String deviceId) {
long remainingSeconds = calculateRemainingSeconds(log, now);

// popupRequired 판단 조건
boolean popupRequired = isPopupRequired(log, now);
boolean popupRequired = log.isPopupRequired(now);

return MissionTodayStatusResponse.of(log, popupRequired, remainingSeconds, expired);
}
Expand All @@ -134,7 +135,7 @@ public MissionPopupResponse recordPopupShown(String deviceId) {
userMissionLogRepository.save(log);

long remainingSeconds = calculateRemainingSeconds(log, now);
boolean popupRequired = isPopupRequired(log, now);
boolean popupRequired = log.isPopupRequired(now);

return MissionPopupResponse.of(log, remainingSeconds, popupRequired);
}
Expand Down Expand Up @@ -261,10 +262,4 @@ private UserMissionLog resolveTodayLog(String deviceId, LocalDateTime now) {
private long calculateRemainingSeconds(UserMissionLog log, LocalDateTime now) {
return Math.max(Duration.between(now, log.getDeadlineAt()).getSeconds(), 0);
}

private boolean isPopupRequired(UserMissionLog log, LocalDateTime now) {
return !now.isBefore(log.getAssignedAt())
&& now.isBefore(log.getDeadlineAt())
&& (log.getStatus() == MissionStatus.ASSIGNED || log.getStatus() == MissionStatus.CONFIRMED);
}
}
Loading