Person tab working

This commit is contained in:
2025-03-08 13:26:59 -05:00
parent 3e0996c432
commit 868daeb517
17 changed files with 579 additions and 3 deletions

View File

@@ -0,0 +1,87 @@
package com.mattrixwv.raidbuilder.service;
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.Person;
import com.mattrixwv.raidbuilder.repository.person.PersonRepository;
import lombok.RequiredArgsConstructor;
@Service
@Transactional(rollbackFor = Exception.class)
@RequiredArgsConstructor
public class PersonService{
private final PersonRepository personRepository;
//Related services
private final PersonCharacterService personCharacterService;
//Write
public Person createPerson(Person person){
return personRepository.save(person);
}
public Person updatePerson(Person person){
return personRepository.save(person);
}
public void deletePerson(UUID personId){
personCharacterService.deletePersonCharactersByPersonId(personId);
personRepository.deleteById(personId);
}
public void deleteByRaidGroupId(UUID raidGroupId){
List<UUID> personIds = personRepository.findAllByRaidGroupId(raidGroupId).stream().map(Person::getPersonId).toList();
personCharacterService.deletePersonCharactersByPersonIds(personIds);
personRepository.deleteAllByRaidGroupId(raidGroupId);
}
public void deleteByRaidGroupIds(Iterable<UUID> raidGroupIds){
List<UUID> personIds = personRepository.findAllByRaidGroupIdIn(raidGroupIds).stream().map(Person::getPersonId).toList();
personCharacterService.deletePersonCharactersByPersonIds(personIds);
personRepository.deleteAllByRaidGroupIdIn(raidGroupIds);
}
//Read
public Person getPerson(UUID personId, UUID raidGroupId){
Person person = personRepository.findById(personId).orElse(null);
if(person != null && person.getRaidGroupId().equals(raidGroupId)){
return person;
}
else{
return null;
}
}
public List<Person> getPeopleByRaidGroup(UUID raidGroupId, int page, int pageSize){
return personRepository.findAllByRaidGroupId(raidGroupId, PageRequest.of(page, pageSize, Sort.by("personName").ascending()));
}
public List<Person> getPeopleByRaidGroup(UUID raidGroupId, int page, int pageSize, String searchTerm){
return personRepository.findAllByRaidGroupIdAndPersonNameContainingIgnoreCase(
raidGroupId,
searchTerm,
PageRequest.of(page, pageSize, Sort.by("personName").ascending())
);
}
public long getPeopleCountByRaidGroup(UUID raidGroupId){
return personRepository.countByRaidGroupId(raidGroupId);
}
public long getPeopleCountByRaidGroup(UUID raidGroupId, String searchTerm){
return personRepository.countByRaidGroupIdAndPersonNameContainingIgnoreCase(raidGroupId, searchTerm);
}
}