86 lines
2.7 KiB
Java
86 lines
2.7 KiB
Java
package ru.ip.example.service.impl;
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import ru.ip.example.domain.AddSeriesDto;
|
|
import ru.ip.example.domain.SeazonDto;
|
|
import ru.ip.example.domain.entity.SeazonEntity;
|
|
import ru.ip.example.domain.entity.SeriesEntity;
|
|
import ru.ip.example.mapper.SeazonMapper;
|
|
import ru.ip.example.repository.SeazonRepository;
|
|
import ru.ip.example.repository.SeriesRepository;
|
|
import ru.ip.example.service.SeazonService;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
import java.util.Optional;
|
|
|
|
@Service
|
|
@RequiredArgsConstructor
|
|
public class SeazonServiceImpl implements SeazonService {
|
|
|
|
private final SeazonRepository seazonRepository;
|
|
|
|
private final SeazonMapper seazonMapper;
|
|
|
|
private final SeriesRepository seriesRepository;
|
|
|
|
@Transactional(readOnly = true)
|
|
@Override
|
|
public List<SeazonDto> findAll() {
|
|
Iterable<SeazonEntity> seazons = seazonRepository.findAll();
|
|
List<SeazonDto> seazonDtos = new ArrayList<>();
|
|
for(SeazonEntity seazon : seazons) {
|
|
seazonDtos.add(seazonMapper.toDto(seazon));
|
|
}
|
|
return seazonDtos;
|
|
}
|
|
|
|
@Transactional(readOnly = true)
|
|
@Override
|
|
public SeazonDto findById(Integer id) {
|
|
SeazonEntity seazon = seazonRepository.findById(id).orElseThrow();
|
|
return seazonMapper.toDto(seazon);
|
|
}
|
|
|
|
@Transactional
|
|
@Override
|
|
public SeazonDto save(SeazonDto dto) {
|
|
SeazonEntity entity = seazonMapper.toEntity(dto);
|
|
SeazonEntity savedEntity = seazonRepository.save(entity);
|
|
return seazonMapper.toDto(savedEntity);
|
|
}
|
|
|
|
@Transactional
|
|
@Override
|
|
public SeazonDto update(Integer id, SeazonDto dto) {
|
|
SeazonEntity entity = seazonMapper.toEntity(dto);
|
|
entity.setId(id);
|
|
SeazonEntity savedEntity = seazonRepository.save(entity);
|
|
return seazonMapper.toDto(savedEntity);
|
|
}
|
|
|
|
@Transactional
|
|
@Override
|
|
public void delete(Integer id) {
|
|
Optional<SeazonEntity> seazon = seazonRepository.findById(id);
|
|
seazon.ifPresent(seazonRepository::delete);
|
|
}
|
|
|
|
@Transactional
|
|
@Override
|
|
public SeazonDto addSeries(AddSeriesDto dto) {
|
|
var series = seriesRepository.findById(dto.getSeriesId());
|
|
var seazon = seazonRepository.findById(dto.getSeazonId());
|
|
|
|
if (series.isPresent() && seazon.isPresent() && !seazon.get().getSeries().contains(series.get())) {
|
|
|
|
seazon.get().getSeries().add(series.get());
|
|
SeazonEntity seazonEntity = seazonRepository.save(seazon.get());
|
|
return seazonMapper.toDto(seazonEntity);
|
|
}
|
|
return seazonMapper.toDto(seazon.get());
|
|
}
|
|
}
|