dev add method link
Test Workflow / test (push) Has been cancelled

This commit is contained in:
2026-05-04 15:15:42 +07:00
parent aacd485584
commit 25b4601bfb
3 changed files with 39 additions and 22 deletions
@@ -12,8 +12,10 @@ import ru.soune.nocopy.dto.BaseResponse;
import ru.soune.nocopy.dto.MessageCode;
import ru.soune.nocopy.dto.complaint.ComplaintRequest;
import ru.soune.nocopy.dto.complaint.ComplaintResponse;
import ru.soune.nocopy.entity.complaint.ComplaintEntity;
import ru.soune.nocopy.entity.complaint.ComplaintStatus;
import ru.soune.nocopy.entity.user.User;
import ru.soune.nocopy.repository.ComplaintEntityRepository;
import ru.soune.nocopy.repository.FileEntityRepository;
import ru.soune.nocopy.repository.UserRepository;
import ru.soune.nocopy.service.complaint.ComplaintEntityService;
@@ -38,6 +40,8 @@ public class ComplaintEntityHandler implements RequestHandler {
private final FileEntityRepository fileEntityRepository;
private final ComplaintEntityRepository complaintEntityRepository;
@Override
public BaseResponse handle(BaseRequest request) throws Exception {
Integer msgId = request.getMsgId();
@@ -63,9 +67,9 @@ public class ComplaintEntityHandler implements RequestHandler {
case "create" -> handleCreate(msgId, complaintRequest);
case "get" -> handleGet(msgId, complaintRequest, userId);
case "get_all" -> handleGetAll(msgId, complaintRequest, emails);
case "get_by_violation" -> handleGetByViolation(msgId, complaintRequest);
case "update_status" -> handleUpdateStatus(msgId, complaintRequest);
case "update" -> handleUpdate(msgId, complaintRequest);
case "get_by_violation" -> handleGetByViolation(msgId, complaintRequest, userId);
case "update_status" -> handleUpdateStatus(msgId, complaintRequest, userId);
case "update" -> handleUpdate(msgId, complaintRequest, userId);
case "delete" -> handleDelete(msgId, complaintRequest);
default -> errorResponse(msgId, MessageCode.MSG_ID_NOT_FOUND.getCode(), "Valid actions: " +
List.of("create", "get", "get_all", "get_by_violation", "update_status",
@@ -121,19 +125,21 @@ public class ComplaintEntityHandler implements RequestHandler {
return successResponse(msgId, "Complaints retrieved successfully", data);
}
private BaseResponse handleGetByViolation(Integer msgId, ComplaintRequest req) {
private BaseResponse handleGetByViolation(Integer msgId, ComplaintRequest req, Long userId) {
if (req.getViolationId() == null) return errorResponse(msgId, MessageCode.NOT_FOUND.getCode(),
"violation_id is required");
var complaints = complaintService.getComplaintsByViolationId(req.getViolationId());
Map<String, Object> data = new HashMap<>();
data.put("content", complaints);
data.put("totalElements", complaints.size());
ComplaintResponse response = complaintService.getComplaintsByViolationId(req.getViolationId());
return successResponse(msgId, "Complaints retrieved successfully", data);
if (!Objects.equals(fileEntityRepository.findByFileId(response.getFileId()).getUserId(), userId)) {
return errorResponse(msgId, MessageCode.USER_NOT_HAD_PERMISSION.getCode(),
"User not have permission for file");
}
return successResponse(msgId, "Complaints retrieved successfully", response);
}
private BaseResponse handleUpdateStatus(Integer msgId, ComplaintRequest req) {
private BaseResponse handleUpdateStatus(Integer msgId, ComplaintRequest req, Long userId) {
if (req.getId() == null) return errorResponse(msgId, MessageCode.NOT_FOUND.getCode(), "id is required");
if (req.getStatus() == null) return errorResponse(msgId, MessageCode.NOT_FOUND.getCode(), "status is required");
@@ -145,14 +151,30 @@ public class ComplaintEntityHandler implements RequestHandler {
ComplaintStatus status = ComplaintStatus.valueOf(req.getStatus().toUpperCase());
ComplaintResponse response = complaintService.updateComplaintStatus(req.getId(), status);
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.updateComplaintStatus(complaintEntity, status);
return successResponse(msgId, "Status updated successfully", response);
}
private BaseResponse handleUpdate(Integer msgId, ComplaintRequest req) {
private BaseResponse handleUpdate(Integer msgId, ComplaintRequest req, Long userId) {
if (req.getId() == null) return errorResponse(msgId, MessageCode.NOT_FOUND.getCode(), "id 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.updateComplaint(req.getId(), req);
return successResponse(msgId, "Complaint updated successfully", response);