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
Binary file modified .gradle/8.8/checksums/checksums.lock
Binary file not shown.
Binary file modified .gradle/8.8/checksums/md5-checksums.bin
Binary file not shown.
Binary file modified .gradle/8.8/checksums/sha1-checksums.bin
Binary file not shown.
Binary file modified .gradle/8.8/fileHashes/fileHashes.bin
Binary file not shown.
Binary file modified .gradle/8.8/fileHashes/fileHashes.lock
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -401,7 +401,7 @@ public ResponseEntity<?> updateGoalStatus(@PathVariable("goalId") Long goalId, @
//임시저장된 목표 수정 (목표조회후 목표선택하여 goalid와 GoalUpdateDto을 보내줘야한다).
@Operation(
summary = "임시저장된 목표 수정 ",
description = "임시저장된 목표를 목표상세에서 goalId를 통해 불러온후 수정한 데이터 전부를 Goal 형식에 맞춰 보내야한다. 넘기는값은 goalId + goal",
description = "임시저장된 목표를 목표상세에서 goalId를 통해 불러온후 수정한 데이터 전부를 Goal 형식에 맞춰 보내야한다. ",
responses = {
@ApiResponse(
responseCode = "200",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,21 @@

import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.swyp.goal.entity.DayOfWeek;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;


@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
public class GoalUpdateDto {
private String name;

Expand All @@ -24,4 +30,5 @@ public class GoalUpdateDto {
private BigDecimal latitude;
private BigDecimal longitude;
private Integer radius;
private List<DayOfWeek> selectedDays;
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import java.util.List;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
Expand All @@ -16,6 +17,9 @@ public interface GoalDayRepository extends JpaRepository<GoalDay, Long> {
// 특정 목표 ID에 대한 반복 요일 목록 조회
List<GoalDay> findByGoalId(Long goalId);


// 특정 목표 ID에 대한 모든 요일 데이터 삭제
@Modifying
@Query("DELETE FROM GoalDay gd WHERE gd.goalId = :goalId")
void deleteByGoalId(@Param("goalId") Long goalId);

}
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,32 @@ public Goal updateGoal(Long goalId, GoalUpdateDto dto) {
if (dto.getLongitude() != null) goal.setLongitude(dto.getLongitude());
if (dto.getRadius() != null) goal.setRadius(dto.getRadius());

// 요일 데이터 업데이트
if (dto.getSelectedDays() != null && !dto.getSelectedDays().isEmpty()) {
// 기존 요일 데이터 삭제
goalDayRepository.deleteByGoalId(goalId);

// 새 요일 데이터 추가
for (DayOfWeek day : dto.getSelectedDays()) {
GoalDay goalDay = new GoalDay();
goalDay.setGoalId(goalId);
goalDay.setDayOfWeek(day);
goalDayRepository.save(goalDay);
}
}

// 날짜 또는 요일이 변경되었을 때 목표 수행 횟수 재계산
boolean dateChanged = dto.getStartDate() != null || dto.getEndDate() != null;
boolean daysChanged = dto.getSelectedDays() != null && !dto.getSelectedDays().isEmpty();

if (dateChanged || daysChanged) {
LocalDate startDate = dto.getStartDate() != null ? dto.getStartDate() : goal.getStartDate();
LocalDate endDate = dto.getEndDate() != null ? dto.getEndDate() : goal.getEndDate();
List<DayOfWeek> selectedDays = dto.getSelectedDays() != null && !dto.getSelectedDays().isEmpty() ? dto.getSelectedDays() : getSelectedDays(goalId);

int targetCount = calculateTargetCount(startDate, endDate, selectedDays);
goal.setTargetCount(targetCount);
}

goal.setUpdatedAt(LocalDateTime.now());

Expand Down