This commit is contained in:
@@ -35,4 +35,7 @@ public class ComplaintRequest {
|
|||||||
|
|
||||||
@JsonProperty("sort_direction")
|
@JsonProperty("sort_direction")
|
||||||
private String sortDirection;
|
private String sortDirection;
|
||||||
|
|
||||||
|
@JsonProperty("token")
|
||||||
|
private String token;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,8 +13,14 @@ import ru.soune.nocopy.dto.MessageCode;
|
|||||||
import ru.soune.nocopy.dto.complaint.ComplaintRequest;
|
import ru.soune.nocopy.dto.complaint.ComplaintRequest;
|
||||||
import ru.soune.nocopy.dto.complaint.ComplaintResponse;
|
import ru.soune.nocopy.dto.complaint.ComplaintResponse;
|
||||||
import ru.soune.nocopy.entity.complaint.ComplaintStatus;
|
import ru.soune.nocopy.entity.complaint.ComplaintStatus;
|
||||||
|
import ru.soune.nocopy.entity.user.User;
|
||||||
|
import ru.soune.nocopy.repository.UserRepository;
|
||||||
import ru.soune.nocopy.service.complaint.ComplaintEntityService;
|
import ru.soune.nocopy.service.complaint.ComplaintEntityService;
|
||||||
|
import ru.soune.nocopy.service.register.AuthService;
|
||||||
|
import ru.soune.nocopy.service.user.UserService;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@@ -25,11 +31,31 @@ public class ComplaintEntityHandler implements RequestHandler {
|
|||||||
|
|
||||||
private final ObjectMapper objectMapper;
|
private final ObjectMapper objectMapper;
|
||||||
|
|
||||||
|
private final UserRepository userRepository;
|
||||||
|
|
||||||
|
private final UserService userService;
|
||||||
|
|
||||||
|
private final AuthService authService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BaseResponse handle(BaseRequest request) throws Exception {
|
public BaseResponse handle(BaseRequest request) throws Exception {
|
||||||
Integer msgId = request.getMsgId();
|
Integer msgId = request.getMsgId();
|
||||||
ComplaintRequest complaintRequest = objectMapper.convertValue(request.getMessageBody(), ComplaintRequest.class);
|
ComplaintRequest complaintRequest = objectMapper.convertValue(request.getMessageBody(), ComplaintRequest.class);
|
||||||
String action = complaintRequest.getAction();
|
String action = complaintRequest.getAction();
|
||||||
|
String token = complaintRequest.getToken();
|
||||||
|
Long userId = authService.useUserAuthToken(token);
|
||||||
|
User user = userRepository.findById(userId).orElse(null);
|
||||||
|
|
||||||
|
if (user == null) {
|
||||||
|
return new BaseResponse(
|
||||||
|
request.getMsgId(),
|
||||||
|
MessageCode.USER_NOT_FOUND.getCode(),
|
||||||
|
MessageCode.USER_NOT_FOUND.getDescription(),
|
||||||
|
Map.of("token: ", token));
|
||||||
|
}
|
||||||
|
|
||||||
|
List<String> emails = user.getCompany() == null ? List.of(user.getEmail()):
|
||||||
|
userService.getUsersCompanyEmails(user.getCompany().getId());
|
||||||
|
|
||||||
try {
|
try {
|
||||||
switch (action.toLowerCase()) {
|
switch (action.toLowerCase()) {
|
||||||
@@ -38,7 +64,7 @@ public class ComplaintEntityHandler implements RequestHandler {
|
|||||||
case "get":
|
case "get":
|
||||||
return handleGet(msgId, complaintRequest);
|
return handleGet(msgId, complaintRequest);
|
||||||
case "get_all":
|
case "get_all":
|
||||||
return handleGetAll(msgId, complaintRequest);
|
return handleGetAll(msgId, complaintRequest, emails);
|
||||||
case "get_by_violation":
|
case "get_by_violation":
|
||||||
return handleGetByViolation(msgId, complaintRequest);
|
return handleGetByViolation(msgId, complaintRequest);
|
||||||
case "update_status":
|
case "update_status":
|
||||||
@@ -74,14 +100,15 @@ public class ComplaintEntityHandler implements RequestHandler {
|
|||||||
return successResponse(msgId, "Complaint retrieved successfully", response);
|
return successResponse(msgId, "Complaint retrieved successfully", response);
|
||||||
}
|
}
|
||||||
|
|
||||||
private BaseResponse handleGetAll(Integer msgId, ComplaintRequest req) {
|
private BaseResponse handleGetAll(Integer msgId, ComplaintRequest req, List<String> emails) {
|
||||||
Pageable pageable = PageRequest.of(
|
Pageable pageable = PageRequest.of(
|
||||||
req.getPage() != null ? req.getPage() : 0,
|
req.getPage() != null ? req.getPage() : 0,
|
||||||
req.getSize() != null ? req.getSize() : 5,
|
req.getSize() != null ? req.getSize() : 5,
|
||||||
Sort.by(Sort.Direction.fromString(req.getSortDirection() != null ? req.getSortDirection() : "desc"),
|
Sort.by(Sort.Direction.fromString(req.getSortDirection() != null ? req.getSortDirection() : "desc"),
|
||||||
req.getSortBy() != null ? req.getSortBy() : "updatedAt"));
|
req.getSortBy() != null ? req.getSortBy() : "updatedAt"));
|
||||||
|
|
||||||
var page = complaintService.getAllComplaints(pageable);
|
var page = complaintService.getAllComplaintsByEmail(pageable, emails);
|
||||||
|
|
||||||
Map<String, Object> data = new HashMap<>();
|
Map<String, Object> data = new HashMap<>();
|
||||||
data.put("content", page.getContent());
|
data.put("content", page.getContent());
|
||||||
data.put("page", page.getNumber());
|
data.put("page", page.getNumber());
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import org.springframework.data.domain.Pageable;
|
|||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
import org.springframework.data.jpa.repository.Modifying;
|
import org.springframework.data.jpa.repository.Modifying;
|
||||||
import org.springframework.data.jpa.repository.Query;
|
import org.springframework.data.jpa.repository.Query;
|
||||||
|
import org.springframework.data.repository.query.Param;
|
||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import ru.soune.nocopy.entity.complaint.ComplaintEntity;
|
import ru.soune.nocopy.entity.complaint.ComplaintEntity;
|
||||||
@@ -37,4 +38,7 @@ public interface ComplaintEntityRepository extends JpaRepository<ComplaintEntity
|
|||||||
)
|
)
|
||||||
""")
|
""")
|
||||||
Long getComplaintsWithoutLawCaseCount();
|
Long getComplaintsWithoutLawCaseCount();
|
||||||
|
|
||||||
|
@Query("SELECT c FROM ComplaintEntity c WHERE c.email IN :emails")
|
||||||
|
Page<ComplaintEntity> getComplaintsByUserEmails(@Param("emails") List<String> emails, Pageable pageable);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,4 +45,7 @@ public interface UserRepository extends JpaRepository<User, Long> {
|
|||||||
|
|
||||||
@Query("SELECT u FROM User u WHERE u.personalTariffInfo.id = :tariffInfoId")
|
@Query("SELECT u FROM User u WHERE u.personalTariffInfo.id = :tariffInfoId")
|
||||||
Optional<User> findByPersonalTariffInfoId(@Param("tariffInfoId") String tariffInfoId);
|
Optional<User> findByPersonalTariffInfoId(@Param("tariffInfoId") String tariffInfoId);
|
||||||
|
|
||||||
|
@Query("SELECT u.email FROM User u WHERE u.company = :company")
|
||||||
|
List<String> emailsByCompany(@Param("company") String company);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -62,6 +62,12 @@ public class ComplaintEntityService {
|
|||||||
return mapToResponse(complaintRepository.save(complaint));
|
return mapToResponse(complaintRepository.save(complaint));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Transactional(readOnly = true)
|
||||||
|
public Page<ComplaintResponse> getAllComplaintsByEmail(Pageable pageable, List<String> emails) {
|
||||||
|
return complaintRepository.getComplaintsByUserEmails(emails, pageable)
|
||||||
|
.map(this::mapToResponse);
|
||||||
|
}
|
||||||
|
|
||||||
@Transactional(readOnly = true)
|
@Transactional(readOnly = true)
|
||||||
public ComplaintResponse getComplaintById(Long id) {
|
public ComplaintResponse getComplaintById(Long id) {
|
||||||
return complaintRepository.findById(id)
|
return complaintRepository.findById(id)
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import ru.soune.nocopy.exception.NotValidationPasswordException;
|
|||||||
import ru.soune.nocopy.exception.UserNotFoundException;
|
import ru.soune.nocopy.exception.UserNotFoundException;
|
||||||
import ru.soune.nocopy.repository.UserRepository;
|
import ru.soune.nocopy.repository.UserRepository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@@ -46,6 +47,11 @@ public class UserService {
|
|||||||
return mapToDTO(updatedUser);
|
return mapToDTO(updatedUser);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
public List<String> getUsersCompanyEmails(String company) {
|
||||||
|
return userRepository.emailsByCompany(company);
|
||||||
|
}
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
public User activateAndVerifyUser(long userId) {
|
public User activateAndVerifyUser(long userId) {
|
||||||
Optional<User> users = userRepository.findById(userId);
|
Optional<User> users = userRepository.findById(userId);
|
||||||
|
|||||||
Reference in New Issue
Block a user