package kr.wisestone.owl.service.impl; import com.google.common.collect.Lists; import kr.wisestone.owl.constant.Constants; import kr.wisestone.owl.constant.MsgConstants; import kr.wisestone.owl.domain.Priority; import kr.wisestone.owl.domain.Workspace; import kr.wisestone.owl.exception.OwlRuntimeException; import kr.wisestone.owl.repository.PriorityRepository; import kr.wisestone.owl.service.PriorityService; import kr.wisestone.owl.service.UserService; import kr.wisestone.owl.service.WorkspaceService; import kr.wisestone.owl.util.ConvertUtil; import kr.wisestone.owl.vo.PriorityVo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Map; @Service public class PriorityServiceImpl extends AbstractServiceImpl> implements PriorityService { private static final Logger log = LoggerFactory.getLogger(PriorityServiceImpl.class); @Autowired private PriorityRepository priorityRepository; @Autowired private WorkspaceService workspaceService; @Autowired private UserService userService; @Override protected JpaRepository getRepository() { return this.priorityRepository; } @Override @Transactional(readOnly = true) public List findByWorkspaceIdOrderByPosition() { Workspace workspace = this.workspaceService.getWorkspace(this.userService.getUser(this.webAppUtil.getLoginId()).getLastWorkspaceId()); return this.priorityRepository.findByWorkspaceIdOrderByPosition(workspace.getId()); } // 우선순위 아이디로 우선순위를 조회한다. @Override @Transactional(readOnly = true) public Priority getPriority(Long id) { if (id == null) { throw new OwlRuntimeException( this.messageAccessor.getMessage(MsgConstants.PRIORITY_NOT_EXIST)); } Priority priority = this.findOne(id); if (priority == null) { throw new OwlRuntimeException( this.messageAccessor.getMessage(MsgConstants.PRIORITY_NOT_EXIST)); } return priority; } // 우선순위 목록을 조회한다. @Override @Transactional(readOnly = true) public List findPriority(Map resJsonData) { List priorityVos = ConvertUtil.convertObjectsToClasses(this.findByWorkspaceIdOrderByPosition(), PriorityVo.class); resJsonData.put(Constants.RES_KEY_CONTENTS, priorityVos); return priorityVos; } // 기본적으로 제공되는 우선순위 목록 @Override @Transactional public void addDefaultPriority(Workspace workspace) { List priorities = Lists.newArrayList(); priorities.add(new Priority(this.messageAccessor.message("common.urgent"), 1, "#ed5565", workspace)); priorities.add(new Priority(this.messageAccessor.message("common.high"), 2, "#f8ac59", workspace)); priorities.add(new Priority(this.messageAccessor.message("common.medium"), 3, "#1c84c6", workspace)); priorities.add(new Priority(this.messageAccessor.message("common.low"), 4, "#23c6c8", workspace)); this.priorityRepository.saveAll(priorities); } // 업무공간에 있는 우선 순위 목록을 가져온다. @Override @Transactional(readOnly = true) public List findByWorkspaceId() { return this.priorityRepository.findByWorkspaceId(this.userService.getUser(this.webAppUtil.getLoginId()).getLastWorkspaceId()); } }