diff --git a/src/main/java/ru/nsu/fit/directors/establishmentservice/enums/Tag.java b/src/main/java/ru/nsu/fit/directors/establishmentservice/enums/Tag.java index ddec871..d0afe32 100644 --- a/src/main/java/ru/nsu/fit/directors/establishmentservice/enums/Tag.java +++ b/src/main/java/ru/nsu/fit/directors/establishmentservice/enums/Tag.java @@ -12,12 +12,10 @@ @Getter @RequiredArgsConstructor public enum Tag implements ParseableEnum { - wifi("WI-FI", "/wifi.svg", "Около Wi-Fi"), - power("Розетки", "/zap.svg", "Около розетки"), - television("Телевизоры", "/tv.svg", "Около телевизора"), - quite("Тихое место", "/headphones.svg", "Тихое место"), - kitchen("Кухня", "/eye.svg", "Около кухни"), - dance("Танцпол", "/music.svg", "Около танцпола"), + wifi("Около окна", "sun.svg", "Около окна"), + power("Розетки", "zap.svg", "Около розетки"), + television("Телевизоры", "tv.svg", "Около телевизора"), + quite("Тихое место", "headphones.svg", "Тихое место"), ; private final String translate; diff --git a/src/main/java/ru/nsu/fit/directors/establishmentservice/mapper/TagConverter.java b/src/main/java/ru/nsu/fit/directors/establishmentservice/mapper/TagConverter.java index 6443791..40376d2 100644 --- a/src/main/java/ru/nsu/fit/directors/establishmentservice/mapper/TagConverter.java +++ b/src/main/java/ru/nsu/fit/directors/establishmentservice/mapper/TagConverter.java @@ -1,28 +1,64 @@ package ru.nsu.fit.directors.establishmentservice.mapper; +import java.util.Arrays; import java.util.Collection; import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; import javax.annotation.Nonnull; import javax.annotation.ParametersAreNonnullByDefault; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; +import ru.nsu.fit.directors.establishmentservice.dto.request.RequestTagDto; import ru.nsu.fit.directors.establishmentservice.dto.response.ResponseTagDto; import ru.nsu.fit.directors.establishmentservice.enums.Tag; -import ru.nsu.fit.directors.establishmentservice.service.ImageWorker; +import ru.nsu.fit.directors.establishmentservice.service.AmazonImageServiceImpl; +import ru.nsu.fit.directors.establishmentservice.utils.EnumUtils; @Component @RequiredArgsConstructor @ParametersAreNonnullByDefault public class TagConverter { - private final ImageWorker imageWorker; + private final AmazonImageServiceImpl imageService; @Nonnull public List toResponse(Collection tags) { return tags.stream() - .map(x -> new ResponseTagDto(x.getTranslate(), imageWorker.getImageFromResource(x.getAssets()))) + .map(this::toResponse) .toList(); } + + @Nonnull + public List toResponse(Tag[] tags) { + return Arrays.stream(tags) + .map(this::toResponse) + .toList(); + } + + @Nonnull + public ResponseTagDto toResponse(Tag tag) { + return new ResponseTagDto(tag.getTranslate(), imageService.getByKey(tag.getAssets())); + } + + @Nonnull + public ResponseTagDto toSpotResponse(Tag tag) { + return new ResponseTagDto(tag.getTranslateForSpot(), imageService.getByKey(tag.getAssets())); + } + + @Nonnull + public List toSpotResponse(Collection tags) { + return tags.stream() + .map(this::toSpotResponse) + .toList(); + } + + @Nonnull + public Set toModel(Set tagDtoSet) { + return tagDtoSet.stream() + .map(x -> EnumUtils.parseEnum(x.getName(), Tag.class)) + .collect(Collectors.toSet()); + } } diff --git a/src/main/java/ru/nsu/fit/directors/establishmentservice/mapper/TagMapper.java b/src/main/java/ru/nsu/fit/directors/establishmentservice/mapper/TagMapper.java deleted file mode 100644 index 0a80a83..0000000 --- a/src/main/java/ru/nsu/fit/directors/establishmentservice/mapper/TagMapper.java +++ /dev/null @@ -1,57 +0,0 @@ -package ru.nsu.fit.directors.establishmentservice.mapper; - -import jakarta.annotation.Nonnull; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Component; -import ru.nsu.fit.directors.establishmentservice.dto.request.RequestTagDto; -import ru.nsu.fit.directors.establishmentservice.dto.response.ResponseTagDto; -import ru.nsu.fit.directors.establishmentservice.enums.Tag; -import ru.nsu.fit.directors.establishmentservice.service.ImageWorker; -import ru.nsu.fit.directors.establishmentservice.utils.EnumUtils; - -import java.util.Arrays; -import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; - -@Component -@RequiredArgsConstructor -public class TagMapper { - private final ImageWorker imageWorker; - - @Nonnull - public ResponseTagDto toDto(Tag tag) { - ResponseTagDto tagDto = new ResponseTagDto(tag.getTranslateForSpot(), tag.getAssets()); - tagDto.setImage(imageWorker.getImageFromResource(tagDto.getImage())); - return tagDto; - } - - @Nonnull - public List toDtoList(Set tags) { - return tags.stream() - .map(this::toDto) - .toList(); - } - - @Nonnull - public ResponseTagDto modelToTagDto(Tag tag) { - ResponseTagDto tagDto = new ResponseTagDto(tag.getTranslate(), tag.getAssets()); - tagDto.setImage(imageWorker.getImageFromResource(tagDto.getImage())); - return tagDto; - } - - @Nonnull - public List toDtoList(Tag[] tags) { - return Arrays.stream(tags) - .map(this::modelToTagDto) - .toList(); - } - - @Nonnull - public Set toModelSet(Set tagDtoSet) { - return tagDtoSet.stream() - .map(x -> EnumUtils.parseEnum(x.getName(), Tag.class)) - .collect(Collectors.toSet()); - } - -} diff --git a/src/main/java/ru/nsu/fit/directors/establishmentservice/service/EstablishmentServiceImpl.java b/src/main/java/ru/nsu/fit/directors/establishmentservice/service/EstablishmentServiceImpl.java index d995c60..36ce085 100644 --- a/src/main/java/ru/nsu/fit/directors/establishmentservice/service/EstablishmentServiceImpl.java +++ b/src/main/java/ru/nsu/fit/directors/establishmentservice/service/EstablishmentServiceImpl.java @@ -33,7 +33,7 @@ import ru.nsu.fit.directors.establishmentservice.exception.EstablishmentAlreadyExistsException; import ru.nsu.fit.directors.establishmentservice.exception.EstablishmentNotFoundException; import ru.nsu.fit.directors.establishmentservice.mapper.EstablishmentMapper; -import ru.nsu.fit.directors.establishmentservice.mapper.TagMapper; +import ru.nsu.fit.directors.establishmentservice.mapper.TagConverter; import ru.nsu.fit.directors.establishmentservice.model.Category; import ru.nsu.fit.directors.establishmentservice.model.Establishment; import ru.nsu.fit.directors.establishmentservice.model.Photo; @@ -70,7 +70,7 @@ public class EstablishmentServiceImpl implements EstablishmentService { private final ImageService imageServiceImpl; private final EstablishmentMapper establishmentMapper; private final WorkingHoursService workingHoursService; - private final TagMapper tagMapper; + private final TagConverter tagConverter; @Nonnull @Override @@ -140,7 +140,7 @@ public Long createEstablishmentV2(Long ownerId, RequestEstablishmentDto dto) { @Nonnull private Long saveEstablishmentDataV2(Establishment establishment, RequestEstablishmentDto dto) { - Set tags = tagMapper.toModelSet(dto.getTags()); + Set tags = tagConverter.toModel(dto.getTags()); log.info("Tags were converted"); establishment.setTags(tags); Establishment savedEstablishment = establishmentRepository.save(establishment); @@ -166,7 +166,7 @@ public List getCategories() { @Nonnull @Override public List getTags() { - return tagMapper.toDtoList(Tag.values()); + return tagConverter.toResponse(Tag.values()); } @Nonnull @@ -209,7 +209,7 @@ public List getEstablishmentsByIds(List id @Override public List getSpotTags(Long establishmentId) { Establishment establishment = getEstablishmentById(establishmentId); - return tagMapper.toDtoList(establishment.getTags()); + return tagConverter.toResponse(establishment.getTags()); } @@ -295,7 +295,7 @@ public void deleteEstablishment(Long establishmentId) { @Nonnull @Override public String getTagByName(String tagName) { - return tagMapper.modelToTagDto(EnumUtils.parseEnum(tagName, Tag.class)).getImage(); + return tagConverter.toResponse(EnumUtils.parseEnum(tagName, Tag.class)).getImage(); } private void deleteEstablishmentPhotos(Establishment establishment) { @@ -330,7 +330,7 @@ private void checkEstablishmentExistence(RequestEstablishmentDto dto) { @Nonnull private Long saveEstablishmentData(Establishment establishment, RequestEstablishmentDto dto) { - Set tags = tagMapper.toModelSet(dto.getTags()); + Set tags = tagConverter.toModel(dto.getTags()); log.info("Tags were converted"); establishment.setTags(tags); Establishment savedEstablishment = establishmentRepository.save(establishment); diff --git a/src/test/java/ru/nsu/fit/directors/establishmentservice/EstablishmentCategoryTest.java b/src/test/java/ru/nsu/fit/directors/establishmentservice/EstablishmentCategoryTest.java index 8fd9390..1c1ff85 100644 --- a/src/test/java/ru/nsu/fit/directors/establishmentservice/EstablishmentCategoryTest.java +++ b/src/test/java/ru/nsu/fit/directors/establishmentservice/EstablishmentCategoryTest.java @@ -28,8 +28,18 @@ void getTags() throws Exception { @Test @DisplayName("Получение валидного времени бронирования заведения") - void getEstablishment() throws Exception { + void getEstablishmentValidTime() throws Exception { mockMvc.perform(MockMvcRequestBuilders.get("/establishment/time?establishmentId=100")) .andExpect(responseFromPath("http/response/establishment/valid_time.json")); } + + + /*@Test + @DisplayName("Получение валидного времени бронирования заведения") + void getEstablishmentValidTimeV2() throws Exception { + mockMvc.perform(MockMvcRequestBuilders.get("/establishment/internal/time?establishmentId=100")) + .andExpect(responseFromPath("http/response/establishment/valid_time_internal.json")); + } + + */ } diff --git a/src/test/resources/http/response/establishment/valid_time_internal.json b/src/test/resources/http/response/establishment/valid_time_internal.json new file mode 100644 index 0000000..0e3fdce --- /dev/null +++ b/src/test/resources/http/response/establishment/valid_time_internal.json @@ -0,0 +1,35 @@ +{ + "result": [ + { + "hour": "12", + "minute": "30", + "seconds": "00" + }, + { + "hour": "12", + "minute": "30", + "seconds": "00" + }, + { + "hour": "12", + "minute": "30", + "seconds": "00" + }, + { + "hour": "12", + "minute": "30", + "seconds": "00" + }, + { + "hour": "12", + "minute": "30", + "seconds": "00" + }, + { + "hour": "12", + "minute": "30", + "seconds": "00" + } + ], + "exception": null +} diff --git a/src/test/resources/http/response/tags/all_tags.json b/src/test/resources/http/response/tags/all_tags.json index 11ff7b5..8681279 100644 --- a/src/test/resources/http/response/tags/all_tags.json +++ b/src/test/resources/http/response/tags/all_tags.json @@ -1,22 +1,20 @@ { "result": [ { - "name": "WI-FI" + "name": "Около окна", + "image": "https://storage.yandexcloud.net/budle-image-bucket/sun.svg" }, { - "name": "Тихое место" + "name": "Тихое место", + "image": "https://storage.yandexcloud.net/budle-image-bucket/headphones.svg" }, { - "name": "Розетки" + "name": "Розетки", + "image": "https://storage.yandexcloud.net/budle-image-bucket/zap.svg" }, { - "name": "Телевизоры" - }, - { - "name": "Кухня" - }, - { - "name": "Танцпол" + "name": "Телевизоры", + "image": "https://storage.yandexcloud.net/budle-image-bucket/tv.svg" } ], "exception": null