@@ -15,6 +15,7 @@ import ru.soune.nocopy.dto.complaint.PaginatedResponse;
|
|||||||
import ru.soune.nocopy.entity.complaint.LawCase;
|
import ru.soune.nocopy.entity.complaint.LawCase;
|
||||||
import ru.soune.nocopy.entity.complaint.LawCasePriority;
|
import ru.soune.nocopy.entity.complaint.LawCasePriority;
|
||||||
import ru.soune.nocopy.entity.complaint.LawCaseType;
|
import ru.soune.nocopy.entity.complaint.LawCaseType;
|
||||||
|
import ru.soune.nocopy.entity.file.FileType;
|
||||||
import ru.soune.nocopy.entity.tokenoperation.OperationType;
|
import ru.soune.nocopy.entity.tokenoperation.OperationType;
|
||||||
import ru.soune.nocopy.entity.user.User;
|
import ru.soune.nocopy.entity.user.User;
|
||||||
import ru.soune.nocopy.entity.violation.Violation;
|
import ru.soune.nocopy.entity.violation.Violation;
|
||||||
@@ -29,9 +30,7 @@ import ru.soune.nocopy.service.tariff.TariffInfoService;
|
|||||||
import ru.soune.nocopy.service.violation.ViolationService;
|
import ru.soune.nocopy.service.violation.ViolationService;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@@ -78,6 +77,8 @@ public class LawCaseHandler implements RequestHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private BaseResponse getAllUserLawCases(Long userId, LawCaseRequest lawCaseRequest, BaseRequest request) {
|
private BaseResponse getAllUserLawCases(Long userId, LawCaseRequest lawCaseRequest, BaseRequest request) {
|
||||||
|
validateLawCaseRequestFilters(lawCaseRequest);
|
||||||
|
|
||||||
Page<LawCase> lawCases = lawCaseService.getAllUserLawCases(
|
Page<LawCase> lawCases = lawCaseService.getAllUserLawCases(
|
||||||
userId,
|
userId,
|
||||||
lawCaseRequest.getPageSize(),
|
lawCaseRequest.getPageSize(),
|
||||||
@@ -114,6 +115,41 @@ public class LawCaseHandler implements RequestHandler {
|
|||||||
MessageCode.SUCCESS.getDescription(), paginatedResponse);
|
MessageCode.SUCCESS.getDescription(), paginatedResponse);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void validateLawCaseRequestFilters(LawCaseRequest lawCaseRequest) {
|
||||||
|
if (lawCaseRequest.getFilterType() != null && !lawCaseRequest.getFilterType().getName().isEmpty()) {
|
||||||
|
boolean isValidType = Arrays.stream(LawCaseType.values())
|
||||||
|
.anyMatch(type -> type.getName().equalsIgnoreCase(lawCaseRequest.getFilterType().name()));
|
||||||
|
|
||||||
|
if (!isValidType) {
|
||||||
|
throw new NotValidFieldException("Not valid filter type",
|
||||||
|
new BaseResponse(null, MessageCode.NOT_VALID_FIELD.getCode(),
|
||||||
|
MessageCode.NOT_VALID_FIELD.getDescription(),
|
||||||
|
Map.of("field", "filterType",
|
||||||
|
"valid_values", Arrays.stream(LawCaseType.values())
|
||||||
|
.map(LawCaseType::getName)
|
||||||
|
.collect(Collectors.toList()),
|
||||||
|
"received_value", lawCaseRequest.getFilterType())));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (lawCaseRequest.getFilterPriority() != null && !lawCaseRequest.getFilterPriority().name().isEmpty()) {
|
||||||
|
boolean isValidPriority = Arrays.stream(LawCasePriority.values())
|
||||||
|
.anyMatch(priority ->
|
||||||
|
priority.name().equalsIgnoreCase(lawCaseRequest.getFilterPriority().name()));
|
||||||
|
|
||||||
|
if (!isValidPriority) {
|
||||||
|
throw new NotValidFieldException("Not valid filter priority",
|
||||||
|
new BaseResponse(null, MessageCode.NOT_VALID_FIELD.getCode(),
|
||||||
|
MessageCode.NOT_VALID_FIELD.getDescription(),
|
||||||
|
Map.of("field", "filterPriority",
|
||||||
|
"valid_values", Arrays.stream(LawCasePriority.values())
|
||||||
|
.map(LawCasePriority::name)
|
||||||
|
.collect(Collectors.toList()),
|
||||||
|
"received_value", lawCaseRequest.getFilterPriority())));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private BaseResponse getLawCaseById(Long id, BaseRequest request) {
|
private BaseResponse getLawCaseById(Long id, BaseRequest request) {
|
||||||
LawCase lawCase = lawCaseService.getById(id);
|
LawCase lawCase = lawCaseService.getById(id);
|
||||||
|
|
||||||
@@ -127,6 +163,8 @@ public class LawCaseHandler implements RequestHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private BaseResponse createLawCase(Long userId, LawCaseRequest lawCaseRequest, BaseRequest request) {
|
private BaseResponse createLawCase(Long userId, LawCaseRequest lawCaseRequest, BaseRequest request) {
|
||||||
|
validateRequiredParameters(lawCaseRequest, request, userId);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
tariffInfoService.writeOffTokens(userId, TariffConstants.LEGAL_COST, OperationType.CREATE_LEGAL_CASE);
|
tariffInfoService.writeOffTokens(userId, TariffConstants.LEGAL_COST, OperationType.CREATE_LEGAL_CASE);
|
||||||
} catch (TariffNotFoundException e) {
|
} catch (TariffNotFoundException e) {
|
||||||
@@ -138,16 +176,15 @@ public class LawCaseHandler implements RequestHandler {
|
|||||||
MessageCode.INVALID_FIELD.getDescription(), Map.of("id", lawCaseRequest.getId()));
|
MessageCode.INVALID_FIELD.getDescription(), Map.of("id", lawCaseRequest.getId()));
|
||||||
}
|
}
|
||||||
|
|
||||||
validateRequiredParameters(lawCaseRequest, request);
|
|
||||||
|
|
||||||
User user = userRepository.findById(userId).orElseThrow(() -> new UserNotFoundException("User not found"));
|
User user = userRepository.findById(userId).orElseThrow(() -> new UserNotFoundException("User not found"));
|
||||||
|
Long violationId = lawCaseRequest.getViolationId();
|
||||||
|
|
||||||
LawCase lawCase = lawCaseService.addLawCase(
|
LawCase lawCase = lawCaseService.addLawCase(
|
||||||
lawCaseRequest.getAmount(),
|
lawCaseRequest.getAmount(),
|
||||||
lawCaseRequest.getDescription(),
|
lawCaseRequest.getDescription(),
|
||||||
lawCaseRequest.getName(),
|
lawCaseRequest.getName(),
|
||||||
LawCasePriority.valueOf(lawCaseRequest.getPriority()),
|
LawCasePriority.valueOf(lawCaseRequest.getPriority()),
|
||||||
lawCaseRequest.getViolationId(), user);
|
violationId, user);
|
||||||
|
|
||||||
return new BaseResponse(request.getMsgId(), MessageCode.SUCCESS.getCode(),
|
return new BaseResponse(request.getMsgId(), MessageCode.SUCCESS.getCode(),
|
||||||
MessageCode.SUCCESS.getDescription(), LawCaseResponse.fromEntity(lawCase));
|
MessageCode.SUCCESS.getDescription(), LawCaseResponse.fromEntity(lawCase));
|
||||||
@@ -201,7 +238,7 @@ public class LawCaseHandler implements RequestHandler {
|
|||||||
MessageCode.SUCCESS.getDescription(), Map.of("id", id));
|
MessageCode.SUCCESS.getDescription(), Map.of("id", id));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void validateRequiredParameters(LawCaseRequest lawCaseRequest, BaseRequest request) {
|
private void validateRequiredParameters(LawCaseRequest lawCaseRequest, BaseRequest request, Long userId) {
|
||||||
if (lawCaseRequest.getName() == null) throw new NotValidFieldException("Name is required",
|
if (lawCaseRequest.getName() == null) throw new NotValidFieldException("Name is required",
|
||||||
new BaseResponse(request.getMsgId(), MessageCode.NOT_VALID_FIELD.getCode(),
|
new BaseResponse(request.getMsgId(), MessageCode.NOT_VALID_FIELD.getCode(),
|
||||||
MessageCode.NOT_VALID_FIELD.getDescription(), Map.of("fields", "name")));
|
MessageCode.NOT_VALID_FIELD.getDescription(), Map.of("fields", "name")));
|
||||||
@@ -213,5 +250,36 @@ public class LawCaseHandler implements RequestHandler {
|
|||||||
if (lawCaseRequest.getViolationId() == null) throw new NotValidFieldException("Violation id is required",
|
if (lawCaseRequest.getViolationId() == null) throw new NotValidFieldException("Violation id is required",
|
||||||
new BaseResponse(request.getMsgId(), MessageCode.NOT_VALID_FIELD.getCode(),
|
new BaseResponse(request.getMsgId(), MessageCode.NOT_VALID_FIELD.getCode(),
|
||||||
MessageCode.NOT_VALID_FIELD.getDescription(), Map.of("fields", "violation_id")));
|
MessageCode.NOT_VALID_FIELD.getDescription(), Map.of("fields", "violation_id")));
|
||||||
|
|
||||||
|
Violation violation = violationService.getById(lawCaseRequest.getViolationId());
|
||||||
|
|
||||||
|
if (!Objects.equals(violation.getFileEntity().getUserId(), userId))
|
||||||
|
throw new NotValidFieldException("Not user violation",
|
||||||
|
new BaseResponse(request.getMsgId(), MessageCode.NOT_VALID_FIELD.getCode(),
|
||||||
|
MessageCode.NOT_VALID_FIELD.getDescription(), Map.of("fields", "violation_id")));
|
||||||
|
|
||||||
|
if (!FileType.DOCUMENT.getDisplayName().equals(lawCaseRequest.getType().toLowerCase()) &&
|
||||||
|
!FileType.AUDIO.getDisplayName().equals(lawCaseRequest.getType().toLowerCase()) &&
|
||||||
|
!FileType.IMAGE.getDisplayName().equals(lawCaseRequest.getType().toLowerCase()) &&
|
||||||
|
!FileType.VIDEO.getDisplayName().equals(lawCaseRequest.getType().toLowerCase()))
|
||||||
|
throw new NotValidFieldException("Not valid type",
|
||||||
|
new BaseResponse(request.getMsgId(), MessageCode.NOT_VALID_FIELD.getCode(),
|
||||||
|
MessageCode.NOT_VALID_FIELD.getDescription(), Map.of("valid_types",
|
||||||
|
List.of(FileType.DOCUMENT.getDisplayName(),
|
||||||
|
FileType.AUDIO.getDisplayName(),
|
||||||
|
FileType.IMAGE.getDisplayName(),
|
||||||
|
FileType.VIDEO.getDisplayName()))));
|
||||||
|
|
||||||
|
if (!LawCasePriority.HIGH.name().equalsIgnoreCase(lawCaseRequest.getPriority()) &&
|
||||||
|
!LawCasePriority.LOW.name().equalsIgnoreCase(lawCaseRequest.getPriority()) &&
|
||||||
|
!LawCasePriority.MIDDLE.name().equalsIgnoreCase(lawCaseRequest.getPriority()) &&
|
||||||
|
!LawCasePriority.CRITICAL.name().equalsIgnoreCase(lawCaseRequest.getPriority()))
|
||||||
|
throw new NotValidFieldException("Not valid type",
|
||||||
|
new BaseResponse(request.getMsgId(), MessageCode.NOT_VALID_FIELD.getCode(),
|
||||||
|
MessageCode.NOT_VALID_FIELD.getDescription(), Map.of("valid_types",
|
||||||
|
List.of(FileType.DOCUMENT.getDisplayName(),
|
||||||
|
FileType.AUDIO.getDisplayName(),
|
||||||
|
FileType.IMAGE.getDisplayName(),
|
||||||
|
FileType.VIDEO.getDisplayName()))));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user