package kr.wisestone.owl.service.impl;
|
|
import kr.wisestone.owl.constant.Constants;
|
import kr.wisestone.owl.domain.IssueSearch;
|
import kr.wisestone.owl.domain.User;
|
import kr.wisestone.owl.domain.Workspace;
|
import kr.wisestone.owl.repository.IssueSearchRepository;
|
import kr.wisestone.owl.service.IssueSearchService;
|
import kr.wisestone.owl.service.UserService;
|
import kr.wisestone.owl.service.WorkspaceService;
|
import kr.wisestone.owl.util.MapUtil;
|
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.Map;
|
|
@Service
|
public class IssueSearchServiceImpl extends AbstractServiceImpl<IssueSearch, Long, JpaRepository<IssueSearch, Long>> implements IssueSearchService {
|
|
private static final Logger log = LoggerFactory.getLogger(IssueSearchServiceImpl.class);
|
|
@Autowired
|
private IssueSearchRepository issueSearchRepository;
|
|
@Autowired
|
private WorkspaceService workspaceService;
|
|
@Autowired
|
private UserService userService;
|
|
@Override
|
protected JpaRepository<IssueSearch, Long> getRepository() {
|
return this.issueSearchRepository;
|
}
|
|
// 이슈 검색 조건을 저장한다. - 이슈 번호만 저장한다.
|
@Override
|
@Transactional
|
public IssueSearch addIssueSearch(Map<String, Object> params) {
|
String conditions = MapUtil.getString(params, "conditions");
|
// 해당 업무 공간에서 사용자의 이슈 검색 조건을 조회한다.
|
IssueSearch saveIssueSearch = this.findByUserIdAndWorkspaceId();
|
|
if (saveIssueSearch == null) {
|
IssueSearch issueSearch = new IssueSearch();
|
Workspace workspace = this.workspaceService.getWorkspace(this.userService.getUser(this.webAppUtil.getLoginId()).getLastWorkspaceId());
|
User user = this.userService.getUser(this.webAppUtil.getLoginId());
|
issueSearch.setWorkspace(workspace);
|
issueSearch.setUser(user);
|
issueSearch.setConditions(conditions);
|
return this.issueSearchRepository.saveAndFlush(issueSearch);
|
}
|
else {
|
saveIssueSearch.setConditions(conditions);
|
return this.issueSearchRepository.saveAndFlush(saveIssueSearch);
|
}
|
}
|
|
// 해당 업무 공간에서 사용자의 이슈 검색 조건을 조회한다.
|
@Override
|
@Transactional(readOnly = true)
|
public IssueSearch findByUserIdAndWorkspaceId() {
|
return this.issueSearchRepository.findByUserIdAndWorkspaceId(this.webAppUtil.getLoginId(),
|
this.userService.getUser(this.webAppUtil.getLoginId()).getLastWorkspaceId());
|
}
|
|
// 저장된 이슈 검색 조건을 조회 후 즉시 삭제한다 - 이슈 번호만 검색 조건 저장해서 사용
|
@Override
|
@Transactional
|
public void detailIssueSearch(Map<String, Object> resJsonData) {
|
// 해당 업무 공간에서 사용자의 이슈 검색 조건을 조회한다.
|
IssueSearch issueSearch = this.findByUserIdAndWorkspaceId();
|
|
if (issueSearch != null) {
|
resJsonData.put(Constants.RES_KEY_CONTENTS, issueSearch.getConditions());
|
issueSearch.setConditions(null);
|
this.issueSearchRepository.saveAndFlush(issueSearch);
|
}
|
else {
|
resJsonData.put(Constants.RES_KEY_CONTENTS, "");
|
}
|
}
|
|
}
|