package nl.veenm.paypoint.service; import jakarta.enterprise.context.ApplicationScoped; import jakarta.inject.Inject; import jakarta.transaction.Transactional; import nl.veenm.paypoint.domain.*; import nl.veenm.paypoint.domain.dto.CompanyDTO; import nl.veenm.paypoint.domain.mapper.CompanyMapper; import nl.veenm.paypoint.repository.CompanyRepository; import nl.veenm.paypoint.repository.InviteRepository; import nl.veenm.paypoint.repository.UserCompanyRepository; import nl.veenm.paypoint.repository.UserRepository; import java.util.List; @ApplicationScoped public class CompanyService { @Inject CompanyRepository companyRepository; @Inject UserCompanyRepository userCompanyRepository; @Inject UserRepository userRepository; @Inject InviteRepository inviteRepository; public List getCompanies(String username) { AppUser user = userRepository.findByUsername(username); return userCompanyRepository.getAllByUserId(user); } public CompanyDTO getCompanyById(Long id) { return CompanyMapper.toDto(companyRepository.findById(id)); } @Transactional public void linkCompany(Long userId, String token) { AppUser user = userRepository.findById(userId); InviteEntity invite = inviteRepository.findByToken(token); Company company = companyRepository.findById(invite.company_id); UserCompany userCompany = new UserCompany(); userCompany.setUser(user); userCompany.setCompany(company); userCompany.setAccessLevel(AccessLevel.USER); userCompanyRepository.persist(userCompany); invite.used = true; inviteRepository.persist(invite); } }