diff --git a/src/main/java/ru/soune/nocopy/handler/ComplaintEntityHandler.java b/src/main/java/ru/soune/nocopy/handler/ComplaintEntityHandler.java index 88f95e9..4604a85 100644 --- a/src/main/java/ru/soune/nocopy/handler/ComplaintEntityHandler.java +++ b/src/main/java/ru/soune/nocopy/handler/ComplaintEntityHandler.java @@ -64,7 +64,7 @@ public class ComplaintEntityHandler implements RequestHandler { try { return switch (action) { - case "create" -> handleCreate(msgId, complaintRequest); + case "create" -> handleCreate(msgId, complaintRequest, userId); case "get" -> handleGet(msgId, complaintRequest, userId); case "get_all" -> handleGetAll(msgId, complaintRequest, emails); case "get_by_violation" -> handleGetByViolation(msgId, complaintRequest, userId); @@ -81,12 +81,20 @@ public class ComplaintEntityHandler implements RequestHandler { } } - private BaseResponse handleCreate(Integer msgId, ComplaintRequest req) { + private BaseResponse handleCreate(Integer msgId, ComplaintRequest req, Long userId) { if (req.getViolationId() == null) return errorResponse(msgId, MessageCode.NOT_FOUND.getCode(), "violation_id is required"); if (req.getComplaintText() == null) return errorResponse(msgId, MessageCode.NOT_FOUND.getCode(), "text is required"); + ComplaintEntity complaintEntity = complaintEntityRepository.findById(req.getId()).orElse(null); + + if (complaintEntity == null || !Objects.equals( + complaintEntity.getViolation().getFileEntity().getUserId(), userId)) { + return errorResponse(msgId, MessageCode.USER_NOT_HAD_PERMISSION.getCode(), + MessageCode.USER_NOT_HAD_PERMISSION.getDescription()); + } + ComplaintResponse response = complaintService.createComplaint(req); return successResponse(msgId, "Complaint created successfully", response); @@ -107,8 +115,8 @@ public class ComplaintEntityHandler implements RequestHandler { private BaseResponse handleGetAll(Integer msgId, ComplaintRequest req, List emails) { Pageable pageable = PageRequest.of( - req.getPage() != null && req.getPage() > 0 ? req.getPage() - 1 : 0, - req.getSize() != null && req.getSize() > 0 ? req.getSize() : 5, + req.getPage() != null ? req.getPage() : 0, + req.getSize() != null ? req.getSize() : 5, Sort.by(Sort.Direction.fromString( req.getSortDirection() != null ? req.getSortDirection() : "desc"), req.getSortBy() != null ? req.getSortBy() : "updatedAt"));