dev add tariff and temp flag for files
Test Workflow / test (push) Successful in 2s

This commit is contained in:
vladp
2026-01-30 12:52:16 +07:00
parent fb5642db9e
commit 49dc19cd04
21 changed files with 612 additions and 24 deletions
@@ -0,0 +1,105 @@
package ru.soune.nocopy.service.tariff;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import ru.soune.nocopy.dto.tarriff.TariffInfoDTO;
import ru.soune.nocopy.entity.tarif.Tariff;
import ru.soune.nocopy.entity.tarif.TariffInfo;
import ru.soune.nocopy.entity.tarif.TariffStatus;
import ru.soune.nocopy.entity.tarif.TariffType;
import ru.soune.nocopy.exception.TariffNotFoundException;
import ru.soune.nocopy.repository.TariffInfoRepository;
import ru.soune.nocopy.repository.TariffRepository;
import java.time.LocalDateTime;
import java.util.List;
import java.util.stream.Collectors;
@Service
@AllArgsConstructor
public class TariffInfoService {
private TariffInfoRepository tariffInfoRepository;
private TariffRepository tariffRepository;
public TariffInfo createTariffInfo(LocalDateTime startTariff, LocalDateTime endTariff, TariffStatus tariffStatus) {
TariffInfo tariffInfo = new TariffInfo();
tariffInfo.setStartTariff(startTariff);
tariffInfo.setStatus(tariffStatus);
tariffInfo.setEndTariff(endTariff);
return tariffInfoRepository.save(tariffInfo);
}
public TariffInfo createTariffInfo(TariffType tariffType) {
Tariff tariff = tariffRepository.findByType(tariffType).orElseThrow();
TariffInfo tariffInfo = createTariffInfo(LocalDateTime.now(), LocalDateTime.now().plusDays(30),
TariffStatus.ACTIVE);
tariffInfo.setTariff(tariff);
return tariffInfoRepository.save(tariffInfo);
}
public void addTariffInfo(TariffInfo tariffInfo) {
tariffInfoRepository.save(tariffInfo);
}
public List<TariffInfoDTO> getAllTariffInfos() {
return tariffInfoRepository.findAll()
.stream()
.map(this::convertToInfoDTO)
.collect(Collectors.toList());
}
public TariffInfoDTO getTariffInfoById(String id) {
return tariffInfoRepository.findById(id)
.map(this::convertToInfoDTO)
.orElseThrow(() -> new TariffNotFoundException("Tariff info not found"));
}
@Transactional
public TariffInfoDTO createTariffInfo(TariffInfoDTO tariffInfoDTO) {
TariffInfo tariffInfo = new TariffInfo();
updateTariffInfoFromDTO(tariffInfo, tariffInfoDTO);
return convertToInfoDTO(tariffInfoRepository.save(tariffInfo));
}
@Transactional
public TariffInfoDTO updateTariffInfo(String id, TariffInfoDTO tariffInfoDTO) {
TariffInfo tariffInfo = tariffInfoRepository.findById(id)
.orElseThrow(() -> new TariffNotFoundException("Tariff not found"));
updateTariffInfoFromDTO(tariffInfo, tariffInfoDTO);
return convertToInfoDTO(tariffInfoRepository.save(tariffInfo));
}
@Transactional
public void deleteTariffInfo(String id) {
tariffInfoRepository.deleteById(id);
}
private TariffInfoDTO convertToInfoDTO(TariffInfo tariffInfo) {
return new TariffInfoDTO(
tariffInfo.getId(),
tariffInfo.getStatus().name(),
tariffInfo.getStartTariff(),
tariffInfo.getEndTariff(),
tariffInfo.getTariff() != null ? tariffInfo.getTariff().getId() : null,
tariffInfo.getTariff() != null ? tariffInfo.getTariff().getName() : null
);
}
private void updateTariffInfoFromDTO(TariffInfo tariffInfo, TariffInfoDTO dto) {
tariffInfo.setStatus(TariffStatus.valueOf(dto.getStatus()));
tariffInfo.setStartTariff(dto.getStartTariff());
tariffInfo.setEndTariff(dto.getEndTariff());
if (dto.getTariffId() != null) {
Tariff tariff = tariffRepository.findById(dto.getTariffId())
.orElseThrow(() -> new TariffNotFoundException("Tariff not found"));
tariffInfo.setTariff(tariff);
}
}
}