Ejemplo n.º 1
0
        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);
        }