106 lines
3.9 KiB
Java
106 lines
3.9 KiB
Java
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);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|