package kr.wisestone.owl.service.impl; import com.fasterxml.jackson.databind.ObjectMapper; import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jws; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; import kr.wisestone.owl.constant.MsgConstants; import kr.wisestone.owl.domain.*; import kr.wisestone.owl.exception.OwlRuntimeException; import kr.wisestone.owl.repository.ApiTokenRepository; import kr.wisestone.owl.repository.IssueTypeApiEndStatusRepository; import kr.wisestone.owl.service.IssueStatusService; import kr.wisestone.owl.service.IssueTypeApiEndStatusService; import kr.wisestone.owl.service.IssueTypeService; import kr.wisestone.owl.service.ProjectService; import kr.wisestone.owl.util.ConvertUtil; import kr.wisestone.owl.util.DateUtil; import kr.wisestone.owl.util.WebAppUtil; import kr.wisestone.owl.vo.ApiTokenVo; import kr.wisestone.owl.vo.UserVo; import kr.wisestone.owl.web.form.ApiTokenForm; import kr.wisestone.owl.web.form.IssueTypeApiEndStatusForm; 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.data.jpa.repository.Modifying; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.io.UnsupportedEncodingException; import java.util.Date; import java.util.List; @Service public class IssueTypeApiEndStatusServiceImpl extends AbstractServiceImpl> implements IssueTypeApiEndStatusService { @Autowired private IssueTypeApiEndStatusRepository issueTypeApiEndStatusRepository; @Autowired private ProjectService projectService; @Autowired private IssueTypeService issueTypeService; @Autowired private IssueStatusService issueStatusService; @Override protected JpaRepository getRepository() { return this.issueTypeApiEndStatusRepository; } // 종료 상태 설정 @Override @Transactional public void setApiEndStatus(IssueTypeApiEndStatusForm issueTypeApiEndStatusForm) { User user = this.webAppUtil.getLoginUserObject(); Project project = this.projectService.getProject(issueTypeApiEndStatusForm.getProjectId()); IssueType issueType = this.issueTypeService.getIssueType(issueTypeApiEndStatusForm.getIssueTypeId()); if (issueTypeApiEndStatusForm.getIssueStatusId() == null) { // 기존 설정 삭제 this.issueTypeApiEndStatusRepository.deleteByUserIdAndProjectIdAndIssueTypeId( user.getId(), issueTypeApiEndStatusForm.getProjectId(), issueTypeApiEndStatusForm.getIssueTypeId()); } else { IssueStatus issueStatus = this.issueStatusService.getIssueStatus(issueTypeApiEndStatusForm.getIssueStatusId()); // 기존 설정 찾기 IssueTypeApiEndStatus issueTypeApiEndStatus = this.issueTypeApiEndStatusRepository.findByUserIdAndProjectIdAndIssueTypeId( user.getId(), issueTypeApiEndStatusForm.getProjectId(), issueTypeApiEndStatusForm.getIssueTypeId()); if (issueTypeApiEndStatus != null) { issueTypeApiEndStatus.setIssueStatus(issueStatus); this.issueTypeApiEndStatusRepository.save(issueTypeApiEndStatus); } else { // 새로 설정 IssueTypeApiEndStatus newIssueTypeApiEndStatus = ConvertUtil.copyProperties(issueTypeApiEndStatusForm, IssueTypeApiEndStatus.class); newIssueTypeApiEndStatus.setUser(user); newIssueTypeApiEndStatus.setProject(project); newIssueTypeApiEndStatus.setIssueType(issueType); newIssueTypeApiEndStatus.setIssueStatus(issueStatus); this.issueTypeApiEndStatusRepository.save(newIssueTypeApiEndStatus); } } } }