Skip to content

Commit

Permalink
[ADD] add cancel achievement logic
Browse files Browse the repository at this point in the history
  • Loading branch information
thguss committed Aug 13, 2024
1 parent 061b302 commit 9d1cca2
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,16 @@
public record MemberDailyRoutineAchieveResponse(
long routineId,
boolean isAchieve,
int achieveCount
int achieveCount,
boolean hasCotton
) {

public static MemberDailyRoutineAchieveResponse of(MemberRoutineAchieveServiceResponse response) {
return MemberDailyRoutineAchieveResponse.builder()
.routineId(response.routineId())
.isAchieve(response.isAchieve())
.achieveCount(response.achieveCount())
.hasCotton(response.hasCotton())
.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ public class MemberRoutine {

private boolean isAchieve;

private boolean isAchieveToday;

private int achieveCount;

@Enumerated(value = STRING)
Expand All @@ -49,6 +51,7 @@ public class MemberRoutine {

public MemberRoutine(Member member, Routine routine) {
this.isAchieve = false;
this.isAchieveToday = false;
this.achieveCount = 0;
this.type = routine.getType();
this.routineId = routine.getId();
Expand All @@ -57,6 +60,7 @@ public MemberRoutine(Member member, Routine routine) {

public MemberRoutine(Member member, Challenge challenge) {
this.isAchieve = false;
this.isAchieveToday = false;
this.achieveCount = 0;
this.type = CHALLENGE;
this.routineId = challenge.getId();
Expand All @@ -65,6 +69,7 @@ public MemberRoutine(Member member, Challenge challenge) {

public MemberRoutine(DeletedMemberRoutine deletedMemberRoutine) {
this.isAchieve = isAchievedToday(deletedMemberRoutine);
this.isAchieveToday = isAchievedToday(deletedMemberRoutine);
this.achieveCount = deletedMemberRoutine.getAchieveCount();
this.type = deletedMemberRoutine.getType();
this.routineId = deletedMemberRoutine.getRoutineId();
Expand All @@ -77,6 +82,7 @@ public MemberRoutine(
) {
this.id = id;
this.isAchieve = isAchieve;
this.isAchieveToday = isAchieve;
this.achieveCount = achieveCount;
this.type = type;
this.routineId = routineId;
Expand All @@ -85,11 +91,18 @@ public MemberRoutine(

public void achieve() {
this.isAchieve = true;
this.isAchieveToday = true;
this.achieveCount++;
}

public void initAchieve() {
this.isAchieve = false;
this.isAchieveToday = false;
}

public void cancelAchievement() {
this.isAchieve = false;
this.achieveCount--;
}

public void checkMemberHas(Member member) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
package com.soptie.server.memberroutine.service;

import static com.soptie.server.member.message.ErrorCode.*;
import static com.soptie.server.routine.entity.RoutineType.*;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.soptie.server.member.adapter.MemberFinder;
import com.soptie.server.member.exception.MemberException;
import com.soptie.server.memberroutine.adapter.MemberRoutineDeleter;
import com.soptie.server.memberroutine.adapter.MemberRoutineFinder;
import com.soptie.server.memberroutine.entity.MemberRoutine;
Expand All @@ -27,11 +29,23 @@ public class MemberRoutineUpdateService {
public MemberRoutineAchieveServiceResponse achieveMemberRoutine(MemberRoutineAchieveServiceRequest request) {
val member = memberFinder.findById(request.memberId());
val memberRoutine = memberRoutineFinder.findById(request.memberRoutineId());
memberRoutine.checkMemberHas(member);
memberRoutine.achieve();
member.addCottonCount(memberRoutine.getType());
deleteMemberRoutineIfTypeIsOneTime(memberRoutine);
return MemberRoutineAchieveServiceResponse.of(memberRoutine);
val isAchievedToday = memberRoutine.isAchieveToday();

if (memberRoutine.getMember() != member) {
throw new MemberException(INACCESSIBLE_ROUTINE);
}

if (memberRoutine.isAchieve()) {
memberRoutine.cancelAchievement();
} else {
if (!isAchievedToday) {
member.addCottonCount(memberRoutine.getType());
}
memberRoutine.achieve();
deleteMemberRoutineIfTypeIsOneTime(memberRoutine);
}

return MemberRoutineAchieveServiceResponse.of(memberRoutine, !isAchievedToday);
}

public void initDailyRoutines() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,16 @@
public record MemberRoutineAchieveServiceResponse(
long routineId,
boolean isAchieve,
int achieveCount
int achieveCount,
boolean hasCotton
) {

public static MemberRoutineAchieveServiceResponse of(MemberRoutine routine) {
public static MemberRoutineAchieveServiceResponse of(MemberRoutine routine, boolean hasCotton) {
return MemberRoutineAchieveServiceResponse.builder()
.routineId(routine.getId())
.isAchieve(routine.isAchieve())
.achieveCount(routine.getAchieveCount())
.hasCotton(hasCotton)
.build();
}
}

0 comments on commit 9d1cca2

Please sign in to comment.