This commit is contained in:
@@ -15,6 +15,7 @@ import ru.soune.nocopy.dto.BaseResponse;
|
|||||||
import ru.soune.nocopy.dto.MessageCode;
|
import ru.soune.nocopy.dto.MessageCode;
|
||||||
import ru.soune.nocopy.dto.user.UserAdditionalInfoBody;
|
import ru.soune.nocopy.dto.user.UserAdditionalInfoBody;
|
||||||
|
|
||||||
|
import ru.soune.nocopy.dto.user.UserDTO;
|
||||||
import ru.soune.nocopy.entity.tarif.TariffInfo;
|
import ru.soune.nocopy.entity.tarif.TariffInfo;
|
||||||
import ru.soune.nocopy.entity.user.User;
|
import ru.soune.nocopy.entity.user.User;
|
||||||
import ru.soune.nocopy.entity.user.UserAdditionalInfo;
|
import ru.soune.nocopy.entity.user.UserAdditionalInfo;
|
||||||
@@ -23,6 +24,7 @@ import ru.soune.nocopy.entity.user.UserAdditionalInfoListAnswer;
|
|||||||
import ru.soune.nocopy.exception.UserAdditionalInfoNotFound;
|
import ru.soune.nocopy.exception.UserAdditionalInfoNotFound;
|
||||||
import ru.soune.nocopy.repository.UserRepository;
|
import ru.soune.nocopy.repository.UserRepository;
|
||||||
import ru.soune.nocopy.service.user.AdditionalInfoService;
|
import ru.soune.nocopy.service.user.AdditionalInfoService;
|
||||||
|
import ru.soune.nocopy.service.user.UserService;
|
||||||
import ru.soune.nocopy.service.user.UserSpecifications;
|
import ru.soune.nocopy.service.user.UserSpecifications;
|
||||||
|
|
||||||
|
|
||||||
@@ -43,6 +45,8 @@ public class UserInfoHandler implements RequestHandler {
|
|||||||
|
|
||||||
private final UserRepository userRepository;
|
private final UserRepository userRepository;
|
||||||
|
|
||||||
|
private final UserService userService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BaseResponse handle(BaseRequest request) throws Exception {
|
public BaseResponse handle(BaseRequest request) throws Exception {
|
||||||
try {
|
try {
|
||||||
@@ -55,6 +59,7 @@ public class UserInfoHandler implements RequestHandler {
|
|||||||
case "getAll" -> getAllAdditionalInfos(request);
|
case "getAll" -> getAllAdditionalInfos(request);
|
||||||
case "getAllWithPagination" -> getAllAdditionalInfoWithPagination(request, body);
|
case "getAllWithPagination" -> getAllAdditionalInfoWithPagination(request, body);
|
||||||
case "getById" -> getAdditionalInfoById(request, body.getUserId());
|
case "getById" -> getAdditionalInfoById(request, body.getUserId());
|
||||||
|
case "getIngoById" -> getInfoById(request, body.getUserId());
|
||||||
case "update" -> updateAdditionalInfo(request, body);
|
case "update" -> updateAdditionalInfo(request, body);
|
||||||
case "delete" -> deleteAdditionalInfo(request, body.getUserId());
|
case "delete" -> deleteAdditionalInfo(request, body.getUserId());
|
||||||
default -> new BaseResponse(
|
default -> new BaseResponse(
|
||||||
@@ -210,6 +215,22 @@ public class UserInfoHandler implements RequestHandler {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private BaseResponse getInfoById(BaseRequest request, Long userId) {
|
||||||
|
log.info("Getting info for user: {}", userId);
|
||||||
|
|
||||||
|
if (userId == null) {
|
||||||
|
throw new IllegalArgumentException("User Id is required for getById action");
|
||||||
|
}
|
||||||
|
|
||||||
|
UserDTO userInfo = userService.getUserInfo(userId);
|
||||||
|
|
||||||
|
return new BaseResponse(
|
||||||
|
request.getMsgId(),
|
||||||
|
MessageCode.SUCCESS.getCode(),
|
||||||
|
MessageCode.SUCCESS.getDescription(),
|
||||||
|
userInfo);
|
||||||
|
}
|
||||||
|
|
||||||
private BaseResponse updateAdditionalInfo(BaseRequest request, UserAdditionalInfoBody body) {
|
private BaseResponse updateAdditionalInfo(BaseRequest request, UserAdditionalInfoBody body) {
|
||||||
log.info("Updating additional info for user: {}", body.getUserId());
|
log.info("Updating additional info for user: {}", body.getUserId());
|
||||||
|
|
||||||
|
|||||||
@@ -5,13 +5,17 @@ import org.springframework.security.crypto.password.PasswordEncoder;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import ru.soune.nocopy.dto.register.ChangePasswordRequest;
|
import ru.soune.nocopy.dto.register.ChangePasswordRequest;
|
||||||
|
import ru.soune.nocopy.dto.tarriff.TariffInfoDTO;
|
||||||
import ru.soune.nocopy.dto.user.UserDTO;
|
import ru.soune.nocopy.dto.user.UserDTO;
|
||||||
import ru.soune.nocopy.dto.user.UserRequest;
|
import ru.soune.nocopy.dto.user.UserRequest;
|
||||||
|
import ru.soune.nocopy.entity.tarif.Tariff;
|
||||||
|
import ru.soune.nocopy.entity.tarif.TariffInfo;
|
||||||
import ru.soune.nocopy.entity.user.User;
|
import ru.soune.nocopy.entity.user.User;
|
||||||
import ru.soune.nocopy.exception.InvalidUserEmail;
|
import ru.soune.nocopy.exception.InvalidUserEmail;
|
||||||
import ru.soune.nocopy.exception.NotValidationPasswordException;
|
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 ru.soune.nocopy.service.file.FileStatsService;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
@@ -24,6 +28,8 @@ public class UserService {
|
|||||||
|
|
||||||
private final PasswordEncoder passwordEncoder;
|
private final PasswordEncoder passwordEncoder;
|
||||||
|
|
||||||
|
private final FileStatsService fileStatsService;
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
public User changePassword(User user, ChangePasswordRequest request) {
|
public User changePassword(User user, ChangePasswordRequest request) {
|
||||||
if (!passwordEncoder.matches(request.getCurrentPassword(), user.getPassword())) {
|
if (!passwordEncoder.matches(request.getCurrentPassword(), user.getPassword())) {
|
||||||
@@ -47,6 +53,13 @@ public class UserService {
|
|||||||
return mapToDTO(updatedUser);
|
return mapToDTO(updatedUser);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public UserDTO getUserInfo(Long userId) {
|
||||||
|
User user = userRepository.findById(userId)
|
||||||
|
.orElseThrow(() -> new UserNotFoundException("User not found with id: " + userId));
|
||||||
|
|
||||||
|
return mapToDTO(user);
|
||||||
|
}
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
public List<String> getUsersCompanyEmails(String company) {
|
public List<String> getUsersCompanyEmails(String company) {
|
||||||
return userRepository.emailsByCompany(company);
|
return userRepository.emailsByCompany(company);
|
||||||
@@ -86,15 +99,42 @@ public class UserService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private UserDTO mapToDTO(User user) {
|
private UserDTO mapToDTO(User user) {
|
||||||
|
TariffInfo personalTariffInfo = user.getPersonalTariffInfo();
|
||||||
|
Tariff tariff = personalTariffInfo.getTariff();
|
||||||
|
Long fileOnDisk = user.canManageCompanySettings() ?
|
||||||
|
fileStatsService.calculateCompanyFileSize(user.getId()):
|
||||||
|
fileStatsService.calculateUserFileSize(user.getId());
|
||||||
|
|
||||||
|
Integer filesCount = user.canManageCompanySettings() ?
|
||||||
|
fileStatsService.filesCompanyCount(user.getId()):
|
||||||
|
fileStatsService.filesUserCount(user.getId());
|
||||||
|
|
||||||
|
TariffInfoDTO infoDTO = TariffInfoDTO.builder().tokens(personalTariffInfo.getTokens())
|
||||||
|
.id(personalTariffInfo.getId())
|
||||||
|
.tariffName(tariff.getName())
|
||||||
|
.status(personalTariffInfo.getStatus().name())
|
||||||
|
.tariffId(tariff.getId())
|
||||||
|
.currentFileCounts(filesCount)
|
||||||
|
.maxFileCounts(tariff.getMaxFilesCount())
|
||||||
|
.currentFileOnDisk(fileOnDisk)
|
||||||
|
.maxFileOnDisk(tariff.getDiskSize())
|
||||||
|
.startTariff(personalTariffInfo.getStartTariff())
|
||||||
|
.endTariff(personalTariffInfo.getEndTariff())
|
||||||
|
.tokens(personalTariffInfo.getTokens() + personalTariffInfo.getBoughtTokens())
|
||||||
|
.build();
|
||||||
|
|
||||||
return UserDTO.builder()
|
return UserDTO.builder()
|
||||||
.fullName(user.getFullName())
|
.fullName(user.getFullName())
|
||||||
.email(user.getEmail())
|
|
||||||
.company(user.getCompanyName())
|
.company(user.getCompanyName())
|
||||||
|
.email(user.getEmail())
|
||||||
|
.active(user.isActive())
|
||||||
.phone(user.getPhone())
|
.phone(user.getPhone())
|
||||||
.genderType(user.getGenderType())
|
.genderType(user.getGenderType())
|
||||||
.birthday(user.getBirthday())
|
.birthday(user.getBirthday())
|
||||||
.subscriptionType(user.getSubscriptionType())
|
|
||||||
.createdAt(user.getCreatedAt())
|
.createdAt(user.getCreatedAt())
|
||||||
|
.subscriptionType(user.getSubscriptionType())
|
||||||
|
.tariffInfo(infoDTO)
|
||||||
|
.verifiedStatus(user.getVerificationStatus())
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user