Skip to content

Commit 3ba77be

Browse files
committed
(TP-107) feat: add findAllByFilter method impl
1 parent d70a4c4 commit 3ba77be

1 file changed

Lines changed: 22 additions & 0 deletions

File tree

rentplace/src/main/java/kattsyn/dev/rentplace/services/impl/PropertyServiceImpl.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,13 @@
44
import kattsyn.dev.rentplace.dtos.ImageDTO;
55
import kattsyn.dev.rentplace.dtos.PropertyCreateEditDTO;
66
import kattsyn.dev.rentplace.dtos.PropertyDTO;
7+
import kattsyn.dev.rentplace.dtos.filters.PropertyFilterDTO;
78
import kattsyn.dev.rentplace.entities.Image;
89
import kattsyn.dev.rentplace.entities.Property;
910
import kattsyn.dev.rentplace.entities.User;
1011
import kattsyn.dev.rentplace.enums.ImageType;
1112
import kattsyn.dev.rentplace.enums.Role;
13+
import kattsyn.dev.rentplace.enums.SortType;
1214
import kattsyn.dev.rentplace.exceptions.ForbiddenException;
1315
import kattsyn.dev.rentplace.exceptions.NotFoundException;
1416
import kattsyn.dev.rentplace.mappers.ImageMapper;
@@ -17,8 +19,10 @@
1719
import kattsyn.dev.rentplace.services.ImageService;
1820
import kattsyn.dev.rentplace.services.PropertyService;
1921
import kattsyn.dev.rentplace.services.UserService;
22+
import kattsyn.dev.rentplace.specifications.PropertySpecification;
2023
import kattsyn.dev.rentplace.utils.PathResolver;
2124
import lombok.RequiredArgsConstructor;
25+
import org.springframework.data.domain.Sort;
2226
import org.springframework.stereotype.Service;
2327
import org.springframework.web.multipart.MultipartFile;
2428

@@ -69,6 +73,24 @@ public List<PropertyDTO> findAllByOwnerEmail(String email) {
6973
return propertyMapper.fromProperties(propertyRepository.findAllByOwnerEmail(email));
7074
}
7175

76+
@Override
77+
public List<PropertyDTO> findAllByFilter(PropertyFilterDTO filter) {
78+
return propertyMapper.fromProperties(
79+
propertyRepository.findAll(new PropertySpecification(filter), buildSort(filter.getSortType()))
80+
);
81+
}
82+
83+
private Sort buildSort(SortType sortType) {
84+
if (sortType == null) return Sort.unsorted();
85+
86+
return switch (sortType) {
87+
case MOST_OLD -> Sort.by(Sort.Order.asc("propertyId"));
88+
case MOST_RECENT -> Sort.by(Sort.Order.desc("propertyId"));
89+
case MOST_EXPENSIVE -> Sort.by(Sort.Order.desc("cost"));
90+
case MOST_CHEAP -> Sort.by(Sort.Order.asc("cost"));
91+
};
92+
}
93+
7294
@Override
7395
@Transactional
7496
public Property getPropertyById(long id) {

0 commit comments

Comments
 (0)