package com.napa.pulse.controller.rest; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonArray; import com.napa.pulse.annotations.JwtToken; import com.napa.pulse.annotations.Track; import com.napa.pulse.dao.interfaces.ProductGroupDAO; import com.napa.pulse.dto.*; import com.napa.pulse.entity.pulseui.*; import com.napa.pulse.entity.security.User; import com.napa.pulse.enums.AccessItem; import com.napa.pulse.exception.PulseException; import com.napa.pulse.security.model.JwtUserData; import com.napa.pulse.service.interfaces.*; import com.napa.pulse.utils.HierarchyUtils; import com.napa.pulse.utils.PulseConstants; import com.napa.pulse.utils.ROLE; import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.util.StopWatch; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; /** * Component that receives HttpServletRequest and HttpServletResponse for the * session page * * @author Tathagata Bhattacharya Created: Feb 09, 2015 */ @RestController public class SessionRestController { private static final Logger LOGGER = LoggerFactory.getLogger(SessionRestController.class); @Autowired private SessionService sessionService; @Autowired private SystemService systemService; @Autowired private AcoService acoService; @Autowired private AdminService adminService; @Autowired private ProductGroupDAO productGroupDAO; @Autowired private UserService userService; @Autowired private SiteService siteService; private static final String GROUP_CODE_OUT_RANGE = "groupCodeOutRange"; private final Gson gson = new Gson(); private final Gson customDateGson = new GsonBuilder().setDateFormat(PulseConstants.YYYY_MM_DD).create(); /** * @param jwtUserData * @param includeFleets * @param perCarOrder * @param includeSystems * @param includeSpecials * @param includeObsoletes * @param includeOverstocks * @param keyLinesOrders * @param keyLinesReturns * @param includeLessThanStdPkg * @param useInvColls * @param addDepth * @param comment * @param siteGroup * @param sites * @param productGroups * @param fleets * @param fleetGroups * @param customProductGroup * @param skus * @param productLines * @param includeOrders * @param includeReturns * @param expirationDate * @param sessionType * @param applicationPartsOnly * @return * @throws PulseException */ @Track @RequestMapping(value = "auth/sessions", method = RequestMethod.POST) public String createNewSession(@JwtToken(PulseConstants.JWT_USER_DETAILS) JwtUserData jwtUserData, @RequestParam(defaultValue = "false") Boolean includeFleets, @RequestParam(defaultValue = "false") Boolean perCarOrder, @RequestParam(defaultValue = "false") Boolean includeSystems, @RequestParam(defaultValue = "false") Boolean includeSpecials, @RequestParam(defaultValue = "false") Boolean includeObsoletes, @RequestParam(defaultValue = "false") Boolean includeOverstocks, @RequestParam(required = false) Boolean includeSupersede, @RequestParam(defaultValue = "false") Boolean includeSoldNotStocked, @RequestParam(defaultValue = "false") Boolean includeNewNumbers, @RequestParam(defaultValue = "false") Boolean orderAllSkus, @RequestParam(required = false) Integer dollarLimit, @RequestParam(defaultValue = "false") Boolean keyLinesOrders, @RequestParam(defaultValue = "false") Boolean keyLinesReturns, @RequestParam(defaultValue = "false") Boolean includeLessThanStdPkg, @RequestParam(defaultValue = "false") Boolean useInvColls, @RequestParam(defaultValue = "false") Boolean addDepth, @RequestParam(required = false) String comment, @RequestParam(required = false) String siteGroup, @RequestParam(required = false) Double includeWeekSupplyOption, @RequestParam(required = false) String weekSupplyOptionName, @RequestParam(required = false) String sites, @RequestParam(required = false) String productGroups, @RequestParam(required = false) String GroupCodeProductGroups, @RequestParam(required = false) String fleets, @RequestParam(required = false) String fleetGroups, @RequestParam(required = false) String customProductGroup, @RequestParam(required = false) String customGroupCodeProductGroup, @RequestParam(defaultValue = "false") Boolean isGroupCode, @RequestParam(required = false) String skus, @RequestParam(required = false) String productLines, @RequestParam(required = false) String allProductLinesData, @RequestParam(required = false) Boolean includeOrders, @RequestParam(required = false) Boolean includeReturns, @RequestParam(defaultValue = "false") Boolean returnAllSKUs, @RequestParam(required = false) String expirationDate, @RequestParam(required = false) Boolean includeHubSpokeOrder, @RequestParam(required = false) Boolean includeHubSpokeReturn, @RequestParam(required = false) String includeHubSpokeOrderOption, @RequestParam(required = false) String includeHubSpokeReturnOption, @RequestParam(required = false) String includeDaysCount, @RequestParam(required = false) Integer updatesToMinValue, @RequestParam(required = false) String salesHistoryValue, @RequestParam(required = false) String displayQty, @RequestParam(required = false) String sessionType, @RequestParam(defaultValue = "false") Boolean applicationPartsOnly) throws PulseException { // check user access if (!jwtUserData.getRoleAccessList().contains(AccessItem.SESS_LANDING_NEW_SESS_BUTTON.getNumVal())) { return PulseConstants.NO_ACCESS; } try { User user = userService.findUserByLogin(jwtUserData.getUsername()); String userAccessSites = adminService.getUserSiteList(jwtUserData.getUserId()); // return false if both siteGroup & sites are missing if (StringUtils.isBlank(siteGroup) && StringUtils.isBlank(sites)) { return gson.toJson(new ActionResult(false)); } Integer siteGroupObj = null; if (StringUtils.isNotBlank(siteGroup)) { siteGroupObj = gson.fromJson(siteGroup, Integer.class); } if (jwtUserData.getRoleId() != ROLE.ADMIN.getNumVal() && jwtUserData.getRoleId() != ROLE.XO.getNumVal()) { if (siteGroupObj != null) { if (!sessionService.checkEmptySiteGroup(siteGroupObj, userAccessSites)) { return gson.toJson(new ActionResult("emptySiteGroup")); } } } Integer[] sitesArray = null; if (StringUtils.isNotBlank(sites)) { sitesArray = gson.fromJson(sites, Integer[].class); } //site limit check List sl = sessionService.getSitelimits(siteGroupObj, sitesArray); if (sl.size() > 0) { SiteLimitResp resp = new SiteLimitResp(); resp.setSiteLimit(sl); return gson.toJson(resp); } if ("AC".equals(sessionType)) { AcoValidation acoValidation = acoService.acoValidationChecks(gson.fromJson(sites, Integer[].class)); if (!acoValidation.isValid()) { return gson.toJson(acoValidation); } } ProductGroupOrderReturn[] productGroupsArray = null; if (StringUtils.isNotBlank(productGroups)) { productGroupsArray = gson.fromJson(productGroups, ProductGroupOrderReturn[].class); } ProductGroupOrderReturn[] groupCodesArray = null; if (StringUtils.isNotBlank(GroupCodeProductGroups)) { groupCodesArray = gson.fromJson(GroupCodeProductGroups, ProductGroupOrderReturn[].class); } SiteFleet[] fleetGroupsArray = null; if (StringUtils.isNotBlank(fleetGroups)) { fleetGroupsArray = gson.fromJson(fleetGroups, SiteFleet[].class); } if (("SC").equals(sessionType)) { Map result = productGroupDAO.getFullHierarchy(user); List prodList = result.entrySet().stream().filter(map -> map.getKey().intValue() != 0).map(x -> x.getKey()).collect(Collectors.toList()); customProductGroup = ""; customProductGroup = "{\"hierarchyIds\":" + prodList.toString() + ",\"orders\": false,\"returns\": true}"; } CustomProductGroup customProductGroupObj = null; if (StringUtils.isNotBlank(customProductGroup)) { customProductGroupObj = gson.fromJson(customProductGroup, CustomProductGroup.class); } CustomGroupCodeProductGroup customGroupCodeProductGroupObj = null; if (StringUtils.isNotBlank(customGroupCodeProductGroup) && customGroupCodeProductGroup.length()>0) { customGroupCodeProductGroupObj = gson.fromJson(customGroupCodeProductGroup, CustomGroupCodeProductGroup.class); } Integer[] skuArray = null; if (StringUtils.isNotBlank(skus)) { skuArray = gson.fromJson(skus, Integer[].class); } ProductLinesData[] productLineIdArray = null; if (StringUtils.isNotBlank(productLines)) { productLineIdArray = gson.fromJson(productLines, ProductLinesData[].class); } ProductLinesData[] allProductLines = null; if (StringUtils.isNotBlank(allProductLinesData)) { allProductLines = gson.fromJson(allProductLinesData, ProductLinesData[].class); } Date expirationDateParsed; if (expirationDate == null) { expirationDateParsed = new Date(); Calendar c = Calendar.getInstance(); c.setTime(expirationDateParsed); c.add(Calendar.DATE, 30); expirationDateParsed = c.getTime(); } else { expirationDate = expirationDate.substring(0, expirationDate.indexOf('T')); Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd").create(); expirationDateParsed = gson.fromJson(expirationDate, Date.class); } if(includeHubSpokeOrder == null){ includeHubSpokeOrderOption = null; } if(includeHubSpokeReturn == null){ includeHubSpokeReturnOption = null; } ActionResultItem resultItem = sessionService.createNewSession(user, perCarOrder, includeFleets, includeSystems, includeSpecials, includeObsoletes, includeOverstocks, includeSupersede, keyLinesOrders, keyLinesReturns, includeLessThanStdPkg,includeWeekSupplyOption,weekSupplyOptionName,useInvColls, addDepth, includeSoldNotStocked,includeNewNumbers, orderAllSkus,returnAllSKUs, dollarLimit, comment, siteGroupObj, sitesArray, productGroupsArray,groupCodesArray, fleetGroupsArray, customProductGroupObj,customGroupCodeProductGroupObj,isGroupCode, userAccessSites, skuArray, productLineIdArray,allProductLines, (includeOrders != null && includeOrders) ? 1 : 0, (includeReturns != null && includeReturns) ? 1 : 0, expirationDateParsed, includeDaysCount, updatesToMinValue,salesHistoryValue,displayQty ,sessionType, includeHubSpokeOrderOption, includeHubSpokeReturnOption, applicationPartsOnly ); Map map = new HashMap<>(); map.put(PulseConstants.SUCCESS_STR, resultItem.isSuccess()); map.put(PulseConstants.MESSAGE_STR, resultItem.getMessage()); if (resultItem.getItem() != null) map.put("item", gson.toJson(resultItem.getItem())); return gson.toJson(map); } catch (Exception e) { try { LOGGER.error("Payload received from UI -> " + "includeFleets : {}, perCarOrder : {}, includeSystems : {}, includeSpecials : {}, includeObsoletes : {}, " + "includeOverstocks : {}, includeSupersede : {}, includeSoldNotStocked : {}, includeNewNumbers : {}, orderAllSkus : {}, dollarLimit : {}, " + "keyLinesOrders : {}, keyLinesReturns : {}, includeLessThanStdPkg : {}, useInvColls : {}, addDepth : {}, " + "comment : {}, siteGroup : {}, sites : {}, productGroups : {},fleetGroups : {}, " + "customProductGroup : {}, skus : {}, productLines : {}, includeOrders : {}, includeReturns : {}, " + "expirationDate : {}, includeHubSpokeOrder : {}, includeHubSpokeReturn : {}, includeHubSpokeOrderOption : {}, includeHubSpokeReturnOption : {}, " + "includeDaysCount : {}, updatesToMinValue : {}, salesHistoryValue : {},displayQty :{} ,sessionType : {}, applicationPartsOnly : {}, " + "expirationDate : {}, isGroupCode : {}", includeFleets, perCarOrder, includeSystems, includeSpecials, includeObsoletes, includeOverstocks, includeSupersede, includeSoldNotStocked, includeNewNumbers, orderAllSkus, dollarLimit, keyLinesOrders, keyLinesReturns, includeLessThanStdPkg, useInvColls, addDepth, comment, siteGroup, sites, productGroups, fleetGroups, customProductGroup, skus, productLines, includeOrders, includeReturns, expirationDate, includeHubSpokeOrder, includeHubSpokeReturn, includeHubSpokeOrderOption, includeHubSpokeReturnOption, includeDaysCount, updatesToMinValue, salesHistoryValue,displayQty, sessionType, applicationPartsOnly, expirationDate,isGroupCode); } catch (Exception exp) { LOGGER.error("Encountered error in createNewSession() payload logger", exp); } LOGGER.error("createNewSession",e); return gson.toJson(new ActionResult(false)); //throw new PulseException(PulseConstants.DEFAULT_SERVER_ERROR, e); } } /** * @param jwtUserData * @param sessionId * @param transmissions * @param response * @return * @throws PulseException */ @Track @RequestMapping(value = "auth/session/finalize/{sessionId}/{reviewOnly}", method = RequestMethod.PUT) public String finalizeSession(@JwtToken(PulseConstants.JWT_USER_DETAILS) JwtUserData jwtUserData, @PathVariable Integer sessionId, @RequestBody String transmissions, @PathVariable Boolean reviewOnly, HttpServletResponse response) throws PulseException { // check user access Stack roleAccess = new Stack<>(); roleAccess.push(AccessItem.FINALIZE_PAGE_SESS_BUTTON.getNumVal()); roleAccess.push(AccessItem.FINALIZE_SESSION_BUTTON_FOR_MIN_MAX_SESSION.getNumVal()); boolean roleNotFound = true; while (!roleAccess.isEmpty()) { if (jwtUserData.getRoleAccessList().contains(roleAccess.pop())) { roleNotFound = false; break; } } if (roleNotFound) return PulseConstants.NO_ACCESS; try { String userAccessSites = adminService.getUserSiteList(jwtUserData.getUserId()); if (jwtUserData.getRoleId() == ROLE.ADMIN.getNumVal() || sessionService.validateUserSessionAccess(sessionId, jwtUserData.getUserId(), userAccessSites)) { if (sessionId == null || transmissions == null) { return gson.toJson(new ActionResult(false)); } Transmission[] transmissionArray = customDateGson.fromJson(transmissions, Transmission[].class); if (transmissionArray == null || transmissionArray.length == 0) { return gson.toJson(new ActionResult(false)); } Calendar cal = Calendar.getInstance(); cal.add(Calendar.DAY_OF_MONTH, 30); Date aMonthFromNow = cal.getTime(); for (Transmission t : transmissionArray) { if ((t.getOrderDate() != null && aMonthFromNow.compareTo(t.getOrderDate()) < 0) || (t.getReturnDate() != null && aMonthFromNow.compareTo(t.getReturnDate()) < 0)) { return gson.toJson(new ActionResult(false)); } } ActionResult result = sessionService.finalizeSession(jwtUserData.getUserId(), sessionId, transmissionArray,reviewOnly); return gson.toJson(result); } else { // return 403 response.setStatus(HttpServletResponse.SC_FORBIDDEN); return Integer.toString(HttpServletResponse.SC_FORBIDDEN); } } catch (Exception e) { LOGGER.error("finalizeSession",e); throw new PulseException(PulseConstants.DEFAULT_SERVER_ERROR, e); } } /** * @param jwtUserData * @param sessionId * @param reasonText * @param response * @return * @throws PulseException */ @Track @RequestMapping(value = "auth/session/reject-finalize/{sessionId}", method = RequestMethod.PUT) public String rejectFinalizeSession(@JwtToken(PulseConstants.JWT_USER_DETAILS) JwtUserData jwtUserData, @PathVariable Integer sessionId, @RequestBody String reasonText, HttpServletResponse response) throws PulseException { try { String userAccessSites = adminService.getUserSiteList(jwtUserData.getUserId()); if (jwtUserData.getRoleId() == ROLE.ADMIN.getNumVal() || sessionService.validateUserSessionAccess(sessionId, jwtUserData.getUserId(), userAccessSites)) { if (sessionId == null) { return gson.toJson(new ActionResult(false)); } ActionResult result = sessionService.rejectFinalizeSession(sessionId, reasonText, jwtUserData.getUserId()); return gson.toJson(result); } else { // return 403 response.setStatus(HttpServletResponse.SC_FORBIDDEN); return Integer.toString(HttpServletResponse.SC_FORBIDDEN); } } catch (Exception e) { throw new PulseException(PulseConstants.DEFAULT_SERVER_ERROR, e); } } /** * @param jwtUserData * @param sessionId * @param siteId * @param partNumber * @param minQty * @param maxQty * @param fieldAbbr * @param response * @return * @throws PulseException */ @Track @RequestMapping(value = "/auth/new-min-max-change", method = RequestMethod.POST) public String siteSKUDetailsSaveOrderReturn(@JwtToken(PulseConstants.JWT_USER_DETAILS) JwtUserData jwtUserData, @RequestParam(required = true) Integer sessionId, @RequestParam(required = true) Integer siteId, @RequestParam(required = false) String partNumber, @RequestParam(required = false) Integer minQty, @RequestParam(required = false) Integer maxQty, @RequestParam(required = false) String fieldAbbr, HttpServletResponse response) throws PulseException { // check user access if (!jwtUserData.getRoleAccessList().contains(AccessItem.REVIEW_PAGE.getNumVal())) { return PulseConstants.NO_ACCESS; } String userAccessSites = adminService.getUserSiteList(jwtUserData.getUserId()); if (jwtUserData.getRoleId() == ROLE.ADMIN.getNumVal() || jwtUserData.getRoleId() == ROLE.XO.getNumVal() || sessionService.validateUserSessionAccess(sessionId, jwtUserData.getUserId(), userAccessSites)) { User user = userService.findUserByLogin(jwtUserData.getUsername()); if ((("en".equals(user.getLanguage())) ? "Open" : "Ouvert") .equals(sessionService.getSessionState(sessionId, user))) { ActionResultItem>> result = sessionService.saveMinMax(user, sessionId, siteId,partNumber,minQty,maxQty,fieldAbbr); //Set session state to Outdated if (sessionId != null && systemService.isSystems(sessionId)) { systemService.setOutdatedStatus(sessionId); } return gson.toJson(result); } else { return gson.toJson(new ActionResult("cannotUpdateMinMaxQtyWhenSessionOpen")); } } else { // return 403 response.setStatus(HttpServletResponse.SC_FORBIDDEN); return gson.toJson(HttpServletResponse.SC_FORBIDDEN); } } /** * @param jwtUserData * @param sessionId * @param requestDates * @param messageText * @param response * @return * @throws PulseException */ @Track @RequestMapping(value = "auth/session/request-finalize/{sessionId}", method = RequestMethod.PUT) public String requestFinalizeSession(@JwtToken(PulseConstants.JWT_USER_DETAILS) JwtUserData jwtUserData, @PathVariable Integer sessionId, @RequestBody String requestDates, @RequestParam(required = false) String messageText, HttpServletResponse response) throws PulseException { // check user access if (!jwtUserData.getRoleAccessList().contains(AccessItem.REQUEST_FINALIZE.getNumVal())) { return PulseConstants.NO_ACCESS; } RequestDatesDTO[] requestDatesArr = customDateGson.fromJson(requestDates, RequestDatesDTO[].class); try { User user = userService.findUserByLogin(jwtUserData.getUsername()); String userAccessSites = adminService.getUserSiteList(jwtUserData.getUserId()); if (jwtUserData.getRoleId() == ROLE.TRAINED_OWNER.getNumVal() || jwtUserData.getRoleId() == ROLE.CERTIFIED_OWNER.getNumVal() || sessionService.validateUserSessionAccess(sessionId, jwtUserData.getUserId(), userAccessSites)) { if (sessionId == null) { return gson.toJson(new ActionResult(false)); } return gson.toJson(sessionService.requestFinalizeSession(sessionId, requestDatesArr, messageText, user)); } else { // return 403 response.setStatus(HttpServletResponse.SC_FORBIDDEN); return Integer.toString(HttpServletResponse.SC_FORBIDDEN); } } catch (Exception e) { throw new PulseException(PulseConstants.DEFAULT_SERVER_ERROR, e); } } /** * @param jwtUserData * @param sessionId * @param response * @return * @throws PulseException */ @Track @RequestMapping(value = "auth/session/transmissions", method = RequestMethod.GET) public String getSessionTransmissions(@JwtToken(PulseConstants.JWT_USER_DETAILS) JwtUserData jwtUserData, @RequestParam(required = true) Integer sessionId, HttpServletResponse response) throws PulseException { try { User user = userService.findUserByLogin(jwtUserData.getUsername()); String userAccessSites = adminService.getUserSiteList(jwtUserData.getUserId()); if (jwtUserData.getRoleId() == ROLE.ADMIN.getNumVal() || jwtUserData.getRoleId() == ROLE.XO.getNumVal() || sessionService.validateUserSessionAccess(sessionId, jwtUserData.getUserId(), userAccessSites)) { if (sessionId == null) { return gson.toJson(new ActionResult(false)); } return customDateGson.toJson(sessionService.getSessionTransmissions(user, sessionId)); } else { // return 403 response.setStatus(HttpServletResponse.SC_FORBIDDEN); return Integer.toString(HttpServletResponse.SC_FORBIDDEN); } } catch (Exception e) { throw new PulseException(PulseConstants.DEFAULT_SERVER_ERROR, e); } } /** * @param jwtUserData * @param sessionId * @param response * @return * @throws PulseException */ @Track @RequestMapping(value = "auth/session/transmissionsminmax", method = RequestMethod.GET) public String getSessionTransmissionsMinMax(@JwtToken(PulseConstants.JWT_USER_DETAILS) JwtUserData jwtUserData, @RequestParam(required = true) Integer sessionId, HttpServletResponse response) throws PulseException { try { User user = userService.findUserByLogin(jwtUserData.getUsername()); String userAccessSites = adminService.getUserSiteList(jwtUserData.getUserId()); if (jwtUserData.getRoleId() == ROLE.ADMIN.getNumVal() || jwtUserData.getRoleId() == ROLE.XO.getNumVal() || sessionService.validateUserSessionAccess(sessionId, jwtUserData.getUserId(), userAccessSites)) { if (sessionId == null) { return gson.toJson(new ActionResult(false)); } return customDateGson.toJson(sessionService.getSessionTransmissionsMinMax(user, sessionId)); } else { // return 403 response.setStatus(HttpServletResponse.SC_FORBIDDEN); return Integer.toString(HttpServletResponse.SC_FORBIDDEN); } } catch (Exception e) { throw new PulseException(PulseConstants.DEFAULT_SERVER_ERROR, e); } } /** * @param jwtUserData * @param orderReturn * @param transmissionId * @param response * @return * @throws PulseException */ @Track @RequestMapping(value = "auth/session/resend-transmission", method = RequestMethod.GET) public String resendTransmission(@JwtToken(PulseConstants.JWT_USER_DETAILS) JwtUserData jwtUserData, @RequestParam(required = true) String orderReturn, @RequestParam(required = true) Integer transmissionId, HttpServletResponse response) throws PulseException { try { ActionResult resultItem = sessionService.resendTransmission(orderReturn.toUpperCase(), transmissionId); return customDateGson.toJson(resultItem); } catch (Exception e) { throw new PulseException(PulseConstants.DEFAULT_SERVER_ERROR, e); } } /** * @param jwtUserData * @param transmissionId * @param response * @return * @throws PulseException */ @Track @RequestMapping(value = "auth/session/resend-transmissionminmax", method = RequestMethod.GET) public String resendTransmission(@JwtToken(PulseConstants.JWT_USER_DETAILS) JwtUserData jwtUserData, @RequestParam(required = true) Integer transmissionId, HttpServletResponse response) throws PulseException { try { ActionResult resultItem = sessionService.resendTransmissionMinmax(transmissionId); return customDateGson.toJson(resultItem); } catch (Exception e) { throw new PulseException(PulseConstants.DEFAULT_SERVER_ERROR, e); } } /** * @param jwtUserData * @param sessionId * @param response * @return * @throws PulseException */ @Track @RequestMapping(value = "auth/session/sites-with-order-return", method = RequestMethod.GET) public String getSessionSitesWithOrderReturn( @JwtToken(PulseConstants.JWT_USER_DETAILS) JwtUserData jwtUserData, @RequestParam(required = true) Integer sessionId, HttpServletResponse response) throws PulseException { try { if (sessionId == null) { return gson.toJson(new ActionResult(false)); } String userAccessSites = adminService.getUserSiteList(jwtUserData.getUserId()); if (jwtUserData.getRoleId() == ROLE.ADMIN.getNumVal() || jwtUserData.getRoleId() == ROLE.XO.getNumVal() || sessionService.validateUserSessionAccess(sessionId, jwtUserData.getUserId(), userAccessSites)) { ActionResultItem>> resultItem = sessionService .getSessionSitesWithOrderReturn(jwtUserData.getUserId(), sessionId); return customDateGson.toJson(resultItem); } else { // return 403 response.setStatus(HttpServletResponse.SC_FORBIDDEN); return Integer.toString(HttpServletResponse.SC_FORBIDDEN); } } catch (Exception e) { throw new PulseException(PulseConstants.DEFAULT_SERVER_ERROR, e); } } /** * @param jwtUserData * @param sessionId * @param transmissions * @param response * @return * @throws PulseException */ @Track @RequestMapping(value = "auth/session/transmissions/{sessionId}", method = RequestMethod.PUT) public String updateSessionTransmissions(@JwtToken(PulseConstants.JWT_USER_DETAILS) JwtUserData jwtUserData, @PathVariable Integer sessionId, @RequestBody String transmissions, HttpServletResponse response) throws PulseException { try { if (sessionId == null || transmissions == null) { return gson.toJson(new ActionResult(false)); } Transmission[] transmissionArray = customDateGson.fromJson(transmissions, Transmission[].class); if (transmissionArray == null || transmissionArray.length == 0) { return gson.toJson(new ActionResult(false)); } String userAccessSites = adminService.getUserSiteList(jwtUserData.getUserId()); if (jwtUserData.getRoleId() == ROLE.ADMIN.getNumVal() || jwtUserData.getRoleId() == ROLE.XO.getNumVal() || sessionService.validateUserSessionAccess(sessionId, jwtUserData.getUserId(), userAccessSites)) { ActionResult result = sessionService.updateSessionTransmissions(jwtUserData.getUserId(), sessionId, transmissionArray); return gson.toJson(result); } else { // return 403 response.setStatus(HttpServletResponse.SC_FORBIDDEN); return Integer.toString(HttpServletResponse.SC_FORBIDDEN); } } catch (Exception e) { throw new PulseException(PulseConstants.DEFAULT_SERVER_ERROR, e); } } @Track @RequestMapping(value = "auth/session/update-transmission-status", method = RequestMethod.POST) public String updateSessionTransmissionStatusId(@RequestParam(required = true) Integer transmissionId, @RequestParam(required = true) String type, @RequestParam(required = true) String newStatus) throws PulseException { try { ActionResult result = sessionService.updateSessionTransmissionStatusId(transmissionId, type, newStatus); return gson.toJson(result); } catch (Exception e) { throw new PulseException(PulseConstants.DEFAULT_SERVER_ERROR, e); } } /** * Note: This is not currently being used by the UI * * @param jwtUserData * @param sessionId * @param response * @return * @throws PulseException */ @Track @RequestMapping(value = "auth/session-details", method = RequestMethod.GET) public String getSessionDetails(@JwtToken(PulseConstants.JWT_USER_DETAILS) JwtUserData jwtUserData, @RequestParam(required = true) Integer sessionId, HttpServletResponse response) throws PulseException { try { if (sessionId == null) { return gson.toJson(new ActionResult(false)); } User user = userService.findUserByLogin(jwtUserData.getUsername()); String userAccessSites = adminService.getUserSiteList(jwtUserData.getUserId()); if (jwtUserData.getRoleId() == ROLE.ADMIN.getNumVal() || jwtUserData.getRoleId() == ROLE.XO.getNumVal() || sessionService.validateUserSessionAccess(sessionId, jwtUserData.getUserId(), userAccessSites)) { List sessionList = sessionService.getSessionDetails(user, sessionId); return gson.toJson(sessionList); } else { // return 403 response.setStatus(HttpServletResponse.SC_FORBIDDEN); return Integer.toString(HttpServletResponse.SC_FORBIDDEN); } } catch (Exception e) { throw new PulseException(PulseConstants.DEFAULT_SERVER_ERROR, e); } } /** * @param skus * @return * @throws PulseException */ @Track @RequestMapping(value = "auth/validate-skus", method = RequestMethod.POST) public String validateSKUs(@RequestParam(required = true) String skus,@RequestParam Integer id,Boolean isCustomSelection) throws PulseException { try { if(id==null){ return gson.toJson(new ArrayList<>()); } SKUValidationDTO[] skusArray = null; // status type if (StringUtils.isNotBlank(skus) || skus.length() > 0) { skusArray = gson.fromJson(skus, SKUValidationDTO[].class); } Object[] updatedSKUsArray = sessionService.validateSKUs(skusArray,id,isCustomSelection); return gson.toJson(updatedSKUsArray); } catch (Exception e) { throw new PulseException(PulseConstants.DEFAULT_SERVER_ERROR, e); } } /** * @param jwtUserData * @param typeString * @param siteIdString * @param siteGroupString * @param statusIdString * @param dateString * @param createdByString * @param finalizeDateString * @return * @throws PulseException */ @Track @RequestMapping(value = "auth/session-list", method = RequestMethod.POST) public String getSessionList(@JwtToken(PulseConstants.JWT_USER_DETAILS) JwtUserData jwtUserData, @RequestParam(required = false) String typeString, @RequestParam(required = false) String siteIdString, @RequestParam(required = false) String siteGroupString, @RequestParam(required = false) String statusIdString, @RequestParam(required = false) String dateString, @RequestParam(required = false) String createdByString, @RequestParam(required = false) String finalizeDateString) throws PulseException { try { String[] statusTypeArray = null; Integer[] siteIdsArray = null; Integer[] siteGroupsArray = null; Integer[] statusIdArray = null; String[] createdDatesArray = null; Integer[] createdByIdArray = null; String[] finalizeDateArray = null; String[] ExpirationDatesArray = null; // status type if (StringUtils.isNotBlank(typeString) || typeString.length() > 0) { statusTypeArray = gson.fromJson(typeString, String[].class); } // site ids if (StringUtils.isNotBlank(siteIdString)) { siteIdsArray = gson.fromJson(siteIdString, Integer[].class); } // site groups if (StringUtils.isNotBlank(siteGroupString)) { siteGroupsArray = gson.fromJson(siteGroupString, Integer[].class); } // status ids if (StringUtils.isNotBlank(statusIdString)) { statusIdArray = gson.fromJson(statusIdString, Integer[].class); } // created Dates if (StringUtils.isNotBlank(dateString)) { createdDatesArray = gson.fromJson(dateString, String[].class); } // Expiration Dates if (StringUtils.isNotBlank(dateString)) { ExpirationDatesArray = gson.fromJson(dateString, String[].class); } // status ids if (StringUtils.isNotBlank(createdByString)) { createdByIdArray = gson.fromJson(createdByString, Integer[].class); } if (StringUtils.isNotBlank(finalizeDateString)) { finalizeDateArray = gson.fromJson(finalizeDateString, String[].class); } if (statusTypeArray == null || statusTypeArray.length == 0) { return gson.toJson(null); } StopWatch stopWatch = new StopWatch(); stopWatch.start(); User user = userService.findUserByLogin(jwtUserData.getUsername()); String userAccessSites = adminService.getUserSiteList(jwtUserData.getUserId()); List> sessionList = sessionService.getSessionList(statusTypeArray, siteIdsArray, siteGroupsArray, statusIdArray, createdDatesArray, ExpirationDatesArray , createdByIdArray, user, userAccessSites, finalizeDateArray); stopWatch.stop(); return gson.toJson(sessionList); } catch (Exception e) { throw new PulseException(PulseConstants.DEFAULT_SERVER_ERROR, e); } } @RequestMapping(value = "auth/session-list-all", method = RequestMethod.GET) public String getAllSessions(@JwtToken(PulseConstants.JWT_USER_DETAILS) JwtUserData jwtUserData) { User user = userService.findUserByLogin(jwtUserData.getUsername()); String userAccessSites = adminService.getUserSiteList(jwtUserData.getUserId()); return gson.toJson(sessionService.getAllSessions(user, userAccessSites)); } /** * This method will return the list of sites per session * * @param sessionId * @return */ @Track @RequestMapping(value = "auth/sessions/{sessionId}/sites", method = RequestMethod.GET) public String getSessionSites(@PathVariable(PulseConstants.SESSION_ID) int sessionId) throws PulseException { try { List> sessionSites = sessionService.getSessionSites(sessionId); return gson.toJson(sessionSites); } catch (Exception e) { throw new PulseException(PulseConstants.DEFAULT_SERVER_ERROR, e); } } /** * This method will return the hierarchy tree per session * * @param jwtUserData * @param sessionId * @param siteId * @param response * @return * @throws PulseException */ @Track @RequestMapping(value = "auth/sessions/{sessionId}/hierarchy-tree", method = RequestMethod.GET) public String getSessionHierarchyTree(@JwtToken(PulseConstants.JWT_USER_DETAILS) JwtUserData jwtUserData, @PathVariable(PulseConstants.SESSION_ID) int sessionId, @RequestParam(required = true) int siteId, HttpServletResponse response) throws PulseException { try { User user = userService.findUserByLogin(jwtUserData.getUsername()); String userAccessSites = adminService.getUserSiteList(jwtUserData.getUserId()); if (jwtUserData.getRoleId() == ROLE.ADMIN.getNumVal() || jwtUserData.getRoleId() == ROLE.XO.getNumVal() || sessionService.validateUserSessionAccess(sessionId, jwtUserData.getUserId(), userAccessSites)) { ActionResultItem> result = sessionService .getHierarchyTreeForSession(sessionId, siteId, user); JsonArray ja = HierarchyUtils.treeToJsonArray(result.getItem().get(HierarchyUtils.HIERARCHY_ROOT_ID), true, false); return gson.toJson(ja); } else { // return 403 response.setStatus(HttpServletResponse.SC_FORBIDDEN); return Integer.toString(HttpServletResponse.SC_FORBIDDEN); } } catch (Exception e) { throw new PulseException(PulseConstants.DEFAULT_SERVER_ERROR, e); } } /** * @param jwtUserData * @return * @throws PulseException */ @Track @RequestMapping(value = "auth/session-types-count", method = RequestMethod.GET) public String getSessionTypesAndCount(@JwtToken(PulseConstants.JWT_USER_DETAILS) JwtUserData jwtUserData) throws PulseException { try { User user = userService.findUserByLogin(jwtUserData.getUsername()); String userAccessSites = adminService.getUserSiteList(jwtUserData.getUserId()); return gson.toJson(sessionService.getSessionTypesAndCount(user, userAccessSites)); } catch (Exception e) { throw new PulseException(PulseConstants.DEFAULT_SERVER_ERROR, e); } } /** * @return * @throws PulseException */ @Track @RequestMapping(value = "auth/created-user-list", method = RequestMethod.GET) public String getCreatedUserList() throws PulseException { try { List> createdUsers = sessionService.getCreatedUserList(); return gson.toJson(createdUsers); } catch (Exception e) { throw new PulseException(PulseConstants.DEFAULT_SERVER_ERROR, e); } } /** * @param jwtUserData * @return * @throws PulseException */ @Track @RequestMapping(value = "auth/session-status-list", method = RequestMethod.GET) public String getSessionStatusList(@JwtToken(PulseConstants.JWT_USER_DETAILS) JwtUserData jwtUserData) throws PulseException { try { User user = userService.findUserByLogin(jwtUserData.getUsername()); List> sessionStatuses = sessionService.getSessionStatusList(user); return gson.toJson(sessionStatuses); } catch (Exception e) { throw new PulseException(PulseConstants.DEFAULT_SERVER_ERROR, e); } } /** * @param jwtUserData * @return * @throws PulseException */ @Track @RequestMapping(value = "auth/session-site-list", method = RequestMethod.GET) public String getSessionSiteList(@JwtToken(PulseConstants.JWT_USER_DETAILS) JwtUserData jwtUserData) throws PulseException { try { User user = userService.findUserByLogin(jwtUserData.getUsername()); String userAccessSites = adminService.getUserSiteList(jwtUserData.getUserId()); List> createdUsers = sessionService.getSessionSiteList(user, userAccessSites); return gson.toJson(createdUsers); } catch (Exception e) { throw new PulseException(PulseConstants.DEFAULT_SERVER_ERROR, e); } } /** * @param jwtUserData * @return * @throws PulseException */ @Track @RequestMapping(value = "auth/session-site-group-list", method = RequestMethod.GET) public String getSessionSiteGroupList(@JwtToken(PulseConstants.JWT_USER_DETAILS) JwtUserData jwtUserData) throws PulseException { try { List> siteGroups = sessionService.getSessionSiteGroupList(jwtUserData.getUserId()); return gson.toJson(siteGroups); } catch (Exception e) { throw new PulseException(PulseConstants.DEFAULT_SERVER_ERROR, e); } } @Track @RequestMapping ( value = "/auth/dashboard-table-set-reviewed-list/{sessionId}", method = RequestMethod.POST, consumes = "application/json", headers = "content-type=application/x-www-form-urlencoded" ) public String skuDashboardTableSetReviewedList ( @JwtToken ( PulseConstants.JWT_USER_DETAILS ) JwtUserData jwtUserData, @PathVariable Integer sessionId, @RequestParam ( required = false ) String dashboardList, @RequestParam ( required = false ) HttpServletResponse response ) throws PulseException { if (!jwtUserData.getRoleAccessList().contains(AccessItem.MIN_MAX_SESSION_REVIEW_PAGE.getNumVal())) { return PulseConstants.NO_ACCESS; } try { DashboardList[] dashboardListArr = null; if (StringUtils.isNotBlank(dashboardList)) { dashboardListArr = (gson.fromJson(dashboardList, DashboardList[].class)); } String userAccessSites = adminService.getUserSiteList(jwtUserData.getUserId()); if (jwtUserData.getRoleId() == ROLE.ADMIN.getNumVal() || jwtUserData.getRoleId() == ROLE.XO.getNumVal() || sessionService.validateUserSessionAccess(sessionId, jwtUserData.getUserId(), userAccessSites)) { ActionResultItem>> responseData = sessionService.updateSkuDashboardTableSetReviewedList(sessionId, dashboardListArr); return gson.toJson(responseData); } else { // return 403 response.setStatus(HttpServletResponse.SC_FORBIDDEN); return gson.toJson(HttpServletResponse.SC_FORBIDDEN); } } catch (Exception e) { LOGGER.error("skuDashboardTableSetReviewedList", e); throw new PulseException(PulseConstants.DEFAULT_SERVER_ERROR, e); } } @Track @RequestMapping ( value = "/auth/dashboard-table-set-reviewed-filter", method = RequestMethod.GET ) public String skuDashboardTableSetReviewedFilter ( @JwtToken ( PulseConstants.JWT_USER_DETAILS ) JwtUserData jwtUserData, @RequestParam ( required = true ) Integer sessionId, @RequestParam(required = false) String isMinMaxSkus, @RequestParam(required = false) String minMaxSiteIds, @RequestParam(required = false) String minMaxLineAbbr, @RequestParam(required = false) Integer minMaxGroupCode, @RequestParam(required = false) Boolean minMaxisReviewed, @RequestParam(required = false) Integer hierarchyLevel, HttpServletResponse response) throws PulseException { if (!jwtUserData.getRoleAccessList().contains(AccessItem.MIN_MAX_SESSION_REVIEW_PAGE.getNumVal())) { return PulseConstants.NO_ACCESS; } if (minMaxGroupCode == null) { minMaxGroupCode = -1; } else if (minMaxGroupCode < 0 || minMaxGroupCode > 999) { return gson.toJson(new ActionResult(GROUP_CODE_OUT_RANGE)); } try { String userAccessSites = adminService.getUserSiteList(jwtUserData.getUserId()); if (jwtUserData.getRoleId() == ROLE.ADMIN.getNumVal() || jwtUserData.getRoleId() == ROLE.XO.getNumVal() || sessionService.validateUserSessionAccess(sessionId, jwtUserData.getUserId(), userAccessSites)) { SKUDashboardTableData skuDashboardTableData = new SKUDashboardTableData(); skuDashboardTableData.setSessionId(sessionId); skuDashboardTableData.setMinMaxSkus(isMinMaxSkus); skuDashboardTableData.setSiteIds(minMaxSiteIds); skuDashboardTableData.setLineAbbr(minMaxLineAbbr); skuDashboardTableData.setGroupCode(minMaxGroupCode); skuDashboardTableData.setIsReviewed(minMaxisReviewed); ActionResultItem>> responseData = sessionService.updateSkuDashboardTableSetReviewedFilter(skuDashboardTableData); return gson.toJson(responseData); } else { // return 403 response.setStatus(HttpServletResponse.SC_FORBIDDEN); return gson.toJson(HttpServletResponse.SC_FORBIDDEN); } } catch (Exception e) { LOGGER.error("skuDashboardTableSetReviewedFilter", e); throw new PulseException(PulseConstants.DEFAULT_SERVER_ERROR, e); } } /** * @param jwtUserData * @param sessionId * @param pageNumber * @param numberOfRecordsPerPage * @param sortBy * @param sortingOrder * @param isOrders * @param isReturns * @param isInSession * @param siteId * @param level * @param hierarchyId * @param exportType * @param isUnreviewed * @param aggressiveLeft * @param aggressiveRight * @param dnsCount * @param sjCount * @param highSkuEdit * @param highSkuEditHierarchyId * @param isDeclineOrder * @param isDeclineReturn * @param isMinMaxSkus * @param hierarchyLevel * @param response * @throws PulseException */ @Track @RequestMapping(value = "/auth/sessions/{sessionId}/dashboard-table", method = RequestMethod.GET) public void getSessionDashboardTable(@JwtToken(PulseConstants.JWT_USER_DETAILS) JwtUserData jwtUserData, @PathVariable(PulseConstants.SESSION_ID) Integer sessionId, @RequestParam(required = false) Integer pageNumber, @RequestParam(required = false) Integer numberOfRecordsPerPage, @RequestParam(required = true) String sortBy, @RequestParam(required = true) String sortingOrder, @RequestParam(required = false) Boolean isOrders, @RequestParam(required = false) Boolean isReturns, @RequestParam(required = false) Boolean isInSession, @RequestParam(required = false) Integer siteId, @RequestParam(required = false) Integer level, @RequestParam(required = false) Integer hierarchyId, @RequestParam(required = false) String exportType, @RequestParam(required = false) Boolean isUnreviewed, @RequestParam(required = false) Boolean aggressiveLeft, @RequestParam(required = false) Boolean aggressiveRight, @RequestParam(required = false) Boolean dnsCount, @RequestParam(required = false) Boolean sjCount, @RequestParam(required = false) Boolean highSkuEdit, @RequestParam(required = false) Integer highSkuEditHierarchyId, @RequestParam(required = false) Boolean isDeclineOrder, @RequestParam(required = false) Boolean isDeclineReturn, @RequestParam(required = false) String isMinMaxSkus, @RequestParam(required = false) String minMaxSiteIds, @RequestParam(required = false) String minMaxLineAbbr, @RequestParam(required = false) String minMaxGroupCode, @RequestParam(required = false) Boolean minMaxisReviewed, @RequestParam(required = false) Integer salesHistoryMin, @RequestParam(required = false) Integer salesHistoryMax, @RequestParam(required = false) Integer hierarchyLevel, HttpServletResponse response) throws PulseException { try { User user = userService.findUserByLogin(jwtUserData.getUsername()); String userAccessSites = adminService.getUserSiteList(jwtUserData.getUserId()); if (jwtUserData.getRoleId() == ROLE.ADMIN.getNumVal() || jwtUserData.getRoleId() == ROLE.XO.getNumVal() || sessionService.validateUserSessionAccess(sessionId, jwtUserData.getUserId(), userAccessSites)) { //Fetching sessionTypeCode List sessionDetails = sessionService.getSessionDetails(user,sessionId); String sessionDetailsString = gson.toJson(sessionDetails); sessionDetailsString = sessionDetailsString.substring(1,sessionDetailsString.length()-1); Gson gson = new Gson(); Map map = new HashMap(); map = (Map) gson.fromJson(sessionDetailsString, map.getClass()); if(map.get("sessionTypeCode").equals("MM")) { sessionService.getMinMaxSessionDashboardData(sessionId, minMaxSiteIds, minMaxLineAbbr,minMaxGroupCode, minMaxisReviewed,isMinMaxSkus, sortBy, sortingOrder, pageNumber, numberOfRecordsPerPage, exportType, response, user , salesHistoryMin , salesHistoryMax); }else { sessionService.getSessionDashboardData(sessionId, pageNumber, numberOfRecordsPerPage, sortBy, sortingOrder, isReturns, isOrders, isInSession, siteId, level, hierarchyId, exportType, isUnreviewed, aggressiveLeft, aggressiveRight, dnsCount, sjCount, highSkuEdit, highSkuEditHierarchyId, isDeclineOrder, isDeclineReturn, hierarchyLevel, response, user); } } else { // return 403 response.setStatus(HttpServletResponse.SC_FORBIDDEN); } } catch (Exception e) { throw new PulseException(PulseConstants.DEFAULT_SERVER_ERROR, e); } } /** * @param jwtUserData * @param sessionId * @param isOrders * @param isReturns * @param isInSession * @param siteId * @param level * @param hierarchyId * @param isUnreviewed * @param aggressiveLeft * @param dnsCount * @param sjCount * @param highSkuEdit * @param highSkuEditHierarchyId * @param aggressiveRight * @param isDeclineOrder * @param isDeclineReturn * @param isMinMaxSkus * @param hierarchyLevel * @param response * @return * @throws PulseException */ @Track @RequestMapping(value = "/auth/sessions/{sessionId}/dashboard-table-cnt", method = RequestMethod.GET) public Integer getSessionDashboardTableCnt(@JwtToken(PulseConstants.JWT_USER_DETAILS) JwtUserData jwtUserData, @PathVariable(PulseConstants.SESSION_ID) int sessionId, @RequestParam(required = false) boolean isOrders, @RequestParam(required = false) boolean isReturns, @RequestParam(required = false) Boolean isInSession, @RequestParam(required = false) Integer siteId, @RequestParam(required = false) Integer level, @RequestParam(required = false) Integer hierarchyId, @RequestParam(required = false) Boolean isUnreviewed, @RequestParam(required = false) Boolean aggressiveLeft, @RequestParam(required = false) Boolean dnsCount, @RequestParam(required = false) Boolean sjCount, @RequestParam(required = false) Boolean highSkuEdit, @RequestParam(required = false) Integer highSkuEditHierarchyId, @RequestParam(required = false) Boolean aggressiveRight, @RequestParam(required = false) Boolean isDeclineOrder, @RequestParam(required = false) Boolean isDeclineReturn, @RequestParam(required = false) String isMinMaxSkus, @RequestParam(required = false) String minMaxSiteIds, @RequestParam(required = false) String minMaxLineAbbr, @RequestParam(required = false) String minMaxGroupCode, @RequestParam(required = false) Boolean minMaxisReviewed, @RequestParam(required = false) Integer salesHistoryMin, @RequestParam(required = false) Integer salesHistoryMax, @RequestParam(required = false) Integer hierarchyLevel, HttpServletResponse response) throws PulseException { try { User user = userService.findUserByLogin(jwtUserData.getUsername()); String userAccessSites = adminService.getUserSiteList(jwtUserData.getUserId()); if (jwtUserData.getRoleId() == ROLE.ADMIN.getNumVal() || jwtUserData.getRoleId() == ROLE.XO.getNumVal() || sessionService.validateUserSessionAccess(sessionId, jwtUserData.getUserId(), userAccessSites)) { //Fetching sessionTypeCode List sessionDetails = sessionService.getSessionDetails(user,sessionId); String sessionDetailsString = gson.toJson(sessionDetails); sessionDetailsString = sessionDetailsString.substring(1,sessionDetailsString.length()-1); Gson gson = new Gson(); Map map = new HashMap(); map = (Map) gson.fromJson(sessionDetailsString, map.getClass()); if(map.get("sessionTypeCode").equals("MM")) { return sessionService.getMinMaxSessionDashboardCnt(sessionId, minMaxSiteIds, minMaxLineAbbr,minMaxGroupCode, minMaxisReviewed,isMinMaxSkus,salesHistoryMin,salesHistoryMax); }else { return sessionService.getSessionDashboardCnt(sessionId, isReturns, isOrders, isInSession, siteId, level, hierarchyId, isUnreviewed, aggressiveLeft, aggressiveRight, dnsCount, sjCount, highSkuEdit, highSkuEditHierarchyId, isDeclineOrder, isDeclineReturn, hierarchyLevel); } } else { // return 403 response.setStatus(HttpServletResponse.SC_FORBIDDEN); return HttpServletResponse.SC_FORBIDDEN; } } catch (Exception e) { throw new PulseException(PulseConstants.DEFAULT_SERVER_ERROR, e); } } /** * @param jwtUserData * @return * @throws PulseException */ @Track @RequestMapping(value = "/auth/landing/orange-box-data", method = RequestMethod.GET) public String getLandingPageOrangeBoxData(@JwtToken(PulseConstants.JWT_USER_DETAILS) JwtUserData jwtUserData) throws PulseException { try { Map orangeMap; int countType; int countOverdueReturn; int countPendingTransmissions; int countActiveUsers; int countPendingApprovals; try { User user = userService.findUserByLogin(jwtUserData.getUsername()); String userResponsibleSites = adminService.getResponsibleUserSiteList(jwtUserData.getUserId()); countType = sessionService.getSessionTypeCount("Open", user); countOverdueReturn = sessionService.getOverdueReturn(userResponsibleSites); countPendingTransmissions = sessionService.getPendingTransmissions(userResponsibleSites); countActiveUsers = sessionService.getActiveUserCount(); countPendingApprovals = sessionService.getPendingApprovals(user); } catch (Exception e) { throw new PulseException(PulseConstants.DEFAULT_SERVER_ERROR, e); } orangeMap = new HashMap<>(); orangeMap.put("openSessions", countType); orangeMap.put("overdueReturns", countOverdueReturn); orangeMap.put("pendingTransmissions", countPendingTransmissions); orangeMap.put("activeUsers", countActiveUsers); orangeMap.put("pendingApprovals", countPendingApprovals); return gson.toJson(orangeMap); } catch (Exception e) { throw new PulseException(PulseConstants.DEFAULT_SERVER_ERROR, e); } } /** * @param jwtUserData * @param sessionId * @param response * @return * @throws PulseException */ @Track @RequestMapping(value = "/auth/sessions/session-orange-bar-data", method = RequestMethod.GET) public String sessionOrderReturnTotals(@JwtToken(PulseConstants.JWT_USER_DETAILS) JwtUserData jwtUserData, @RequestParam(required = true) int sessionId, HttpServletResponse response) throws PulseException { try { String userAccessSites = adminService.getUserSiteList(jwtUserData.getUserId()); if (jwtUserData.getRoleId() == ROLE.ADMIN.getNumVal() || jwtUserData.getRoleId() == ROLE.XO.getNumVal() || sessionService.validateUserSessionAccess(sessionId, jwtUserData.getUserId(), userAccessSites)) { List> sessionOrderReturnTotalsData = sessionService .getSessionOrderReturnTotals(sessionId); return gson.toJson(sessionOrderReturnTotalsData); } else { // return 403 response.setStatus(HttpServletResponse.SC_FORBIDDEN); return gson.toJson(HttpServletResponse.SC_FORBIDDEN); } } catch (Exception e) { throw new PulseException(PulseConstants.DEFAULT_SERVER_ERROR, e); } } /** * @param jwtUserData * @param sessionId * @param response * @return * @throws PulseException */ @Track @RequestMapping(value = "/auth/sessions/session-orange-bar-all-sites-details", method = RequestMethod.GET) public String sessionOrderReturnTotalsDetails(@JwtToken(PulseConstants.JWT_USER_DETAILS) JwtUserData jwtUserData, @RequestParam(required = true) int sessionId, HttpServletResponse response) throws PulseException { try { String userAccessSites = adminService.getUserSiteList(jwtUserData.getUserId()); if (jwtUserData.getRoleId() == ROLE.ADMIN.getNumVal() || jwtUserData.getRoleId() == ROLE.XO.getNumVal() || sessionService.validateUserSessionAccess(sessionId, jwtUserData.getUserId(), userAccessSites)) { List> sessionOrderReturnTotalsData = sessionService .getSessionOrderReturnTotalsDetails(sessionId); return gson.toJson(sessionOrderReturnTotalsData); } else { // return 403 response.setStatus(HttpServletResponse.SC_FORBIDDEN); return Integer.toString(HttpServletResponse.SC_FORBIDDEN); } } catch (Exception e) { throw new PulseException(PulseConstants.DEFAULT_SERVER_ERROR, e); } } // The four services below can be consumed separately if needed. Actually these // are the individual services that the orange // box method is using /** * @param sessionType * @param jwtUserData * @return * @throws PulseException */ @Track @RequestMapping(value = "/auth/session/session-type-count", method = RequestMethod.GET) public String getSessionTypeCount(@RequestParam("sessionType") String sessionType, @JwtToken(PulseConstants.JWT_USER_DETAILS) JwtUserData jwtUserData) throws PulseException { try { User user = userService.findUserByLogin(jwtUserData.getUsername()); int count = sessionService.getSessionTypeCount(sessionType, user); return gson.toJson(count); } catch (Exception e) { throw new PulseException(PulseConstants.DEFAULT_SERVER_ERROR, e); } } /** * @param jwtUserData * @return * @throws PulseException */ @Track @RequestMapping(value = "/auth/session/pending-transmissions", method = RequestMethod.GET) public String getPendingTransmissions(@JwtToken(PulseConstants.JWT_USER_DETAILS) JwtUserData jwtUserData) throws PulseException { try { String userResponsibleSites = adminService.getResponsibleUserSiteList(jwtUserData.getUserId()); int count = sessionService.getPendingTransmissions(userResponsibleSites); return gson.toJson(count); } catch (Exception e) { throw new PulseException(PulseConstants.DEFAULT_SERVER_ERROR, e); } } /** * @return * @throws PulseException */ @Track @RequestMapping(value = "/auth/session/active-user-count", method = RequestMethod.GET) public String getActiveUserCount() throws PulseException { try { int count = sessionService.getActiveUserCount(); return gson.toJson(count); } catch (Exception e) { throw new PulseException(PulseConstants.DEFAULT_SERVER_ERROR, e); } } /** * @param jwtUserData * @return * @throws PulseException */ @Track @RequestMapping(value = "/auth/session/overdue-return", method = RequestMethod.GET) public String getOverdueReturn(@JwtToken(PulseConstants.JWT_USER_DETAILS) JwtUserData jwtUserData) throws PulseException { try { String userResponsibleSites = adminService.getResponsibleUserSiteList(jwtUserData.getUserId()); int count = sessionService.getOverdueReturn(userResponsibleSites); return gson.toJson(count); } catch (Exception e) { throw new PulseException(PulseConstants.DEFAULT_SERVER_ERROR, e); } } /** * @param jwtUserData * @param sessionId * @param isOrders * @param isReturns * @param isInSession * @param siteId * @param hierarchyId * @param hierarchyLevel * @param response * @return * @throws PulseException */ @Track @RequestMapping(value = "/auth/session-dashboard/reco-chart", method = RequestMethod.GET) public String getRecommendationChart(@JwtToken(PulseConstants.JWT_USER_DETAILS) JwtUserData jwtUserData, @RequestParam(required = true) int sessionId, @RequestParam(required = false) boolean isOrders, @RequestParam(required = false) boolean isReturns, @RequestParam(required = false) Boolean isInSession, @RequestParam(required = false) Integer siteId, @RequestParam(required = false) Integer hierarchyId, @RequestParam(required = false) Integer hierarchyLevel, HttpServletResponse response) throws PulseException { try { String userAccessSites = adminService.getUserSiteList(jwtUserData.getUserId()); if (jwtUserData.getRoleId() == ROLE.ADMIN.getNumVal() || jwtUserData.getRoleId() == ROLE.XO.getNumVal() || sessionService.validateUserSessionAccess(sessionId, jwtUserData.getUserId(), userAccessSites)) { List> reco = sessionService.getRecommendationChart(sessionId, isOrders, isReturns, isInSession, siteId, hierarchyId, hierarchyLevel); return gson.toJson(reco); } else { // return 403 response.setStatus(HttpServletResponse.SC_FORBIDDEN); return Integer.toString(HttpServletResponse.SC_FORBIDDEN); } } catch (Exception e) { throw new PulseException(PulseConstants.DEFAULT_SERVER_ERROR, e); } } /** * @param jwtUserData * @param sessionId * @param hierarchyId * @param response * @return * @throws PulseException */ @Track @RequestMapping(value = "/auth/session-dashboard/{sessionId}/hierarchyNames", method = RequestMethod.GET) public String getSessionHierarchyNames(@JwtToken(PulseConstants.JWT_USER_DETAILS) JwtUserData jwtUserData, @PathVariable(PulseConstants.SESSION_ID) Integer sessionId, @RequestParam(required = false) Integer hierarchyId, HttpServletResponse response) throws PulseException { try { List> hierarchialNameLst; User user = userService.findUserByLogin(jwtUserData.getUsername()); String userAccessSites = adminService.getUserSiteList(jwtUserData.getUserId()); if (jwtUserData.getRoleId() == ROLE.ADMIN.getNumVal() || jwtUserData.getRoleId() == ROLE.XO.getNumVal() || sessionService.validateUserSessionAccess(sessionId, jwtUserData.getUserId(), userAccessSites)) { if (hierarchyId == null) { hierarchialNameLst = sessionService.getHierarchicalNames(sessionId, user); } else { hierarchialNameLst = sessionService.getHierarchicalNames(sessionId, hierarchyId, user); } return gson.toJson(hierarchialNameLst); } else { // return 403 response.setStatus(HttpServletResponse.SC_FORBIDDEN); return Integer.toString(HttpServletResponse.SC_FORBIDDEN); } } catch (Exception e) { throw new PulseException(PulseConstants.DEFAULT_SERVER_ERROR, e); } } /** * @param siteId * @param hierarchyId * @return * @throws PulseException */ @Track @RequestMapping(value = "/auth/session-dashboard/inventory-history", method = RequestMethod.GET) public String getInventoryHistory(@RequestParam(required = true) Integer siteId, @RequestParam(required = true) Integer hierarchyId) throws PulseException { try { return gson.toJson(sessionService.getInventoryHistory(siteId, hierarchyId)); } catch (Exception e) { throw new PulseException(PulseConstants.DEFAULT_SERVER_ERROR, e); } } /** * @param jwtUserData * @param sessionId * @param isOrders * @param isReturns * @param isInSession * @param siteId * @param hierarchyId * @param response * @return * @throws PulseException */ @Track @RequestMapping(value = "/auth/session-dashboard/inventory-history/{sessionId}", method = RequestMethod.GET) public String getInventoryHistory(@JwtToken(PulseConstants.JWT_USER_DETAILS) JwtUserData jwtUserData, @PathVariable(PulseConstants.SESSION_ID) int sessionId, @RequestParam(required = false) boolean isOrders, @RequestParam(required = false) boolean isReturns, @RequestParam(required = false) Boolean isInSession, @RequestParam(required = false) Integer siteId, @RequestParam(required = false) Integer hierarchyId, HttpServletResponse response) throws PulseException { try { String userAccessSites = adminService.getUserSiteList(jwtUserData.getUserId()); if (jwtUserData.getRoleId() == ROLE.ADMIN.getNumVal() || jwtUserData.getRoleId() == ROLE.XO.getNumVal() || sessionService.validateUserSessionAccess(sessionId, jwtUserData.getUserId(), userAccessSites)) { return gson.toJson(sessionService.getInventoryHistory(sessionId, isOrders, isReturns, isInSession, siteId, hierarchyId)); } else { // return 403 response.setStatus(HttpServletResponse.SC_FORBIDDEN); return Integer.toString(HttpServletResponse.SC_FORBIDDEN); } } catch (Exception e) { throw new PulseException(PulseConstants.DEFAULT_SERVER_ERROR, e); } } /** * @param jwtUserData * @param sessionId * @return * @throws PulseException */ @Track @RequestMapping(value = "/auth/sessions/{sessionId}/delete-session", method = RequestMethod.DELETE) public String deleteSession(@JwtToken(PulseConstants.JWT_USER_DETAILS) JwtUserData jwtUserData, @PathVariable(PulseConstants.SESSION_ID) Integer sessionId) throws PulseException { try { ActionResult response = sessionService.deleteSession(sessionId, jwtUserData.getUserId()); return gson.toJson(response); } catch (Exception e) { throw new PulseException(PulseConstants.DEFAULT_SERVER_ERROR, e); } } /** * @param jwtUserData * @param sessionId * @param response * @return * @throws PulseException */ @Track @RequestMapping(value = "auth/sessions/{sessionId}/review-summary", method = RequestMethod.GET) public List sessionReviewPreferenceSettings(@JwtToken(PulseConstants.JWT_USER_DETAILS) JwtUserData jwtUserData, @PathVariable(PulseConstants.SESSION_ID) int sessionId, HttpServletResponse response) throws PulseException { try { String userAccessSites = adminService.getUserSiteList(jwtUserData.getUserId()); if (jwtUserData.getRoleId() == ROLE.ADMIN.getNumVal() || jwtUserData.getRoleId() == ROLE.XO.getNumVal() || sessionService.validateUserSessionAccess(sessionId, jwtUserData.getUserId(), userAccessSites)) { return sessionService.sessionReviewPreferenceSettings(sessionId); } else { // return 403 response.setStatus(HttpServletResponse.SC_FORBIDDEN); return null; } } catch (Exception e) { throw new PulseException(PulseConstants.DEFAULT_SERVER_ERROR, e); } } /** * @param jwtUserData * @param sessionId * @param comment * @param expirationDate * @param response * @return * @throws PulseException */ @Track @RequestMapping(value = "auth/sessions/{sessionId}/review-summary", method = RequestMethod.PUT) public String updateSessionComment(@JwtToken(PulseConstants.JWT_USER_DETAILS) JwtUserData jwtUserData, @PathVariable(PulseConstants.SESSION_ID) int sessionId, @RequestBody(required = false) String comment, @RequestParam(required = false) String expirationDate, HttpServletResponse response) throws PulseException { try { String userAccessSites = adminService.getUserSiteList(jwtUserData.getUserId()); if (jwtUserData.getRoleId() == ROLE.ADMIN.getNumVal() || jwtUserData.getRoleId() == ROLE.XO.getNumVal() || sessionService.validateUserSessionAccess(sessionId, jwtUserData.getUserId(), userAccessSites)) { sessionService.updateSessionComment(sessionId, comment, expirationDate); return gson.toJson(new ActionResult(true)); } else { // return 403 response.setStatus(HttpServletResponse.SC_FORBIDDEN); return Integer.toString(HttpServletResponse.SC_FORBIDDEN); } } catch (Exception e) { throw new PulseException(PulseConstants.DEFAULT_SERVER_ERROR, e); } } /** * @param jwtUserData * @param sessionId * @param response * @return * @throws PulseException */ @Track @RequestMapping(value = "auth/sessions/{sessionId}/review-summary-product-groups", method = RequestMethod.GET) public String getProductGroupsForSession(@JwtToken(PulseConstants.JWT_USER_DETAILS) JwtUserData jwtUserData, @PathVariable(PulseConstants.SESSION_ID) Integer sessionId, HttpServletResponse response) throws PulseException { try { String userAccessSites = adminService.getUserSiteList(jwtUserData.getUserId()); if (jwtUserData.getRoleId() == ROLE.ADMIN.getNumVal() || jwtUserData.getRoleId() == ROLE.XO.getNumVal() || sessionService.validateUserSessionAccess(sessionId, jwtUserData.getUserId(), userAccessSites)) { List> selectedProductGroups = sessionService.getProductGroupsForSession(sessionId); return gson.toJson(selectedProductGroups); } else { // return 403 response.setStatus(HttpServletResponse.SC_FORBIDDEN); return Integer.toString(HttpServletResponse.SC_FORBIDDEN); } } catch (Exception e) { throw new PulseException(PulseConstants.DEFAULT_SERVER_ERROR, e); } } @Track @RequestMapping(value = "auth/sessions/{sessionId}/review-summary-group-codes", method = RequestMethod.GET) public String getGroupCodesForSession(@JwtToken(PulseConstants.JWT_USER_DETAILS) JwtUserData jwtUserData, @PathVariable(PulseConstants.SESSION_ID) Integer sessionId, HttpServletResponse response) throws PulseException { try { String userAccessSites = adminService.getUserSiteList(jwtUserData.getUserId()); if (jwtUserData.getRoleId() == ROLE.ADMIN.getNumVal() || jwtUserData.getRoleId() == ROLE.XO.getNumVal() || sessionService.validateUserSessionAccess(sessionId, jwtUserData.getUserId(), userAccessSites)) { List> selectedProductGroups = sessionService.getGroupCodesForSession(sessionId); return gson.toJson(selectedProductGroups); } else { // return 403 response.setStatus(HttpServletResponse.SC_FORBIDDEN); return Integer.toString(HttpServletResponse.SC_FORBIDDEN); } } catch (Exception e) { throw new PulseException(PulseConstants.DEFAULT_SERVER_ERROR, e); } } /** * @param jwtUserData * @param sessionId * @param response * @return * @throws PulseException */ @Track @RequestMapping(value = "auth/sessions/{sessionId}/review-summary-fleet-groups", method = RequestMethod.GET) public String getFleetGroupsForSession(@JwtToken(PulseConstants.JWT_USER_DETAILS) JwtUserData jwtUserData, @PathVariable(PulseConstants.SESSION_ID) Integer sessionId, HttpServletResponse response) throws PulseException { try { String userAccessSites = adminService.getUserSiteList(jwtUserData.getUserId()); if (jwtUserData.getRoleId() == ROLE.ADMIN.getNumVal() || jwtUserData.getRoleId() == ROLE.XO.getNumVal() || sessionService.validateUserSessionAccess(sessionId, jwtUserData.getUserId(), userAccessSites)) { List selectedFleetGroups = sessionService.getFleetGroupsForSession(sessionId); return gson.toJson(selectedFleetGroups); } else { // return 403 response.setStatus(HttpServletResponse.SC_FORBIDDEN); return Integer.toString(HttpServletResponse.SC_FORBIDDEN); } } catch (Exception e) { throw new PulseException(PulseConstants.DEFAULT_SERVER_ERROR, e); } } /** * @param jwtUserData * @param productGroupId * @param sessionId * @param response * @return * @throws PulseException */ @Track @RequestMapping(value = "auth/sessions/{sessionId}/review-summary-product-group-tree/{groupId}", method = RequestMethod.GET) public String getSelectedProductTree(@JwtToken(PulseConstants.JWT_USER_DETAILS) JwtUserData jwtUserData, @PathVariable("groupId") Integer productGroupId, @PathVariable(PulseConstants.SESSION_ID) Integer sessionId, HttpServletResponse response) throws PulseException { try { User user = userService.findUserByLogin(jwtUserData.getUsername()); String userAccessSites = adminService.getUserSiteList(jwtUserData.getUserId()); if (jwtUserData.getRoleId() == ROLE.ADMIN.getNumVal() || jwtUserData.getRoleId() == ROLE.XO.getNumVal() || sessionService.validateUserSessionAccess(sessionId, jwtUserData.getUserId(), userAccessSites)) { ActionResultItem> result = sessionService.getSelectedProductTree(sessionId, productGroupId, user); if (result.getItem() != null) { JsonArray ja = HierarchyUtils .treeToJsonArray(result.getItem().get(HierarchyUtils.HIERARCHY_ROOT_ID), false, true); Map map = new HashMap(); map.put(PulseConstants.SUCCESS_STR, result.isSuccess()); map.put(PulseConstants.MESSAGE_STR, result.getMessage()); map.put("item", ja); return gson.toJson(map); } else { return gson.toJson(result); } } else { // return 403 response.setStatus(HttpServletResponse.SC_FORBIDDEN); return Integer.toString(HttpServletResponse.SC_FORBIDDEN); } } catch (Exception e) { throw new PulseException(PulseConstants.DEFAULT_SERVER_ERROR, e); } } @Track @RequestMapping(value = "auth/sessions/{sessionId}/review-summary-group-codes/{groupId}", method = RequestMethod.GET) public String getSelectedGroupCodes(@JwtToken(PulseConstants.JWT_USER_DETAILS) JwtUserData jwtUserData, @PathVariable("groupId") Integer productGroupId, @PathVariable(PulseConstants.SESSION_ID) Integer sessionId, HttpServletResponse response) throws PulseException { try { User user = userService.findUserByLogin(jwtUserData.getUsername()); String userAccessSites = adminService.getUserSiteList(jwtUserData.getUserId()); if (jwtUserData.getRoleId() == ROLE.ADMIN.getNumVal() || jwtUserData.getRoleId() == ROLE.XO.getNumVal() || sessionService.validateUserSessionAccess(sessionId, jwtUserData.getUserId(), userAccessSites)) { ActionResultItem>> result = sessionService.getSelectedGroupCodes(sessionId, productGroupId, user); if (result.getItem() != null) { Map map = new HashMap(); map.put(PulseConstants.SUCCESS_STR, result.isSuccess()); map.put(PulseConstants.MESSAGE_STR, result.getMessage()); map.put("item", result); return gson.toJson(map); } else { return gson.toJson(result); } } else { // return 403 response.setStatus(HttpServletResponse.SC_FORBIDDEN); return Integer.toString(HttpServletResponse.SC_FORBIDDEN); } } catch (Exception e) { LOGGER.error("error in getSelectedGroupCodes() : ",e.getMessage()); throw new PulseException(PulseConstants.DEFAULT_SERVER_ERROR, e); } } @Track @RequestMapping(value = "auth/sessions/{sessionId}/executive-summary-data", method = RequestMethod.GET) public String getExecutiveSummaryData(@JwtToken(PulseConstants.JWT_USER_DETAILS) JwtUserData jwtUserData, @PathVariable(PulseConstants.SESSION_ID) Integer sessionId, HttpServletResponse response) throws PulseException { try { if (jwtUserData.getRoleId() == ROLE.ADMIN.getNumVal() || jwtUserData.getRoleId() == ROLE.XO.getNumVal()) { List> executiveSummaryData = sessionService.getExecutiveSummaryData(sessionId); return gson.toJson(executiveSummaryData); } else { // return 403 response.setStatus(HttpServletResponse.SC_FORBIDDEN); return Integer.toString(HttpServletResponse.SC_FORBIDDEN); } } catch (Exception e) { throw new PulseException(PulseConstants.DEFAULT_SERVER_ERROR, e); } } @Track @RequestMapping(value = "auth/sessions/{sessionId}/sku-list", method = RequestMethod.GET) public String getCustomSkuSessionProducts(@PathVariable(PulseConstants.SESSION_ID) Integer sessionId) throws PulseException { try { List> list = sessionService.getCustomSkuSessionProducts(sessionId); return gson.toJson(list); } catch (Exception e) { throw new PulseException(PulseConstants.DEFAULT_SERVER_ERROR, e); } } @Track @RequestMapping(value = "auth/product-lines", method = RequestMethod.GET) public String getMinMaxSessionProducts(@JwtToken(PulseConstants.JWT_USER_DETAILS) JwtUserData jwtUserData, @RequestParam String sites) throws PulseException { try { Integer[] sitesArray = null; if (StringUtils.isNotBlank(sites)) { sitesArray = gson.fromJson(sites, Integer[].class); } List> list = sessionService.getMinMaxSessionProducts(sitesArray); return gson.toJson(list); } catch (Exception e) { throw new PulseException(PulseConstants.DEFAULT_SERVER_ERROR, e); } } @Track @RequestMapping(value = "auth/min-max/dropdown-sites", method = RequestMethod.GET) public String getdropdownSites(@JwtToken(PulseConstants.JWT_USER_DETAILS) JwtUserData jwtUserData) throws PulseException { try { User user = userService.findUserByLogin(jwtUserData.getUsername()); String userAccessSites = adminService.getUserSiteList(jwtUserData.getUserId()); Integer userId=user.getUserId(); List accessSites =siteService.getAllSites(user, userAccessSites, userId, "MM"); List> dropdownSites= sessionService.getDropdownSites(accessSites); return gson.toJson(dropdownSites); } catch (Exception e) { throw new PulseException(PulseConstants.DEFAULT_SERVER_ERROR, e); } } @Track @RequestMapping(value = "auth/{sessionId}/selected-product-lines", method = RequestMethod.GET) public String getMinMaxSessionSelectedProducts(@PathVariable(PulseConstants.SESSION_ID) int sessionId) throws PulseException { try { List> list = sessionService.getMinMaxSessionSelectedProducts(sessionId); return gson.toJson(list); } catch (Exception e) { throw new PulseException(PulseConstants.DEFAULT_SERVER_ERROR, e); } } @Track @RequestMapping(value = "auth/{sessionId}/unselected-product-lines", method = RequestMethod.GET) public String getMinMaxSessionUnselectedProducts(@PathVariable(PulseConstants.SESSION_ID) int sessionId) throws PulseException { try { List> list = sessionService.getMinMaxSessionUnselectedProducts(sessionId); return gson.toJson(list); } catch (Exception e) { throw new PulseException(PulseConstants.DEFAULT_SERVER_ERROR, e); } } @Track @RequestMapping(value = "auth/sessions/session-limits", method = RequestMethod.GET) public String getSessionlimits(@JwtToken(PulseConstants.JWT_USER_DETAILS) JwtUserData jwtUserData) { User user = userService.findUserByLogin(jwtUserData.getUsername()); return gson.toJson(sessionService.getSessionlimits(user)); } @Track @RequestMapping(value = "auth/get/easy-link/{key}/{type}", method = RequestMethod.GET) public String getEasyLink(@PathVariable String key, @PathVariable String type, @JwtToken(PulseConstants.JWT_USER_DETAILS) JwtUserData jwtUserData) { String easyLink = sessionService.getEasyLink(key,type); Map map = new HashMap<>(); map.put("link",easyLink); return gson.toJson(map); } @Track @RequestMapping(value = "auth/sessions/{sessionId}/cubic-feet", method = RequestMethod.GET) public String getCubicFeet(@PathVariable(PulseConstants.SESSION_ID) int sessionId) throws PulseException { try { List> cubicFeet = sessionService.getCubicFeet(sessionId); return gson.toJson(cubicFeet.get(0)); } catch (Exception e) { throw new PulseException(PulseConstants.DEFAULT_SERVER_ERROR, e); } } /** * This method will return the list of sites per session * * @param sessionId * @return */ @Track @RequestMapping(value = "auth/sessions/{sessionId}/transmission-status", method = RequestMethod.GET) public String getSessionTransmissionStatus(@PathVariable(PulseConstants.SESSION_ID) int sessionId) throws PulseException { try { List sessionTransmissionStatuses = sessionService .getSessionTransmissionStatus(sessionId); return gson.toJson(sessionTransmissionStatuses); } catch (Exception e) { throw new PulseException(PulseConstants.DEFAULT_SERVER_ERROR, e); } } /** * @param ex * @return */ @ExceptionHandler(PulseException.class) @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) public String handleAppException(PulseException ex) { return gson.toJson(ex.getLocalizedMessage()); } @Track @RequestMapping(value = "auth/recreate-session/{sessionId}", method = RequestMethod.PUT) public String recreateSession(@JwtToken(PulseConstants.JWT_USER_DETAILS) JwtUserData jwtUserData, @PathVariable(PulseConstants.SESSION_ID) Integer sessionId) throws Exception { User user = userService.findUserByLogin(jwtUserData.getUsername()); String userAccessSites = adminService.getUserSiteList(jwtUserData.getUserId()); ActionResultItem resultItem = sessionService.recreateSession(user, sessionId, userAccessSites); Map map = new HashMap(); map.put(PulseConstants.SUCCESS_STR, resultItem.isSuccess()); map.put(PulseConstants.MESSAGE_STR, resultItem.getMessage()); if (resultItem.getItem() != null) map.put("item", gson.toJson(resultItem.getItem())); return gson.toJson(map); } @Track @RequestMapping(value = "auth/sessions/{sessionId}/declineOrderReturns", method = RequestMethod.PUT) public String declineOrderReturns(@JwtToken(PulseConstants.JWT_USER_DETAILS) JwtUserData jwtUserData, @PathVariable(PulseConstants.SESSION_ID) Integer sessionId, @RequestParam(required = true) Integer siteId, @RequestParam(required = true) Integer hierarchyId, @RequestParam(required = false) Boolean declineOrder, @RequestParam(required = false) Boolean declineReturn) { ActionResult result; try { User user = userService.findUserByLogin(jwtUserData.getUsername()); result = sessionService.declineOrderReturns(user, sessionId, siteId, hierarchyId, declineOrder, declineReturn); if (((declineOrder != null && !declineOrder) || (declineReturn != null && !declineReturn)) && systemService.isSystems(sessionId)) { systemService.setOutdatedStatus(sessionId); } } catch (PulseException e) { LOGGER.error("", e); result = new ActionResult(false); result.setMessage(PulseConstants.OPERATION_TIMEOUT); } return gson.toJson(result); } @Track @RequestMapping(value = "auth/sessions/{sessionId}/createImmediately", method = RequestMethod.PUT) public ActionResult createDeferredSessionImmediately(@PathVariable(PulseConstants.SESSION_ID) Integer sessionId) { return sessionService.createDeferredSessionImmediately(sessionId); } @Track @RequestMapping(value = "auth/get-min-max-safety-stock/",method = RequestMethod.GET) public String getMinMaxSafetyStock() throws PulseException{ return gson.toJson(sessionService.getMinMaxSafetyStock().getData()); } @Track @RequestMapping(value = "auth/get-min-max-order-cycle",method = RequestMethod.GET) public String getMinMaxOrderCycle() throws PulseException{ return gson.toJson(sessionService.getMinMaxOrderCycle().getData()); } @Track @RequestMapping(value = "auth/get-min-max-lead-time",method = RequestMethod.GET) public String getMinMaxLeadTime() throws PulseException{ return gson.toJson(sessionService.getMinMaxLeadTime().getData()); } @Track @RequestMapping(value = "auth/sessions/flag", method = RequestMethod.GET) public Boolean pulseDownTime() { return sessionService.pulseDownTime(); } }