public async Task <FilterExDecDto> GetExDecsByFilterSoldAndExdecList(FilterExDecDto filterExDecDto) { var asQueryable = _exDeclarationRepository .GetEntities() .AsQueryable(); if (filterExDecDto.SearchText != null || !(string.IsNullOrWhiteSpace(filterExDecDto.SearchText))) { asQueryable = asQueryable.Where(x => x.ExchangeDeclarationCode.Contains(filterExDecDto.SearchText.Trim())); } asQueryable = asQueryable.OrderByDescending(x => x.ExprireDate); var count = (int)Math.Ceiling(asQueryable.Count() / (double)filterExDecDto.TakeEntity); var pager = Pager.Builder(count, filterExDecDto.PageId, filterExDecDto.TakeEntity); var exdecs = await asQueryable.Paging(pager).ToListAsync(); filterExDecDto.ExDecRemaind = new List <ExDecRemaindDto>(); foreach (var item in exdecs) { var soldExCode = await _saleDetailRepository.GetSumExCodeUsedById(item.Id); filterExDecDto.ExDecRemaind.Add(new ExDecRemaindDto() { ExCode = item.ExchangeDeclarationCode, ExpireDate = item.ExprireDate, Price = item.Price, Qty = item.Qty, SoldPrice = soldExCode, RemaindPrice = item.Price - soldExCode, Id = item.Id, Description = item.Description }); } return(filterExDecDto.SetExDec(filterExDecDto.ExDecRemaind).SetPaging(pager)); }
public async Task <FilterPiDetailDto> GetPiesByFiltersList(FilterPiDetailDto filterPiDetailDto) { var asQueryable = piDetailRepository .GetEntities() .Where(x => x.PeroformaInvoiceId == filterPiDetailDto.PiId) .AsQueryable(); //if (filterPiDetailDto.SearchText != null || !(string.IsNullOrWhiteSpace(filterPiDetailDto.SearchText))) //{ // asQueryable = asQueryable.Where(x => x.PiCode.Contains(filterPiDto.SearchText.Trim())); //} var count = (int)Math.Ceiling(asQueryable.Count() / (double)filterPiDetailDto.TakeEntity); var pager = Pager.Builder(count, filterPiDetailDto.PageId, filterPiDetailDto.TakeEntity); var list = asQueryable.Paging(pager).ToList(); filterPiDetailDto.PiDetailDtos = new List <PiDetailDto>(); foreach (var item in list) { filterPiDetailDto.PiDetailDtos.Add(new PiDetailDto() { BrokerId = item.BrokerId, PiId = item.PeroformaInvoiceId, DepositDate = item.DepositDate, DepositPrice = item.DepositPrice, Id = item.Id, IsSold = item.IsSold }); } return(filterPiDetailDto.SetPiDetails(filterPiDetailDto.PiDetailDtos).SetPaging(pager)); }
public async Task <FilterCustomerDto> GetCustomersByFiltersList(FilterCustomerDto filterCustomerDto) { var cuastomerList = customerRepository.GetEntities().AsQueryable(); if (filterCustomerDto.SearchText != null || !(string.IsNullOrEmpty(filterCustomerDto.SearchText))) { cuastomerList = cuastomerList.Where(x => x.Title.Contains(filterCustomerDto.SearchText.Trim()) || x.Name.Contains(filterCustomerDto.SearchText.Trim())); } var count = (int)Math.Ceiling(cuastomerList.Count() / (double)filterCustomerDto.TakeEntity); var pager = Pager.Builder(count, filterCustomerDto.PageId, filterCustomerDto.TakeEntity); var customers = await cuastomerList.Paging(pager).ToListAsync(); filterCustomerDto.CustomerDtos = new List <CustomerDto>(); foreach (var item in customers) { filterCustomerDto.CustomerDtos.Add(new CustomerDto { Title = item.Title.SanitizeText(), Name = item.Name.SanitizeText(), Phone = item.Phone.SanitizeText(), Address = item.Address.SanitizeText(), Description = item.Description.SanitizeText(), Id = item.Id }); } return(filterCustomerDto.SetCustomer(filterCustomerDto.CustomerDtos).SetPaging(pager)); }
public async Task <FilterCurrSaleExDecDto> GetListExDecSalesByExdecId(FilterCurrSaleExDecDto filterDto) { var asQueryable = _currencySaleExDecRepository .GetEntities() .Where(x => x.ExDeclarationId == filterDto.Id) .AsQueryable(); var count = (int)Math.Ceiling(asQueryable.Count() / (double)filterDto.TakeEntity); var pager = Pager.Builder(count, filterDto.PageId, filterDto.TakeEntity); var list = await asQueryable.Paging(pager).ToListAsync(); filterDto.CurrencySaleExDecs = new List <CurrencySaleExDecDto>(); foreach (var item in list) { var currencySaleItem = await _currencySaleRepository.GetCurrencyByIdIncludesCustomerAndBroker(item.CurrencySaleId); var exDec = await _exdeclarationRepository.GetEntityById(item.ExDeclarationId); filterDto.CurrencySaleExDecs.Add(new CurrencySaleExDecDto() { Id = item.Id, CurrSaleDate = currencySaleItem.SaleDate, BrokerName = currencySaleItem.Broker.Name + " (" + currencySaleItem.Broker.Title + ") ", CustomerName = currencySaleItem.Customer.Name, ExDecCode = exDec.ExchangeDeclarationCode, Price = item.Price }); } return(filterDto.SetCurrencySaleExDec(filterDto.CurrencySaleExDecs).SetPaging(pager)); }
public async Task <FilterBrokerDto> GetBrokersByFiltersList(FilterBrokerDto filterBrokerDto) { var cuastomerList = brokerRepository.GetEntities().AsQueryable(); if (filterBrokerDto.SearchText != null || !(string.IsNullOrEmpty(filterBrokerDto.SearchText))) { cuastomerList = cuastomerList.Where(x => x.Title.Contains(filterBrokerDto.SearchText.Trim()) || x.Name.Contains(filterBrokerDto.SearchText.Trim())); } var count = (int)Math.Ceiling(cuastomerList.Count() / (double)filterBrokerDto.TakeEntity); var pager = Pager.Builder(count, filterBrokerDto.PageId, filterBrokerDto.TakeEntity); var brokers = await cuastomerList.Paging(pager).ToListAsync(); filterBrokerDto.BrokerDtos = new List <BrokerDto>(); foreach (var item in brokers) { filterBrokerDto.BrokerDtos.Add(new BrokerDto { Title = item.Title, Name = item.Name, Tel = item.Tel, Address = item.Address, Description = item.Description, ServiceChargeAccount = item.ServiceChargeAccount, ServiceChargeCash = item.ServiceChargeCash, Id = item.Id }); } return(filterBrokerDto.SetBroker(filterBrokerDto.BrokerDtos).SetPaging(pager)); }
public async Task <FilterPiDto> GetPiesByFiltersList(FilterPiDto filterPiDto) { IQueryable <PeroformaInvoice> asQueryable; if (filterPiDto.IsRemaindPriceZero == "1") { asQueryable = piRepository .GetEntities() .Where(x => x.TotalPrice != (piDetailRepository.GetEntities() .Where(d => d.PeroformaInvoiceId == x.Id && !d.IsDelete) .Sum(x => x.DepositPrice))) .AsQueryable(); } else { asQueryable = piRepository .GetEntities() .AsQueryable(); } asQueryable = asQueryable.OrderByDescending(x => x.PiDate); var count = (int)Math.Ceiling(asQueryable.Count() / (double)filterPiDto.TakeEntity); var pager = Pager.Builder(count, filterPiDto.PageId, filterPiDto.TakeEntity); var peroformaInvoices = await asQueryable.Paging(pager).ToListAsync(); filterPiDto.PiRemaind = new List <PiRemaindDto>(); foreach (var item in peroformaInvoices) { var payDetails = await piDetailService.GetTotalAamountReceivedFromTheCustomer(item.Id); var customer = item.CommodityCustomerId != null ? await customerRepository.GetEntityById((long)item.CommodityCustomerId) : null; var customerName = customer == null ? null : customer.Name; //if (PayDetails < item.TotalPrice) //{ filterPiDto.PiRemaind.Add(new PiRemaindDto() { BasePrice = item.BasePrice, PiCode = item.PiCode, TotalPrice = item.TotalPrice, PiDate = item.PiDate, RemaindPrice = item.TotalPrice - payDetails, SoldPrice = payDetails, Id = item.Id, CustomerName = customerName }); //} } if (filterPiDto.SearchText != null || !(string.IsNullOrWhiteSpace(filterPiDto.SearchText))) { filterPiDto.PiRemaind = filterPiDto.PiRemaind.Where(x => x.PiCode.Contains(filterPiDto.SearchText.Trim()) || x.TotalPrice.ToString().Contains(filterPiDto.SearchText.Trim()) || x.RemaindPrice.ToString().Contains(filterPiDto.SearchText.Trim())).ToList(); } return(filterPiDto.SetPies(filterPiDto.PiRemaind).SetPaging(pager)); }
public async Task <FilterPiDetailCompleteDto> GetPiPayList(FilterPiDetailCompleteDto filterPiDetailDto) { var asQueryable = piDetailRepository .GetEntities() .AsQueryable(); #region Filter - From To Sale Date if (!string.IsNullOrWhiteSpace(filterPiDetailDto.FromDateSale) && !string.IsNullOrWhiteSpace(filterPiDetailDto.ToDateSale)) { var from = Convert.ToDateTime(filterPiDetailDto.FromDateSale); var to = Convert.ToDateTime(filterPiDetailDto.ToDateSale); asQueryable = asQueryable.Where(x => x.DepositDate >= from && x.DepositDate < to); //currencyAsQueryable = currencyAsQueryable.Where(x => x.SaleDate < DateTime.Today); } #endregion asQueryable = asQueryable.OrderByDescending(x => x.DepositDate); var count = (int)Math.Ceiling(asQueryable.Count() / (double)filterPiDetailDto.TakeEntity); var pager = Pager.Builder(count, filterPiDetailDto.PageId, filterPiDetailDto.TakeEntity); var list = asQueryable.Paging(pager).ToList(); filterPiDetailDto.PiDetailDtos = new List <PiDetailCompleteDto>(); foreach (var item in list) { var broker = await _brokerRepository.GetEntityById(item.BrokerId); var pi = await piRepository.GetEntityById(item.PeroformaInvoiceId); var customer = pi.CommodityCustomerId != null ? await customerRepository.GetEntityById((long)pi.CommodityCustomerId) : null; var customerName = customer == null ? null : customer.Name; filterPiDetailDto.PiDetailDtos.Add(new PiDetailCompleteDto() { BrokerId = item.BrokerId, PiId = item.PeroformaInvoiceId, DepositDate = item.DepositDate, DepositPrice = item.DepositPrice, Id = item.Id, IsSold = item.IsSold, BrokerName = broker.Name + "(" + broker.Title + ")", PiCode = pi.PiCode, TotalPrice = pi.TotalPrice, CustomerName = customerName }); } if (filterPiDetailDto.SearchText != null || !(string.IsNullOrWhiteSpace(filterPiDetailDto.SearchText))) { filterPiDetailDto.PiDetailDtos = filterPiDetailDto.PiDetailDtos.Where(x => x.PiCode.Contains(filterPiDetailDto.SearchText.Trim()) || x.BrokerName.Contains(filterPiDetailDto.SearchText.Trim()) || x.DepositPrice.ToString().Contains(filterPiDetailDto.SearchText.Trim()) || x.TotalPrice.ToString().Contains(filterPiDetailDto.SearchText)) //|| x.CustomerName.Contains(filterPiDetailDto.SearchText.Trim()) .ToList(); } return(filterPiDetailDto.SetPiDetails(filterPiDetailDto.PiDetailDtos).SetPaging(pager)); }
public async Task <FilterCurrSalePiDto> GetListPiSalesByCurrencyId(FilterCurrSalePiDto filterDto) { var asQueryable = _currPiDetailRepository .GetEntities() .Include(X => X.CurrencySale) .Where(x => x.CurrencySaleId == filterDto.Id) .AsQueryable(); if (filterDto.SearchText != null || !(string.IsNullOrEmpty(filterDto.SearchText))) { asQueryable = asQueryable.Include(x => x.PeroformaInvoiceDetails) .Include(c => c.PeroformaInvoiceDetails.PeroformaInvoice) .Where(d => d.PeroformaInvoiceDetails.PeroformaInvoice.PiCode.Contains(filterDto.SearchText.Trim())); } var count = (int)Math.Ceiling(asQueryable.Count() / (double)filterDto.TakeEntity); var pager = Pager.Builder(count, filterDto.PageId, filterDto.TakeEntity); var list = await asQueryable.Paging(pager).ToListAsync(); filterDto.CurrencySaleDetailPi = new List <CurrencySaleDetailPiDto>(); foreach (var item in list) { var currencySaleItem = await _currencySaleRepository.GetCurrencyByIdIncludesCustomerAndBroker(item.CurrencySaleId); var piDetail = await _piDetailRepository.GetEntityById(item.PeroformaInvoiceDetailId ?? 1); var pi = await _piRepository.GetEntityById(piDetail.PeroformaInvoiceId); filterDto.CurrencySaleDetailPi.Add(new CurrencySaleDetailPiDto() { Id = item.Id, BrokerName = currencySaleItem.Broker.Name + " (" + currencySaleItem.Broker.Title + ") ", CurrSaleDate = currencySaleItem.SaleDate, CustomerName = currencySaleItem.Customer.Name, Price = item.Price, ProfitLossAmount = item.ProfitLossAmount, PiCode = pi.PiCode, PiDetailPrice = piDetail.DepositPrice, SellPriceCurrency = item.CurrencySale.SalePricePerUnit, SellPriceCommodity = pi.BasePrice }); } return(filterDto.SetCurrencySaleExDec(filterDto.CurrencySaleDetailPi).SetPaging(pager)); }
public async Task <FilterCurrSaleExDecDto> GetListExDecSalesByCurrencyId(FilterCurrSaleExDecDto filterDto) { var currencyExdecAsQueryable = _currencySaleExDecRepository .GetEntities() .Where(x => x.CurrencySaleId == filterDto.Id) .AsQueryable(); if (filterDto.SearchText != null || !(string.IsNullOrEmpty(filterDto.SearchText))) { currencyExdecAsQueryable = currencyExdecAsQueryable .Include(s => s.CurrencySale) .Include(x => x.CurrencySale.Customer) .Include(c => c.CurrencySale.Broker) .Include(c => c.ExDeclaration) .Where(x => x.CurrencySale.Customer.Name.Contains(filterDto.SearchText.Trim()) || x.CurrencySale.Customer.Title.Contains(filterDto.SearchText.Trim()) || x.CurrencySale.Broker.Name.Contains(filterDto.SearchText.Trim()) || x.ExDeclaration.ExchangeDeclarationCode.Contains(filterDto.SearchText.Trim()) ); } var count = (int)Math.Ceiling(currencyExdecAsQueryable.Count() / (double)filterDto.TakeEntity); var pager = Pager.Builder(count, filterDto.PageId, filterDto.TakeEntity); var list = await currencyExdecAsQueryable.Paging(pager).ToListAsync(); filterDto.CurrencySaleExDecs = new List <CurrencySaleExDecDto>(); foreach (var item in list) { var currencySaleItem = await _currencySaleRepository.GetCurrencyByIdIncludesCustomerAndBroker(item.CurrencySaleId); var exDec = await _exdeclarationRepository.GetEntityById(item.ExDeclarationId); filterDto.CurrencySaleExDecs.Add(new CurrencySaleExDecDto() { Id = item.Id, CurrSaleDate = currencySaleItem.SaleDate, BrokerName = currencySaleItem.Broker.Name + " (" + currencySaleItem.Broker.Title + ") ", CustomerName = currencySaleItem.Customer.Name, ExDecCode = exDec.ExchangeDeclarationCode, ExDecPrice = exDec.Price, Price = item.Price }); } return(filterDto.SetCurrencySaleExDec(filterDto.CurrencySaleExDecs).SetPaging(pager)); }
public async Task <FilterCurrSalePiDto> GetListExDecSalesByPiDetailId(FilterCurrSalePiDto filterDto) { var piDetailIdList = _piDetailRepository .GetEntities() .Where(x => x.PeroformaInvoiceId == filterDto.Id) .Select(x => x.Id); var asQueryable = _currPiDetailRepository .GetEntities() .Include(X => X.CurrencySale) .Where(x => piDetailIdList.Contains((long)x.PeroformaInvoiceDetailId)) .AsQueryable(); //var listOfRoleId = user.Roles.Select(r => r.RoleId); //var roles = db.Roles.Where(r => listOfRoleId.Contains(r.RoleId)); var count = (int)Math.Ceiling(asQueryable.Count() / (double)filterDto.TakeEntity); var pager = Pager.Builder(count, filterDto.PageId, filterDto.TakeEntity); var list = await asQueryable.Paging(pager).ToListAsync(); filterDto.CurrencySaleDetailPi = new List <CurrencySaleDetailPiDto>(); foreach (var item in list) { var currencySaleItem = await _currencySaleRepository.GetCurrencyByIdIncludesCustomerAndBroker(item.CurrencySaleId); var peroformaInvoice = await _piRepository.GetEntityById(filterDto.Id); filterDto.CurrencySaleDetailPi.Add(new CurrencySaleDetailPiDto() { Id = item.Id, BrokerName = currencySaleItem.Broker.Name + " (" + currencySaleItem.Broker.Title + ") ", CurrSaleDate = currencySaleItem.SaleDate, CustomerName = currencySaleItem.Customer.Name, Price = item.Price, ProfitLossAmount = item.ProfitLossAmount, PiCode = peroformaInvoice.PiCode, SellPriceCurrency = item.CurrencySale.SalePricePerUnit, SellPriceCommodity = peroformaInvoice.BasePrice }); } return(filterDto.SetCurrencySaleExDec(filterDto.CurrencySaleDetailPi).SetPaging(pager)); }
//public async Task<FilterGenericDto<PiRemaindDto>> GetPiesByFiltersList(FilterGenericDto<PiRemaindDto> filterPiDto) //{ // var asQueryable = piRepository // .GetEntities() // .Where(x => !x.IsSold) // .AsQueryable(); // if (filterPiDto.SearchText != null || !(string.IsNullOrWhiteSpace(filterPiDto.SearchText))) // { // asQueryable = asQueryable.Where(x => x.PiCode.Contains(filterPiDto.SearchText.Trim())); // } // var count = (int)Math.Ceiling(asQueryable.Count() / (double)filterPiDto.TakeEntity); // var pager = Pager.Builder(count, filterPiDto.PageId, filterPiDto.TakeEntity); // var peroformaInvoices = await asQueryable.Paging(pager).ToListAsync(); // filterPiDto.Entities = new List<PiRemaindDto>(); // foreach (var item in peroformaInvoices) // { // var payDetails = await piDetailService.GetTotalAamountReceivedFromTheCustomer(item.Id); // //if (PayDetails < item.TotalPrice) // //{ // filterPiDto.Entities.Add(new PiRemaindDto() // { // BasePrice = item.BasePrice, // PiCode = item.PiCode, // TotalPrice = item.TotalPrice, // PiDate = item.PiDate, // RemaindPrice = item.TotalPrice - payDetails, // SoldPrice = payDetails, // Id = item.Id // }); // //} // } // return filterPiDto.SetEntitiesDto(filterPiDto.Entities).SetPaging(pager); //} #region GetAll public async Task <FilterPiDto> GetPiesByFiltersIsSold(FilterPiDto filterPiDto) { var asQueryable = piRepository .GetEntities() .AsQueryable(); if (filterPiDto.SearchText != null || !(string.IsNullOrWhiteSpace(filterPiDto.SearchText))) { asQueryable = asQueryable.Where(x => x.PiCode.Contains(filterPiDto.SearchText.Trim())); } asQueryable = asQueryable.OrderByDescending(x => x.PiDate); var count = (int)Math.Ceiling(asQueryable.Count() / (double)filterPiDto.TakeEntity); var pager = Pager.Builder(count, filterPiDto.PageId, filterPiDto.TakeEntity); var peroformaInvoices = await asQueryable.Paging(pager).ToListAsync(); filterPiDto.PiRemaind = new List <PiRemaindDto>(); foreach (var item in peroformaInvoices) { var payDetails = await piDetailService.GetTotalAamountReceivedFromTheCustomer(item.Id); //if (PayDetails < item.TotalPrice) //{ filterPiDto.PiRemaind.Add(new PiRemaindDto() { BasePrice = item.BasePrice, PiCode = item.PiCode, TotalPrice = item.TotalPrice, PiDate = item.PiDate, RemaindPrice = item.TotalPrice - payDetails, SoldPrice = payDetails, Id = item.Id }); //} } return(filterPiDto.SetPies(filterPiDto.PiRemaind).SetPaging(pager)); }
public async Task <FilterCurrencyCustomerDto> GetSoldPerCustomers(FilterCurrencyCustomerDto filterDto, long financialPeriodId) { var asQueryableEntity = _customerRepository .GetEntities() .Include(x => x.CurrencySale) .Where(c => c.CurrencySale.Any(x => x.CustomerId == c.Id)) .AsQueryable(); if (filterDto.SearchText != null || !(string.IsNullOrEmpty(filterDto.SearchText))) { asQueryableEntity = asQueryableEntity.Where(x => x.Title.Contains(filterDto.SearchText.Trim()) || x.Name.Contains(filterDto.SearchText.Trim())); } var count = (int)Math.Ceiling(asQueryableEntity.Count() / (double)filterDto.TakeEntity); var pager = Pager.Builder(count, filterDto.PageId, filterDto.TakeEntity); var list = await asQueryableEntity.Paging(pager).ToListAsync(); filterDto.Entities = new List <CurrencyCustomerDto>(); foreach (var item in list) { var totalBuy = await _saleRepository.GetTotalCurrencyByCustomerId(item.Id, financialPeriodId); if (totalBuy > 0) { filterDto.Entities.Add(new CurrencyCustomerDto() { Title = item.Title.SanitizeText(), Name = item.Name.SanitizeText(), Phone = item.Phone.SanitizeText(), Address = item.Address.SanitizeText(), Id = item.Id, SoldAmount = totalBuy }); } } return((FilterCurrencyCustomerDto)filterDto.SetEntitiesDto(filterDto.Entities).SetPaging(pager)); }
public async Task <FilterCurrSaleCustomerListDto> GetListSalesByCustomerId(long customerId, long financialPeriodId) { var financial = await _financialPeriodRepository.GetEntityById(financialPeriodId); var filterOutput = new FilterCurrSaleCustomerListDto(); var currencyAsQueryable = _saleRepository .GetEntities() .Where(x => x.CustomerId == customerId && (x.SaleDate >= financial.FromDate && x.SaleDate < financial.ToDate)) .AsQueryable(); currencyAsQueryable = currencyAsQueryable.OrderByDescending(x => x.SaleDate); var count = (int)Math.Ceiling(currencyAsQueryable.Count() / (double)filterOutput.TakeEntity); var pager = Pager.Builder(count, filterOutput.PageId, filterOutput.TakeEntity); var list = await currencyAsQueryable.Paging(pager).ToListAsync(); filterOutput.Entities = new List <CurrencySaleDto>(); foreach (var item in list) { var currencySaleItem = await _saleRepository.GetCurrencyByIdIncludesCustomerAndBroker(item.Id); var sumProfit = await _salePiDetailRepository.GetSumProfitLost(item.Id); filterOutput.Entities.Add(new CurrencySaleDto { Id = item.Id, BrokerName = currencySaleItem.Broker.Name + " (" + currencySaleItem.Broker.Title + ") ", CurrSaleDate = currencySaleItem.SaleDate, CustomerName = currencySaleItem.Customer.Name, Price = item.SalePrice, ProfitLossAmount = sumProfit, SalePricePerUnit = item.SalePricePerUnit, TransferPrice = item.TransferPrice, }); } return((FilterCurrSaleCustomerListDto)filterOutput.SetEntitiesDto(filterOutput.Entities).SetPaging(pager)); }
public async Task <FilterCurrSaleDto> GetListSales(FilterCurrSaleDto filterDto, long financialPeriodId) { var financial = await _financialPeriodRepository.GetEntityById(financialPeriodId); var currencyAsQueryable = _saleRepository .GetEntities() .Where(x => x.SaleDate >= financial.FromDate && x.SaleDate < financial.ToDate) .AsQueryable(); #region Set Filters #region Filter - SearchText if (filterDto.SearchText != null || !(string.IsNullOrEmpty(filterDto.SearchText))) { currencyAsQueryable = currencyAsQueryable .Include(x => x.Customer) .Include(c => c.Broker) .Where(x => x.Customer.Name.Contains(filterDto.SearchText.Trim()) || x.Customer.Title.Contains(filterDto.SearchText.Trim()) || x.Broker.Name.Contains(filterDto.SearchText.Trim()) ); } #endregion #region Filter - Transfer Type(s) if (filterDto.IsAccount) { currencyAsQueryable = currencyAsQueryable.Where(x => x.TransferType == CurrencyTransferType.Accounting); } if (filterDto.IsCashed) { currencyAsQueryable = currencyAsQueryable.Where(x => x.TransferType == CurrencyTransferType.Cash); } #endregion #region Filter - Currency Type(s) var currencyTypeList = new List <CurrencyType>(); if (filterDto.IsCurrencyTypeCurrency) { currencyTypeList.Add(CurrencyType.CarrencySales); } if (filterDto.IsCurrencyTypeBroker) { currencyTypeList.Add(CurrencyType.CurrencyTransferFromTheBroker); } if (filterDto.IsCurrencyTypeMissCustomer) { currencyTypeList.Add(CurrencyType.CurrencyTransferFromTheMiscellaneousCustomer); } if (filterDto.IsCurrencyTypeCommCustomer) { currencyTypeList.Add(CurrencyType.CurrencyTransferFromTheCommodityCustomer); } if (currencyTypeList.Count > 0) { currencyAsQueryable = currencyAsQueryable.Where(x => currencyTypeList.Contains(x.CurrencyType)); } #endregion #region Filter - From To Sale Date if (!string.IsNullOrWhiteSpace(filterDto.FromDateSale) && !string.IsNullOrWhiteSpace(filterDto.ToDateSale)) { var from = Convert.ToDateTime(filterDto.FromDateSale); var to = Convert.ToDateTime(filterDto.ToDateSale); currencyAsQueryable = currencyAsQueryable.Where(x => x.SaleDate >= from && x.SaleDate < to); //currencyAsQueryable = currencyAsQueryable.Where(x => x.SaleDate < DateTime.Today); } #endregion #region Filter - From To Price if (filterDto.FromSaleBasePrice != 0) { currencyAsQueryable = currencyAsQueryable.Where(s => s.SalePricePerUnit >= filterDto.FromSaleBasePrice); } if (filterDto.ToSaleBasePrice != 0) { currencyAsQueryable = currencyAsQueryable.Where(s => s.SalePricePerUnit <= filterDto.ToSaleBasePrice); } #endregion #region Filter - Broker if (filterDto.BrokerId > 0) { currencyAsQueryable = currencyAsQueryable.Where(s => s.BrokerId == filterDto.BrokerId); } #endregion #region Filter - Customer if (filterDto.CustomerId > 0) { currencyAsQueryable = currencyAsQueryable.Where(s => s.CustomerId == filterDto.CustomerId); } #endregion #endregion currencyAsQueryable = currencyAsQueryable.OrderByDescending(x => x.SaleDate); var count = (int)Math.Ceiling(currencyAsQueryable.Count() / (double)filterDto.TakeEntity); var pager = Pager.Builder(count, filterDto.PageId, filterDto.TakeEntity); var list = currencyAsQueryable.Paging(pager).ToList(); filterDto.Entities = new List <CurrencySaleDto>(); foreach (var item in list) { var context = new ContextCurrencyType(); #region Sterategy Pattern switch ((CurrencyType)item.CurrencyType) { case CurrencyType.CarrencySales: filterDto.Entities.Add(await context.SetCurrency(new MoveToCustomerCurrencyType(), _saleRepository, _salePiDetailRepository, item)); // code block break; case CurrencyType.CurrencyTransferFromTheBroker: filterDto.Entities.Add(await context.SetCurrency(new MoveToBrokerCurrencyType(_brokerRepository), _saleRepository, _salePiDetailRepository, item)); // code block break; case CurrencyType.CurrencyTransferFromTheMiscellaneousCustomer: filterDto.Entities.Add(await context.SetCurrency(new MoveToMissCustomerCurrencyType(_miscellaneousCustomerRepository), _saleRepository, _salePiDetailRepository, item)); break; case CurrencyType.CurrencyTransferFromTheCommodityCustomer: filterDto.Entities.Add(await context.SetCurrency(new MoveToCommCustomerCurrencyType(_commodityCustomerRepository), _saleRepository, _salePiDetailRepository, item)); break; } #endregion } return((FilterCurrSaleDto)filterDto.SetEntitiesDto(filterDto.Entities).SetPaging(pager)); }