public IEnumerable <TransactionHeaderDTO> GetAll(SearchCriteria <TransactionHeaderDTO> criteria, out int totalCount) { totalCount = 0; IEnumerable <TransactionHeaderDTO> piList = new List <TransactionHeaderDTO>(); try { if (criteria != null && criteria.CurrentUserId != -1) { var warehouseList = new WarehouseService(true) .GetWarehousesPrevilegedToUser(criteria.CurrentUserId).ToList(); if (criteria.TransactionType == (int)TransactionTypes.TransferStock) { warehouseList = new WarehouseService(true).GetAll().ToList(); } if (criteria.SelectedWarehouseId != null) { warehouseList = warehouseList.Where(w => w.Id == criteria.SelectedWarehouseId).ToList(); } foreach (var warehouse in warehouseList.Where(w => w.Id != -1)) { var pdto = Get(); foreach (var cri in criteria.FiList) { pdto.FilterList(cri); } pdto.FilterList(p => p.TransactionType == (TransactionTypes)criteria.TransactionType); #region By Warehouse var warehouse1 = warehouse; pdto.FilterList(p => p.WarehouseId == warehouse1.Id); #endregion #region By Duration if (criteria.BeginingDate != null) { var beginDate = new DateTime(criteria.BeginingDate.Value.Year, criteria.BeginingDate.Value.Month, criteria.BeginingDate.Value.Day, 0, 0, 0); pdto.FilterList(p => p.TransactionDate >= beginDate); } if (criteria.EndingDate != null) { var endDate = new DateTime(criteria.EndingDate.Value.Year, criteria.EndingDate.Value.Month, criteria.EndingDate.Value.Day, 23, 59, 59); pdto.FilterList(p => p.TransactionDate <= endDate); } #endregion IList <TransactionHeaderDTO> pdtoList; if (criteria.Page != 0 && criteria.PageSize != 0 && criteria.PaymentListType == -1) { int totalCount2; pdtoList = pdto.GetPage(criteria.Page, criteria.PageSize, out totalCount2).ToList(); totalCount = totalCount2; } else { pdtoList = pdto.GetList().ToList(); totalCount = pdtoList.Count; } piList = piList.Concat(pdtoList).ToList(); } } else { piList = Get().Get().ToList(); } #region For Eager Loading Childs foreach (var transactionHeaderDto in piList) { var transactionLineDtos = (ICollection <TransactionLineDTO>)GetChilds(transactionHeaderDto.Id, false); } #endregion } finally { Dispose(_disposeWhenDone); } return(piList); }