All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.imunity.furms.ui.project.ProjectModelResolver Maven / Gradle / Ivy

There is a newer version: 4.3.1
Show newest version
/*
 * Copyright (c) 2020 Bixbit s.c. All rights reserved.
 * See LICENSE file for licensing information.
 */
package io.imunity.furms.ui.project;

import io.imunity.furms.api.projects.ProjectService;
import io.imunity.furms.api.users.UserService;
import io.imunity.furms.domain.projects.Project;
import io.imunity.furms.domain.projects.ProjectId;
import io.imunity.furms.domain.users.FURMSUser;
import org.springframework.stereotype.Component;

import java.time.ZoneId;
import java.util.List;

@Component
public class ProjectModelResolver {

	private final ProjectService projectService;
	private final UserService userService;

	ProjectModelResolver(ProjectService projectService, UserService userService) {
		this.projectService = projectService;
		this.userService = userService;
	}

	public ProjectViewModel resolve(ProjectId projectId, ZoneId zoneId) {
		Project project = projectService.findById(projectId)
				.orElseThrow(UnknownProjectException::new);
		return resolve(project, zoneId);
	}
	
	public ProjectViewModel resolve(Project project, ZoneId zoneId) {
		FURMSUser leader = userService.findById(project.getLeaderId())
				.orElse(null);
		return ProjectViewModelMapper.map(project, leader, zoneId);
	}

	public ProjectViewModel resolve(List users, Project project, ZoneId zoneId){
		FURMSUser leader = users.stream()
			.filter(user -> user.id.isPresent() && user.id.get().equals(project.getLeaderId()))
			.findAny()
			.orElse(null);
		return ProjectViewModelMapper.map(project, leader, zoneId);
	}

	public static class UnknownProjectException extends IllegalArgumentException {
		
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy