-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
8 changed files
with
147 additions
and
0 deletions.
There are no files selected for viewing
30 changes: 30 additions & 0 deletions
30
src/main/java/ru/nsu/fit/directors/userservice/controller/EstablishmentController.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
package ru.nsu.fit.directors.userservice.controller; | ||
|
||
import jakarta.validation.Valid; | ||
import lombok.RequiredArgsConstructor; | ||
import org.springframework.validation.annotation.Validated; | ||
import org.springframework.web.bind.annotation.GetMapping; | ||
import org.springframework.web.bind.annotation.RequestMapping; | ||
import org.springframework.web.bind.annotation.RestController; | ||
import ru.nsu.fit.directors.userservice.dto.request.RequestGetEstablishmentParameters; | ||
import ru.nsu.fit.directors.userservice.dto.response.EstablishmentListDto; | ||
import ru.nsu.fit.directors.userservice.service.EstablishmentService; | ||
|
||
@RestController | ||
@RequiredArgsConstructor | ||
@RequestMapping(value = "/user/establishments") | ||
@Validated | ||
public class EstablishmentController { | ||
private final EstablishmentService establishmentService; | ||
/** | ||
* Get requests for establishments. | ||
* Can filter establishments by fields, also implemented sorting and pagination. | ||
* | ||
* @param parameters - list of get parameters for establishments | ||
* @return list of establishment dto, list size included. | ||
*/ | ||
@GetMapping(value = "all") | ||
public EstablishmentListDto getEstablishments(@Valid RequestGetEstablishmentParameters parameters) { | ||
return establishmentService.getEstablishmentByParams(parameters); | ||
} | ||
} |
30 changes: 30 additions & 0 deletions
30
.../java/ru/nsu/fit/directors/userservice/dto/request/RequestGetEstablishmentParameters.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
package ru.nsu.fit.directors.userservice.dto.request; | ||
|
||
import jakarta.validation.constraints.Max; | ||
import jakarta.validation.constraints.Min; | ||
import lombok.Builder; | ||
import org.springframework.lang.Nullable; | ||
|
||
|
||
@Builder | ||
public record RequestGetEstablishmentParameters( | ||
String name, | ||
@Nullable String category, | ||
@Nullable Boolean hasMap, | ||
@Nullable Boolean hasCardPayment, | ||
@Min(value = 5, message = "Не может быть меньше 5 рабочих дней.") | ||
@Max(value = 7, message = "Не может быть больше 7 рабочих дней.") | ||
Integer workingDayCount, | ||
@Min(value = 0, message = "Страница не может быть меньше нулевой.") Integer offset, | ||
@Min(value = 1, message = "Лимит не может быть меньше единицы.") Integer limit, | ||
String sortValue | ||
) { | ||
|
||
public RequestGetEstablishmentParameters { | ||
name = name == null ? "" : name; | ||
offset = offset == null ? 0 : offset; | ||
limit = limit == null ? 100 : limit; | ||
sortValue = sortValue == null ? "name" : sortValue; | ||
workingDayCount = workingDayCount == null ? 7 : workingDayCount; | ||
} | ||
} |
9 changes: 9 additions & 0 deletions
9
src/main/java/ru/nsu/fit/directors/userservice/dto/response/EstablishmentListDto.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
package ru.nsu.fit.directors.userservice.dto.response; | ||
|
||
import java.util.List; | ||
|
||
public record EstablishmentListDto( | ||
int count, | ||
List<ResponseBasicEstablishmentInfo> establishmentInfoList | ||
) { | ||
} |
18 changes: 18 additions & 0 deletions
18
...in/java/ru/nsu/fit/directors/userservice/dto/response/ResponseBasicEstablishmentInfo.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
package ru.nsu.fit.directors.userservice.dto.response; | ||
|
||
import lombok.Data; | ||
|
||
@Data | ||
public class ResponseBasicEstablishmentInfo { | ||
private Long id; | ||
private String name; | ||
private String category; | ||
private Float rating; | ||
private String address; | ||
private String image; | ||
private Boolean hasMap; | ||
private Boolean hasCardPayment; | ||
private String starsCount; | ||
private String cuisineCountry; | ||
private boolean isFavourite; | ||
} |
8 changes: 8 additions & 0 deletions
8
src/main/java/ru/nsu/fit/directors/userservice/service/EstablishmentService.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
package ru.nsu.fit.directors.userservice.service; | ||
|
||
import ru.nsu.fit.directors.userservice.dto.request.RequestGetEstablishmentParameters; | ||
import ru.nsu.fit.directors.userservice.dto.response.EstablishmentListDto; | ||
|
||
public interface EstablishmentService { | ||
EstablishmentListDto getEstablishmentByParams(RequestGetEstablishmentParameters parameters); | ||
} |
37 changes: 37 additions & 0 deletions
37
src/main/java/ru/nsu/fit/directors/userservice/service/EstablishmentServiceImpl.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
package ru.nsu.fit.directors.userservice.service; | ||
|
||
import lombok.RequiredArgsConstructor; | ||
import org.springframework.core.ParameterizedTypeReference; | ||
import org.springframework.stereotype.Component; | ||
import ru.nsu.fit.directors.userservice.api.EstablishmentApi; | ||
import ru.nsu.fit.directors.userservice.dto.request.RequestGetEstablishmentParameters; | ||
import ru.nsu.fit.directors.userservice.dto.response.EstablishmentListDto; | ||
import ru.nsu.fit.directors.userservice.dto.response.ResponseBasicEstablishmentInfo; | ||
|
||
import javax.annotation.ParametersAreNonnullByDefault; | ||
import java.util.List; | ||
|
||
@Component | ||
@RequiredArgsConstructor | ||
@ParametersAreNonnullByDefault | ||
public class EstablishmentServiceImpl implements EstablishmentService { | ||
private final EstablishmentApi establishmentApi; | ||
private final FavouritesService favouritesService; | ||
|
||
@Override | ||
public EstablishmentListDto getEstablishmentByParams(RequestGetEstablishmentParameters parameters) { | ||
List<ResponseBasicEstablishmentInfo> establishmentInfoList = establishmentApi.syncListGetWithParams( | ||
uriBuilder -> uriBuilder.path("/establishment/all") | ||
.queryParam("name", parameters.name()) | ||
.queryParam("hasMap", parameters.hasMap()) | ||
.queryParam("hasCardPayment", parameters.hasCardPayment()) | ||
.queryParam("category", parameters.category()) | ||
.build(), | ||
new ParameterizedTypeReference<>() { | ||
}); | ||
establishmentInfoList.forEach( | ||
info -> info.setFavourite(favouritesService.getFavouritesIds().contains(info.getId())) | ||
); | ||
return new EstablishmentListDto(establishmentInfoList.size(), establishmentInfoList); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters