using MMDAL.DTO.Casting; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace MMDAL.Query.ItemParty { public static class ItemPartyQB { // Paged + filterable SelectList — mirrors the FirstNumber/MaxResult + CriteriaDTO // pattern used by MMHeadDAL.GetSelectListForDocument (skip/take over a ROW_NUMBER // window, -1/-1 sentinel bypasses paging entirely). public const string GET_SELECTLIST_ITEMPARTY = @" WITH PagedItemParty AS ( SELECT A.ITEMPARTYID AS Id, A.ITEMPARTYCODE AS Code, A.ITEMPARTYNAME AS Name, A.PARTYSTATUS AS DetailId, ROW_NUMBER() OVER (ORDER BY A.ITEMPARTYNAME) AS RowNum FROM MITEMPARTY A WHERE (@itemid IS NULL OR A.ITEMID = @itemid) AND (@partyid IS NULL OR A.PARTYID = @partyid) AND (@processid IS NULL OR A.PROCESSID = @processid) AND (@status IS NULL OR A.STATUS = @status) AND (@code IS NULL OR A.ITEMPARTYCODE LIKE '%' + @code + '%') AND (@name IS NULL OR A.ITEMPARTYNAME LIKE '%' + @name + '%') ) SELECT Id, Code, Name, DetailId FROM PagedItemParty WHERE (@skip = -1 AND @take = -1) OR (RowNum > @skip AND RowNum <= (@skip + @take)) ORDER BY RowNum;"; } }