111 lines
4.5 KiB
Java
111 lines
4.5 KiB
Java
package com.mattrixwv.raidbuilder.service;
|
|
|
|
|
|
import java.time.ZonedDateTime;
|
|
import java.util.List;
|
|
import java.util.UUID;
|
|
|
|
import org.springframework.data.domain.PageRequest;
|
|
import org.springframework.data.domain.Sort;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
import com.mattrixwv.raidbuilder.entity.RaidInstance;
|
|
import com.mattrixwv.raidbuilder.repository.raid_instance.RaidInstanceRepository;
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
|
@Slf4j
|
|
@Service
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@RequiredArgsConstructor
|
|
public class RaidInstanceService{
|
|
private final RaidInstanceRepository raidInstanceRepository;
|
|
private final RaidInstancePersonCharacterXrefService ripcXrefService;
|
|
|
|
|
|
//Write
|
|
public RaidInstance createRaidInstance(RaidInstance raidInstance){
|
|
return raidInstanceRepository.save(raidInstance);
|
|
}
|
|
|
|
public RaidInstance updateRaidInstance(RaidInstance raidInstance){
|
|
RaidInstance existingRaidInstance = raidInstanceRepository.findById(raidInstance.getRaidInstanceId()).orElseThrow();
|
|
raidInstance.setCreatedBy(existingRaidInstance.getCreatedBy());
|
|
raidInstance.setCreatedDate(existingRaidInstance.getCreatedDate());
|
|
|
|
return raidInstanceRepository.save(raidInstance);
|
|
}
|
|
|
|
public void deleteById(UUID raidInstanceId){
|
|
ripcXrefService.deleteByRaidInstanceId(raidInstanceId);
|
|
raidInstanceRepository.deleteById(raidInstanceId);
|
|
}
|
|
|
|
public void deleteByRaidGroupId(UUID raidGroupId){
|
|
List<RaidInstance> raidInstances = raidInstanceRepository.findAllByRaidGroupId(raidGroupId);
|
|
ripcXrefService.deleteByRaidInstanceIds(raidInstances.stream().map(RaidInstance::getRaidInstanceId).toList());
|
|
|
|
raidInstanceRepository.deleteAllByRaidGroupId(raidGroupId);
|
|
}
|
|
|
|
public void deleteByRaidGroupIds(Iterable<UUID> raidGroupIds){
|
|
List<RaidInstance> raidInstances = raidInstanceRepository.findAllByRaidGroupIdIn(raidGroupIds);
|
|
ripcXrefService.deleteByRaidInstanceIds(raidInstances.stream().map(RaidInstance::getRaidInstanceId).toList());
|
|
|
|
raidInstanceRepository.deleteAllByRaidGroupIdIn(raidGroupIds);
|
|
}
|
|
|
|
public void deleteByRaidLayoutId(UUID raidLayoutId){
|
|
raidInstanceRepository.clearRaidLayoutId(raidLayoutId);
|
|
}
|
|
|
|
public void deleteByRaidLayoutIds(Iterable<UUID> raidLayoutIds){
|
|
raidInstanceRepository.clearRaidLayoutIdIn(raidLayoutIds);
|
|
}
|
|
|
|
|
|
//Read
|
|
public RaidInstance findById(UUID raidInstanceId){
|
|
return raidInstanceRepository.findById(raidInstanceId).orElse(null);
|
|
}
|
|
|
|
public List<RaidInstance> findAllByRaidGroupId(UUID raidGroupId){
|
|
return raidInstanceRepository.findAllByRaidGroupId(raidGroupId);
|
|
}
|
|
|
|
public List<RaidInstance> findAllByRaidGroupId(UUID raidGroupId, int page, int pageSize){
|
|
return raidInstanceRepository.findAllByRaidGroupId(raidGroupId, PageRequest.of(page, pageSize, Sort.by("raidInstanceName").ascending()));
|
|
}
|
|
|
|
public List<RaidInstance> findAllByRaidGroupId(UUID raidGroupId, int page, int pageSize, String searchTerm){
|
|
return raidInstanceRepository.findAllByRaidGroupIdAndRaidInstanceNameContainingIgnoreCase(raidGroupId, searchTerm, PageRequest.of(page, pageSize, Sort.by("raidInstanceName").ascending()));
|
|
}
|
|
|
|
public List<RaidInstance> findAllByRaidGroupIdAndEndDate(UUID raidGroupId, ZonedDateTime endDate, int page, int pageSize){
|
|
return raidInstanceRepository.findAllByRaidGroupIdAndRaidEndDateAfter(raidGroupId, endDate, PageRequest.of(page, pageSize, Sort.by("raidEndDate").descending()));
|
|
}
|
|
|
|
public List<RaidInstance> findAllByRaidGroupIdAndEndDate(UUID raidGroupId, ZonedDateTime endDate, int page, int pageSize, String searchTerm){
|
|
return raidInstanceRepository.findAllByRaidGroupIdAndRaidEndDateAfterAndRaidInstanceNameContainingIgnoreCase(raidGroupId, endDate, searchTerm, PageRequest.of(page, pageSize, Sort.by("raidEndDate").descending()));
|
|
}
|
|
|
|
public long countByRaidGroupId(UUID raidGroupId){
|
|
return raidInstanceRepository.countByRaidGroupId(raidGroupId);
|
|
}
|
|
|
|
public long countByRaidGroupId(UUID raidGroupId, String searchTerm){
|
|
return raidInstanceRepository.countByRaidGroupIdAndRaidInstanceNameContainingIgnoreCase(raidGroupId, searchTerm);
|
|
}
|
|
|
|
public long countByRaidGroupIdAndEndDate(UUID raidGroupId, ZonedDateTime endDate){
|
|
return raidInstanceRepository.countByRaidGroupIdAndRaidEndDateAfter(raidGroupId, endDate);
|
|
}
|
|
|
|
public long countByRaidGroupIdAndEndDate(UUID raidGroupId, ZonedDateTime endDate, String searchTerm){
|
|
return raidInstanceRepository.countByRaidGroupIdAndRaidEndDateAfterAndRaidInstanceNameContainingIgnoreCase(raidGroupId, endDate, searchTerm);
|
|
}
|
|
}
|