Rev 35626 | View as "text/plain" | Blame | Compare with Previous | Last modification | View Log | RSS feed
package com.spice.profitmandi.dao.repository.cs;import com.spice.profitmandi.dao.entity.auth.AuthUser;import com.spice.profitmandi.dao.entity.cs.Ticket;import com.spice.profitmandi.dao.entity.cs.TicketSearchType;import com.spice.profitmandi.dao.entity.fofo.ActivityType;import com.spice.profitmandi.dao.enumuration.cs.EscalationType;import com.spice.profitmandi.dao.model.TicketViewModel;import org.springframework.stereotype.Repository;import javax.swing.*;import java.time.LocalDateTime;import java.util.List;import java.util.Map;import java.util.Optional;@Repositorypublic interface TicketRepository {void persist(Ticket ticket);Ticket selectById(int ticketId);List<Ticket> selectAllByAssignee(int assigneeId, Optional<Boolean> resolved, int offset, int limit);List<Ticket> selectAllByCreator(int creatorId, Optional<Boolean> resolved, SortOrder sortOrder);List<Ticket> selectAll(int offset, int limit, Optional<Boolean> resolved);List<Ticket> selectAllEscalated(Optional<Boolean> resolved, int offset, int limit);List<Ticket> selectAllEscalatedByCreator(int fofoId, Optional<Boolean> resolved, int offset, int limit);List<Ticket> selectAllEscalatedByAssignee(int assigneId, Optional<Boolean> resolved, int offset, int limit);public long selectAllCountByCreator(int creatorId, Optional<Boolean> resolved);public List<Ticket> selectAllByEscalatedUserType(int authUser, EscalationType escalationType, int offset, int limit);public long selectAllCountByEscalatedUserType(int authUser, EscalationType escalationType);public Long selectAllCount();public List<Ticket> selectAllNotClosedTickets();public List<Ticket> selectAllOpenTicketByRetailer(int fofoId);public Map<Integer, Long> selectAllOpenTicketsGroupByRetailer();public List<Ticket> selectAllByAssignee(int assigneeId, Optional<Boolean> resolved, SortOrder sortOrder, TicketSearchType ticketSearchType, int searchTerm);public List<Ticket> selectAllByTicketIds(List<Integer> ticketIds);public long selectAllCountByAssignee(int assigneeId, Optional<Boolean> resolved, TicketSearchType ticketSearchType, int searchTerm);public List<Ticket> selectAllManagerTicket(int authUserId, SortOrder sortOrder, Optional<Boolean> resolved, TicketSearchType ticketSearchType, int searchTerm);public long selectAllCountByManagerTicket(int authUserId, Optional<Boolean> resolved, TicketSearchType ticketSearchType, int searchTerm);public List<Ticket> selectAllResolvedMarkedTicketByCreator(int assigneeId);public List<Ticket> selectAllNotClosedTicketsWithStatus(ActivityType activityType);public Map<AuthUser, Long> selectAllAuthUserTicketCount(Optional<Boolean> resolved);List<Ticket> selectAllOpenTickets(List<Integer> fofoIds);List<Ticket> selectAllOpenTickets();public List<TicketViewModel> selectRecentClosedTicket(int fofoId, LocalDateTime startDate);/*** Select all tickets for CRM users with status and search filtering.* CRM users need to see ALL tickets to respond to partner communications.*/List<Ticket> selectAllTickets(Optional<Boolean> resolved, SortOrder sortOrder, TicketSearchType ticketSearchType, int searchTerm);long selectAllTicketsCount(Optional<Boolean> resolved, TicketSearchType ticketSearchType, int searchTerm);/*** Select all tickets with pagination, visibility filtering, and text search.* Visibility logic: Show ticket if subcategory.visibility=true OR subcategory.categoryId is in userCategoryIds.* Search covers: ticket ID, partner name, category name, subcategory name, creator name.*/List<Ticket> selectAllTicketsPaginated(Optional<Boolean> resolved,SortOrder sortOrder,TicketSearchType searchType,int searchTerm,String searchText,List<Integer> userCategoryIds,int offset,int limit);long selectAllTicketsPaginatedCount(Optional<Boolean> resolved,TicketSearchType searchType,int searchTerm,String searchText,List<Integer> userCategoryIds);/*** Select tickets assigned to a user with pagination and text search.*/List<Ticket> selectAllByAssigneePaginated(int assigneeId,Optional<Boolean> resolved,SortOrder sortOrder,TicketSearchType searchType,int searchTerm,String searchText,int offset,int limit);long selectAllByAssigneePaginatedCount(int assigneeId,Optional<Boolean> resolved,TicketSearchType searchType,int searchTerm,String searchText);/*** Select manager tickets with pagination and text search.*/List<Ticket> selectAllManagerTicketPaginated(int authUserId,SortOrder sortOrder,Optional<Boolean> resolved,TicketSearchType searchType,int searchTerm,String searchText,int offset,int limit);long selectAllCountByManagerTicketPaginated(int authUserId,Optional<Boolean> resolved,TicketSearchType searchType,int searchTerm,String searchText);/*** Get open ticket counts grouped by fofoId for specific fofoIds.* More efficient than fetching all tickets for all retailers.*/Map<Integer, Long> selectOpenTicketsCountByFofoIds(List<Integer> fofoIds);List<Ticket> selectOpenEscalatedTicketsByAuthIds(List<Integer> authIds);}