protected override void ApplyFilters(object query, List<SourceFilter> filters, CommerceSourceContext context) { var byCurrentCustomer = filters.Find(f => f.Name == "ByCurrentCustomer"); if (byCurrentCustomer != null) { filters.Remove(byCurrentCustomer); var httpContext = new HttpContextWrapper(HttpContext.Current); var member = httpContext.Membership().GetMembershipUser(); if (member != null && !String.IsNullOrWhiteSpace(member.UUID)) { filters.Add(new SourceFilter("ByAccountId") { ParameterValues = new Dictionary<string, object> { { "accountId", member.UUID } } }); } else { // TODO: What if frontend dev use a different cart session generation mechanism? filters.Add(new SourceFilter("BySessionId") { ParameterValues = new Dictionary<string, object> { { "sessionId", httpContext.Session.SessionID } } }); } } base.ApplyFilters(query, filters, context); }