class ProjectDetailsServiceImpl extends AbstractProjectServiceImpl implements ProjectDetailsService {

    @Override
    @Transactional
    public ServiceResult<Void> updateProjectStartDate(Long projectId, LocalDate projectStartDate) {
        return validateProjectStartDate(projectStartDate).
                andOnSuccess(() -> validateIfStartDateCanBeChanged(projectId)).
                andOnSuccess(() -> getProject(projectId)).
                andOnSuccessReturnVoid(project -> project.setTargetStartDate(projectStartDate));
    }

}