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
@@ -0,0 +1,60 @@
package com.nowait.applicationadmin.store.dto;

import java.time.LocalDateTime;
import java.util.List;

import com.nowait.domaincorerdb.store.entity.ImageType;
import com.nowait.domaincorerdb.store.entity.Store;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;

@Getter
@AllArgsConstructor
@Builder
public class StoreDetailReadResponse {
private Long storeId;
private Long departmentId;
private String departmentName;
private String name;
private String location;
private String description;
private String noticeTitle;
private String noticeContent;
private String openTime;
private StoreImageUploadResponse profileImage;
private List<StoreImageUploadResponse> bannerImages;
private Boolean isActive;
private Boolean deleted;
private LocalDateTime createdAt;

public static StoreDetailReadResponse fromEntity(Store store, List<StoreImageUploadResponse> allImages, String departmentName) {

StoreImageUploadResponse profile = allImages.stream()
.filter(image -> image.getImageType() == ImageType.PROFILE)
.findFirst()
.orElse(null);

List<StoreImageUploadResponse> banners = allImages.stream()
.filter(image -> image.getImageType() == ImageType.BANNER)
.toList();

return StoreDetailReadResponse.builder()
.storeId(store.getStoreId())
.departmentId(store.getDepartmentId())
.departmentName(departmentName)
.name(store.getName())
.location(store.getLocation())
.description(store.getDescription())
.noticeTitle(store.getNoticeTitle())
.noticeContent(store.getNoticeContent())
.openTime(store.getOpenTime())
.profileImage(profile)
.bannerImages(banners)
.isActive(store.getIsActive())
.deleted(store.getDeleted())
.createdAt(store.getCreatedAt())
.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.nowait.applicationadmin.store.dto.StoreCreateRequest;
import com.nowait.applicationadmin.store.dto.StoreCreateResponse;
import com.nowait.applicationadmin.store.dto.StoreDetailReadResponse;
import com.nowait.applicationadmin.store.dto.StoreReadDto;
import com.nowait.applicationadmin.store.dto.StoreUpdateRequest;
import com.nowait.domaincorerdb.user.entity.MemberDetails;
Expand All @@ -10,7 +11,7 @@ public interface StoreService {

StoreCreateResponse createStore(StoreCreateRequest request);

StoreReadDto getStoreByStoreId(Long storeId, MemberDetails memberDetails);
StoreDetailReadResponse getStoreByStoreId(Long storeId, MemberDetails memberDetails);

StoreReadDto updateStore(Long storeId, StoreUpdateRequest request, MemberDetails memberDetails);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,13 @@

import com.nowait.applicationadmin.store.dto.StoreCreateRequest;
import com.nowait.applicationadmin.store.dto.StoreCreateResponse;
import com.nowait.applicationadmin.store.dto.StoreDetailReadResponse;
import com.nowait.applicationadmin.store.dto.StoreImageUploadResponse;
import com.nowait.applicationadmin.store.dto.StoreReadDto;
import com.nowait.applicationadmin.store.dto.StoreUpdateRequest;
import com.nowait.common.enums.Role;
import com.nowait.domaincorerdb.department.entity.Department;
import com.nowait.domaincorerdb.department.repository.DepartmentRepository;
import com.nowait.domaincorerdb.reservation.exception.ReservationUpdateUnauthorizedException;
import com.nowait.domaincorerdb.store.entity.Store;
import com.nowait.domaincorerdb.store.entity.StoreImage;
Expand All @@ -36,6 +39,7 @@ public class StoreServiceImpl implements StoreService {
private final StoreRepository storeRepository;
private final StoreImageRepository storeImageRepository;
private final UserRepository userRepository;
private final DepartmentRepository departmentRepository;

@Override
@Transactional
Expand All @@ -51,7 +55,7 @@ public StoreCreateResponse createStore(StoreCreateRequest request) {

@Override
@Transactional(readOnly = true)
public StoreReadDto getStoreByStoreId(Long storeId, MemberDetails memberDetails) {
public StoreDetailReadResponse getStoreByStoreId(Long storeId, MemberDetails memberDetails) {
if (storeId == null) throw new StoreParamEmptyException();
User user = userRepository.findById(memberDetails.getId()).orElseThrow(UserNotFoundException::new);
if (!Role.SUPER_ADMIN.equals(user.getRole()) && !user.getStoreId().equals(storeId)) {
Expand All @@ -60,12 +64,16 @@ public StoreReadDto getStoreByStoreId(Long storeId, MemberDetails memberDetails)
Store store = storeRepository.findByStoreIdAndDeletedFalse(storeId)
.orElseThrow(StoreNotFoundException::new);

String departmentName = departmentRepository.findById(store.getDepartmentId())
.map(Department::getName)
.orElse("Unknown Department");

List<StoreImage> images = storeImageRepository.findByStore(store);
List<StoreImageUploadResponse> imageDto = images.stream()
.map(StoreImageUploadResponse::fromEntity)
.toList();

return StoreReadDto.fromEntity(store, imageDto);
return StoreDetailReadResponse.fromEntity(store, imageDto, departmentName);
}

@Override
Expand Down