コード例 #1
0
ファイル: frmStokSec.cs プロジェクト: damar89/EmdErp
        async Task Sorgula(CancellationToken token)
        {
            if (token.IsCancellationRequested)
            {
                return;
            }
            TumStoklar.Clear();

            OnPropertyChanged(nameof(TumStoklar));
            gridStoklar.RefreshData();
            var pred = PredicateBuilder.True <Entities.Tables.Stok>();

            if (!string.IsNullOrEmpty(txtStokKodu.Text))
            {
                pred = pred.And(x => x.StokKodu.Contains(txtStokKodu.Text));
            }
            if (!string.IsNullOrEmpty(txtStokAdi.Text))
            {
                pred = pred.And(x => x.StokAdi.Contains(txtStokAdi.Text));
            }
            if (!string.IsNullOrEmpty(txtAramaMetni.Text))
            {
                foreach (string item in txtAramaMetni.Text.Split(' '))
                {
                    if (!string.IsNullOrEmpty(item))
                    {
                        pred = pred.And(x => x.StokAdi.Contains(item) || x.Barkodu.Contains(item) || x.Marka.Contains(item) || x.Uretici.Contains(item) || x.StokKodu.Contains(item) || x.Barkod.Any(s => s.Barkodu.Contains(item)));
                    }
                }
            }

            var take  = 5000;
            var count = Math.Ceiling(
                Convert.ToDecimal(stokDal.StokKayitSayisi(context, pred) / Convert.ToDecimal(take)));

            if (token.IsCancellationRequested)
            {
                return;
            }
            for (int i = 0; i < count; i++)
            {
                if (token.IsCancellationRequested)
                {
                    break;
                }
                TumStoklar.AddRange(stokDal.StokAdiylaStokGetir(context, pred, take * i, take, noTracking: true));
                OnPropertyChanged(nameof(TumStoklar));
                await Task.Delay(100);

                gridStoklar.RefreshData();
                lblKayitSayisi.Text = TumStoklar.Count.ToString();
            }
        }