private IQueryable <CounterPurchas> CreateQuery(CounterFilterModel filter)
        {
            var items = from i in db.CounterPurchases
                        where i.IsDeleted == null || i.IsDeleted != true
                        select i;

            if (filter != null)
            {
                if (filter.CustomerId != 0)
                {
                    items = items.Where(a => a.SupplierId == filter.CustomerId);
                }

                if (!string.IsNullOrWhiteSpace(filter.CounterNumber))
                {
                    items = items.Where(a => a.CounterNumber.Contains(filter.CounterNumber));
                }

                if (filter.DateType != DateSearchType.All)
                {
                    DateTime dateFrom = filter.DateFrom.Date;
                    DateTime dateTo   = filter.DateTo.AddDays(1).Date;

                    items = items.Where(a => a.Date >= dateFrom && a.Date < dateTo);
                }
            }
            else
            {
                //Default sorting
                items = items.OrderByDescending(a => a.Date);
            }

            return(items);
        }
        private CounterFilterModel ComposeSearch()
        {
            CounterFilterModel model = new CounterFilterModel();

            if (CustomerDropdown.SelectedIndex != -1)
            {
                model.CustomerId = (int)CustomerDropdown.SelectedValue;
            }

            if (!string.IsNullOrWhiteSpace(CounterNumberTextbox.Text))
            {
                model.CounterNumber = CounterNumberTextbox.Text.Trim();
            }

            if (!AllDateRB.Checked)
            {
                if (DateRangeRB.Checked)
                {
                    model.DateType = DateSearchType.DateRange;
                    model.DateFrom = DateFromPicker.Value;
                    model.DateTo   = DateToPicker.Value;
                }
            }
            else
            {
                model.DateType = DateSearchType.All;
            }

            return(model);
        }
        private void LoadSalesCounters(CounterFilterModel filter)
        {
            int  records     = 0;
            long elapsedTime = ClientHelper.PerformFetch(() =>
            {
                var results = this.salesCounterController.FetchSalesCounterWithSearch(filter);
                salesCounterDisplayModelBindingSource.DataSource = results;

                if (salesCounterDisplayModelBindingSource.Count == 0)
                {
                    salesCounterDisplayModelBindingSource.DataSource = null;
                }

                records = results.Count;
            });

            ((MainForm)this.ParentForm).AttachStatus(records, elapsedTime);
        }
        public SortableBindingList <PurchaseCounterDisplayModel> FetchPurchaseCounterWithSearch(CounterFilterModel filter)
        {
            try
            {
                var query = CreateQuery(filter);

                var result = from a in query
                             select new PurchaseCounterDisplayModel
                {
                    Id            = a.Id,
                    CounterNumber = a.CounterNumber,
                    Supplier      = a.Customer.CompanyName,
                    Date          = a.Date,
                    TotalAmount   = a.Total.HasValue ? a.Total.Value : 0
                };

                SortableBindingList <PurchaseCounterDisplayModel> b = new SortableBindingList <PurchaseCounterDisplayModel>(result);

                return(b);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        private void SearchButton_Click(object sender, EventArgs e)
        {
            CounterFilterModel filter = ComposeSearch();

            LoadSalesCounters(filter);
        }