public IEnumerable <ReturnFromClientWaybill> GetFilteredList(object state, User user, ParameterString param = null) { if (param == null) { param = new ParameterString(""); } Func <ISubCriteria <ReturnFromClientWaybill>, ISubCriteria <ReturnFromClientWaybill> > cond = null; switch (user.GetPermissionDistributionType(Permission.ReturnFromClientWaybill_List_Details)) { case PermissionDistributionType.None: return(new List <ReturnFromClientWaybill>()); case PermissionDistributionType.Personal: cond = x => { AddArticleRestriction(param, x); return(x.PropertyIn(y => y.Deal.Id, dealRepository.GetSubQueryForDealIdOnPersonalPermission(user.Id)).Select(y => y.Id)); }; break; case PermissionDistributionType.Teams: cond = x => { AddArticleRestriction(param, x); return(x.PropertyIn(y => y.Deal.Id, dealRepository.GetSubQueryForDealIdOnTeamPermission(user.Id)).Select(y => y.Id)); }; break; case PermissionDistributionType.All: break; } return(returnFromClientWaybillRepository.GetFilteredList(state, param, cond: cond)); }