package com.napa.pulse.service.interfaces; import com.napa.pulse.dto.*; import com.napa.pulse.entity.pulseui.*; import com.napa.pulse.entity.security.User; import com.napa.pulse.dto.DashboardList; import com.napa.pulse.exception.PulseException; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletResponse; import java.math.BigDecimal; import java.util.Date; import java.util.List; import java.util.Map; /** * Business Service Implementation for the session * * @author Tathagata Bhattacharya Created: Feb 09, 2015 */ @Service public interface SessionService { /** * @param statusTypes * @param siteIds * @param siteGroups * @param statusIds * @param createdDates * @param createdByIds * @param user * @param userAccessSites * @param finalizeDateArray * @return * @throws Exception */ List> getSessionList(String[] statusTypes, Integer[] siteIds, Integer[] siteGroups, Integer[] statusIds, String[] createdDates, Integer[] createdByIds, User user, String userAccessSites, String[] finalizeDateArray) throws Exception; /** * @param user * @param userAccessSites * @return */ List> getAllSessions(User user, String userAccessSites); /** * @param transmissionId * @param type * @param newStatus * @return */ ActionResult updateSessionTransmissionStatusId(Integer transmissionId, String type, String newStatus); /** * @param user * @param sessionId * @return */ List getSessionDetails(User user, Integer sessionId); /** * @param user * @param perCarOrder * @param includeFleets * @param includeSystems * @param includeSpecials * @param includeObsoletes * @param includeOverstocks * @param includeKeylinesOrders * @param includeKeylinesReturns * @param includeLessThanStdPkg * @param useInvestmentCollections * @param provideStoreDepth * @param comment * @param siteGroupObj * @param sitesArray * @param productGroupsArray * @param fleetGroupsArray * @param customProducts * @param userAccessSites * @param skuArray * @param productLineIdArray * @param includeOrders * @param includeReturns * @param expirationDate * @param displayQty * @param sessionType * @param applicationPartsOnly * @return * @throws Exception */ ActionResultItem createNewSession(User user, Boolean perCarOrder, Boolean includeFleets, Boolean includeSystems, Boolean includeSpecials, Boolean includeObsoletes, Boolean includeOverstocks,String includeSupersede, Boolean includeKeylinesOrders, Boolean includeKeylinesReturns, Boolean includeLessThanStdPkg, Boolean useInvestmentCollections, Boolean provideStoreDepth, Boolean includeSoldNotStocked, Boolean includeNewNumbers, Boolean orderAllSkus, Integer dollarLimit, String comment, Integer siteGroupObj, Integer[] sitesArray, ProductGroupOrderReturn[] productGroupsArray,ProductGroupOrderReturn[] groupCodeArray, SiteFleet[] fleetGroupsArray, CustomProductGroup customProducts,CustomGroupCodeProductGroup customGroupCodeProductGroupObj,Boolean isGroupCode, String userAccessSites, Integer[] skuArray, ProductLinesData[] productLineIdArray,ProductLinesData[] allProductLines, Integer includeOrders, Integer includeReturns, Date expirationDate, String includeDaysCount, Integer perCarMinMaxValue,String salesHistoryValue,String displayQty, String sessionType, String includeHubSpokeOrderOption, String includeHubSpokeReturnOption, Boolean applicationPartsOnly) throws Exception; /** * @param userId * @param sessionId * @param transmissionArray * @return */ ActionResult finalizeSession(Integer userId, Integer sessionId, Transmission[] transmissionArray); /** * @param user * @param sessionId * @return */ ActionResultItem> getSessionTransmissions(User user, Integer sessionId); /** * @param user * @param sessionId * @return */ ActionResultItem> getSessionTransmissionsMinMax(User user, Integer sessionId); /** * @param orderReturn * @param transmissionId * @return */ ActionResult resendTransmission(String orderReturn, int transmissionId); /** * @param userId * @param sessionId * @return */ ActionResultItem>> getSessionSitesWithOrderReturn(Integer userId, Integer sessionId); /** * @param userId * @param sessionId * @param transmissions * @return */ ActionResult updateSessionTransmissions(Integer userId, Integer sessionId, Transmission[] transmissions); /** * @param sessionId * @return */ List> getSessionSites(int sessionId); /** * @param user * @param userAccessSites * @return */ Map getSessionTypesAndCount(User user, String userAccessSites); /** * @return */ List> getCreatedUserList(); /** * @param user * @return */ List> getSessionStatusList(User user); /** * @param user * @param userAccessSites * @return */ List> getSessionSiteList(User user, String userAccessSites); /** * @param sessionId * @param siteId * @param user * @return */ ActionResultItem> getHierarchyTreeForSession(int sessionId, int siteId, User user); /** * @param userId * @return */ List> getSessionSiteGroupList(Integer userId); /** * @param sessionId * @param pageNumber * @param numberOfRecordsPerPage * @param sortBy * @param sortingOrder * @param isReturns * @param isOrders * @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 hierarchyLevel * @param response * @param user * @throws Exception */ void getSessionDashboardData(Integer sessionId, Integer pageNumber, Integer numberOfRecordsPerPage, String sortBy, String sortingOrder, Boolean isReturns, Boolean isOrders, Boolean isInSession, Integer siteId, Integer level, Integer hierarchyId, String exportType, Boolean isUnReviewed, Boolean aggressiveLeft, Boolean aggressiveRight, Boolean dnsCount, Boolean sjCount, Boolean highSkuEdit, Integer highSkuEditHierarchyId, Boolean isDeclineOrder, Boolean isDeclineReturn, Integer hierarchyLevel, HttpServletResponse response, User user) throws Exception; /** * @param sessionId * @param isMinMaxSkus * @param minMaxSiteIds * @param minMaxLineAbbr * @param sortBy * @param sortingOrder * @param pageNumber * @param numberOfRecordsPerPage * @param response * @param user * @throws Exception */ void getMinMaxSessionDashboardData(Integer sessionId, String minMaxSiteIds, String minMaxLineAbbr, String minMaxGroupCode,Boolean minMaxisReviewed , String isMinMaxSkus,String sortBy, String sortingOrder, Integer pageNumber, Integer numberOfRecordsPerPage, String exportType, HttpServletResponse response, User user) throws Exception; /** * @param sessionId * @param dashboardListArr * @return */ ActionResultItem>> updateSkuDashboardTableSetReviewedList(Integer sessionId, DashboardList[] dashboardListArr); /** * @param skuDashboardTableData * @return */ ActionResultItem>> updateSkuDashboardTableSetReviewedFilter(SKUDashboardTableData skuDashboardTableData); /** * @param sessionType * @param user * @return */ int getSessionTypeCount(String sessionType, User user); /** * @param responsibleUserAccessSites * @return */ int getPendingTransmissions(String responsibleUserAccessSites); /** * @return */ int getActiveUserCount(); /** * @param responsibleUserAccessSites * @return */ int getOverdueReturn(String responsibleUserAccessSites); /** * @param user * @return */ int getPendingApprovals(User user); /** * @param sessionId * @return */ List> getSessionOrderReturnTotals(int sessionId); /** * @param sessionId * @return */ List> getSessionOrderReturnTotalsDetails(int sessionId); /** * @param sessionId * @param isOrders * @param isReturns * @param isInSession * @param siteId * @param hierarchyId * @param hierarchyLevel * @return */ List> getRecommendationChart(int sessionId, boolean isOrders, boolean isReturns, Boolean isInSession, Integer siteId, Integer hierarchyId, Integer hierarchyLevel); /** * @param sessionId * @param user * @return */ List> getHierarchicalNames(Integer sessionId, User user); /** * @param sessionId * @param hierarchyId * @param user * @return */ List> getHierarchicalNames(Integer sessionId, Integer hierarchyId, User user); /** * @param sessionId * @param isMinMaxSkus * @param minMaxSiteIds * @param minMaxLineAbbr * @return */ Integer getMinMaxSessionDashboardCnt(int sessionId, String minMaxSiteIds, String minMaxLineAbbr, String mimMaxGroupCode, Boolean minMaxisReviewed,String isMinMaxSkus); /** * @param sessionId * @param isReturns * @param isOrders * @param isInSession * @param siteId * @param level * @param hierarchyId * @param isUnreviewed * @param aggressiveLeft * @param aggressiveRight * @param dnsCount * @param sjCount * @param highSkuEdit * @param highSkuEditHierarchyId * @param isDeclineOrder * @param isDeclineReturn * @param hierarchyLevel * @return */ Integer getSessionDashboardCnt(int sessionId, boolean isReturns, boolean isOrders, Boolean isInSession, Integer siteId, Integer level, Integer hierarchyId, Boolean isUnreviewed, Boolean aggressiveLeft, Boolean aggressiveRight, Boolean dnsCount, Boolean sjCount, Boolean highSkuEdit, Integer highSkuEditHierarchyId, Boolean isDeclineOrder, Boolean isDeclineReturn, Integer hierarchyLevel); /** * @param siteId * @param hierarchyId * @return */ List> getInventoryHistory(Integer siteId, Integer hierarchyId); /** * @param sessionId * @param isOrders * @param isReturns * @param isInSession * @param siteId * @param hierarchyId * @return */ List> getInventoryHistory(int sessionId, boolean isOrders, boolean isReturns, Boolean isInSession, Integer siteId, Integer hierarchyId); /** * @param sessionId * @param siteId * @param parentId * @return */ List getSessionSiteParameters(Integer sessionId, Integer siteId, Integer parentId); /** * @param sessionId * @param siteId * @param nodeIds * @return */ List getSessionSiteParameters(Integer sessionId, Integer siteId, Integer[] nodeIds); /** * @param sessionId * @param user * @return */ String getSessionState(Integer sessionId, User user); /** * @param sessionId * @param userId * @return */ ActionResult deleteSession(int sessionId, int userId); /** * @param sessionId * @param userId * @param userAccessSites * @return */ boolean validateUserSessionAccess(Integer sessionId, Integer userId, String userAccessSites); /** * @param siteGroupObj * @param userAccessSites * @return */ boolean checkEmptySiteGroup(Integer siteGroupObj, String userAccessSites); /** * @param sessionId * @return */ List sessionReviewPreferenceSettings(int sessionId); /** * @param sessionId * @param comment * @param expirationDate * @throws Exception */ void updateSessionComment(int sessionId, String comment, String expirationDate) throws Exception; /** * @param sessionId * @param productGroupId * @param user * @return */ ActionResultItem> getSelectedProductTree(Integer sessionId, Integer productGroupId, User user); ActionResultItem>> getSelectedGroupCodes(Integer sessionId, Integer productGroupId, User user); /** * @param sessionId * @return */ List> getProductGroupsForSession(Integer sessionId); /** * @param sessionId * @return */ List getFleetGroupsForSession(Integer sessionId); /** * @param skusArray * @return * @throws Exception */ Object[] validateSKUs(SKUValidationDTO[] skusArray,Integer id,Boolean isCustomSelection) throws Exception; /** * @param sessionId * @return */ List> getExecutiveSummaryData(int sessionId); /** * @param sessionId * @return */ List> getCustomSkuSessionProducts(int sessionId); /** * @return */ List> getMinMaxSessionProducts(Integer[] siteId); /** * @param sessionId * @return */ List> getMinMaxSessionSelectedProducts(int sessionId); List> getDropdownSites(List accessSites); /** * @param sessionId * @return */ String getMinMaxSessionAdditionalSettings(int sessionId); /** * @param sessionId * @return */ List> getMinMaxSessionUnselectedProducts(int sessionId); /** * @param user * @param sessionId * @param siteId * @param partNumber * @param minQty * @param maxQty * @param fieldAbbr * @return * @throws PulseException */ ActionResultItem>> saveMinMax(User user, Integer sessionId, Integer siteId, String partNumber, Integer minQty, Integer maxQty, String fieldAbbr) throws PulseException; /** * @param sessionId * @return */ List> getCubicFeet(int sessionId); /** * @param sessionId * @param requestDatesArr * @param messageText * @param user * @return */ ActionResult requestFinalizeSession(int sessionId, RequestDatesDTO[] requestDatesArr, String messageText, User user); /** * @param sessionId * @param reasonText * @param userId * @return */ ActionResult rejectFinalizeSession(int sessionId, String reasonText, int userId); /** * @param sessionId * @return */ SessionModificationInfoDTO wasSessionModified(int sessionId); /** * @param sessionId * @return * @throws Exception */ void updateSession(int sessionId) throws Exception; /** * @param sessionId * @return */ List getSessionTransmissionStatus(Integer sessionId); /** * @param user * @return */ List getFailedTransmissions(User user); /** * @param user * @param sessionId * @param userAccessSites * @return * @throws Exception */ ActionResultItem recreateSession(User user, Integer sessionId, String userAccessSites) throws Exception; /** * @param user * @return */ List getExpiringSessions(User user); /** * @param user * @param sessionId * @param siteId * @param hierarchyId * @param declineOrder * @param declineReturn * @return * @throws PulseException */ ActionResult declineOrderReturns(User user, Integer sessionId, Integer siteId, Integer hierarchyId, Boolean declineOrder, Boolean declineReturn) throws PulseException; /** * @param sessionId * @return */ boolean revertDeclineOrderReturns(int sessionId); /** * @param sessionId * @return */ ActionResult createDeferredSessionImmediately(int sessionId); /** * @param user * @return */ SessionLimit getSessionlimits(User user); /** * @param key * @param type * @return */ String getEasyLink(String key, String type); /** * @param siteGroupObj * @param sitesArray * @return */ List getSitelimits(Integer siteGroupObj, Integer[] sitesArray); ActionResult resendTransmissionMinmax(Integer transmissionId); ActionResult getMinMaxSafetyStock(); ActionResult getMinMaxOrderCycle(); ActionResult getMinMaxLeadTime(); }