@@ -9,8 +9,10 @@ import ru.soune.nocopy.dto.MessageCode;
|
|||||||
import ru.soune.nocopy.dto.register.ChangePasswordRequest;
|
import ru.soune.nocopy.dto.register.ChangePasswordRequest;
|
||||||
import ru.soune.nocopy.dto.register.RegAnswer;
|
import ru.soune.nocopy.dto.register.RegAnswer;
|
||||||
import ru.soune.nocopy.dto.register.RegRequest;
|
import ru.soune.nocopy.dto.register.RegRequest;
|
||||||
|
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.tarif.TariffInfo;
|
||||||
import ru.soune.nocopy.entity.user.AuthToken;
|
import ru.soune.nocopy.entity.user.AuthToken;
|
||||||
import ru.soune.nocopy.entity.user.User;
|
import ru.soune.nocopy.entity.user.User;
|
||||||
@@ -20,8 +22,8 @@ import ru.soune.nocopy.exception.NotValidFieldException;
|
|||||||
import ru.soune.nocopy.mapper.UserMapper;
|
import ru.soune.nocopy.mapper.UserMapper;
|
||||||
import ru.soune.nocopy.repository.AuthTokenRepository;
|
import ru.soune.nocopy.repository.AuthTokenRepository;
|
||||||
import ru.soune.nocopy.repository.UserRepository;
|
import ru.soune.nocopy.repository.UserRepository;
|
||||||
|
import ru.soune.nocopy.service.file.FileStatsService;
|
||||||
import ru.soune.nocopy.service.register.AuthService;
|
import ru.soune.nocopy.service.register.AuthService;
|
||||||
import ru.soune.nocopy.service.tariff.TariffInfoService;
|
|
||||||
import ru.soune.nocopy.service.tariff.TariffService;
|
import ru.soune.nocopy.service.tariff.TariffService;
|
||||||
import ru.soune.nocopy.service.user.UserService;
|
import ru.soune.nocopy.service.user.UserService;
|
||||||
|
|
||||||
@@ -49,12 +51,15 @@ public class UserController {
|
|||||||
|
|
||||||
private final TariffService tariffService;
|
private final TariffService tariffService;
|
||||||
|
|
||||||
|
private final FileStatsService fileStatsService;
|
||||||
|
|
||||||
@GetMapping("/all")
|
@GetMapping("/all")
|
||||||
public ResponseEntity<List<UserDTO>> getAllUsers() {
|
public ResponseEntity<List<UserDTO>> getAllUsers() {
|
||||||
List<UserDTO> allUsers = userRepository.findAll().stream()
|
List<UserDTO> allUsers = userRepository.findAll().stream()
|
||||||
.map(u -> new UserDTO(u.getFullName(), u.getCompanyName(), u.getEmail(), u.isActive(),
|
.map(u -> new UserDTO(u.getFullName(), u.getCompanyName(), u.getEmail(), u.isActive(),
|
||||||
u.getPhone(), u.getGenderType(),
|
u.getPhone(), u.getGenderType(),
|
||||||
u.getBirthday(), u.getCreatedAt(), u.getSubscriptionType(), tariffService.getAllTariffs(), u.getPersonalTariffInfo()))
|
u.getBirthday(), u.getCreatedAt(), u.getSubscriptionType(), tariffService.getAllTariffs(),
|
||||||
|
null))
|
||||||
.toList();
|
.toList();
|
||||||
|
|
||||||
return ResponseEntity.ok(allUsers);
|
return ResponseEntity.ok(allUsers);
|
||||||
@@ -82,9 +87,32 @@ public class UserController {
|
|||||||
if (user.canManageCompanySettings() || user.canLogin() && user.getCompany() == null) {
|
if (user.canManageCompanySettings() || user.canLogin() && user.getCompany() == null) {
|
||||||
userDTO.setTariffs(tariffService.getAllTariffs());
|
userDTO.setTariffs(tariffService.getAllTariffs());
|
||||||
|
|
||||||
|
Long fileOnDisk = user.canManageCompanySettings() ?
|
||||||
|
fileStatsService.calculateCompanyFileSize(user.getId()):
|
||||||
|
fileStatsService.calculateUserFileSize(user.getId());
|
||||||
|
|
||||||
|
Integer filesCount = user.canManageCompanySettings() ?
|
||||||
|
fileStatsService.filesCompanyCount(user.getId()):
|
||||||
|
fileStatsService.filesUserCount(user.getId());
|
||||||
|
|
||||||
TariffInfo personalTariffInfo = user.getPersonalTariffInfo();
|
TariffInfo personalTariffInfo = user.getPersonalTariffInfo();
|
||||||
|
Tariff tariff = personalTariffInfo.getTariff();
|
||||||
|
|
||||||
|
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())
|
||||||
|
.build();
|
||||||
|
|
||||||
|
userDTO.setTariffInfo(infoDTO);
|
||||||
|
|
||||||
userDTO.setTariffInfo(personalTariffInfo);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
userDTO.setPhone(user.getPhone());
|
userDTO.setPhone(user.getPhone());
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package ru.soune.nocopy.dto.tarriff;
|
package ru.soune.nocopy.dto.tarriff;
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
@@ -9,6 +10,7 @@ import java.time.LocalDateTime;
|
|||||||
@Data
|
@Data
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
|
@Builder
|
||||||
public class TariffInfoDTO {
|
public class TariffInfoDTO {
|
||||||
private String id;
|
private String id;
|
||||||
private String status;
|
private String status;
|
||||||
@@ -16,4 +18,9 @@ public class TariffInfoDTO {
|
|||||||
private LocalDateTime endTariff;
|
private LocalDateTime endTariff;
|
||||||
private Long tariffId;
|
private Long tariffId;
|
||||||
private String tariffName;
|
private String tariffName;
|
||||||
|
private Integer tokens;
|
||||||
|
private Long maxFileOnDisk;
|
||||||
|
private Long currentFileOnDisk;
|
||||||
|
private Integer currentFileCounts;
|
||||||
|
private Integer maxFileCounts;
|
||||||
}
|
}
|
||||||
@@ -5,7 +5,7 @@ import lombok.Builder;
|
|||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import ru.soune.nocopy.dto.tarriff.TariffDTO;
|
import ru.soune.nocopy.dto.tarriff.TariffDTO;
|
||||||
import ru.soune.nocopy.entity.tarif.TariffInfo;
|
import ru.soune.nocopy.dto.tarriff.TariffInfoDTO;
|
||||||
import ru.soune.nocopy.entity.user.GenderType;
|
import ru.soune.nocopy.entity.user.GenderType;
|
||||||
import ru.soune.nocopy.entity.user.SubscriptionType;
|
import ru.soune.nocopy.entity.user.SubscriptionType;
|
||||||
|
|
||||||
@@ -28,5 +28,5 @@ public class UserDTO {
|
|||||||
private LocalDateTime createdAt;
|
private LocalDateTime createdAt;
|
||||||
private SubscriptionType subscriptionType;
|
private SubscriptionType subscriptionType;
|
||||||
private List<TariffDTO> tariffs;
|
private List<TariffDTO> tariffs;
|
||||||
private TariffInfo tariffInfo;
|
private TariffInfoDTO tariffInfo;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,6 +28,9 @@ public class TariffInfo {
|
|||||||
@Column(name = "end_tariff")
|
@Column(name = "end_tariff")
|
||||||
private LocalDateTime endTariff;
|
private LocalDateTime endTariff;
|
||||||
|
|
||||||
|
@Column(name = "tokens")
|
||||||
|
private Integer tokens;
|
||||||
|
|
||||||
@ManyToOne
|
@ManyToOne
|
||||||
@JoinColumn(name = "tariff_id")
|
@JoinColumn(name = "tariff_id")
|
||||||
private Tariff tariff;
|
private Tariff tariff;
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ public class ImageFoundRequestHandler implements RequestHandler {
|
|||||||
//TODO uncommited when add billing
|
//TODO uncommited when add billing
|
||||||
// GoogleVisionSearchResponse googleVisionSearchResponse = googleVisionSearchService.searchByFileEntity(fileId);
|
// GoogleVisionSearchResponse googleVisionSearchResponse = googleVisionSearchService.searchByFileEntity(fileId);
|
||||||
|
|
||||||
checkCounterService.incrementCheckCount(fileEntity.getUserId());
|
// checkCounterService.incrementCheckCount(fileEntity.getUserId());
|
||||||
|
|
||||||
return new BaseResponse(request.getMsgId(), MessageCode.SUCCESS.getCode(),
|
return new BaseResponse(request.getMsgId(), MessageCode.SUCCESS.getCode(),
|
||||||
MessageCode.SUCCESS.getDescription(), response);
|
MessageCode.SUCCESS.getDescription(), response);
|
||||||
|
|||||||
@@ -10,13 +10,16 @@ import ru.soune.nocopy.dto.MessageCode;
|
|||||||
import ru.soune.nocopy.dto.tarriff.TariffInfoDTO;
|
import ru.soune.nocopy.dto.tarriff.TariffInfoDTO;
|
||||||
import ru.soune.nocopy.dto.tarriff.TariffInfoRequest;
|
import ru.soune.nocopy.dto.tarriff.TariffInfoRequest;
|
||||||
import ru.soune.nocopy.dto.tarriff.TariffInfoResponse;
|
import ru.soune.nocopy.dto.tarriff.TariffInfoResponse;
|
||||||
|
import ru.soune.nocopy.entity.tarif.Tariff;
|
||||||
import ru.soune.nocopy.entity.tarif.TariffStatus;
|
import ru.soune.nocopy.entity.tarif.TariffStatus;
|
||||||
import ru.soune.nocopy.entity.tarif.TariffType;
|
import ru.soune.nocopy.entity.tarif.TariffType;
|
||||||
|
import ru.soune.nocopy.repository.TariffRepository;
|
||||||
import ru.soune.nocopy.service.tariff.TariffInfoService;
|
import ru.soune.nocopy.service.tariff.TariffInfoService;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Optional;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
@@ -28,6 +31,8 @@ public class TariffInfoHandler implements RequestHandler {
|
|||||||
|
|
||||||
private final TariffInfoService tariffInfoService;
|
private final TariffInfoService tariffInfoService;
|
||||||
|
|
||||||
|
private final TariffRepository tariffRepository;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BaseResponse handle(BaseRequest request) throws Exception {
|
public BaseResponse handle(BaseRequest request) throws Exception {
|
||||||
try {
|
try {
|
||||||
@@ -68,14 +73,15 @@ public class TariffInfoHandler implements RequestHandler {
|
|||||||
|
|
||||||
private BaseResponse handleCreateTariffInfo(BaseRequest request, TariffInfoRequest tariffInfoRequest) {
|
private BaseResponse handleCreateTariffInfo(BaseRequest request, TariffInfoRequest tariffInfoRequest) {
|
||||||
try {
|
try {
|
||||||
TariffInfoDTO tariffInfoDTO = new TariffInfoDTO(
|
Long tariffId = tariffInfoRequest.getTariffId();
|
||||||
null,
|
Tariff tariff= tariffRepository.findById(tariffId).orElseThrow();
|
||||||
|
|
||||||
|
TariffInfoDTO tariffInfoDTO = new TariffInfoDTO(null,
|
||||||
tariffInfoRequest.getStatus() != null ? tariffInfoRequest.getStatus() : TariffStatus.ACTIVE.name(),
|
tariffInfoRequest.getStatus() != null ? tariffInfoRequest.getStatus() : TariffStatus.ACTIVE.name(),
|
||||||
tariffInfoRequest.getStartTariff() != null ? tariffInfoRequest.getStartTariff() : LocalDateTime.now(),
|
tariffInfoRequest.getStartTariff() != null ? tariffInfoRequest.getStartTariff() : LocalDateTime.now(),
|
||||||
tariffInfoRequest.getEndTariff() != null ? tariffInfoRequest.getEndTariff() : LocalDateTime.now().plusDays(30),
|
tariffInfoRequest.getEndTariff() != null ? tariffInfoRequest.getEndTariff() : LocalDateTime.now().plusDays(30),
|
||||||
tariffInfoRequest.getTariffId(),
|
tariffInfoRequest.getTariffId(), tariff.getName(), tariff.getTokens(), tariff.getDiskSize(), 0L,
|
||||||
null
|
0, tariff.getMaxFilesCount());
|
||||||
);
|
|
||||||
|
|
||||||
TariffInfoDTO createdTariffInfo = tariffInfoService.createTariffInfo(tariffInfoDTO);
|
TariffInfoDTO createdTariffInfo = tariffInfoService.createTariffInfo(tariffInfoDTO);
|
||||||
|
|
||||||
@@ -154,6 +160,8 @@ public class TariffInfoHandler implements RequestHandler {
|
|||||||
null
|
null
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
Long tariffId = tariffInfoRequest.getTariffId();
|
||||||
|
Tariff tariff = tariffRepository.findById(tariffId).orElseThrow();
|
||||||
|
|
||||||
TariffInfoDTO tariffInfoDTO = new TariffInfoDTO(
|
TariffInfoDTO tariffInfoDTO = new TariffInfoDTO(
|
||||||
tariffInfoRequest.getId(),
|
tariffInfoRequest.getId(),
|
||||||
@@ -161,7 +169,7 @@ public class TariffInfoHandler implements RequestHandler {
|
|||||||
tariffInfoRequest.getStartTariff(),
|
tariffInfoRequest.getStartTariff(),
|
||||||
tariffInfoRequest.getEndTariff(),
|
tariffInfoRequest.getEndTariff(),
|
||||||
tariffInfoRequest.getTariffId(),
|
tariffInfoRequest.getTariffId(),
|
||||||
null
|
tariff.getName(), null, tariff.getDiskSize(), null, null, tariff.getMaxFilesCount()
|
||||||
);
|
);
|
||||||
|
|
||||||
TariffInfoDTO updatedTariffInfo = tariffInfoService.updateTariffInfo(
|
TariffInfoDTO updatedTariffInfo = tariffInfoService.updateTariffInfo(
|
||||||
|
|||||||
@@ -7,15 +7,24 @@ import ru.soune.nocopy.entity.file.FileEntity;
|
|||||||
import ru.soune.nocopy.entity.file.FileStatus;
|
import ru.soune.nocopy.entity.file.FileStatus;
|
||||||
import ru.soune.nocopy.entity.file.FileType;
|
import ru.soune.nocopy.entity.file.FileType;
|
||||||
import ru.soune.nocopy.entity.file.ProtectionStatus;
|
import ru.soune.nocopy.entity.file.ProtectionStatus;
|
||||||
|
import ru.soune.nocopy.entity.user.User;
|
||||||
import ru.soune.nocopy.repository.FileEntityRepository;
|
import ru.soune.nocopy.repository.FileEntityRepository;
|
||||||
|
import ru.soune.nocopy.repository.UserRepository;
|
||||||
|
import ru.soune.nocopy.service.CompanyService;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class FileStatsService {
|
public class FileStatsService {
|
||||||
|
|
||||||
private final FileEntityRepository fileEntityRepository;
|
private final FileEntityRepository fileEntityRepository;
|
||||||
|
|
||||||
|
private final CompanyService companyService;
|
||||||
|
|
||||||
|
private final UserRepository userRepository;
|
||||||
|
|
||||||
public FileInfoUserResponse getUserFileStats(Long userId) {
|
public FileInfoUserResponse getUserFileStats(Long userId) {
|
||||||
List<FileEntity> userFiles = fileEntityRepository.findByUserId(userId);
|
List<FileEntity> userFiles = fileEntityRepository.findByUserId(userId);
|
||||||
return calculateStats(userFiles);
|
return calculateStats(userFiles);
|
||||||
@@ -49,6 +58,47 @@ public class FileStatsService {
|
|||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Long calculateUserFileSize(Long userId) {
|
||||||
|
List<FileEntity> userFiles = fileEntityRepository.findByUserId(userId);
|
||||||
|
|
||||||
|
return calculateTotalSize(userFiles);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long calculateCompanyFileSize(Long userId) {
|
||||||
|
User user = userRepository.findById(userId).orElseThrow();
|
||||||
|
|
||||||
|
List<User> companyUsers = companyService.getCompanyUsers(user.getCompany().getId());
|
||||||
|
|
||||||
|
List<FileEntity> userFiles = new ArrayList<>();
|
||||||
|
|
||||||
|
for (User companyUser : companyUsers) {
|
||||||
|
userFiles.addAll(fileEntityRepository.findByUserId(companyUser.getId()));
|
||||||
|
}
|
||||||
|
|
||||||
|
return calculateTotalSize(userFiles);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer filesUserCount(Long userId) {
|
||||||
|
List<FileEntity> userFiles = fileEntityRepository.findByUserId(userId);
|
||||||
|
|
||||||
|
return calculateTotalCount(userFiles);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public Integer filesCompanyCount(Long userId) {
|
||||||
|
User user = userRepository.findById(userId).orElseThrow();
|
||||||
|
|
||||||
|
List<User> companyUsers = companyService.getCompanyUsers(user.getCompany().getId());
|
||||||
|
|
||||||
|
List<FileEntity> userFiles = new ArrayList<>();
|
||||||
|
|
||||||
|
for (User companyUser : companyUsers) {
|
||||||
|
userFiles.addAll(fileEntityRepository.findByUserId(companyUser.getId()));
|
||||||
|
}
|
||||||
|
|
||||||
|
return calculateTotalCount(userFiles);
|
||||||
|
}
|
||||||
|
|
||||||
private Long protectedUserFiles(List<FileEntity> files) {
|
private Long protectedUserFiles(List<FileEntity> files) {
|
||||||
return files.stream().filter(file -> file.getProtectionStatus() == ProtectionStatus.PROTECTED).count();
|
return files.stream().filter(file -> file.getProtectionStatus() == ProtectionStatus.PROTECTED).count();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ import ru.soune.nocopy.service.FileSimilarityService;
|
|||||||
import ru.soune.nocopy.service.ImageHashService;
|
import ru.soune.nocopy.service.ImageHashService;
|
||||||
import ru.soune.nocopy.service.file.FileEntityService;
|
import ru.soune.nocopy.service.file.FileEntityService;
|
||||||
import ru.soune.nocopy.service.file.FileUploadService;
|
import ru.soune.nocopy.service.file.FileUploadService;
|
||||||
|
import ru.soune.nocopy.service.tariff.TariffInfoService;
|
||||||
import ru.soune.nocopy.util.FileUtil;
|
import ru.soune.nocopy.util.FileUtil;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
@@ -79,6 +80,8 @@ public class FileUploadServiceImpl implements FileUploadService {
|
|||||||
|
|
||||||
private final FileUtil fileUtil;
|
private final FileUtil fileUtil;
|
||||||
|
|
||||||
|
private final TariffInfoService tariffInfoService;
|
||||||
|
|
||||||
@PostConstruct
|
@PostConstruct
|
||||||
public void init() {
|
public void init() {
|
||||||
try {
|
try {
|
||||||
@@ -325,6 +328,9 @@ public class FileUploadServiceImpl implements FileUploadService {
|
|||||||
|
|
||||||
completeFileProcessingAsync(session, status);
|
completeFileProcessingAsync(session, status);
|
||||||
|
|
||||||
|
if (status != FileStatus.TEMP) {
|
||||||
|
tariffInfoService.writeOffTokens(session.getUserId());
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
sessionRepository.save(session);
|
sessionRepository.save(session);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -158,7 +158,6 @@ public class AuthService {
|
|||||||
tariffInfoService.addTariffInfo(companyTariff);
|
tariffInfoService.addTariffInfo(companyTariff);
|
||||||
|
|
||||||
user.setCompany(company);
|
user.setCompany(company);
|
||||||
user.setPersonalTariffInfo(companyTariff);
|
|
||||||
user.grantPermission(Permission.COMPANY_ADMIN_PERMISSIONS);
|
user.grantPermission(Permission.COMPANY_ADMIN_PERMISSIONS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -12,4 +12,6 @@ public class TariffConstants {
|
|||||||
public static final Integer START_TOKENS = 200;
|
public static final Integer START_TOKENS = 200;
|
||||||
public static final Integer PRO_TOKENS = 300;
|
public static final Integer PRO_TOKENS = 300;
|
||||||
public static final Integer ENTERPRISE_TOKENS = 400;
|
public static final Integer ENTERPRISE_TOKENS = 400;
|
||||||
|
|
||||||
|
public static final Integer TOKEN_VALUE = 3;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,9 +8,11 @@ import ru.soune.nocopy.entity.tarif.Tariff;
|
|||||||
import ru.soune.nocopy.entity.tarif.TariffInfo;
|
import ru.soune.nocopy.entity.tarif.TariffInfo;
|
||||||
import ru.soune.nocopy.entity.tarif.TariffStatus;
|
import ru.soune.nocopy.entity.tarif.TariffStatus;
|
||||||
import ru.soune.nocopy.entity.tarif.TariffType;
|
import ru.soune.nocopy.entity.tarif.TariffType;
|
||||||
|
import ru.soune.nocopy.entity.user.User;
|
||||||
import ru.soune.nocopy.exception.TariffNotFoundException;
|
import ru.soune.nocopy.exception.TariffNotFoundException;
|
||||||
import ru.soune.nocopy.repository.TariffInfoRepository;
|
import ru.soune.nocopy.repository.TariffInfoRepository;
|
||||||
import ru.soune.nocopy.repository.TariffRepository;
|
import ru.soune.nocopy.repository.TariffRepository;
|
||||||
|
import ru.soune.nocopy.repository.UserRepository;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -24,20 +26,47 @@ public class TariffInfoService {
|
|||||||
|
|
||||||
private TariffRepository tariffRepository;
|
private TariffRepository tariffRepository;
|
||||||
|
|
||||||
public TariffInfo createTariffInfo(LocalDateTime startTariff, LocalDateTime endTariff, TariffStatus tariffStatus) {
|
private UserRepository userRepository;
|
||||||
|
|
||||||
|
public TariffInfo createTariffInfo(LocalDateTime startTariff, LocalDateTime endTariff, TariffStatus tariffStatus,
|
||||||
|
Integer tokens) {
|
||||||
TariffInfo tariffInfo = new TariffInfo();
|
TariffInfo tariffInfo = new TariffInfo();
|
||||||
tariffInfo.setStartTariff(startTariff);
|
tariffInfo.setStartTariff(startTariff);
|
||||||
tariffInfo.setStatus(tariffStatus);
|
tariffInfo.setStatus(tariffStatus);
|
||||||
tariffInfo.setEndTariff(endTariff);
|
tariffInfo.setEndTariff(endTariff);
|
||||||
|
tariffInfo.setTokens(tokens);
|
||||||
|
|
||||||
return tariffInfoRepository.save(tariffInfo);
|
return tariffInfoRepository.save(tariffInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
public void writeOffTokens(long userId) {
|
||||||
|
User user = userRepository.findById(userId).orElseThrow();
|
||||||
|
|
||||||
|
TariffInfo activeTariffInfo;
|
||||||
|
|
||||||
|
if (user.getCompany() == null) {
|
||||||
|
activeTariffInfo = user.getPersonalTariffInfo();
|
||||||
|
} else {
|
||||||
|
activeTariffInfo = user.getCompany().getTariffInfo();
|
||||||
|
}
|
||||||
|
|
||||||
|
Integer tokens = activeTariffInfo.getTokens();
|
||||||
|
|
||||||
|
if (tokens > 0 && (tokens - TariffConstants.TOKEN_VALUE) > 0) {
|
||||||
|
activeTariffInfo.setTokens(activeTariffInfo.getTokens() - TariffConstants.TOKEN_VALUE);
|
||||||
|
|
||||||
|
tariffInfoRepository.save(activeTariffInfo);
|
||||||
|
} else {
|
||||||
|
throw new TariffNotFoundException("User not have tokens for protect");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public TariffInfo createTariffInfo(TariffType tariffType) {
|
public TariffInfo createTariffInfo(TariffType tariffType) {
|
||||||
Tariff tariff = tariffRepository.findByType(tariffType.toString()).orElseThrow();
|
Tariff tariff = tariffRepository.findByType(tariffType.toString()).orElseThrow();
|
||||||
|
|
||||||
TariffInfo tariffInfo = createTariffInfo(LocalDateTime.now(), LocalDateTime.now().plusDays(30),
|
TariffInfo tariffInfo = createTariffInfo(LocalDateTime.now(), LocalDateTime.now().plusDays(30),
|
||||||
TariffStatus.ACTIVE);
|
TariffStatus.ACTIVE, tariff.getTokens());
|
||||||
tariffInfo.setTariff(tariff);
|
tariffInfo.setTariff(tariff);
|
||||||
|
|
||||||
return tariffInfoRepository.save(tariffInfo);
|
return tariffInfoRepository.save(tariffInfo);
|
||||||
@@ -71,7 +100,9 @@ public class TariffInfoService {
|
|||||||
public TariffInfoDTO updateTariffInfo(String id, TariffInfoDTO tariffInfoDTO) {
|
public TariffInfoDTO updateTariffInfo(String id, TariffInfoDTO tariffInfoDTO) {
|
||||||
TariffInfo tariffInfo = tariffInfoRepository.findById(id)
|
TariffInfo tariffInfo = tariffInfoRepository.findById(id)
|
||||||
.orElseThrow(() -> new TariffNotFoundException("Tariff not found"));
|
.orElseThrow(() -> new TariffNotFoundException("Tariff not found"));
|
||||||
|
|
||||||
updateTariffInfoFromDTO(tariffInfo, tariffInfoDTO);
|
updateTariffInfoFromDTO(tariffInfo, tariffInfoDTO);
|
||||||
|
|
||||||
return convertToInfoDTO(tariffInfoRepository.save(tariffInfo));
|
return convertToInfoDTO(tariffInfoRepository.save(tariffInfo));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -87,8 +118,9 @@ public class TariffInfoService {
|
|||||||
tariffInfo.getStartTariff(),
|
tariffInfo.getStartTariff(),
|
||||||
tariffInfo.getEndTariff(),
|
tariffInfo.getEndTariff(),
|
||||||
tariffInfo.getTariff() != null ? tariffInfo.getTariff().getId() : null,
|
tariffInfo.getTariff() != null ? tariffInfo.getTariff().getId() : null,
|
||||||
tariffInfo.getTariff() != null ? tariffInfo.getTariff().getName() : null
|
tariffInfo.getTariff() != null ? tariffInfo.getTariff().getName() : null, tariffInfo.getTokens(),
|
||||||
);
|
tariffInfo.getTariff().getDiskSize(), 0L, 0,
|
||||||
|
tariffInfo.getTariff().getMaxFilesCount());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateTariffInfoFromDTO(TariffInfo tariffInfo, TariffInfoDTO dto) {
|
private void updateTariffInfoFromDTO(TariffInfo tariffInfo, TariffInfoDTO dto) {
|
||||||
|
|||||||
Reference in New Issue
Block a user