package pl.com.bottega.documentmanagement.api; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import pl.com.bottega.documentmanagement.domain.Document; import pl.com.bottega.documentmanagement.domain.DocumentNumber; import pl.com.bottega.documentmanagement.domain.EmployeeId; import pl.com.bottega.documentmanagement.domain.repositories.DocumentRepository; import pl.com.bottega.documentmanagement.domain.repositories.EmployeeRepository; import static com.google.common.base.Preconditions.checkNotNull; /** * Created by maciuch on 12.06.16. */ @Service public class ReadingConfirmator { private DocumentRepository documentRepository; private EmployeeRepository employeeRepository; private UserManager userManager; public ReadingConfirmator(DocumentRepository documentRepository, EmployeeRepository employeeRepository, UserManager userManager) { this.documentRepository = documentRepository; this.employeeRepository = employeeRepository; this.userManager = userManager; } @Transactional @RequiresAuth(roles = {"STAFF"}) public void confirm(DocumentNumber documentNumber) { checkNotNull(documentNumber); Document document = documentRepository.load(documentNumber); document.confirm(userManager.currentEmployee()); documentRepository.save(document); } @Transactional @RequiresAuth(roles = {"MANAGER"}) public void confirm(DocumentNumber documentNumber, EmployeeId forEmployeeId) { checkNotNull(documentNumber); checkNotNull(forEmployeeId); Document document = documentRepository.load(documentNumber); document.confirm(userManager.currentEmployee(), employeeRepository.findByEmployeeId(forEmployeeId)); documentRepository.save(document); } }