@Override public void update(NoticeRequestDTO noticeDTO) throws OperationalException { LocalDateTime currentTime = LocalDateTime.now(); Notice notice = findById(noticeDTO.getNoticeId()); if (notice == null) { throw new OperationalException( HttpConstants.NOT_FOUND, ResponseConstants.INVALID_NOTICE_ID, HttpStatus.NOT_FOUND); } assertEnum(noticeDTO.getStatus(), NoticeStatus.class, ResponseConstants.INVALID_STATUS); loadNoticeDetails(noticeDTO, notice); User user; if (SecurityContextHolder.getContext().getAuthentication().getPrincipal() != null) { user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); } else { user = userDao.getActiveUserDetails(noticeDTO.getModifiedBy()); if (user == null) { throw new OperationalException( HttpConstants.NOT_FOUND, ResponseConstants.INVALID_MODIFIED_BY, HttpStatus.NOT_FOUND); } } String status = noticeDTO.getStatus(); if (!StringUtils.isBlank(status) && status.equals(NoticeStatus.ACTIVE.name())) { notice.setApprovedDate(currentTime); notice.setApprovedBy(user); } NoticeHistory history = new NoticeHistory(notice, notice.getStatus(), noticeDTO.getNotes(), currentTime, user); notice.getHistory().add(history); super.update(notice); }
private Notice loadNoticeDetails(NoticeRequestDTO noticeDTO, Notice notice) { Notice noticeTemp = notice; if (notice == null) { noticeTemp = new Notice(); } if (!StringUtils.isBlank(noticeDTO.getStatus())) { noticeTemp.setStatus(noticeDTO.getStatus()); } if (!StringUtils.isBlank(noticeDTO.getDetails())) { noticeTemp.setDetails(noticeDTO.getDetails()); } if (!StringUtils.isBlank(noticeDTO.getTitle())) { noticeTemp.setTitle(noticeDTO.getTitle()); } return noticeTemp; }
@Override public void delete(int noticeId) throws OperationalException { Notice notice = findById(noticeId); if (notice == null) { throw new OperationalException( HttpConstants.NOT_FOUND, ResponseConstants.INVALID_NOTICE_ID, HttpStatus.NOT_FOUND); } notice.setStatus(NoticeStatus.DELETED.name()); User user = null; if (SecurityContextHolder.getContext().getAuthentication().getPrincipal() != null) { user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); } NoticeHistory history = new NoticeHistory(notice, NoticeStatus.DELETED.name(), null, LocalDateTime.now(), user); notice.getHistory().add(history); super.update(notice); }
@Override public void reject(int noticeId, String notes) throws OperationalException { Notice notice = findById(noticeId); if (notice == null) { throw new OperationalException( HttpConstants.NOT_FOUND, ResponseConstants.INVALID_NOTICE_ID, HttpStatus.NOT_FOUND); } else if (!notice.getStatus().equals(NoticeStatus.WAITING.name())) { throw new OperationalException( HttpConstants.NOT_FOUND, "Notice already rejected", HttpStatus.NOT_FOUND); } notice.setStatus(NoticeStatus.REJECTED.name()); User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); NoticeHistory history = new NoticeHistory(notice, NoticeStatus.REJECTED.name(), notes, LocalDateTime.now(), user); notice.getHistory().add(history); super.update(notice); notifyRejectedToWebSocket(noticeId, user.getUserId(), notice.getDongName(), notice.getTitle()); }
@Override public void approveAll() throws OperationalException { List<Notice> getWaitingNotices = super.findByCriteria(Notice.class, Restrictions.eq(STATUS, NoticeStatus.WAITING.name())); User operator = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); LocalDateTime currentTime = LocalDateTime.now(); if (getWaitingNotices != null) { for (Notice notice : getWaitingNotices) { notice.setApprovedDate(currentTime); notice.setApprovedBy(operator); notice.setStatus(NoticeStatus.ACTIVE.name()); NoticeHistory history = new NoticeHistory(notice, notice.getStatus(), "Approved all", currentTime, operator); notice.getHistory().add(history); super.update(notice); } notifyApprovedAllToWebSocket(operator.getUserId(), operator.getDongId(), null); } }
@Override public Notice request(NoticeRequestDTO noticeDTO) throws OperationalException { try { Notice notice = loadNoticeDetails(noticeDTO, null); notice.setCreationDate(LocalDateTime.now()); User user = userDao.getActiveUserDetails(noticeDTO.getAuthor()); if (user == null) { throw new OperationalException( HttpConstants.NOT_FOUND, ResponseConstants.INVALID_AUTHOR, HttpStatus.NOT_FOUND); } notice.setAuthor(user); notice.setLotId(noticeDTO.getLotId()); notice.setDongName(noticeDTO.getDongName()); notice.setStatus(NoticeStatus.WAITING.name()); NoticeHistory history = new NoticeHistory(notice, notice.getStatus(), null, LocalDateTime.now(), user); notice.setHistory(new HashSet(Arrays.asList(history))); int id = super.save(notice); notice.setNoticeId(id); notifyApprovalToWebSocket( notice.getNoticeId(), noticeDTO.getAuthor(), notice.getDongName(), notice.getTitle()); return notice; } catch (OperationalException e) { LOGGER.error("request: OperationalException ", e); throw new OperationalException(e.getHttpCode(), e.getMessage(), e.getHttpStatus()); } catch (Exception e) { LOGGER.error("request: Exception ", e); throw new OperationalException( HttpConstants.INTERNAL_SERVER_ERROR, ResponseConstants.ERROR_FETCHING_FROM_DB, HttpStatus.INTERNAL_SERVER_ERROR); } }