From d885f3fc4c2fed3dadc1eb884847cfb1c711a5e5 Mon Sep 17 00:00:00 2001 From: backdev-1 Date: Thu, 30 Apr 2026 15:51:16 +0700 Subject: [PATCH] dev add check similar --- .../soune/nocopy/handler/LawCaseHandler.java | 82 +++++++++++++++++-- 1 file changed, 75 insertions(+), 7 deletions(-) diff --git a/src/main/java/ru/soune/nocopy/handler/LawCaseHandler.java b/src/main/java/ru/soune/nocopy/handler/LawCaseHandler.java index b8225b4..9ddb72a 100644 --- a/src/main/java/ru/soune/nocopy/handler/LawCaseHandler.java +++ b/src/main/java/ru/soune/nocopy/handler/LawCaseHandler.java @@ -15,6 +15,7 @@ import ru.soune.nocopy.dto.complaint.PaginatedResponse; import ru.soune.nocopy.entity.complaint.LawCase; import ru.soune.nocopy.entity.complaint.LawCasePriority; 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.user.User; 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 java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; @Slf4j @@ -78,6 +77,8 @@ public class LawCaseHandler implements RequestHandler { } private BaseResponse getAllUserLawCases(Long userId, LawCaseRequest lawCaseRequest, BaseRequest request) { + validateLawCaseRequestFilters(lawCaseRequest); + Page lawCases = lawCaseService.getAllUserLawCases( userId, lawCaseRequest.getPageSize(), @@ -114,6 +115,41 @@ public class LawCaseHandler implements RequestHandler { 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) { LawCase lawCase = lawCaseService.getById(id); @@ -127,6 +163,8 @@ public class LawCaseHandler implements RequestHandler { } private BaseResponse createLawCase(Long userId, LawCaseRequest lawCaseRequest, BaseRequest request) { + validateRequiredParameters(lawCaseRequest, request, userId); + try { tariffInfoService.writeOffTokens(userId, TariffConstants.LEGAL_COST, OperationType.CREATE_LEGAL_CASE); } catch (TariffNotFoundException e) { @@ -138,16 +176,15 @@ public class LawCaseHandler implements RequestHandler { MessageCode.INVALID_FIELD.getDescription(), Map.of("id", lawCaseRequest.getId())); } - validateRequiredParameters(lawCaseRequest, request); - User user = userRepository.findById(userId).orElseThrow(() -> new UserNotFoundException("User not found")); + Long violationId = lawCaseRequest.getViolationId(); LawCase lawCase = lawCaseService.addLawCase( lawCaseRequest.getAmount(), lawCaseRequest.getDescription(), lawCaseRequest.getName(), LawCasePriority.valueOf(lawCaseRequest.getPriority()), - lawCaseRequest.getViolationId(), user); + violationId, user); return new BaseResponse(request.getMsgId(), MessageCode.SUCCESS.getCode(), MessageCode.SUCCESS.getDescription(), LawCaseResponse.fromEntity(lawCase)); @@ -201,7 +238,7 @@ public class LawCaseHandler implements RequestHandler { 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", new BaseResponse(request.getMsgId(), MessageCode.NOT_VALID_FIELD.getCode(), 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", new BaseResponse(request.getMsgId(), MessageCode.NOT_VALID_FIELD.getCode(), 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())))); } }