Skip to content

Commit 30638dd

Browse files
Seooooo24KoSeonJe
andauthored
[DDING-000] 최근 폼지 구하기 로직 위치 수정 (#301)
Co-authored-by: KoSeonJe <127813439+KoSeonJe@users.noreply.github.com>
1 parent 8d6f717 commit 30638dd

File tree

10 files changed

+81
-61
lines changed

10 files changed

+81
-61
lines changed

src/main/java/ddingdong/ddingdongBE/domain/club/service/FacadeCentralClubServiceImpl.java

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,10 @@
55
import ddingdong.ddingdongBE.domain.club.service.dto.query.MyClubInfoQuery;
66
import ddingdong.ddingdongBE.domain.filemetadata.entity.DomainType;
77
import ddingdong.ddingdongBE.domain.filemetadata.service.FileMetaDataService;
8-
import ddingdong.ddingdongBE.domain.form.entity.Form;
8+
import ddingdong.ddingdongBE.domain.form.entity.Forms;
99
import ddingdong.ddingdongBE.domain.form.service.FormService;
1010
import ddingdong.ddingdongBE.file.service.S3FileService;
1111
import ddingdong.ddingdongBE.file.service.dto.query.UploadedFileUrlQuery;
12-
import java.util.List;
1312
import lombok.RequiredArgsConstructor;
1413
import org.springframework.stereotype.Service;
1514
import org.springframework.transaction.annotation.Transactional;
@@ -27,13 +26,10 @@ public class FacadeCentralClubServiceImpl implements FacadeCentralClubService {
2726
@Override
2827
public MyClubInfoQuery getMyClubInfo(Long userId) {
2928
Club club = clubService.getByUserId(userId);
30-
List<Form> forms = formService.getAllByClub(club);
31-
Form form = formService.findActiveForm(forms) != null
32-
? formService.findActiveForm(forms)
33-
: formService.getNewestForm(forms);
29+
Forms forms = formService.getAllByClub(club);
3430
return MyClubInfoQuery.of(
3531
club,
36-
form,
32+
forms.getActiveOrNewest(),
3733
getFileKey(DomainType.CLUB_PROFILE, club.getId()),
3834
getFileKey(DomainType.CLUB_INTRODUCTION, club.getId())
3935
);

src/main/java/ddingdong/ddingdongBE/domain/club/service/FacadeUserClubServiceImpl.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import ddingdong.ddingdongBE.domain.filemetadata.entity.DomainType;
1313
import ddingdong.ddingdongBE.domain.filemetadata.service.FileMetaDataService;
1414
import ddingdong.ddingdongBE.domain.form.entity.Form;
15+
import ddingdong.ddingdongBE.domain.form.entity.Forms;
1516
import ddingdong.ddingdongBE.domain.form.service.FormService;
1617
import ddingdong.ddingdongBE.file.service.S3FileService;
1718
import ddingdong.ddingdongBE.file.service.dto.query.UploadedFileUrlQuery;
@@ -42,10 +43,8 @@ public List<UserClubListQuery> findAllWithRecruitTimeCheckPoint(LocalDate now) {
4243
@Override
4344
public UserClubQuery getClub(Long clubId) {
4445
Club club = clubService.getById(clubId);
45-
List<Form> forms = formService.getAllByClub(club);
46-
Form form = formService.findActiveForm(forms) != null
47-
? formService.findActiveForm(forms)
48-
: formService.getNewestForm(forms);
46+
Forms forms = formService.getAllByClub(club);
47+
Form form = forms.getActiveOrNewest();
4948
return UserClubQuery.of(
5049
club,
5150
form,

src/main/java/ddingdong/ddingdongBE/domain/form/entity/Form.java

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -125,11 +125,23 @@ public void updateEndDate(LocalDate endDate) {
125125
this.endDate = endDate;
126126
}
127127

128-
public boolean isLargerSectionThan(int sectionSize) {
129-
return this.sections.size() > sectionSize;
130-
}
131-
132128
public boolean isNotEqualClubId(Long clubId) {
133129
return !Objects.equals(club.getId(), clubId);
134130
}
131+
132+
public FormStatus getFormStatus(LocalDate localDate) {
133+
return FormStatus.determineStatus(this, localDate);
134+
}
135+
136+
public boolean isEqualStatusTo(FormStatus formStatus) {
137+
return FormStatus.determineStatus(this, LocalDate.now()) == formStatus;
138+
}
139+
140+
public boolean isAfterStartDateTo(LocalDate date) {
141+
return date.isBefore(startDate);
142+
}
143+
144+
public boolean isNotAfterEndDateTo(LocalDate date) {
145+
return !date.isAfter(endDate);
146+
}
135147
}

src/main/java/ddingdong/ddingdongBE/domain/form/entity/FormStatus.java

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,13 @@ public enum FormStatus {
1313

1414
private final String description;
1515

16-
17-
public static FormStatus getDescription(LocalDate now, LocalDate startDate, LocalDate endDate) {
18-
if (now.isBefore(startDate)) {
19-
return FormStatus.UPCOMING;
16+
public static FormStatus determineStatus(Form form, LocalDate date) {
17+
if (form.isAfterStartDateTo(date)) {
18+
return UPCOMING;
2019
}
21-
22-
if (!now.isAfter(endDate)) {
23-
return FormStatus.ONGOING;
20+
if (form.isNotAfterEndDateTo(date)) {
21+
return ONGOING;
2422
}
25-
26-
return FormStatus.CLOSED;
23+
return CLOSED;
2724
}
2825
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package ddingdong.ddingdongBE.domain.form.entity;
2+
3+
import static ddingdong.ddingdongBE.domain.form.entity.FormStatus.ONGOING;
4+
5+
import java.util.ArrayList;
6+
import java.util.Comparator;
7+
import java.util.List;
8+
import java.util.Optional;
9+
10+
public class Forms {
11+
12+
private final List<Form> forms;
13+
14+
public Forms(List<Form> forms) {
15+
this.forms = forms;
16+
}
17+
18+
public Form getActiveOrNewest() {
19+
Optional<Form> activeForm = findActiveForm();
20+
if (activeForm.isPresent()) {
21+
return activeForm.get();
22+
}
23+
Optional<Form> newestForm = findNewestForm();
24+
return newestForm.orElse(null);
25+
}
26+
27+
public List<Form> getForms() {
28+
return new ArrayList<>(forms);
29+
}
30+
31+
private Optional<Form> findNewestForm() {
32+
return forms.stream()
33+
.max(Comparator.comparing(Form::getId));
34+
}
35+
36+
private Optional<Form> findActiveForm() {
37+
return forms.stream()
38+
.filter(form -> form.isEqualStatusTo(ONGOING))
39+
.findFirst();
40+
}
41+
}

src/main/java/ddingdong/ddingdongBE/domain/form/service/FacadeCentralFormServiceImpl.java

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
import ddingdong.ddingdongBE.domain.filemetadata.service.FileMetaDataService;
1414
import ddingdong.ddingdongBE.domain.form.entity.Form;
1515
import ddingdong.ddingdongBE.domain.form.entity.FormField;
16-
import ddingdong.ddingdongBE.domain.form.entity.FormStatus;
16+
import ddingdong.ddingdongBE.domain.form.entity.Forms;
1717
import ddingdong.ddingdongBE.domain.form.service.dto.command.CreateFormCommand;
1818
import ddingdong.ddingdongBE.domain.form.service.dto.command.CreateFormCommand.CreateFormFieldCommand;
1919
import ddingdong.ddingdongBE.domain.form.service.dto.command.SendApplicationResultEmailCommand;
@@ -109,9 +109,9 @@ public void deleteForm(Long formId, User user) {
109109
@Override
110110
public List<FormListQuery> getAllMyForm(User user) {
111111
Club club = clubService.getByUserId(user.getId());
112-
List<Form> forms = formService.getAllByClub(club);
113-
return forms.stream()
114-
.map(this::buildFormListQuery)
112+
Forms forms = formService.getAllByClub(club);
113+
return forms.getForms().stream()
114+
.map(FormListQuery::from)
115115
.toList();
116116
}
117117

@@ -211,12 +211,6 @@ public void updateFormEndDate(UpdateFormEndDateCommand command) {
211211
form.updateEndDate(command.endDate());
212212
}
213213

214-
private FormListQuery buildFormListQuery(Form form) {
215-
FormStatus formStatus = FormStatus.getDescription(LocalDate.now(), form.getStartDate(),
216-
form.getEndDate());
217-
return FormListQuery.from(form, formStatus);
218-
}
219-
220214
private void validateEqualsClub(Club club, Form form) {
221215
if (form.isNotEqualClubId(club.getId())) {
222216
throw new NonHaveFormAuthority();

src/main/java/ddingdong/ddingdongBE/domain/form/service/FormService.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import ddingdong.ddingdongBE.domain.club.entity.Club;
44
import ddingdong.ddingdongBE.domain.form.entity.Form;
5+
import ddingdong.ddingdongBE.domain.form.entity.Forms;
56
import java.time.LocalDate;
67
import java.util.List;
78

@@ -13,11 +14,8 @@ public interface FormService {
1314

1415
void delete(Form form);
1516

16-
List<Form> getAllByClub(Club club);
17+
Forms getAllByClub(Club club);
1718

1819
List<Form> findOverlappingForms(Long id, LocalDate startDate, LocalDate endDate);
1920

20-
Form findActiveForm(List<Form> forms);
21-
22-
Form getNewestForm(List<Form> forms);
2321
}

src/main/java/ddingdong/ddingdongBE/domain/form/service/GeneralFormService.java

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,9 @@
33
import ddingdong.ddingdongBE.common.exception.PersistenceException.ResourceNotFound;
44
import ddingdong.ddingdongBE.domain.club.entity.Club;
55
import ddingdong.ddingdongBE.domain.form.entity.Form;
6-
import ddingdong.ddingdongBE.domain.form.entity.FormStatus;
6+
import ddingdong.ddingdongBE.domain.form.entity.Forms;
77
import ddingdong.ddingdongBE.domain.form.repository.FormRepository;
88
import java.time.LocalDate;
9-
import java.util.Comparator;
109
import java.util.List;
1110
import lombok.RequiredArgsConstructor;
1211
import org.springframework.cache.annotation.CacheEvict;
@@ -48,28 +47,13 @@ public void delete(Form form) {
4847
}
4948

5049
@Override
51-
public List<Form> getAllByClub(Club club) {
52-
return formRepository.findAllByClub(club);
50+
public Forms getAllByClub(Club club) {
51+
return new Forms(formRepository.findAllByClub(club));
5352
}
5453

5554
@Override
5655
public List<Form> findOverlappingForms(Long id, LocalDate startDate, LocalDate endDate) {
5756
return formRepository.findOverlappingForms(id, startDate, endDate);
5857
}
5958

60-
@Override
61-
public Form findActiveForm(List<Form> forms) {
62-
return forms.stream()
63-
.filter(f -> FormStatus.getDescription(LocalDate.now(), f.getStartDate(), f.getEndDate()) == FormStatus.ONGOING)
64-
.findFirst()
65-
.orElse(null);
66-
}
67-
68-
@Override
69-
public Form getNewestForm(List<Form> forms) {
70-
return forms.stream()
71-
.max(Comparator.comparing(Form::getId))
72-
.orElse(null);
73-
}
74-
7559
}

src/main/java/ddingdong/ddingdongBE/domain/form/service/dto/query/FormListQuery.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package ddingdong.ddingdongBE.domain.form.service.dto.query;
22

33
import ddingdong.ddingdongBE.domain.form.entity.Form;
4-
import ddingdong.ddingdongBE.domain.form.entity.FormStatus;
54
import java.time.LocalDate;
65
import lombok.Builder;
76

@@ -14,13 +13,13 @@ public record FormListQuery(
1413
String formStatus
1514
) {
1615

17-
public static FormListQuery from(Form form, FormStatus formStatus) {
16+
public static FormListQuery from(Form form) {
1817
return FormListQuery.builder()
1918
.formId(form.getId())
2019
.title(form.getTitle())
2120
.startDate(form.getStartDate())
2221
.endDate(form.getEndDate())
23-
.formStatus(formStatus.getDescription())
22+
.formStatus(form.getFormStatus(LocalDate.now()).getDescription())
2423
.build();
2524
}
2625

src/main/java/ddingdong/ddingdongBE/domain/formapplication/service/FacadeCentralFormApplicationServiceImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public MyAllFormApplicationsQuery getAllFormApplication(Long formId, User user)
4646
Form form = formService.getById(formId);
4747
validateAuthority(club, form);
4848
List<FormApplication> formApplications = formApplicationService.getAllByForm(form);
49-
FormStatus formStatus = FormStatus.getDescription(LocalDate.now(), form.getStartDate(), form.getEndDate());
49+
FormStatus formStatus = form.getFormStatus(LocalDate.now());
5050
if (formApplications == null) {
5151
return MyAllFormApplicationsQuery.createEmpty(form, formStatus.getDescription());
5252
}

0 commit comments

Comments
 (0)